diff --git a/.gitignore b/.gitignore index 05816576..613f1960 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # virtual environment +.env +.venv venv/ ENV/ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.de.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.de.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.de.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.es.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.es.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.es.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.fr.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.fr.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.fr.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.hi.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.hi.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.hi.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.it.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.it.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.it.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ja.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ja.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ja.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ko.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ko.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ko.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ms.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ms.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ms.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.pt.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.pt.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.pt.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ru.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ru.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ru.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sw.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sw.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sw.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ta.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ta.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ta.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.tr.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.tr.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.tr.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.zh.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.zh.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.zh.jpg differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.de.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.de.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.de.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.es.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.es.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.es.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.fr.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.fr.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.fr.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hi.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hi.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hi.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.it.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.it.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.it.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ja.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ja.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ja.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ko.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ko.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ko.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ms.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ms.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ms.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.pt.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.pt.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.pt.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ru.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ru.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ru.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sw.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sw.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sw.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ta.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ta.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ta.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.tr.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.tr.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.tr.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.zh.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.zh.png new file mode 100644 index 00000000..20b7de28 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.zh.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.de.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.de.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.de.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.es.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.es.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.es.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.fr.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.fr.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.fr.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.hi.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.hi.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.hi.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.it.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.it.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.it.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ja.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ja.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ja.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ko.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ko.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ko.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ms.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ms.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ms.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.pt.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.pt.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.pt.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ru.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ru.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ru.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sw.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sw.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sw.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ta.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ta.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ta.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.tr.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.tr.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.tr.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.zh.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.zh.png new file mode 100644 index 00000000..8779e767 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.zh.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.de.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.de.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.de.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.es.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.es.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.es.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.fr.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.fr.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.fr.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.hi.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.hi.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.hi.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.it.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.it.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.it.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ja.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ja.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ja.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ko.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ko.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ko.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ms.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ms.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ms.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.pt.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.pt.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.pt.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ru.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ru.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ru.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sw.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sw.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sw.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ta.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ta.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ta.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.tr.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.tr.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.tr.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.zh.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.zh.png new file mode 100644 index 00000000..662cdc4d Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.zh.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.de.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.de.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.de.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.es.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.es.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.es.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.fr.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.fr.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.fr.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hi.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hi.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hi.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.it.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.it.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.it.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ja.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ja.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ja.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ko.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ko.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ko.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ms.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ms.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ms.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.pt.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.pt.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.pt.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ru.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ru.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ru.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sw.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sw.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sw.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ta.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ta.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ta.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.tr.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.tr.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.tr.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.zh.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.zh.png new file mode 100644 index 00000000..ec2b7711 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.zh.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.de.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.de.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.de.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.es.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.es.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.es.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.fr.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.fr.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.fr.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.hi.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.hi.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.hi.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.it.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.it.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.it.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ja.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ja.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ja.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ko.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ko.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ko.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ms.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ms.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ms.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.pt.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.pt.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.pt.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ru.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ru.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ru.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sw.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sw.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sw.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ta.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ta.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ta.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.tr.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.tr.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.tr.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.zh.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.zh.png new file mode 100644 index 00000000..55a70bba Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.zh.png differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.de.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.de.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.de.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.es.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.es.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.es.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.fr.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.fr.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.fr.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.hi.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.hi.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.hi.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.it.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.it.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.it.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ja.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ja.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ja.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ko.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ko.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ko.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ms.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ms.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ms.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.pt.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.pt.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.pt.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ru.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ru.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ru.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.sw.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.sw.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.sw.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ta.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ta.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.ta.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.tr.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.tr.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.tr.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.zh.png" "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.zh.png" new file mode 100644 index 00000000..817ac42d Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.56.56 - a closeup watercolor portrait of young male teacher of literature with a book.56499a0c282407c94d2b8e9337d8a006f2a7a90e067f3c34a8c6425ea905f490.zh.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.de.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.de.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.de.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.es.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.es.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.es.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.fr.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.fr.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.fr.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.hi.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.hi.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.hi.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.it.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.it.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.it.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ja.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ja.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ja.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ko.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ko.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ko.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ms.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ms.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ms.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.pt.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.pt.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.pt.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ru.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ru.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ru.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.sw.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.sw.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.sw.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ta.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ta.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.ta.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.tr.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.tr.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.tr.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.zh.png" "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.zh.png" new file mode 100644 index 00000000..2d43fa37 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.57.43 - a closeup oil portrait of young female teacher of computer science with a computer.081e8aed073e2fbfb6ddc71819ae0ba025e10144c73ad0ce906933e5382d081d.zh.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.de.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.de.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.de.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.es.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.es.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.es.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.fr.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.fr.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.fr.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.hi.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.hi.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.hi.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.it.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.it.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.it.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ja.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ja.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ja.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ko.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ko.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ko.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ms.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ms.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ms.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.pt.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.pt.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.pt.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ru.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ru.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ru.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.sw.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.sw.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.sw.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ta.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ta.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.ta.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.tr.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.tr.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.tr.png" differ diff --git "a/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.zh.png" "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.zh.png" new file mode 100644 index 00000000..8072fbe4 Binary files /dev/null and "b/translated_images/DALL\302\267E 2023-06-20 15.58.42 - a closeup oil portrait of old male teacher of mathematics in front of blackboard.534175cf58a361d952ff424cc6533143559f9d97298020f64ebac91356cbb416.zh.png" differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.de.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.de.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.de.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.es.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.es.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.es.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.fr.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.fr.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.fr.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.hi.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.hi.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.hi.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.it.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.it.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.it.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ja.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ja.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ja.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ko.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ko.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ko.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ms.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ms.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ms.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.pt.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.pt.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.pt.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ru.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ru.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ru.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sw.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sw.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sw.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ta.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ta.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ta.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.tr.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.tr.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.tr.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.zh.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.zh.png new file mode 100644 index 00000000..130b81a8 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.zh.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.de.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.de.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.de.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.es.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.es.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.es.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.fr.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.fr.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.fr.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hi.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hi.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hi.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.it.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.it.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.it.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ja.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ja.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ja.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ko.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ko.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ko.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ms.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ms.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ms.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.pt.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.pt.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.pt.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ru.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ru.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ru.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sw.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sw.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sw.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ta.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ta.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ta.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.tr.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.tr.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.tr.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.zh.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.zh.png new file mode 100644 index 00000000..5c1eceef Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.zh.png differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.de.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.de.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.de.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.es.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.es.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.es.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.fr.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.fr.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.fr.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.hi.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.hi.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.hi.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.it.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.it.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.it.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ja.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ja.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ja.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ko.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ko.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ko.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ms.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ms.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ms.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.pt.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.pt.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.pt.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ru.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ru.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ru.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sw.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sw.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sw.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ta.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ta.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ta.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.tr.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.tr.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.tr.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.zh.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.zh.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.zh.jpg differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.de.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.de.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.de.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.es.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.es.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.es.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.fr.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.fr.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.fr.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hi.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hi.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hi.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.it.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.it.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.it.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ja.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ja.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ja.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ko.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ko.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ko.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ms.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ms.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ms.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.pt.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.pt.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.pt.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ru.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ru.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ru.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sw.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sw.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sw.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ta.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ta.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ta.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.tr.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.tr.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.tr.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.zh.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.zh.png new file mode 100644 index 00000000..c2f12530 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.zh.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.de.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.de.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.de.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.es.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.es.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.es.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.fr.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.fr.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.fr.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.hi.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.hi.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.hi.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.it.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.it.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.it.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ja.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ja.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ja.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ko.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ko.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ko.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ms.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ms.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ms.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.pt.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.pt.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.pt.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ru.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ru.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ru.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sw.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sw.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sw.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ta.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ta.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ta.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.tr.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.tr.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.tr.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.zh.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.zh.png new file mode 100644 index 00000000..bd1a3da8 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.zh.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.de.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.de.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.de.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.es.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.es.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.es.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.fr.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.fr.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.fr.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.hi.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.hi.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.hi.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.it.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.it.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.it.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ja.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ja.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ja.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ko.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ko.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ko.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ms.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ms.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ms.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.pt.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.pt.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.pt.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ru.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ru.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ru.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sw.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sw.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sw.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ta.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ta.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ta.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.tr.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.tr.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.tr.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.zh.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.zh.png new file mode 100644 index 00000000..f5f9fcee Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.zh.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.de.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.de.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.de.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.es.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.es.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.es.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.fr.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.fr.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.fr.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.hi.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.hi.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.hi.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.it.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.it.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.it.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ja.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ja.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ja.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ko.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ko.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ko.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ms.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ms.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ms.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.pt.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.pt.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.pt.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ru.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ru.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ru.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sw.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sw.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sw.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ta.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ta.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ta.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.tr.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.tr.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.tr.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.zh.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.zh.png new file mode 100644 index 00000000..01ea0d27 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.zh.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.de.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.de.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.de.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.es.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.es.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.es.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.fr.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.fr.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.fr.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.hi.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.hi.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.hi.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.it.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.it.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.it.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ja.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ja.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ja.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ko.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ko.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ko.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ms.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ms.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ms.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.pt.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.pt.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.pt.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ru.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ru.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ru.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sw.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sw.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sw.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ta.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ta.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ta.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.tr.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.tr.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.tr.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.zh.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.zh.png new file mode 100644 index 00000000..cc69c43a Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.zh.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.de.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.de.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.de.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.es.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.es.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.es.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.fr.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.fr.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.fr.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hi.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hi.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hi.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.it.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.it.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.it.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ja.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ja.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ja.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ko.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ko.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ko.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ms.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ms.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ms.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.pt.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.pt.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.pt.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ru.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ru.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ru.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sw.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sw.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sw.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ta.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ta.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ta.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.tr.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.tr.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.tr.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.zh.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.zh.png new file mode 100644 index 00000000..ed20f884 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.zh.png differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.de.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.de.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.de.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.es.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.es.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.es.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.fr.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.fr.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.fr.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.hi.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.hi.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.hi.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.it.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.it.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.it.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ja.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ja.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ja.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ko.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ko.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ko.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ms.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ms.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ms.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.pt.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.pt.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.pt.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ru.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ru.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ru.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sw.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sw.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sw.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ta.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ta.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ta.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.tr.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.tr.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.tr.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.zh.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.zh.jpg new file mode 100644 index 00000000..6067f6b5 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.zh.jpg differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.de.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.de.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.de.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.es.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.es.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.es.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.fr.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.fr.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.fr.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hi.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hi.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hi.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.it.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.it.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.it.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ja.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ja.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ja.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ko.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ko.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ko.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ms.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ms.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ms.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.pt.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.pt.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.pt.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ru.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ru.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ru.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sw.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sw.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sw.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ta.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ta.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ta.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.tr.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.tr.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.tr.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.zh.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.zh.png new file mode 100644 index 00000000..32b95965 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.zh.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.de.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.de.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.de.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.es.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.es.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.es.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.fr.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.fr.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.fr.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hi.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hi.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hi.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.it.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.it.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.it.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ja.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ja.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ja.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ko.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ko.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ko.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ms.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ms.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ms.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.pt.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.pt.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.pt.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ru.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ru.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ru.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sw.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sw.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sw.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ta.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ta.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ta.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.tr.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.tr.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.tr.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.zh.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.zh.png new file mode 100644 index 00000000..c3c23780 Binary files /dev/null and b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.zh.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.de.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.de.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.de.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.es.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.es.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.es.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.fr.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.fr.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.fr.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.hi.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.hi.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.hi.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.it.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.it.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.it.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ja.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ja.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.ja.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ko.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ko.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.ko.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ms.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ms.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.ms.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.pt.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.pt.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.pt.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ru.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ru.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.ru.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sw.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sw.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.sw.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ta.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ta.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.ta.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.tr.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.tr.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.tr.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.zh.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.zh.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.zh.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.de.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.de.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.de.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.es.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.es.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.es.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.fr.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.fr.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.fr.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.hi.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.hi.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.hi.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.it.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.it.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.it.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ja.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ja.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.ja.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ko.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ko.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.ko.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ms.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ms.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.ms.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.pt.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.pt.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.pt.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ru.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ru.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.ru.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sw.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sw.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.sw.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ta.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ta.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.ta.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.tr.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.tr.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.tr.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.zh.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.zh.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.zh.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.de.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.de.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.de.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.es.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.es.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.es.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.fr.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.fr.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.fr.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.hi.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.hi.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.hi.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.it.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.it.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.it.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ja.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ja.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ja.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ko.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ko.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ko.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ms.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ms.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ms.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.pt.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.pt.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.pt.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ru.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ru.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ru.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sw.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sw.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sw.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ta.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ta.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ta.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.tr.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.tr.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.tr.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.zh.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.zh.png new file mode 100644 index 00000000..02a776b6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.zh.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.de.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.de.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.de.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.es.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.es.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.es.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.fr.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.fr.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.fr.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.hi.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.hi.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.hi.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.it.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.it.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.it.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ja.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ja.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ja.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ko.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ko.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ko.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ms.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ms.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ms.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.pt.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.pt.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.pt.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ru.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ru.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ru.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sw.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sw.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sw.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ta.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ta.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ta.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.tr.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.tr.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.tr.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.zh.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.zh.png new file mode 100644 index 00000000..1e85371c Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.zh.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.de.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.de.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.de.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.es.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.es.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.es.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.fr.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.fr.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.fr.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hi.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hi.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hi.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.it.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.it.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.it.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ja.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ja.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ja.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ko.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ko.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ko.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ms.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ms.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ms.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.pt.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.pt.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.pt.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ru.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ru.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ru.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sw.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sw.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sw.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ta.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ta.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ta.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.tr.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.tr.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.tr.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.zh.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.zh.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.zh.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.de.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.de.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.de.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.es.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.es.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.es.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.fr.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.fr.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.fr.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hi.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hi.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hi.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.it.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.it.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.it.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ja.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ja.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ja.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ko.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ko.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ko.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ms.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ms.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ms.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.pt.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.pt.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.pt.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ru.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ru.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ru.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sw.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sw.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sw.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ta.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ta.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ta.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.tr.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.tr.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.tr.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.zh.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.zh.png new file mode 100644 index 00000000..fe8eea04 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.zh.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.de.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.de.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.de.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.es.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.es.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.es.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.fr.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.fr.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.fr.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.hi.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.hi.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.hi.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.it.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.it.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.it.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ja.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ja.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ja.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ko.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ko.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ko.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ms.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ms.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ms.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.pt.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.pt.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.pt.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ru.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ru.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ru.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sw.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sw.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sw.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ta.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ta.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ta.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.tr.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.tr.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.tr.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.zh.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.zh.png new file mode 100644 index 00000000..03831c19 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.zh.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.de.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.de.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.de.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.es.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.es.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.es.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.fr.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.fr.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.fr.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.hi.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.hi.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.hi.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.it.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.it.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.it.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ja.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ja.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ja.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ko.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ko.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ko.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ms.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ms.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ms.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.pt.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.pt.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.pt.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ru.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ru.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ru.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sw.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sw.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sw.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ta.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ta.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ta.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.tr.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.tr.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.tr.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.zh.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.zh.png new file mode 100644 index 00000000..46a466ad Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.zh.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.de.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.de.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.de.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.es.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.es.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.es.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.fr.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.fr.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.fr.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hi.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hi.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hi.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.it.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.it.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.it.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ja.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ja.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ja.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ko.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ko.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ko.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ms.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ms.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ms.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.pt.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.pt.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.pt.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ru.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ru.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ru.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sw.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sw.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sw.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ta.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ta.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ta.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.tr.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.tr.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.tr.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.zh.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.zh.png new file mode 100644 index 00000000..ddb504db Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.zh.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.de.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.de.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.de.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.es.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.es.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.es.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.fr.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.fr.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.fr.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hi.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hi.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hi.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.it.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.it.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.it.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ja.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ja.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ja.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ko.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ko.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ko.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ms.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ms.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ms.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.pt.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.pt.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.pt.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ru.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ru.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ru.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sw.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sw.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sw.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ta.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ta.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ta.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.tr.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.tr.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.tr.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.zh.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.zh.png new file mode 100644 index 00000000..7706c398 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.zh.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.de.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.de.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.de.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.es.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.es.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.es.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.fr.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.fr.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.fr.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hi.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hi.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hi.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.it.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.it.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.it.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ja.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ja.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ja.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ko.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ko.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ko.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ms.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ms.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ms.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.pt.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.pt.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.pt.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ru.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ru.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ru.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sw.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sw.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sw.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ta.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ta.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ta.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.tr.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.tr.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.tr.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.zh.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.zh.png new file mode 100644 index 00000000..d0159570 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.zh.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.de.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.de.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.de.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.es.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.es.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.es.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.fr.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.fr.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.fr.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hi.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hi.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hi.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.it.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.it.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.it.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ja.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ja.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ja.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ko.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ko.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ko.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ms.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ms.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ms.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.pt.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.pt.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.pt.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ru.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ru.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ru.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sw.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sw.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sw.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ta.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ta.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ta.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.tr.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.tr.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.tr.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.zh.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.zh.png new file mode 100644 index 00000000..7ec69f54 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.zh.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.de.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.de.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.de.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.es.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.es.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.es.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.fr.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.fr.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.fr.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hi.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hi.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hi.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.it.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.it.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.it.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ja.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ja.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ja.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ko.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ko.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ko.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ms.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ms.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ms.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.pt.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.pt.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.pt.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ru.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ru.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ru.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sw.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sw.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sw.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ta.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ta.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ta.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.tr.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.tr.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.tr.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.zh.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.zh.png new file mode 100644 index 00000000..b1b6a8d7 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.zh.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.de.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.de.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.de.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.es.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.es.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.es.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.fr.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.fr.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.fr.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hi.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hi.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hi.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.it.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.it.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.it.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ja.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ja.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ja.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ko.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ko.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ko.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ms.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ms.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ms.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.pt.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.pt.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.pt.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ru.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ru.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ru.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sw.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sw.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sw.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ta.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ta.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ta.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.tr.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.tr.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.tr.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.zh.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.zh.png new file mode 100644 index 00000000..71d63ff5 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.zh.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.de.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.de.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.de.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.es.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.es.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.es.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.fr.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.fr.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.fr.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hi.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hi.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hi.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.it.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.it.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.it.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ja.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ja.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ja.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ko.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ko.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ko.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ms.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ms.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ms.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.pt.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.pt.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.pt.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ru.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ru.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ru.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sw.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sw.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sw.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ta.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ta.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ta.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.tr.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.tr.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.tr.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.zh.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.zh.png new file mode 100644 index 00000000..bc515ea3 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.zh.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.de.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.de.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.de.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.es.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.es.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.es.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.fr.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.fr.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.fr.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.hi.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.hi.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.hi.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.it.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.it.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.it.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ja.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ja.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ja.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ko.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ko.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ko.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ms.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ms.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ms.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.pt.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.pt.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.pt.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ru.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ru.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ru.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sw.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sw.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sw.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ta.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ta.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ta.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.tr.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.tr.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.tr.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.zh.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.zh.png new file mode 100644 index 00000000..17e68933 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.zh.png differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.de.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.de.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.de.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.es.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.es.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.es.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.fr.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.fr.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.fr.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hi.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hi.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hi.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.it.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.it.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.it.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ja.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ja.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ja.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ko.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ko.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ko.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ms.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ms.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ms.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.pt.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.pt.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.pt.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ru.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ru.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ru.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sw.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sw.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sw.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ta.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ta.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ta.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.tr.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.tr.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.tr.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.zh.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.zh.jpg new file mode 100644 index 00000000..91cef019 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.zh.jpg differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.de.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.de.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.de.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.es.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.es.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.es.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.fr.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.fr.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.fr.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.hi.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.hi.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.hi.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.it.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.it.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.it.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ja.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ja.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ja.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ko.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ko.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ko.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ms.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ms.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ms.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.pt.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.pt.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.pt.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ru.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ru.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ru.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sw.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sw.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sw.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ta.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ta.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ta.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.tr.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.tr.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.tr.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.zh.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.zh.png new file mode 100644 index 00000000..df73f38d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.zh.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.de.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.de.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.de.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.es.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.es.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.es.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.fr.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.fr.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.fr.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hi.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hi.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hi.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.it.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.it.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.it.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ja.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ja.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ja.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ko.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ko.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ko.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ms.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ms.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ms.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.pt.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.pt.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.pt.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ru.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ru.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ru.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sw.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sw.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sw.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ta.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ta.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ta.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.tr.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.tr.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.tr.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.zh.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.zh.png new file mode 100644 index 00000000..729e59e0 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.zh.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.de.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.de.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.de.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.es.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.es.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.es.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.fr.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.fr.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.fr.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.hi.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.hi.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.hi.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.it.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.it.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.it.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ja.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ja.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ja.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ko.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ko.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ko.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ms.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ms.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ms.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.pt.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.pt.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.pt.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ru.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ru.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ru.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sw.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sw.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sw.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ta.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ta.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ta.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.tr.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.tr.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.tr.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.zh.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.zh.png new file mode 100644 index 00000000..abbf4141 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.zh.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.de.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.de.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.de.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.es.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.es.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.es.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.fr.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.fr.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.fr.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.hi.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.hi.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.hi.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.it.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.it.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.it.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ja.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ja.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ja.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ko.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ko.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ko.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ms.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ms.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ms.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.pt.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.pt.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.pt.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ru.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ru.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ru.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sw.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sw.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sw.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ta.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ta.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ta.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.tr.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.tr.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.tr.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.zh.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.zh.png new file mode 100644 index 00000000..8969ff98 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.zh.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.de.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.de.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.de.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.es.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.es.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.es.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.fr.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.fr.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.fr.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hi.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hi.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hi.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.it.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.it.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.it.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ja.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ja.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ja.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ko.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ko.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ko.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ms.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ms.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ms.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.pt.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.pt.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.pt.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ru.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ru.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ru.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sw.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sw.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sw.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ta.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ta.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ta.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.tr.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.tr.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.tr.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.zh.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.zh.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.zh.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.de.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.de.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.de.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.es.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.es.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.es.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.fr.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.fr.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.fr.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hi.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hi.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hi.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.it.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.it.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.it.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ja.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ja.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ja.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ko.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ko.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ko.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ms.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ms.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ms.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.pt.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.pt.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.pt.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ru.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ru.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ru.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sw.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sw.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sw.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ta.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ta.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ta.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.tr.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.tr.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.tr.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.zh.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.zh.png new file mode 100644 index 00000000..dbf3f5af Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.zh.png differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.de.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.de.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.de.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.es.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.es.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.es.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.fr.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.fr.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.fr.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hi.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hi.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hi.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.it.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.it.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.it.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ja.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ja.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ja.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ko.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ko.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ko.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ms.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ms.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ms.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.pt.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.pt.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.pt.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ru.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ru.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ru.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sw.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sw.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sw.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ta.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ta.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ta.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.tr.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.tr.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.tr.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.zh.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.zh.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.zh.jpeg differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.de.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.de.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.de.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.es.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.es.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.es.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.fr.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.fr.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.fr.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.hi.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.hi.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.hi.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.it.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.it.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.it.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ja.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ja.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ja.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ko.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ko.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ko.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ms.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ms.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ms.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.pt.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.pt.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.pt.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ru.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ru.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ru.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sw.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sw.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sw.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ta.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ta.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ta.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.tr.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.tr.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.tr.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.zh.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.zh.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.zh.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.de.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.de.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.de.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.es.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.es.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.es.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.fr.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.fr.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.fr.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.hi.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.hi.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.hi.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.it.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.it.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.it.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ja.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ja.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ja.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ko.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ko.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ko.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ms.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ms.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ms.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.pt.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.pt.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.pt.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ru.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ru.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ru.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sw.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sw.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sw.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ta.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ta.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ta.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.tr.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.tr.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.tr.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.zh.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.zh.png new file mode 100644 index 00000000..b64c223f Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.zh.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.de.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.de.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.de.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.es.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.es.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.es.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.fr.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.fr.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.fr.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hi.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hi.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hi.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.it.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.it.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.it.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ja.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ja.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ja.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ko.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ko.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ko.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ms.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ms.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ms.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.pt.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.pt.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.pt.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ru.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ru.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ru.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sw.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sw.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sw.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ta.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ta.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ta.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.tr.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.tr.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.tr.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.zh.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.zh.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.zh.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.de.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.de.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.de.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.es.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.es.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.es.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.fr.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.fr.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.fr.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hi.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hi.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hi.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.it.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.it.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.it.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ja.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ja.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ja.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ko.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ko.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ko.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ms.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ms.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ms.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.pt.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.pt.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.pt.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ru.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ru.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ru.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sw.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sw.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sw.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ta.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ta.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ta.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.tr.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.tr.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.tr.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.zh.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.zh.png new file mode 100644 index 00000000..fba8ec26 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.zh.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.de.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.de.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.de.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.es.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.es.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.es.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.fr.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.fr.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.fr.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.hi.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.hi.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.hi.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.it.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.it.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.it.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ja.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ja.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ja.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ko.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ko.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ko.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ms.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ms.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ms.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.pt.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.pt.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.pt.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ru.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ru.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ru.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sw.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sw.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sw.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ta.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ta.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ta.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.tr.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.tr.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.tr.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.zh.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.zh.png new file mode 100644 index 00000000..dfac1513 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.zh.png differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.de.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.de.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.de.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.es.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.es.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.es.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.fr.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.fr.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.fr.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hi.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hi.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hi.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.it.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.it.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.it.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ja.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ja.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ja.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ko.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ko.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ko.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ms.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ms.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ms.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.pt.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.pt.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.pt.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ru.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ru.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ru.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sw.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sw.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sw.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ta.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ta.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ta.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.tr.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.tr.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.tr.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.zh.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.zh.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.zh.jpg differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.de.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.de.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.de.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.es.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.es.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.es.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.fr.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.fr.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.fr.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.hi.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.hi.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.hi.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.it.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.it.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.it.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ja.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ja.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ja.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ko.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ko.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ko.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ms.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ms.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ms.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.pt.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.pt.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.pt.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ru.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ru.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ru.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sw.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sw.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sw.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ta.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ta.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ta.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.tr.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.tr.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.tr.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.zh.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.zh.png new file mode 100644 index 00000000..3f306d46 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.zh.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.de.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.de.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.de.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.es.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.es.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.es.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.fr.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.fr.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.fr.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hi.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hi.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hi.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.it.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.it.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.it.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ja.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ja.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ja.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ko.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ko.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ko.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ms.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ms.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ms.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.pt.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.pt.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.pt.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ru.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ru.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ru.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sw.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sw.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sw.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ta.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ta.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ta.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.tr.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.tr.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.tr.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.zh.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.zh.png new file mode 100644 index 00000000..adc9b475 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.zh.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.de.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.de.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.de.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.es.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.es.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.es.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.fr.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.fr.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.fr.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.hi.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.hi.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.hi.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.it.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.it.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.it.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ja.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ja.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ja.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ko.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ko.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ko.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ms.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ms.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ms.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.pt.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.pt.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.pt.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ru.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ru.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ru.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sw.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sw.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sw.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ta.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ta.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ta.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.tr.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.tr.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.tr.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.zh.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.zh.png new file mode 100644 index 00000000..13064830 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.zh.png differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.de.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.de.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.de.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.es.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.es.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.es.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.fr.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.fr.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.fr.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.hi.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.hi.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.hi.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.it.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.it.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.it.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ja.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ja.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ja.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ko.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ko.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ko.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ms.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ms.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ms.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.pt.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.pt.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.pt.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ru.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ru.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ru.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sw.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sw.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sw.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ta.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ta.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ta.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.tr.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.tr.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.tr.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.zh.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.zh.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.zh.jpg differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.de.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.de.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.de.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.es.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.es.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.es.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.fr.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.fr.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.fr.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.hi.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.hi.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.hi.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.it.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.it.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.it.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ja.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ja.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ja.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ko.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ko.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ko.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ms.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ms.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ms.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.pt.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.pt.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.pt.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ru.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ru.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ru.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sw.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sw.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sw.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ta.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ta.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ta.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.tr.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.tr.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.tr.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.zh.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.zh.png new file mode 100644 index 00000000..8a028317 Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.zh.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.de.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.de.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.de.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.es.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.es.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.es.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.fr.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.fr.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.fr.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hi.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hi.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hi.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.it.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.it.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.it.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ja.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ja.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ja.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ko.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ko.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ko.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ms.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ms.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ms.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.pt.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.pt.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.pt.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ru.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ru.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ru.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sw.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sw.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sw.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ta.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ta.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ta.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.tr.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.tr.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.tr.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.zh.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.zh.png new file mode 100644 index 00000000..48e3a77a Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.zh.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.de.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.de.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.de.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.es.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.es.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.es.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.fr.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.fr.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.fr.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hi.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hi.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hi.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.it.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.it.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.it.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ja.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ja.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ja.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ko.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ko.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ko.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ms.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ms.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ms.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.pt.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.pt.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.pt.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ru.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ru.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ru.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sw.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sw.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sw.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ta.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ta.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ta.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.tr.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.tr.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.tr.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.zh.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.zh.png new file mode 100644 index 00000000..bea72c38 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.zh.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.de.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.de.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.de.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.es.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.es.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.es.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.fr.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.fr.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.fr.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hi.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hi.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hi.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.it.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.it.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.it.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ja.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ja.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ja.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ko.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ko.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ko.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ms.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ms.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ms.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pt.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pt.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pt.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ru.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ru.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ru.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sw.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sw.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sw.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ta.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ta.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ta.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.tr.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.tr.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.tr.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.zh.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.zh.png new file mode 100644 index 00000000..714cd817 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.zh.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.de.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.de.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.de.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.es.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.es.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.es.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.fr.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.fr.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.fr.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hi.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hi.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hi.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.it.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.it.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.it.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ja.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ja.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ja.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ko.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ko.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ko.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ms.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ms.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ms.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.pt.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.pt.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.pt.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ru.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ru.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ru.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sw.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sw.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sw.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ta.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ta.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ta.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.tr.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.tr.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.tr.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.zh.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.zh.png new file mode 100644 index 00000000..ef56edfa Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.zh.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.de.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.de.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.de.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.es.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.es.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.es.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.fr.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.fr.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.fr.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hi.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hi.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hi.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.it.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.it.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.it.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ja.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ja.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ja.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ko.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ko.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ko.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ms.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ms.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ms.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.pt.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.pt.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.pt.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ru.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ru.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ru.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sw.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sw.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sw.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ta.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ta.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ta.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.tr.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.tr.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.tr.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.zh.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.zh.png new file mode 100644 index 00000000..2bf38420 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.zh.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.de.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.de.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.de.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.es.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.es.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.es.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.fr.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.fr.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.fr.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.hi.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.hi.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.hi.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.it.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.it.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.it.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ja.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ja.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ja.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ko.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ko.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ko.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ms.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ms.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ms.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.pt.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.pt.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.pt.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ru.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ru.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ru.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sw.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sw.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sw.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ta.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ta.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ta.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.tr.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.tr.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.tr.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.zh.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.zh.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.zh.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.de.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.de.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.de.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.es.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.es.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.es.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.fr.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.fr.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.fr.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hi.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hi.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hi.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.it.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.it.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.it.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ja.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ja.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ja.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ko.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ko.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ko.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ms.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ms.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ms.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.pt.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.pt.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.pt.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ru.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ru.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ru.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sw.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sw.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sw.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ta.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ta.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ta.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.tr.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.tr.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.tr.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.zh.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.zh.png new file mode 100644 index 00000000..4671d226 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.zh.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.de.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.de.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.de.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.es.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.es.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.es.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.fr.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.fr.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.fr.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hi.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hi.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hi.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.it.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.it.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.it.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ja.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ja.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ja.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ko.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ko.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ko.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ms.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ms.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ms.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.pt.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.pt.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.pt.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ru.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ru.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ru.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sw.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sw.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sw.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ta.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ta.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ta.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.tr.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.tr.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.tr.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.zh.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.zh.png new file mode 100644 index 00000000..9b7e97ff Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.zh.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.de.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.de.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.de.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.es.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.es.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.es.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.fr.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.fr.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.fr.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hi.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hi.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hi.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.it.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.it.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.it.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ja.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ja.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ja.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ko.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ko.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ko.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ms.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ms.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ms.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.pt.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.pt.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.pt.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ru.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ru.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ru.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sw.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sw.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sw.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ta.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ta.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ta.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.tr.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.tr.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.tr.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.zh.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.zh.png new file mode 100644 index 00000000..00ef919a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.zh.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.de.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.de.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.de.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.es.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.es.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.es.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.fr.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.fr.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.fr.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hi.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hi.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hi.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.it.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.it.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.it.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ja.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ja.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ja.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ko.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ko.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ko.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ms.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ms.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ms.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.pt.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.pt.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.pt.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ru.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ru.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ru.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sw.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sw.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sw.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ta.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ta.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ta.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.tr.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.tr.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.tr.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.zh.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.zh.png new file mode 100644 index 00000000..f2570cf8 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.zh.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.de.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.de.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.de.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.es.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.es.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.es.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.fr.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.fr.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.fr.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.hi.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.hi.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.hi.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.it.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.it.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.it.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ja.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ja.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ja.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ko.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ko.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ko.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ms.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ms.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ms.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.pt.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.pt.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.pt.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ru.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ru.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ru.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sw.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sw.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sw.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ta.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ta.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ta.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.tr.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.tr.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.tr.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.zh.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.zh.png new file mode 100644 index 00000000..a7f42288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.zh.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.de.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.de.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.de.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.es.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.es.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.es.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.fr.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.fr.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.fr.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.hi.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.hi.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.hi.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.it.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.it.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.it.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ja.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ja.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ja.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ko.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ko.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ko.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ms.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ms.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ms.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.pt.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.pt.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.pt.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ru.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ru.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ru.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sw.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sw.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sw.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ta.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ta.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ta.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.tr.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.tr.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.tr.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.zh.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.zh.png new file mode 100644 index 00000000..6bde8cbc Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.zh.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.de.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.de.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.de.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.es.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.es.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.es.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.fr.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.fr.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.fr.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.hi.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.hi.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.hi.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.it.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.it.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.it.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ja.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ja.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ja.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ko.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ko.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ko.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ms.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ms.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ms.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.pt.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.pt.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.pt.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ru.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ru.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ru.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sw.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sw.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sw.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ta.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ta.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ta.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.tr.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.tr.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.tr.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.zh.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.zh.png new file mode 100644 index 00000000..e7f46c5a Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.zh.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.de.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.de.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.de.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.es.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.es.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.es.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.fr.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.fr.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.fr.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hi.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hi.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hi.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.it.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.it.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.it.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ja.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ja.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ja.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ko.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ko.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ko.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ms.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ms.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ms.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.pt.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.pt.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.pt.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ru.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ru.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ru.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sw.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sw.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sw.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ta.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ta.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ta.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.tr.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.tr.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.tr.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.zh.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.zh.png new file mode 100644 index 00000000..da33b981 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.zh.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.de.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.de.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.de.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.es.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.es.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.es.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.fr.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.fr.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.fr.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hi.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hi.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hi.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.it.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.it.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.it.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ja.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ja.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ja.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ko.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ko.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ko.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ms.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ms.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ms.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.pt.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.pt.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.pt.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ru.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ru.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ru.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sw.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sw.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sw.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ta.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ta.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ta.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.tr.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.tr.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.tr.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.zh.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.zh.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.zh.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.de.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.de.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.de.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.es.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.es.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.es.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.fr.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.fr.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.fr.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hi.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hi.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hi.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.it.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.it.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.it.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ja.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ja.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ja.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ko.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ko.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ko.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ms.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ms.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ms.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.pt.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.pt.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.pt.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ru.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ru.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ru.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sw.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sw.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sw.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ta.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ta.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ta.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.tr.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.tr.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.tr.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.zh.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.zh.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.zh.png differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.de.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.de.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.de.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.es.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.es.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.es.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.fr.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.fr.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.fr.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.hi.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.hi.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.hi.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.it.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.it.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.it.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ja.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ja.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ja.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ko.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ko.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ko.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ms.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ms.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ms.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.pt.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.pt.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.pt.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ru.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ru.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ru.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sw.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sw.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sw.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ta.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ta.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ta.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.tr.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.tr.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.tr.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.zh.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.zh.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.zh.jpg differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.de.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.de.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.de.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.es.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.es.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.es.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.fr.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.fr.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.fr.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.hi.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.hi.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.hi.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.it.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.it.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.it.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ja.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ja.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ja.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ko.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ko.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ko.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ms.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ms.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ms.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.pt.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.pt.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.pt.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ru.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ru.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ru.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sw.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sw.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sw.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ta.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ta.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ta.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.tr.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.tr.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.tr.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.zh.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.zh.png new file mode 100644 index 00000000..e0def5a5 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.zh.png differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.de.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.de.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.de.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.es.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.es.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.es.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.fr.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.fr.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.fr.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.hi.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.hi.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.hi.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.it.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.it.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.it.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ja.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ja.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ja.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ko.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ko.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ko.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ms.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ms.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ms.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.pt.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.pt.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.pt.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ru.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ru.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ru.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sw.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sw.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sw.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ta.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ta.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ta.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.tr.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.tr.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.tr.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.zh.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.zh.jpeg new file mode 100644 index 00000000..fb0e780f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.zh.jpeg differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.de.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.de.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.de.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.es.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.es.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.es.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.fr.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.fr.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.fr.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hi.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hi.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hi.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.it.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.it.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.it.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ja.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ja.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ja.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ko.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ko.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ko.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ms.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ms.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ms.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.pt.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.pt.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.pt.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ru.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ru.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ru.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sw.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sw.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sw.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ta.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ta.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ta.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.tr.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.tr.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.tr.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.zh.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.zh.png new file mode 100644 index 00000000..1f7dc380 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.zh.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.de.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.de.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.de.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.es.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.es.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.es.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.fr.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.fr.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.fr.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hi.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hi.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hi.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.it.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.it.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.it.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ja.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ja.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ja.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ko.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ko.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ko.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ms.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ms.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ms.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.pt.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.pt.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.pt.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ru.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ru.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ru.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sw.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sw.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sw.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ta.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ta.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ta.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.tr.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.tr.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.tr.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.zh.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.zh.png new file mode 100644 index 00000000..eee9c653 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.zh.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.de.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.de.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.de.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.es.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.es.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.es.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.fr.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.fr.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.fr.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hi.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hi.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hi.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.it.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.it.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.it.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ja.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ja.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ja.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ko.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ko.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ko.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ms.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ms.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ms.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.pt.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.pt.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.pt.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ru.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ru.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ru.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sw.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sw.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sw.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ta.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ta.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ta.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.tr.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.tr.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.tr.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.zh.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.zh.png new file mode 100644 index 00000000..f34df277 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.zh.png differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.de.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.de.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.de.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.es.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.es.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.es.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.fr.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.fr.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.fr.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.hi.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.hi.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.hi.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.it.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.it.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.it.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ja.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ja.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ja.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ko.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ko.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ko.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ms.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ms.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ms.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.pt.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.pt.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.pt.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ru.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ru.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ru.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sw.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sw.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sw.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ta.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ta.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ta.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.tr.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.tr.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.tr.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.zh.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.zh.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.zh.jpg differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.de.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.de.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.de.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.es.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.es.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.es.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.fr.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.fr.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.fr.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.hi.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.hi.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.hi.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.it.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.it.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.it.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ja.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ja.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ja.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ko.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ko.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ko.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ms.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ms.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ms.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.pt.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.pt.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.pt.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ru.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ru.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ru.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sw.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sw.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sw.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ta.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ta.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ta.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.tr.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.tr.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.tr.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.zh.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.zh.png new file mode 100644 index 00000000..3df7d73b Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.zh.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.de.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.de.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.de.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.es.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.es.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.es.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.fr.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.fr.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.fr.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.hi.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.hi.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.hi.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.it.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.it.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.it.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ja.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ja.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ja.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ko.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ko.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ko.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ms.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ms.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ms.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.pt.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.pt.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.pt.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ru.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ru.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ru.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sw.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sw.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sw.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ta.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ta.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ta.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.tr.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.tr.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.tr.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.zh.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.zh.png new file mode 100644 index 00000000..f84dfd1a Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.zh.png differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.de.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.de.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.de.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.es.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.es.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.es.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.fr.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.fr.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.fr.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hi.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hi.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hi.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.it.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.it.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.it.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ja.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ja.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ja.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ko.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ko.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ko.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ms.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ms.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ms.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.pt.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.pt.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.pt.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ru.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ru.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ru.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sw.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sw.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sw.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ta.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ta.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ta.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.tr.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.tr.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.tr.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.zh.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.zh.jpg new file mode 100644 index 00000000..61cfc567 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.zh.jpg differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.de.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.de.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.de.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.es.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.es.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.es.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.fr.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.fr.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.fr.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hi.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hi.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hi.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.it.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.it.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.it.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ja.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ja.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ja.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ko.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ko.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ko.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ms.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ms.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ms.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.pt.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.pt.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.pt.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ru.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ru.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ru.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sw.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sw.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sw.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ta.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ta.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ta.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.tr.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.tr.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.tr.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.zh.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.zh.png new file mode 100644 index 00000000..0979d36f Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.zh.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.de.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.de.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.de.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.es.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.es.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.es.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.fr.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.fr.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.fr.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.hi.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.hi.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.hi.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.it.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.it.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.it.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ja.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ja.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ja.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ko.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ko.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ko.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ms.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ms.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ms.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.pt.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.pt.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.pt.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ru.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ru.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ru.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sw.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sw.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sw.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ta.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ta.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ta.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.tr.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.tr.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.tr.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.zh.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.zh.png new file mode 100644 index 00000000..d98c5694 Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.zh.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.de.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.de.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.de.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.es.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.es.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.es.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.fr.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.fr.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.fr.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.hi.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.hi.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.hi.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.it.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.it.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.it.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ja.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ja.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ja.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ko.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ko.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ko.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ms.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ms.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ms.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.pt.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.pt.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.pt.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ru.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ru.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ru.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sw.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sw.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sw.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ta.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ta.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ta.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.tr.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.tr.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.tr.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.zh.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.zh.png new file mode 100644 index 00000000..ea31c5bd Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.zh.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.de.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.de.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.de.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.es.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.es.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.es.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.fr.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.fr.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.fr.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.hi.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.hi.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.hi.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.it.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.it.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.it.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ja.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ja.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ja.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ko.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ko.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ko.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ms.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ms.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ms.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.pt.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.pt.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.pt.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ru.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ru.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ru.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sw.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sw.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sw.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ta.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ta.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ta.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.tr.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.tr.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.tr.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.zh.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.zh.png new file mode 100644 index 00000000..61d9e1f5 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.zh.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.de.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.de.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.de.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.es.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.es.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.es.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.fr.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.fr.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.fr.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hi.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hi.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hi.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.it.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.it.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.it.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ja.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ja.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ja.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ko.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ko.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ko.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ms.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ms.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ms.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.pt.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.pt.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.pt.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ru.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ru.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ru.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sw.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sw.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sw.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ta.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ta.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ta.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.tr.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.tr.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.tr.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.zh.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.zh.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.zh.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.de.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.de.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.de.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.es.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.es.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.es.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.fr.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.fr.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.fr.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hi.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hi.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hi.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.it.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.it.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.it.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ja.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ja.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ja.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ko.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ko.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ko.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ms.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ms.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ms.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.pt.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.pt.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.pt.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ru.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ru.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ru.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sw.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sw.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sw.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ta.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ta.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ta.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.tr.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.tr.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.tr.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.zh.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.zh.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.zh.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.de.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.de.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.de.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.es.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.es.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.es.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.fr.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.fr.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.fr.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.hi.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.hi.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.hi.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.it.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.it.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.it.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ja.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ja.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ja.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ko.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ko.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ko.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ms.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ms.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ms.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.pt.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.pt.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.pt.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ru.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ru.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ru.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sw.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sw.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sw.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ta.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ta.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ta.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.tr.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.tr.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.tr.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.zh.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.zh.png new file mode 100644 index 00000000..760da1ed Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.zh.png differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.de.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.de.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.de.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.es.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.es.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.es.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.fr.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.fr.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.fr.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hi.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hi.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hi.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.it.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.it.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.it.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ja.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ja.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ja.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ko.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ko.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ko.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ms.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ms.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ms.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.pt.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.pt.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.pt.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ru.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ru.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ru.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sw.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sw.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sw.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ta.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ta.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ta.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.tr.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.tr.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.tr.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.zh.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.zh.jpg new file mode 100644 index 00000000..f61a8ffd Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.zh.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.de.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.de.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.de.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.es.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.es.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.es.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.fr.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.fr.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.fr.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hi.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hi.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hi.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.it.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.it.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.it.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ja.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ja.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ja.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ko.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ko.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ko.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ms.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ms.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ms.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.pt.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.pt.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.pt.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ru.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ru.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ru.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sw.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sw.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sw.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ta.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ta.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ta.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.tr.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.tr.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.tr.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.zh.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.zh.jpg new file mode 100644 index 00000000..56803185 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.zh.jpg differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.de.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.de.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.de.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.es.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.es.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.es.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.fr.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.fr.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.fr.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.hi.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.hi.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.hi.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.it.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.it.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.it.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ja.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ja.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ja.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ko.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ko.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ko.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ms.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ms.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ms.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.pt.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.pt.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.pt.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ru.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ru.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ru.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sw.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sw.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sw.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ta.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ta.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ta.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.tr.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.tr.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.tr.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.zh.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.zh.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.zh.png differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.de.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.de.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.de.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.es.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.es.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.es.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.fr.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.fr.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.fr.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.hi.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.hi.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.hi.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.it.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.it.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.it.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ja.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ja.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ja.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ko.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ko.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ko.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ms.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ms.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ms.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.pt.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.pt.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.pt.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ru.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ru.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ru.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sw.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sw.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sw.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ta.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ta.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ta.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.tr.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.tr.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.tr.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.zh.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.zh.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.zh.jpg differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.de.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.de.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.de.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.es.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.es.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.es.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.fr.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.fr.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.fr.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.hi.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.hi.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.hi.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.it.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.it.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.it.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ja.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ja.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ja.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ko.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ko.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ko.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ms.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ms.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ms.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.pt.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.pt.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.pt.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ru.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ru.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ru.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sw.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sw.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sw.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ta.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ta.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ta.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.tr.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.tr.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.tr.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.zh.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.zh.png new file mode 100644 index 00000000..1b8e8df5 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.zh.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.de.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.de.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.de.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.es.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.es.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.es.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.fr.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.fr.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.fr.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.hi.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.hi.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.hi.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.it.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.it.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.it.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ja.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ja.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ja.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ko.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ko.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ko.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ms.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ms.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ms.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.pt.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.pt.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.pt.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ru.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ru.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ru.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sw.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sw.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sw.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ta.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ta.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ta.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.tr.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.tr.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.tr.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.zh.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.zh.png new file mode 100644 index 00000000..06bcee87 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.zh.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.de.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.de.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.de.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.es.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.es.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.es.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.fr.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.fr.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.fr.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hi.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hi.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hi.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.it.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.it.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.it.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ja.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ja.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ja.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ko.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ko.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ko.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ms.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ms.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ms.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.pt.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.pt.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.pt.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ru.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ru.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ru.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sw.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sw.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sw.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ta.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ta.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ta.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.tr.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.tr.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.tr.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.zh.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.zh.png new file mode 100644 index 00000000..244a46d6 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.zh.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.de.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.de.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.de.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.es.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.es.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.es.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.fr.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.fr.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.fr.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hi.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hi.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hi.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.it.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.it.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.it.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ja.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ja.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ja.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ko.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ko.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ko.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ms.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ms.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ms.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.pt.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.pt.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.pt.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ru.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ru.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ru.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sw.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sw.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sw.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ta.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ta.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ta.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.tr.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.tr.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.tr.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.zh.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.zh.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.zh.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.de.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.de.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.de.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.es.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.es.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.es.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.fr.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.fr.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.fr.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hi.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hi.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hi.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.it.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.it.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.it.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ja.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ja.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ja.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ko.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ko.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ko.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ms.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ms.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ms.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.pt.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.pt.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.pt.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ru.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ru.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ru.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sw.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sw.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sw.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ta.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ta.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ta.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.tr.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.tr.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.tr.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.zh.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.zh.png new file mode 100644 index 00000000..fcad5ec0 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.zh.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.de.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.de.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.de.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.es.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.es.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.es.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.fr.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.fr.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.fr.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.hi.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.hi.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.hi.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.it.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.it.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.it.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ja.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ja.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ja.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ko.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ko.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ko.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ms.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ms.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ms.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.pt.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.pt.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.pt.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ru.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ru.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ru.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sw.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sw.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sw.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ta.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ta.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ta.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.tr.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.tr.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.tr.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.zh.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.zh.png new file mode 100644 index 00000000..970d8ef0 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.zh.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.de.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.de.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.de.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.es.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.es.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.es.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.fr.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.fr.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.fr.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.hi.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.hi.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.hi.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.it.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.it.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.it.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ja.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ja.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ja.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ko.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ko.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ko.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ms.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ms.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ms.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.pt.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.pt.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.pt.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ru.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ru.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ru.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sw.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sw.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sw.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ta.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ta.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ta.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.tr.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.tr.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.tr.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.zh.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.zh.png new file mode 100644 index 00000000..554cb468 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.zh.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.de.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.de.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.de.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.es.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.es.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.es.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.fr.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.fr.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.fr.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.hi.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.hi.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.hi.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.it.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.it.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.it.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ja.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ja.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ja.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ko.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ko.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ko.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ms.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ms.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ms.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.pt.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.pt.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.pt.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ru.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ru.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ru.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sw.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sw.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sw.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ta.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ta.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ta.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.tr.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.tr.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.tr.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.zh.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.zh.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.zh.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.de.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.de.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.de.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.es.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.es.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.es.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.fr.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.fr.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.fr.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hi.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hi.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hi.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.it.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.it.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.it.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ja.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ja.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ja.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ko.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ko.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ko.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ms.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ms.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ms.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.pt.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.pt.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.pt.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ru.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ru.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ru.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sw.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sw.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sw.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ta.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ta.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ta.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.tr.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.tr.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.tr.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.zh.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.zh.png new file mode 100644 index 00000000..f79ced50 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.zh.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.de.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.de.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.de.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.es.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.es.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.es.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.fr.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.fr.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.fr.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hi.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hi.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hi.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.it.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.it.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.it.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ja.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ja.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ja.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ko.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ko.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ko.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ms.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ms.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ms.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.pt.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.pt.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.pt.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ru.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ru.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ru.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sw.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sw.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sw.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ta.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ta.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ta.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.tr.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.tr.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.tr.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.zh.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.zh.png new file mode 100644 index 00000000..6dc149a8 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.zh.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.de.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.de.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.de.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.es.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.es.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.es.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.fr.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.fr.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.fr.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.hi.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.hi.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.hi.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.it.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.it.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.it.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ja.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ja.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ja.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ko.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ko.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ko.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ms.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ms.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ms.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.pt.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.pt.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.pt.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ru.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ru.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ru.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sw.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sw.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sw.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ta.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ta.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ta.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.tr.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.tr.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.tr.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.zh.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.zh.png new file mode 100644 index 00000000..70ab2c9a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.zh.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.de.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.de.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.de.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.es.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.es.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.es.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.fr.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.fr.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.fr.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.hi.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.hi.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.hi.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.it.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.it.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.it.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ja.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ja.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ja.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ko.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ko.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ko.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ms.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ms.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ms.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.pt.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.pt.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.pt.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ru.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ru.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ru.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sw.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sw.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sw.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ta.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ta.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ta.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.tr.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.tr.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.tr.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.zh.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.zh.png new file mode 100644 index 00000000..99e82b8a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.zh.png differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.de.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.de.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.de.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.es.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.es.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.es.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.fr.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.fr.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.fr.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.hi.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.hi.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.hi.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.it.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.it.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.it.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ja.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ja.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ja.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ko.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ko.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ko.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ms.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ms.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ms.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.pt.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.pt.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.pt.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ru.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ru.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ru.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sw.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sw.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sw.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ta.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ta.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ta.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.tr.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.tr.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.tr.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.zh.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.zh.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.zh.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.de.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.de.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.de.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.es.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.es.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.es.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.fr.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.fr.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.fr.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hi.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hi.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hi.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.it.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.it.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.it.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ja.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ja.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ja.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ko.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ko.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ko.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ms.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ms.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ms.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.pt.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.pt.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.pt.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ru.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ru.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ru.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sw.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sw.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sw.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ta.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ta.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ta.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.tr.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.tr.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.tr.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.zh.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.zh.jpg new file mode 100644 index 00000000..352902a5 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.zh.jpg differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.de.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.de.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.de.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.es.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.es.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.es.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.fr.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.fr.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.fr.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.hi.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.hi.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.hi.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.it.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.it.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.it.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ja.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ja.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ja.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ko.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ko.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ko.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ms.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ms.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ms.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.pt.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.pt.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.pt.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ru.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ru.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ru.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sw.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sw.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sw.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ta.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ta.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ta.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.tr.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.tr.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.tr.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.zh.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.zh.png new file mode 100644 index 00000000..06395901 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.zh.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.de.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.de.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.de.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.es.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.es.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.es.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.fr.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.fr.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.fr.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.hi.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.hi.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.hi.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.it.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.it.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.it.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ja.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ja.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ja.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ko.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ko.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ko.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ms.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ms.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ms.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.pt.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.pt.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.pt.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ru.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ru.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ru.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sw.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sw.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sw.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ta.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ta.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ta.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.tr.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.tr.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.tr.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.zh.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.zh.png new file mode 100644 index 00000000..d95a6f12 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.zh.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.de.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.de.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.de.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.es.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.es.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.es.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.fr.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.fr.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.fr.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.hi.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.hi.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.hi.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.it.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.it.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.it.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ja.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ja.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ja.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ko.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ko.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ko.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ms.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ms.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ms.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.pt.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.pt.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.pt.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ru.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ru.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ru.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sw.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sw.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sw.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ta.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ta.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ta.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.tr.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.tr.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.tr.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.zh.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.zh.png new file mode 100644 index 00000000..50d14194 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.zh.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.de.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.de.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.de.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.es.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.es.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.es.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.fr.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.fr.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.fr.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.hi.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.hi.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.hi.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.it.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.it.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.it.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ja.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ja.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ja.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ko.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ko.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ko.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ms.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ms.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ms.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.pt.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.pt.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.pt.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ru.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ru.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ru.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sw.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sw.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sw.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ta.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ta.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ta.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.tr.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.tr.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.tr.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.zh.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.zh.png new file mode 100644 index 00000000..767279a8 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.zh.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.de.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.de.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.de.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.es.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.es.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.es.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.fr.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.fr.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.fr.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.hi.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.hi.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.hi.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.it.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.it.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.it.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ja.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ja.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ja.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ko.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ko.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ko.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ms.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ms.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ms.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.pt.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.pt.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.pt.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ru.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ru.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ru.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sw.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sw.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sw.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ta.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ta.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ta.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.tr.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.tr.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.tr.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.zh.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.zh.png new file mode 100644 index 00000000..ac19ba86 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.zh.png differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.de.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.de.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.de.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.es.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.es.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.es.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.fr.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.fr.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.fr.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hi.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hi.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hi.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.it.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.it.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.it.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ja.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ja.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ja.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ko.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ko.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ko.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ms.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ms.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ms.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pt.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pt.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pt.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ru.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ru.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ru.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sw.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sw.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sw.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ta.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ta.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ta.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.tr.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.tr.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.tr.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.zh.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.zh.jpg new file mode 100644 index 00000000..93a86c53 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.zh.jpg differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.de.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.de.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.de.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.es.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.es.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.es.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.fr.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.fr.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.fr.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.hi.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.hi.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.hi.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.it.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.it.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.it.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ja.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ja.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ja.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ko.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ko.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ko.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ms.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ms.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ms.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.pt.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.pt.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.pt.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ru.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ru.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ru.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sw.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sw.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sw.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ta.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ta.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ta.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.tr.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.tr.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.tr.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.zh.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.zh.png new file mode 100644 index 00000000..d77ae3f6 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.zh.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.de.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.de.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.de.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.es.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.es.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.es.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.fr.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.fr.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.fr.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.hi.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.hi.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.hi.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.it.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.it.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.it.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ja.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ja.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ja.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ko.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ko.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ko.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ms.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ms.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ms.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.pt.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.pt.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.pt.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ru.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ru.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ru.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sw.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sw.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sw.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ta.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ta.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ta.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.tr.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.tr.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.tr.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.zh.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.zh.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.zh.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.de.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.de.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.de.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.es.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.es.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.es.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.fr.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.fr.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.fr.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.hi.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.hi.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.hi.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.it.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.it.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.it.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ja.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ja.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ja.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ko.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ko.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ko.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ms.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ms.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ms.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.pt.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.pt.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.pt.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ru.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ru.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ru.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sw.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sw.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sw.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ta.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ta.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ta.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.tr.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.tr.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.tr.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.zh.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.zh.png new file mode 100644 index 00000000..c215d37e Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.zh.png differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.de.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.de.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.de.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.es.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.es.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.es.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.fr.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.fr.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.fr.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hi.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hi.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hi.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.it.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.it.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.it.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ja.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ja.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ja.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ko.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ko.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ko.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ms.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ms.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ms.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pt.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pt.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pt.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ru.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ru.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ru.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sw.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sw.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sw.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ta.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ta.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ta.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.tr.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.tr.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.tr.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.zh.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.zh.jpg new file mode 100644 index 00000000..29b4a5e6 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.zh.jpg differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.de.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.de.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.de.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.es.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.es.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.es.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.fr.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.fr.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.fr.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hi.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hi.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hi.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.it.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.it.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.it.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ja.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ja.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ja.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ko.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ko.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ko.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ms.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ms.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ms.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.pt.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.pt.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.pt.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ru.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ru.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ru.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sw.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sw.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sw.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ta.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ta.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ta.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.tr.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.tr.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.tr.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.zh.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.zh.png new file mode 100644 index 00000000..76f140d1 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.zh.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.de.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.de.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.de.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.es.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.es.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.es.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.fr.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.fr.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.fr.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hi.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hi.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hi.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.it.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.it.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.it.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ja.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ja.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ja.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ko.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ko.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ko.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ms.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ms.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ms.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.pt.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.pt.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.pt.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ru.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ru.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ru.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sw.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sw.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sw.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ta.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ta.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ta.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.tr.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.tr.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.tr.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.zh.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.zh.png new file mode 100644 index 00000000..061350e2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.zh.png differ diff --git a/translations/de/README.md b/translations/de/README.md new file mode 100644 index 00000000..926256c4 --- /dev/null +++ b/translations/de/README.md @@ -0,0 +1,140 @@ +[![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) + +# Künstliche Intelligenz für Anfänger - Ein Lehrplan + +|![ Sketchnote von [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| KI für Anfänger - _Sketchnote von [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Entdecken Sie die Welt der **Künstlichen Intelligenz** (KI) mit unserem 12-wöchigen, 24-Lektion umfassenden Lehrplan! Er umfasst praktische Lektionen, Quizze und Labore. Der Lehrplan ist anfängerfreundlich und behandelt Werkzeuge wie TensorFlow und PyTorch sowie ethische Aspekte der KI. + +## Was Sie lernen werden + +**[Mindmap des Kurses](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +In diesem Lehrplan werden Sie lernen: + +* Verschiedene Ansätze zur Künstlichen Intelligenz, einschließlich des "guten alten" symbolischen Ansatzes mit **Wissensrepräsentation** und Schlussfolgerungen ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Neuronale Netzwerke** und **Deep Learning**, die im Zentrum der modernen KI stehen. Wir werden die Konzepte hinter diesen wichtigen Themen anhand von Code in zwei der beliebtesten Frameworks - [TensorFlow](http://Tensorflow.org) und [PyTorch](http://pytorch.org) - veranschaulichen. +* **Neuronale Architekturen** für die Arbeit mit Bildern und Texten. Wir werden aktuelle Modelle behandeln, aber möglicherweise nicht die neuesten Entwicklungen. +* Weniger populäre KI-Ansätze, wie **Genetische Algorithmen** und **Multi-Agenten-Systeme**. + +Was wir in diesem Lehrplan nicht behandeln werden: + +> [Finden Sie alle zusätzlichen Ressourcen für diesen Kurs in unserer Microsoft Learn Sammlung](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Geschäftsanwendungen der **KI im Geschäft**. Erwägen Sie, den Lernpfad [Einführung in KI für Geschäftsanwender](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) auf Microsoft Learn zu belegen oder die **AI Business School** ([AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum)), die in Zusammenarbeit mit [INSEAD](https://www.insead.edu/) entwickelt wurde. +* **Klassisches maschinelles Lernen**, das in unserem [Lehrplan für maschinelles Lernen für Anfänger](http://github.com/Microsoft/ML-for-Beginners) gut beschrieben ist. +* Praktische KI-Anwendungen, die mit **[Kognitiven Diensten](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** erstellt wurden. Dafür empfehlen wir, mit den Modulen von Microsoft Learn für [Bildverarbeitung](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [natürliche Sprachverarbeitung](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative KI mit Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** und anderen zu beginnen. +* Spezifische ML **Cloud-Frameworks**, wie [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) oder [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Ziehen Sie in Betracht, die Lernpfade [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) und [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) zu nutzen. +* **Konversationelle KI** und **Chatbots**. Es gibt einen separaten Lernpfad [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), und Sie können auch [diesen Blogbeitrag](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) für weitere Details konsultieren. +* **Tiefe Mathematik** hinter Deep Learning. Dafür empfehlen wir das Buch [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) von Ian Goodfellow, Yoshua Bengio und Aaron Courville, das auch online unter [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/) verfügbar ist. + +Für eine sanfte Einführung in die Themen _KI in der Cloud_ könnten Sie den Lernpfad [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) in Betracht ziehen. + +# Inhalt + +| | Link zur Lektion | PyTorch/Keras/TensorFlow | Lab | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Kurssetup](./lessons/0-course-setup/setup.md) | [Entwicklungsumgebung einrichten](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Einführung in KI**](./lessons/1-Intro/README.md) | | | +| 01 | [Einführung und Geschichte der KI](./lessons/1-Intro/README.md) | - | - | +| II | **Symbolische KI** | +| 02 | [Wissenrepräsentation und Expertensysteme](./lessons/2-Symbolic/README.md) | [Expertensysteme](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) /[Konzeptgraph](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Einführung in neuronale Netzwerke**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perzeptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notizbuch](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 | [Mehrschichtiges Perzeptron und Erstellen unseres eigenen Frameworks](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notizbuch](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 | [Einführung in Frameworks (PyTorch/TensorFlow) und Überanpassung](./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)| [Entdecken Sie Computer Vision auf Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Einführung in die 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) | [Labor](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Konvolutionale Neuronale Netzwerke](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN-Architekturen](./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 | [Vortrainierte Netzwerke und Transferlernen](./lessons/4-ComputerVision/08-TransferLearning/README.md) und [Trainingstricks](./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) | [Labor](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Autoencoder und 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 & Stilübertragung](./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 | [Objekterkennung](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Labor](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Semantische Segmentierung. 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 | [**Verarbeitung natürlicher Sprache**](./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) | [Erforschen Sie die Verarbeitung natürlicher Sprache auf Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Textdarstellung. 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 | [Semantische Wort-Einbettungen. Word2Vec und 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 | [Sprachmodellierung. Trainieren Sie Ihre eigenen Einbettungen](./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) | [Labor](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Rekurrente Neuronale Netze](./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 Rekurrente Netze](./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) | [Labor](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformatoren. 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 | [Erkennung benannter Entitäten](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Labor](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Große Sprachmodelle, Prompt-Programmierung und Few-Shot-Aufgaben](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Andere KI-Techniken** || | +| 21 | [Genetische Algorithmen](./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 | [Deep Reinforcement Learning](./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-Systeme](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **KI-Ethische Aspekte** | | | +| 24 | [KI-Ethische Grundsätze und verantwortungsvolle KI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Grundsätze für verantwortungsvolle KI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Extras** | | | +| 25 | [Multi-Modal-Netzwerke, CLIP und 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) | | + +## Jede Lektion enthält + +* Vorbereitende Materialien +* Ausführbare Jupyter-Notebooks, die oft spezifisch für das Framework (**PyTorch** oder **TensorFlow**) sind. Das ausführbare Notebook enthält auch viele theoretische Inhalte, daher sollten Sie mindestens eine Version des Notebooks (entweder PyTorch oder TensorFlow) durchgehen, um das Thema zu verstehen. +* **Labs**, die für einige Themen verfügbar sind und Ihnen die Möglichkeit geben, das Gelernte auf ein spezifisches Problem anzuwenden. +* Einige Abschnitte enthalten Links zu [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) Modulen, die verwandte Themen abdecken. + +## Erste Schritte + +- Wir haben eine [Einrichtungslektion](./lessons/0-course-setup/setup.md) erstellt, um Ihnen bei der Einrichtung Ihrer Entwicklungsumgebung zu helfen. - Für Lehrende haben wir ebenfalls eine [Lehrpläne-Einrichtungslektion](./lessons/0-course-setup/for-teachers.md) erstellt! +- So [führen Sie den Code in VSCode oder Codepace aus](./lessons/0-course-setup/how-to-run.md) + +Befolgen Sie diese Schritte: + +Forken Sie das Repository: Klicken Sie auf die Schaltfläche "Fork" in der oberen rechten Ecke dieser Seite. + +Klonen Sie das Repository: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Vergessen Sie nicht, dieses Repo zu star (🌟), um es später leichter zu finden. + +## Lernen Sie andere Lernende kennen + +Treten Sie unserem [offiziellen KI-Discord-Server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) bei, um andere Lernende, die diesen Kurs belegen, zu treffen und sich zu vernetzen sowie Unterstützung zu erhalten. + +## Quizze + +> **Eine Anmerkung zu Quizzen**: Alle Quizze befinden sich im Ordner Quiz-app in etc\quiz-app. Sie sind von den Lektionen aus verlinkt. Die Quiz-App kann lokal ausgeführt oder auf Azure bereitgestellt werden; folgen Sie den Anweisungen im `quiz-app` Ordner. Sie werden schrittweise lokalisiert. + +## Hilfe gewünscht + +Haben Sie Vorschläge oder haben Sie Schreib- oder Codefehler gefunden? Erstellen Sie ein Issue oder einen Pull Request. + +## Besonderer Dank + +* **✍️ Hauptautor:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Redakteur:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Sketchnote-Illustrator:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Quiz-Ersteller:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Hauptbeitragsleistende:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Weitere Lehrpläne + +Unser Team produziert auch andere Lehrpläne! Schauen Sie sich an: + +* [Data Science für Anfänger](https://aka.ms/ds4beginners) +* [**Version 2.0** Generative KI für Anfänger](https://aka.ms/genai-beginners) +* [**NEU** Cybersicherheit für Anfänger](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [Webentwicklung für Anfänger](https://aka.ms/webdev-beginners) +* [IoT für Anfänger](https://aka.ms/iot-beginners) +* [Maschinelles Lernen für Anfänger](https://aka.ms/ml4beginners) +* [XR-Entwicklung für Anfänger](https://aka.ms/xr-dev-for-beginners) +* [GitHub Copilot für KI-gestütztes Programmieren meistern](https://aka.ms/GitHubCopilotAI) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/SECURITY.md b/translations/de/SECURITY.md new file mode 100644 index 00000000..8e0ecb21 --- /dev/null +++ b/translations/de/SECURITY.md @@ -0,0 +1,40 @@ +## Sicherheit + +Microsoft nimmt die Sicherheit unserer Softwareprodukte und -dienste ernst, einschließlich aller Quellcode-Repositorys, die über unsere GitHub-Organisationen verwaltet werden, darunter [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) und [unsere GitHub-Organisationen](https://opensource.microsoft.com/). + +Wenn Sie glauben, eine Sicherheitsanfälligkeit in einem Microsoft-eigenen Repository gefunden zu haben, die [Microsofts Definition einer Sicherheitsanfälligkeit](https://aka.ms/opensource/security/definition) erfüllt, melden Sie dies bitte wie unten beschrieben. + +## Meldung von Sicherheitsproblemen + +**Bitte melden Sie Sicherheitsanfälligkeiten nicht über öffentliche GitHub-Issues.** + +Stattdessen melden Sie diese bitte an das Microsoft Security Response Center (MSRC) unter [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Wenn Sie lieber ohne Anmeldung einreichen möchten, senden Sie eine E-Mail an [secure@microsoft.com](mailto:secure@microsoft.com). Wenn möglich, verschlüsseln Sie Ihre Nachricht mit unserem PGP-Schlüssel; bitte laden Sie ihn von der [Microsoft Security Response Center PGP Key-Seite](https://aka.ms/opensource/security/pgpkey) herunter. + +Sie sollten innerhalb von 24 Stunden eine Antwort erhalten. Wenn Sie aus irgendeinem Grund keine Antwort erhalten, folgen Sie bitte per E-Mail nach, um sicherzustellen, dass wir Ihre ursprüngliche Nachricht erhalten haben. Weitere Informationen finden Sie unter [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Bitte fügen Sie die angeforderten Informationen aufgelistet unten (so viel wie Sie bereitstellen können) hinzu, um uns zu helfen, die Natur und den Umfang des möglichen Problems besser zu verstehen: + + * Art des Problems (z.B. Bufferüberlauf, SQL-Injection, Cross-Site-Scripting usw.) + * Vollständige Pfade der Quellcodedatei(en), die mit dem Auftreten des Problems zusammenhängen + * Der Standort des betroffenen Quellcodes (Tag/Branch/Commit oder direkte URL) + * Alle speziellen Konfigurationen, die erforderlich sind, um das Problem zu reproduzieren + * Schritt-für-Schritt-Anleitungen zur Reproduktion des Problems + * Proof-of-Concept oder Exploit-Code (wenn möglich) + * Auswirkungen des Problems, einschließlich wie ein Angreifer das Problem ausnutzen könnte + +Diese Informationen helfen uns, Ihren Bericht schneller zu triagieren. + +Wenn Sie für ein Bug-Bounty berichten, können vollständigere Berichte zu einer höheren Belohnung führen. Bitte besuchen Sie unsere Seite [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) für weitere Details zu unseren aktiven Programmen. + +## Bevorzugte Sprachen + +Wir bevorzugen, dass alle Kommunikationen in Englisch erfolgen. + +## Richtlinie + +Microsoft folgt dem Prinzip der [Koordinierten Verwundbarkeitsoffenlegung](https://aka.ms/opensource/security/cvd). + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/etc/CODE_OF_CONDUCT.md b/translations/de/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..d74cc0a4 --- /dev/null +++ b/translations/de/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Microsoft Open Source Verhaltenskodex + +Dieses Projekt hat den [Microsoft Open Source Verhaltenskodex](https://opensource.microsoft.com/codeofconduct/) übernommen. + +Ressourcen: + +- [Microsoft Open Source Verhaltenskodex](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft Verhaltenskodex FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- Kontaktieren Sie [opencode@microsoft.com](mailto:opencode@microsoft.com) bei Fragen oder Bedenken. + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/etc/CONTRIBUTING.md b/translations/de/etc/CONTRIBUTING.md new file mode 100644 index 00000000..84a4786e --- /dev/null +++ b/translations/de/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# Mitwirken + +Dieses Projekt freut sich über Beiträge und Vorschläge. Die meisten Beiträge erfordern, dass Sie einer Contributor License Agreement (CLA) zustimmen, in der erklärt wird, dass Sie das Recht haben, und tatsächlich auch, uns die Rechte zur Nutzung Ihres Beitrags zu gewähren. Für weitere Informationen besuchen Sie bitte https://cla.microsoft.com. + +Wenn Sie einen Pull Request einreichen, wird ein CLA-Bot automatisch bestimmen, ob Sie eine CLA bereitstellen müssen, und den PR entsprechend kennzeichnen (z. B. Label, Kommentar). Befolgen Sie einfach die Anweisungen des Bots. Sie müssen dies nur einmal für alle Repositories tun, die unsere CLA verwenden. + +Dieses Projekt hat den [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) übernommen. Für weitere Informationen siehe die [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) oder kontaktieren Sie [opencode@microsoft.com](mailto:opencode@microsoft.com) bei weiteren Fragen oder Anmerkungen. + +# Suche nach Beiträgen + +Wir suchen derzeit aktiv nach Beiträgen zu folgenden Themen: + +- [ ] Abschnitt über Deep Reinforcement Learning schreiben +- [ ] Abschnitt + Notebook zur Objekterkennung verbessern +- [ ] PyTorch Lightning (für [diesen Abschnitt](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Abschnitt + Beispiele zur Named Entity Recognition schreiben +- [ ] Beispiele für das Training unserer eigenen Embeddings für [diesen Abschnitt](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) erstellen + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/etc/Mindmap.md b/translations/de/etc/Mindmap.md new file mode 100644 index 00000000..450bf631 --- /dev/null +++ b/translations/de/etc/Mindmap.md @@ -0,0 +1,76 @@ +# KI + +## [Einführung in KI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definition von KI + - Geschichte der KI + - Ansätze zur KI + - Top-down/Symbolisch + - Bottom-up/Neural + - Evolutionär + - Synergetische / Emergent KI + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [Symbolische KI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Wissensdarstellung + - [Expertensysteme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontologien](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Semantisches Web + +## [Neuronale Netze](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [Perzeptron](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [Mehrschichtige Netze](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Einführung in Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [Overfitting](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Computer Vision](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Auf MS Learn + - [KI-Grundlagen: Erkunde Computer Vision](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [CV mit PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [CV mit TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Einführung in CV. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Faltungsnetzwerke](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [CNN-Architekturen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Transferlernen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Trainingstricks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencoder und 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) + - [Stilübertragung](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Objekterkennung](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentierung](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Verarbeitung natürlicher Sprache](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Auf MS Learn + - [KI-Grundlagen: Erkunde NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP mit PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP mit TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [Textdarstellung](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bag of Words + - TF/IDF + - [Semantische Einbettungen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Sprachmodellierung](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Rekurrente Neuronale Netze](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Generative Rekurrente Netze](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformatoren und BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Erkennung benannter Entitäten](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Textgenerierung und GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## Andere Techniken + - [Genetische Algorithmen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Tiefes Verstärkendes Lernen](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Multi-Agenten-Systeme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [KI-Ethische Grundsätze](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn über verantwortungsvolle KI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## Extras + - [Multimodale Netzwerke](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 + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/etc/SUPPORT.md b/translations/de/etc/SUPPORT.md new file mode 100644 index 00000000..c1d1f686 --- /dev/null +++ b/translations/de/etc/SUPPORT.md @@ -0,0 +1,16 @@ +# Unterstützung + +## So melden Sie Probleme und erhalten Hilfe + +Dieses Projekt verwendet GitHub Issues, um Fehler und Funktionsanfragen zu verfolgen. Bitte durchsuchen Sie die vorhandenen +Probleme, bevor Sie neue Probleme melden, um Duplikate zu vermeiden. Für neue Probleme melden Sie Ihren Fehler oder +Ihre Funktionsanfrage als neues Issue. + +Für Hilfe und Fragen zur Nutzung dieses Projekts nutzen Sie bitte die Diskussionsforen. + +## Microsoft Support-Richtlinie + +Die Unterstützung für dieses Projekt ist auf die oben aufgeführten Ressourcen beschränkt. + +**Haftungsausschluss**: +Dieses Dokument wurde mit Hilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/etc/TRANSLATIONS.md b/translations/de/etc/TRANSLATIONS.md new file mode 100644 index 00000000..19a6abf1 --- /dev/null +++ b/translations/de/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# Beiträge durch Übersetzung von Lektionen + +Wir freuen uns über Übersetzungen der Lektionen in diesem Curriculum! + +## Richtlinien + +In jedem Lektion-Ordner und im Ordner der Lektionseinführung gibt es Unterordner, die die übersetzten Markdown-Dateien enthalten. + +> Hinweis: Bitte übersetze keinen Code in den Beispiel-Code-Dateien; die einzigen Dinge, die übersetzt werden sollen, sind README, Aufgaben und die Quizze. Danke! + +Übersetzte Dateien sollten diesem Namensschema folgen: + +**README._[language]_.md** + +wobei _[language]_ eine zweibuchstabige Sprachabkürzung gemäß dem ISO 639-1 Standard ist (z.B. `README.es.md` für Spanisch und `README.nl.md` für Niederländisch). + +**assignment._[language]_.md** + +Ähnlich wie bei den Readme-Dateien, bitte auch die Aufgaben übersetzen. + +**Quizze** + +1. Füge deine Übersetzung zur Quiz-App hinzu, indem du eine Datei hier hinzufügst: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, mit der richtigen Namenskonvention (en.json, fr.json). **Bitte lokalisiere jedoch die Wörter 'true' oder 'false' nicht. Danke!** + +2. Füge deinen Sprachcode zum Dropdown-Menü in der App.vue-Datei der Quiz-App hinzu. + +3. Bearbeite die [translations index.js Datei](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) der Quiz-App, um deine Sprache hinzuzufügen. + +4. Schließlich bearbeite ALLE Quiz-Links in deinen übersetzten README.md-Dateien, damit sie direkt auf dein übersetztes Quiz verweisen: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 wird zu https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**DANKE** + +Wir schätzen deine Bemühungen sehr! + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als autoritative Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/etc/quiz-app/README.md b/translations/de/etc/quiz-app/README.md new file mode 100644 index 00000000..875897e7 --- /dev/null +++ b/translations/de/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# Quizze + +Diese Quizze sind die Vor- und Nach-Lecture-Quizze für das KI-Curriculum unter https://aka.ms/ai-beginners + +## Hinzufügen eines übersetzten Quizsets + +Fügen Sie eine Quizübersetzung hinzu, indem Sie passende Quizstrukturen in den `assets/translations`-Ordnern erstellen. Die kanonischen Quizze befinden sich in `assets/translations/en`. Die Quizze sind in mehrere Gruppen nach Lektionen unterteilt. Stellen Sie sicher, dass die Nummerierung mit dem entsprechenden Quizabschnitt übereinstimmt. In diesem Curriculum gibt es insgesamt 40 Quizze, beginnend bei 0. + +Nach der Bearbeitung der Übersetzungen bearbeiten Sie die index.js-Datei im Übersetzungsordner, um alle Dateien gemäß den Konventionen in `en` zu importieren. + +Bearbeiten Sie die `index.js`-Datei in `assets/translations`, um die neuen übersetzten Dateien zu importieren. + +Dann bearbeiten Sie das Dropdown-Menü in `App.vue` in dieser App, um Ihre Sprache hinzuzufügen. Passen Sie die lokalisierte Abkürzung an den Ordnernamen Ihrer Sprache an. + +Schließlich bearbeiten Sie alle Quizlinks in den übersetzten Lektionen, falls vorhanden, um diese Lokalisierung als Abfrageparameter einzuschließen: `?loc=fr` zum Beispiel. + +## Projektsetup + +``` +npm install +``` + +### Kompiliert und lädt für die Entwicklung neu + +``` +npm run serve +``` + +### Konstruiert und minimiert für die Produktion + +``` +npm run build +``` + +### Linter und behebt Dateien + +``` +npm run lint +``` + +### Konfiguration anpassen + +Siehe [Konfigurationsreferenz](https://cli.vuejs.org/config/). + +Credits: Vielen Dank an die ursprüngliche Version dieser Quiz-App: https://github.com/arpan45/simple-quiz-vue + +## Bereitstellung in Azure + +Hier ist eine Schritt-für-Schritt-Anleitung, um Ihnen den Einstieg zu erleichtern: + +1. Forken Sie ein GitHub-Repository +Stellen Sie sicher, dass Ihr Code für die statische Web-App in Ihrem GitHub-Repository vorhanden ist. Forken Sie dieses Repository. + +2. Erstellen Sie eine Azure Static Web App +- Erstellen Sie ein [Azure-Konto](http://azure.microsoft.com) +- Gehen Sie zum [Azure-Portal](https://portal.azure.com) +- Klicken Sie auf „Ressource erstellen“ und suchen Sie nach „Static Web App“. +- Klicken Sie auf „Erstellen“. + +3. Konfigurieren Sie die Static Web App +- Grundlagen: Abonnement: Wählen Sie Ihr Azure-Abonnement aus. +- Ressourcengruppe: Erstellen Sie eine neue Ressourcengruppe oder verwenden Sie eine vorhandene. +- Name: Geben Sie einen Namen für Ihre statische Web-App an. +- Region: Wählen Sie die Region, die Ihren Nutzern am nächsten ist. + +- #### Bereitstellungsdetails: +- Quelle: Wählen Sie „GitHub“. +- GitHub-Konto: Autorisieren Sie Azure, auf Ihr GitHub-Konto zuzugreifen. +- Organisation: Wählen Sie Ihre GitHub-Organisation aus. +- Repository: Wählen Sie das Repository, das Ihre statische Web-App enthält. +- Branch: Wählen Sie den Branch aus, den Sie bereitstellen möchten. + +- #### Build-Details: +- Build-Voreinstellungen: Wählen Sie das Framework, mit dem Ihre App erstellt wurde (z. B. React, Angular, Vue usw.). +- App-Standort: Geben Sie den Ordner an, der Ihren App-Code enthält (z. B. /, wenn es sich im Stammverzeichnis befindet). +- API-Standort: Wenn Sie eine API haben, geben Sie deren Standort an (optional). +- Ausgabeort: Geben Sie den Ordner an, in dem die Build-Ausgabe generiert wird (z. B. build oder dist). + +4. Überprüfen und Erstellen +Überprüfen Sie Ihre Einstellungen und klicken Sie auf „Erstellen“. Azure wird die erforderlichen Ressourcen einrichten und einen GitHub Actions-Workflow in Ihrem Repository erstellen. + +5. GitHub Actions Workflow +Azure wird automatisch eine GitHub Actions-Workflow-Datei in Ihrem Repository erstellen (.github/workflows/azure-static-web-apps-.yml). Dieser Workflow wird den Build- und Bereitstellungsprozess verwalten. + +6. Überwachen der Bereitstellung +Gehen Sie zum Tab „Aktionen“ in Ihrem GitHub-Repository. +Sie sollten einen laufenden Workflow sehen. Dieser Workflow wird Ihre statische Web-App in Azure erstellen und bereitstellen. +Sobald der Workflow abgeschlossen ist, wird Ihre App unter der angegebenen Azure-URL live sein. + +### Beispiel-Workflow-Datei + +Hier ist ein Beispiel dafür, wie die GitHub Actions-Workflow-Datei aussehen könnte: +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 +``` + +### Zusätzliche Ressourcen +- [Dokumentation zu Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Dokumentation zu GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/0-course-setup/for-teachers.md b/translations/de/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..40d64131 --- /dev/null +++ b/translations/de/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# Für Lehrkräfte + +Möchten Sie diesen Lehrplan in Ihrem Unterricht verwenden? Fühlen Sie sich frei dazu! + +Tatsächlich können Sie ihn direkt in GitHub verwenden, indem Sie GitHub Classroom nutzen. + +Dazu müssen Sie dieses Repo forken. Sie müssen für jede Lektion ein eigenes Repo erstellen, also müssen Sie jeden Ordner in ein separates Repo extrahieren. Auf diese Weise kann [GitHub Classroom](https://classroom.github.com/classrooms) jede Lektion separat erfassen. + +Diese [vollständigen Anweisungen](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) geben Ihnen eine Vorstellung davon, wie Sie Ihr Klassenzimmer einrichten können. + +## Verwendung des Repos wie es ist + +Wenn Sie dieses Repo so verwenden möchten, wie es derzeit ist, ohne GitHub Classroom zu nutzen, ist das ebenfalls möglich. Sie müssten mit Ihren Schülern kommunizieren, welche Lektion sie gemeinsam durcharbeiten sollen. + +In einem Online-Format (Zoom, Teams oder ähnliches) könnten Sie Breakout-Räume für die Quizze bilden und die Schüler betreuen, um ihnen beim Lernen zu helfen. Dann laden Sie die Schüler ein, die Quizze zu machen und ihre Antworten zu einem bestimmten Zeitpunkt als 'Issues' einzureichen. Sie könnten dasselbe mit Aufgaben machen, wenn Sie möchten, dass die Schüler offen und kollaborativ arbeiten. + +Wenn Sie ein privateres Format bevorzugen, bitten Sie Ihre Schüler, den Lehrplan lektion für lektion in ihre eigenen GitHub-Repos als private Repos zu forken und Ihnen Zugang zu gewähren. Dann können sie Quizze und Aufgaben privat abschließen und diese über Issues in Ihrem Klassenrepo einreichen. + +Es gibt viele Möglichkeiten, dies in einem Online-Klassenraumformat zu gestalten. Bitte lassen Sie uns wissen, was für Sie am besten funktioniert! + +## Bitte teilen Sie uns Ihre Gedanken mit + +Wir möchten, dass dieser Lehrplan für Sie und Ihre Schüler funktioniert. Bitte geben Sie uns Feedback in den Diskussionsforen! + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/0-course-setup/how-to-run.md b/translations/de/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..b7827178 --- /dev/null +++ b/translations/de/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# So führen Sie den Code aus + +Dieser Lehrplan enthält viele ausführbare Beispiele und Laborübungen, die Sie ausführen möchten. Um dies zu tun, benötigen Sie die Möglichkeit, Python-Code in Jupyter-Notebooks auszuführen, die Teil dieses Lehrplans sind. Sie haben mehrere Optionen, um den Code auszuführen: + +## Lokal auf Ihrem Computer ausführen + +Um den Code lokal auf Ihrem Computer auszuführen, müssen Sie eine Version von Python installiert haben. Ich empfehle persönlich die Installation von **[miniconda](https://conda.io/en/latest/miniconda.html)** - es handelt sich um eine recht leichte Installation, die den `conda` Paketmanager für verschiedene Python **virtuelle Umgebungen** unterstützt. + +Nachdem Sie miniconda installiert haben, müssen Sie das Repository klonen und eine virtuelle Umgebung erstellen, die für diesen Kurs verwendet wird: + +```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 +``` + +### Verwendung von Visual Studio Code mit Python-Erweiterung + +Wahrscheinlich ist der beste Weg, den Lehrplan zu nutzen, ihn in [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) mit der [Python-Erweiterung](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) zu öffnen. + +> **Hinweis**: Sobald Sie das Verzeichnis in VS Code klonen und öffnen, wird Ihnen automatisch vorgeschlagen, Python-Erweiterungen zu installieren. Sie müssen auch miniconda installieren, wie oben beschrieben. + +> **Hinweis**: Wenn VS Code Ihnen vorschlägt, das Repository im Container erneut zu öffnen, müssen Sie dies ablehnen, um die lokale Python-Installation zu verwenden. + +### Verwendung von Jupyter im Browser + +Sie können auch die Jupyter-Umgebung direkt über den Browser auf Ihrem eigenen Computer verwenden. Tatsächlich bieten sowohl klassisches Jupyter als auch Jupyter Hub eine recht bequeme Entwicklungsumgebung mit Autovervollständigung, Code-Hervorhebung usw. + +Um Jupyter lokal zu starten, gehen Sie in das Verzeichnis des Kurses und führen Sie aus: + +```bash +jupyter notebook +``` +oder +```bash +jupyterhub +``` +Sie können dann zu einem der `.ipynb` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer`-Ordner navigieren, der Anweisungen gibt, wie ein Container für dieses Repo erstellt wird. VS Code würde Ihnen anbieten, den Code im Container erneut zu öffnen. Dies erfordert die Installation von Docker und wäre auch komplexer, daher empfehlen wir dies erfahrenen Benutzern. + +## Ausführen in der Cloud + +Wenn Sie Python nicht lokal installieren möchten und Zugang zu einigen Cloud-Ressourcen haben, wäre eine gute Alternative, den Code in der Cloud auszuführen. Es gibt mehrere Möglichkeiten, dies zu tun: + +* Verwenden von **[GitHub Codespaces](https://github.com/features/codespaces)**, einem virtuellen Umfeld, das für Sie auf GitHub erstellt wird und über die VS Code-Browseroberfläche zugänglich ist. Wenn Sie Zugriff auf Codespaces haben, können Sie einfach auf die Schaltfläche **Code** im Repo klicken, einen Codespace starten und im Handumdrehen loslegen. +* Verwenden von **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) ist eine kostenlose Rechenressource, die in der Cloud für Menschen wie Sie bereitgestellt wird, um etwas Code auf GitHub auszuprobieren. Es gibt eine Schaltfläche auf der Startseite, um das Repository in Binder zu öffnen - dies sollte Sie schnell zur Binder-Website bringen, die den zugrunde liegenden Container erstellt und die Jupyter-Weboberfläche nahtlos für Sie startet. + +> **Hinweis**: Um Missbrauch zu verhindern, hat Binder den Zugriff auf einige Webressourcen blockiert. Dies kann verhindern, dass ein Teil des Codes funktioniert, der Modelle und/oder Datensätze aus dem öffentlichen Internet abruft. Möglicherweise müssen Sie einige Umgehungen finden. Außerdem sind die von Binder bereitgestellten Rechenressourcen ziemlich grundlegend, sodass das Training langsam sein wird, insbesondere in späteren, komplexeren Lektionen. + +## Ausführen in der Cloud mit GPU + +Einige der späteren Lektionen in diesem Lehrplan würden erheblich von GPU-Unterstützung profitieren, da das Training sonst schmerzhaft langsam sein wird. Es gibt einige Optionen, die Sie verfolgen können, insbesondere wenn Sie über [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) oder über Ihre Institution Zugang zur Cloud haben: + +* Erstellen Sie eine [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) und verbinden Sie sich über Jupyter damit. Sie können das Repo dann direkt auf der Maschine klonen und mit dem Lernen beginnen. NC-Serie VMs haben GPU-Unterstützung. + +> **Hinweis**: Einige Abonnements, einschließlich Azure for Students, bieten nicht standardmäßig GPU-Unterstützung. Möglicherweise müssen Sie zusätzliche GPU-Kerne über eine technische Supportanfrage anfordern. + +* Erstellen Sie einen [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) und verwenden Sie dann die Notebook-Funktion dort. [Dieses Video](https://azure-for-academics.github.io/quickstart/azureml-papers/) zeigt, wie man ein Repository in ein Azure ML-Notebook klont und es zu verwenden beginnt. + +Sie können auch Google Colab verwenden, das mit einer gewissen kostenlosen GPU-Unterstützung kommt, und dort Jupyter-Notebooks hochladen, um sie nacheinander auszuführen. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/0-course-setup/setup.md b/translations/de/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..d8d29fe8 --- /dev/null +++ b/translations/de/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# Einstieg in dieses Curriculum + +## Bist du ein Student? + +Beginne mit den folgenden Ressourcen: + +* [Student Hub-Seite](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Auf dieser Seite findest du Ressourcen für Anfänger, Studentensets und sogar Möglichkeiten, einen kostenlosen Zertifikatsgutschein zu erhalten. Dies ist eine Seite, die du dir merken und von Zeit zu Zeit überprüfen solltest, da wir die Inhalte mindestens monatlich wechseln. +* [Microsoft Student Learn Botschafter](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Trete einer globalen Gemeinschaft von Studentbotschaftern bei, dies könnte dein Zugang zu Microsoft sein. + +**Studierende**, es gibt mehrere Möglichkeiten, das Curriculum zu nutzen. Zunächst kannst du den Text einfach lesen und den Code direkt auf GitHub durchsehen. Wenn du den Code in einem der Notebooks ausführen möchtest - [lies unsere Anweisungen](./etc/how-to-run.md), und finde weitere Ratschläge, wie du es [in diesem Blogbeitrag](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) tun kannst. + +> **Hinweis**: [Anweisungen zum Ausführen des Codes in diesem Curriculum](/how-to-run.md) + +## Selbststudium + +Wenn du jedoch den Kurs als Selbststudienprojekt durchführen möchtest, empfehlen wir dir, das gesamte Repository in dein eigenes GitHub-Konto zu fork und die Übungen selbstständig oder in einer Gruppe abzuschließen: + +* Beginne mit einem Quiz vor der Vorlesung. +* Lies den Einführungstext zur Vorlesung. +* Wenn die Vorlesung zusätzliche Notebooks enthält, gehe diese durch, indem du den Code liest und ausführst. Wenn sowohl TensorFlow- als auch PyTorch-Notebooks bereitgestellt werden, kannst du dich auf eines von ihnen konzentrieren - wähle dein bevorzugtes Framework. +* Notebooks enthalten oft einige Herausforderungen, die es erfordern, den Code ein wenig anzupassen, um zu experimentieren. +* Mache das Quiz nach der Vorlesung. +* Wenn ein Labor an das Modul angehängt ist - schließe die Aufgabe ab. +* Besuche das [Diskussionsforum](https://github.com/microsoft/AI-For-Beginners/discussions), um "laut zu lernen". + +> Für weiterführende Studien empfehlen wir, diese [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) Module und Lernpfade zu verfolgen. + +**Lehrkräfte**, wir haben [einige Vorschläge](/for-teachers.md) zur Nutzung dieses Curriculums aufgenommen. + +--- + +## Pädagogik + +Wir haben beim Aufbau dieses Curriculums zwei pädagogische Grundsätze gewählt: sicherzustellen, dass es praxisorientiert **projektbasiert** ist und dass es **häufige Quizze** enthält. + +Durch die Ausrichtung der Inhalte auf Projekte wird der Prozess für die Studierenden ansprechender gestaltet und die Beibehaltung von Konzepten wird gefördert. Darüber hinaus setzt ein niedrigschwelliges Quiz vor einer Klasse die Absicht des Studierenden, ein Thema zu lernen, während ein zweites Quiz nach der Klasse die weitere Beibehaltung sichert. Dieses Curriculum wurde so gestaltet, dass es flexibel und unterhaltsam ist und ganz oder teilweise absolviert werden kann. Die Projekte beginnen klein und werden bis zum Ende des 12-wöchigen Zyklus zunehmend komplexer. + +> **Eine Anmerkung zu Quizzen**: Alle Quizze sind [in dieser App](https://red-field-0a6ddfd03.1.azurestaticapps.net/) enthalten, insgesamt 50 Quizze mit jeweils drei Fragen. Sie sind aus den Lektionen heraus verlinkt, aber die Quiz-App kann lokal ausgeführt werden; folge den Anweisungen im `etc/quiz-app`-Ordner. + +## Offline-Zugriff + +Du kannst diese Dokumentation offline ausführen, indem du [Docsify](https://docsify.js.org/#/) verwendest. Forke dieses Repository, [installiere Docsify](https://docsify.js.org/#/quickstart) auf deinem lokalen Rechner und tippe dann im `etc/docsify`-Ordner dieses Repositories `docsify serve` ein. Die Website wird auf Port 3000 auf deinem localhost bereitgestellt: `localhost:3000`. Eine PDF des Curriculums ist [unter diesem Link](../../../../../../etc/pdf/readme.pdf) verfügbar. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/1-Intro/README.md b/translations/de/lessons/1-Intro/README.md new file mode 100644 index 00000000..990c76dc --- /dev/null +++ b/translations/de/lessons/1-Intro/README.md @@ -0,0 +1,38 @@ +> Bild von Dmitry Soshnikov, [Foto](https://unsplash.com/photos/r8LmVbUKgns) von [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Aktuelle AI-Forschung + +Das enorme Wachstum der Forschung zu neuronalen Netzwerken begann etwa 2010, als große öffentliche Datensätze verfügbar wurden. Eine riesige Sammlung von Bildern namens [ImageNet](https://en.wikipedia.org/wiki/ImageNet), die etwa 14 Millionen annotierte Bilder enthält, gab den Anstoß zur [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![ILSVRC Genauigkeit](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Bild von [Dmitry Soshnikov](http://soshnikov.com) +Im Jahr 2012 wurden [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) erstmals in der Bildklassifizierung eingesetzt, was zu einem signifikanten Rückgang der Klassifizierungsfehler führte (von fast 30% auf 16,4%). Im Jahr 2015 erreichte die ResNet-Architektur von Microsoft Research [eine menschenähnliche Genauigkeit](https://doi.org/10.1109/ICCV.2015.123). + +Seitdem haben Neuronale Netzwerke in vielen Aufgaben ein sehr erfolgreiches Verhalten gezeigt: + +--- + +Jahr | Erreichte Menschenparität +-----|-------- +2015 | [Bildklassifizierung](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Gesprächs-Spracherkennung](https://arxiv.org/abs/1610.05256) +2018 | [Automatische maschinelle Übersetzung](https://arxiv.org/abs/1803.05567) (Chinesisch-zu-Englisch) +2020 | [Bildunterschriftenerstellung](https://arxiv.org/abs/2009.13682) + +In den letzten Jahren haben wir enorme Erfolge mit großen Sprachmodellen wie BERT und GPT-3 erlebt. Dies geschah hauptsächlich aufgrund der Tatsache, dass eine große Menge an allgemeinen Textdaten verfügbar ist, die es uns ermöglicht, Modelle zu trainieren, um die Struktur und Bedeutung von Texten zu erfassen, sie auf allgemeinen Textsammlungen vorzutrainen und diese Modelle dann für spezifischere Aufgaben zu spezialisieren. Wir werden später in diesem Kurs mehr über [Natural Language Processing](../5-NLP/README.md) lernen. + +## 🚀 Herausforderung + +Machen Sie eine Internettour, um zu bestimmen, wo Ihrer Meinung nach KI am effektivsten eingesetzt wird. Ist es in einer Karten-App, einem Spracherkennungsdienst oder einem Videospiel? Recherchieren Sie, wie das System aufgebaut wurde. + +## [Nach der Vorlesung Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Überprüfung & Selbststudium + +Überprüfen Sie die Geschichte von KI und ML, indem Sie [diese Lektion](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) durchlesen. Nehmen Sie ein Element aus dem Sketchnote am Anfang dieser Lektion oder dieser hier und recherchieren Sie es eingehender, um den kulturellen Kontext zu verstehen, der seine Entwicklung beeinflusst hat. + +**Aufgabe**: [Game Jam](assignment.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/1-Intro/assignment.md b/translations/de/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..709468ed --- /dev/null +++ b/translations/de/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# Game Jam + +Spiele sind ein Bereich, der stark von den Entwicklungen in KI und ML beeinflusst wurde. In dieser Aufgabe schreiben Sie ein kurzes Papier über ein Spiel, das Ihnen gefällt und das von der Entwicklung der KI beeinflusst wurde. Es sollte ein ausreichend altes Spiel sein, das von verschiedenen Arten von Computerverarbeitungssystemen beeinflusst wurde. Ein gutes Beispiel sind Schach oder Go, aber schauen Sie sich auch Videospiele wie Pong oder Pac-Man an. Schreiben Sie einen Aufsatz, der die Vergangenheit, die Gegenwart und die zukünftige Rolle der KI im Spiel behandelt. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/2-Symbolic/README.md b/translations/de/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..d1cecbd7 --- /dev/null +++ b/translations/de/lessons/2-Symbolic/README.md @@ -0,0 +1,209 @@ +# Wissensdarstellung und Expertensysteme + +![Zusammenfassung des Inhalts der symbolischen KI](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.de.png) + +> Sketchnote von [Tomomi Imura](https://twitter.com/girlie_mac) + +Die Suche nach künstlicher Intelligenz basiert auf dem Streben nach Wissen, um die Welt ähnlich wie Menschen zu verstehen. Aber wie geht man dabei vor? + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +In den frühen Tagen der KI war der Top-Down-Ansatz zur Schaffung intelligenter Systeme (der im vorherigen Kapitel besprochen wurde) populär. Die Idee war, das Wissen von Menschen in eine maschinenlesbare Form zu extrahieren und es dann zur automatischen Problemlösung zu verwenden. Dieser Ansatz basierte auf zwei großen Ideen: + +* Wissensdarstellung +* Schlussfolgerung + +## Wissensdarstellung + +Eines der wichtigen Konzepte in der symbolischen KI ist **Wissen**. Es ist wichtig, Wissen von *Information* oder *Daten* zu unterscheiden. Zum Beispiel kann man sagen, dass Bücher Wissen enthalten, weil man Bücher studieren und ein Experte werden kann. Was Bücher jedoch enthalten, wird tatsächlich als *Daten* bezeichnet, und durch das Lesen von Büchern und die Integration dieser Daten in unser Weltmodell wandeln wir diese Daten in Wissen um. + +> ✅ **Wissen** ist etwas, das in unserem Kopf enthalten ist und unser Verständnis der Welt repräsentiert. Es wird durch einen aktiven **Lernprozess** erlangt, der die Informationen, die wir erhalten, in unser aktives Weltmodell integriert. + +Meistens definieren wir Wissen nicht streng, sondern stellen es in Beziehung zu anderen verwandten Konzepten mithilfe der [DIKW-Pyramide](https://en.wikipedia.org/wiki/DIKW_pyramid). Sie enthält die folgenden Konzepte: + +* **Daten** sind etwas, das in physischen Medien dargestellt wird, wie geschriebenem Text oder gesprochenen Worten. Daten existieren unabhängig von Menschen und können zwischen Personen ausgetauscht werden. +* **Information** ist, wie wir Daten in unserem Kopf interpretieren. Zum Beispiel, wenn wir das Wort *Computer* hören, haben wir ein gewisses Verständnis davon, was es ist. +* **Wissen** ist Information, die in unser Weltmodell integriert wird. Zum Beispiel, sobald wir lernen, was ein Computer ist, beginnen wir, einige Ideen darüber zu haben, wie er funktioniert, wie viel er kostet und wofür er verwendet werden kann. Dieses Netzwerk von miteinander verbundenen Konzepten bildet unser Wissen. +* **Weisheit** ist eine weitere Ebene unseres Verständnisses der Welt und repräsentiert *Meta-Wissen*, z.B. eine Vorstellung davon, wie und wann das Wissen verwendet werden sollte. + + + +*Bild [von Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), Von Longlivetheux - Eigenes Werk, CC BY-SA 4.0* + +Das Problem der **Wissensdarstellung** besteht also darin, eine effektive Möglichkeit zu finden, Wissen in einem Computer in Form von Daten darzustellen, um es automatisch nutzbar zu machen. Dies kann als Spektrum betrachtet werden: + +![Spektrum der Wissensdarstellung](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.de.png) + +> Bild von [Dmitry Soshnikov](http://soshnikov.com) + +* Links befinden sich sehr einfache Arten von Wissensdarstellungen, die effektiv von Computern genutzt werden können. Die einfachste ist algorithmisch, wenn Wissen durch ein Computerprogramm dargestellt wird. Dies ist jedoch nicht der beste Weg, Wissen darzustellen, da es nicht flexibel ist. Wissen in unserem Kopf ist oft nicht-algorithmisch. +* Rechts gibt es Darstellungen wie natürlichen Text. Es ist die mächtigste Form, kann jedoch nicht für automatisches Schließen verwendet werden. + +> ✅ Denke einen Moment darüber nach, wie du Wissen in deinem Kopf darstellst und es in Notizen umwandelst. Gibt es ein bestimmtes Format, das dir hilft, es zu behalten? + +## Klassifizierung von Computer-Wissensdarstellungen + +Wir können verschiedene Methoden zur Wissensdarstellung im Computer in die folgenden Kategorien einteilen: + +* **Netzwerkdarstellungen** basieren auf der Tatsache, dass wir ein Netzwerk von miteinander verbundenen Konzepten in unserem Kopf haben. Wir können versuchen, die gleichen Netzwerke als Graphen in einem Computer zu reproduzieren - ein sogenanntes **semantisches Netzwerk**. + +1. **Objekt-Attribut-Wert-Triple** oder **Attribut-Wert-Paare**. Da ein Graph in einem Computer als Liste von Knoten und Kanten dargestellt werden kann, können wir ein semantisches Netzwerk durch eine Liste von Tripeln darstellen, die Objekte, Attribute und Werte enthalten. Zum Beispiel bauen wir die folgenden Tripel über Programmiersprachen: + +Objekt | Attribut | Wert +-------|-----------|------ +Python | ist | Ungetypte-Sprache +Python | erfunden-von | Guido van Rossum +Python | Block-Syntax | Einrückung +Ungetypte-Sprache | hat-keine | Typdefinitionen + +> ✅ Überlege, wie Tripel verwendet werden können, um andere Arten von Wissen darzustellen. + +2. **Hierarchische Darstellungen** betonen die Tatsache, dass wir oft eine Hierarchie von Objekten in unserem Kopf erstellen. Zum Beispiel wissen wir, dass ein Kanarienvogel ein Vogel ist und alle Vögel Flügel haben. Wir haben auch eine Vorstellung davon, welche Farbe ein Kanarienvogel normalerweise hat und wie schnell er fliegen kann. + + - **Frame-Darstellung** basiert darauf, jedes Objekt oder jede Klasse von Objekten als **Frame** darzustellen, der **Slots** enthält. Slots haben mögliche Standardwerte, Wertbeschränkungen oder gespeicherte Prozeduren, die aufgerufen werden können, um den Wert eines Slots zu erhalten. Alle Frames bilden eine Hierarchie, die einer Objekt-Hierarchie in objektorientierten Programmiersprachen ähnelt. + - **Szenarien** sind spezielle Arten von Frames, die komplexe Situationen darstellen, die sich im Laufe der Zeit entfalten können. + +**Python** + +Slot | Wert | Standardwert | Intervall | +-----|-------|---------------|----------| +Name | Python | | | +Ist-Ein | Ungetypte-Sprache | | | +Variablenfall | | CamelCase | | +Programmlänge | | | 5-5000 Zeilen | +Blocksyntax | Einrückung | | | + +3. **Prozedurale Darstellungen** basieren auf der Darstellung von Wissen durch eine Liste von Aktionen, die ausgeführt werden können, wenn eine bestimmte Bedingung eintritt. + - Produktionsregeln sind Wenn-Dann-Aussagen, die es uns ermöglichen, Schlussfolgerungen zu ziehen. Zum Beispiel kann ein Arzt eine Regel haben, die besagt, dass **WENN** ein Patient Fieber hat **ODER** einen hohen Wert für C-reaktives Protein im Bluttest hat **DANN** hat er eine Entzündung. Sobald wir eine der Bedingungen treffen, können wir eine Schlussfolgerung über die Entzündung ziehen und diese dann in weiteren Überlegungen verwenden. + - Algorithmen können als eine andere Form der prozeduralen Darstellung betrachtet werden, obwohl sie fast nie direkt in wissensbasierten Systemen verwendet werden. + +4. **Logik** wurde ursprünglich von Aristoteles als eine Möglichkeit vorgeschlagen, universelles menschliches Wissen darzustellen. + - Prädikatenlogik als mathematische Theorie ist zu reich, um berechenbar zu sein, daher wird normalerweise eine Teilmenge davon verwendet, wie Horn-Klauseln, die in Prolog verwendet werden. + - Beschreibende Logik ist eine Familie von logischen Systemen, die verwendet werden, um Hierarchien von Objekten in verteilten Wissensdarstellungen wie dem *semantischen Web* darzustellen und darüber nachzudenken. + +## Expertensysteme + +Einer der frühen Erfolge der symbolischen KI waren die sogenannten **Expertensysteme** - Computersysteme, die dazu entworfen wurden, als Experte in einem bestimmten begrenzten Problembereich zu agieren. Sie basierten auf einer **Wissensbasis**, die aus einem oder mehreren menschlichen Experten extrahiert wurde, und sie enthielten eine **Schlussfolgerungsmaschine**, die darauf basierend einige Überlegungen anstellte. + +![Menschliche Architektur](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.de.png) | ![Wissensbasiertes System](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.de.png) +---------------------------------------------|------------------------------------------------ +Vereinfachte Struktur eines menschlichen neuronalen Systems | Architektur eines wissensbasierten Systems + +Expertensysteme sind aufgebaut wie das menschliche Denk-System, das **Kurzzeitgedächtnis** und **Langzeitgedächtnis** enthält. Ähnlich unterscheiden wir in wissensbasierten Systemen die folgenden Komponenten: + +* **Problemerinnerung**: enthält das Wissen über das aktuell zu lösende Problem, z.B. die Temperatur oder den Blutdruck eines Patienten, ob er eine Entzündung hat oder nicht usw. Dieses Wissen wird auch als **statisches Wissen** bezeichnet, da es einen Schnappschuss dessen enthält, was wir derzeit über das Problem wissen - den sogenannten *Problemzustand*. +* **Wissensbasis**: repräsentiert langfristiges Wissen über ein Problembereich. Es wird manuell von menschlichen Experten extrahiert und ändert sich nicht von Konsultation zu Konsultation. Da es uns ermöglicht, von einem Problemzustand zu einem anderen zu navigieren, wird es auch als **dynamisches Wissen** bezeichnet. +* **Schlussfolgerungsmaschine**: orchestriert den gesamten Prozess der Suche im Problembereich und stellt dem Benutzer bei Bedarf Fragen. Sie ist auch dafür verantwortlich, die richtigen Regeln zu finden, die auf jeden Zustand angewendet werden sollen. + +Als Beispiel betrachten wir folgendes Expertensystem zur Bestimmung eines Tieres basierend auf seinen physischen Eigenschaften: + +![AND-OR-Baum](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.de.png) + +> Bild von [Dmitry Soshnikov](http://soshnikov.com) + +Dieses Diagramm wird als **AND-OR-Baum** bezeichnet und ist eine grafische Darstellung einer Menge von Produktionsregeln. Das Zeichnen eines Baumes ist zu Beginn der Wissensgewinnung von Nutzen. Um das Wissen im Computer darzustellen, ist es bequemer, Regeln zu verwenden: + +``` +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 +``` + +Du wirst feststellen, dass jede Bedingung auf der linken Seite der Regel und die Aktion im Wesentlichen Objekt-Attribut-Wert (OAV) Tripel sind. **Arbeitsgedächtnis** enthält die Menge der OAV-Triple, die dem aktuell zu lösenden Problem entsprechen. Eine **Regelmaschine** sucht nach Regeln, für die eine Bedingung erfüllt ist, und wendet sie an, indem sie ein weiteres Tripel zum Arbeitsgedächtnis hinzufügt. + +> ✅ Schreibe deinen eigenen AND-OR-Baum zu einem Thema, das dir gefällt! + +### Vorwärts- vs. Rückwärtsinferenz + +Der oben beschriebene Prozess wird als **Vorwärtsinferenz** bezeichnet. Er beginnt mit einigen Anfangsdaten über das Problem, die im Arbeitsgedächtnis verfügbar sind, und führt dann die folgende Schlussfolgerungsschleife aus: + +1. Wenn das Zielattribut im Arbeitsgedächtnis vorhanden ist - stoppe und gib das Ergebnis an +2. Suche nach allen Regeln, deren Bedingung derzeit erfüllt ist - erhalte die **Konfliktmenge** von Regeln. +3. Führe die **Konfliktlösung** durch - wähle eine Regel aus, die in diesem Schritt ausgeführt wird. Es könnte verschiedene Strategien zur Konfliktlösung geben: + - Wähle die erste anwendbare Regel in der Wissensbasis + - Wähle eine zufällige Regel + - Wähle eine *spezifischere* Regel, d.h. diejenige, die die meisten Bedingungen auf der "linken Seite" (LHS) erfüllt +4. Wende die ausgewählte Regel an und füge neues Wissen in den Problemzustand ein +5. Wiederhole ab Schritt 1. + +In einigen Fällen möchten wir jedoch vielleicht mit einem leeren Wissen über das Problem beginnen und Fragen stellen, die uns helfen, zu einer Schlussfolgerung zu gelangen. Zum Beispiel führen wir bei einer medizinischen Diagnose normalerweise nicht alle medizinischen Analysen im Voraus durch, bevor wir mit der Diagnose des Patienten beginnen. Wir möchten vielmehr Analysen durchführen, wenn eine Entscheidung getroffen werden muss. + +Dieser Prozess kann mit **Rückwärtsinferenz** modelliert werden. Er wird durch das **Ziel** gesteuert - den Attributwert, den wir zu finden versuchen: + +1. Wähle alle Regeln aus, die uns den Wert eines Ziels geben können (d.h. mit dem Ziel auf der RHS ("rechten Seite")) - eine Konfliktmenge +1. Wenn es keine Regeln für dieses Attribut gibt oder eine Regel besagt, dass wir den Wert vom Benutzer abfragen sollten - frage danach, andernfalls: +1. Verwende die Konfliktlösungsstrategie, um eine Regel auszuwählen, die wir als *Hypothese* verwenden werden - wir werden versuchen, sie zu beweisen +1. Wiederhole den Prozess rekursiv für alle Attribute auf der LHS der Regel und versuche, sie als Ziele zu beweisen +1. Wenn der Prozess an irgendeinem Punkt fehlschlägt - verwende eine andere Regel in Schritt 3. + +> ✅ In welchen Situationen ist Vorwärtsinferenz geeigneter? Und Rückwärtsinferenz? + +### Implementierung von Expertensystemen + +Expertensysteme können mit verschiedenen Werkzeugen implementiert werden: + +* Direkt in einer Hochsprache programmieren. Das ist nicht die beste Idee, da der Hauptvorteil eines wissensbasierten Systems darin besteht, dass Wissen von der Schlussfolgerung getrennt ist, und potenziell sollte ein Experte im Problembereich in der Lage sein, Regeln zu schreiben, ohne die Details des Schlussfolgerungsprozesses zu verstehen. +* Verwendung einer **Expertensystem-Schale**, d.h. eines Systems, das speziell dafür entworfen wurde, mit Wissen unter Verwendung einer bestimmten Wissensdarstellungssprache befüllt zu werden. + +## ✍️ Übung: Tierinferenz + +Siehe [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) für ein Beispiel zur Implementierung eines Expertensystems für Vorwärts- und Rückwärtsinferenz. + +> **Hinweis**: Dieses Beispiel ist recht einfach und vermittelt nur eine Vorstellung davon, wie ein Expertensystem aussieht. Sobald du anfängst, ein solches System zu erstellen, wirst du erst dann einige *intelligente* Verhaltensweisen bemerken, wenn du eine bestimmte Anzahl von Regeln erreichst, etwa 200+. Irgendwann werden die Regeln zu komplex, um alle im Kopf zu behalten, und an diesem Punkt wirst du dich fragen, warum ein System bestimmte Entscheidungen trifft. Dennoch ist die wichtige Eigenschaft wissensbasierter Systeme, dass du immer genau *erklären* kannst, wie eine der Entscheidungen getroffen wurde. + +## Ontologien und das semantische Web + +Am Ende des 20. Jahrhunderts gab es eine Initiative, Wissensdarstellung zu verwenden, um Internetressourcen zu annotieren, sodass es möglich wäre, Ressourcen zu finden, die sehr spezifischen Anfragen entsprechen. Diese Bewegung wurde als **semantisches Web** bezeichnet und basierte auf mehreren Konzepten: + +- Eine spezielle Wissensdarstellung, die auf **[Beschreibungslogiken](https://en.wikipedia.org/wiki/Description_logic)** (DL) basiert. Sie ähnelt der Frame-Wissensdarstellung, da sie eine Hierarchie von Objekten mit Eigenschaften aufbaut, jedoch formale logische Semantik und Schlussfolgerung hat. Es gibt eine ganze Familie von DLs, die zwischen Ausdruckskraft und algorithmischer Komplexität der Schlussfolgerung balancieren. +- Verteilte Wissensdarstellung, bei der alle Konzepte durch einen globalen URI-Identifikator dargestellt werden, was es ermöglicht, Wissenshierarchien zu erstellen, die sich über das Internet erstrecken. +- Eine Familie von XML-basierten Sprachen zur Wissensbeschreibung: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Ein zentrales Konzept im semantischen Web ist das Konzept der **Ontologie**. Es bezieht sich auf eine explizite Spezifikation eines Problembereichs unter Verwendung einer formalen Wissensdarstellung. Die einfachste Ontologie kann einfach eine Hierarchie von Objekten in einem Problembereich sein, aber komplexere Ontologien werden Regeln enthalten, die für Schlussfolgerungen verwendet werden können. + +Im semantischen Web basieren alle Darstellungen auf Tripeln. Jedes Objekt und jede Relation sind eindeutig durch die URI identifiziert. Zum Beispiel, wenn wir den Fakt angeben wollen, dass dieser KI-Lehrplan von Dmitry Soshnikov am 1. Januar 2022 entwickelt wurde - hier sind die Tripel, die wir verwenden können: + + + +``` +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 +``` + +> ✅ Hier `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` sind einige bekannte und allgemein akzeptierte URIs, um die Konzepte von *Schöpfer* und *Erstellungsdatum* auszudrücken. + +In einem komplexeren Fall, wenn wir eine Liste von Schöpfern definieren möchten, können wir einige in RDF definierte Datenstrukturen verwenden. + + + +> Diagramme oben von [Dmitry Soshnikov](http://soshnikov.com) + +Der Fortschritt beim Aufbau des semantischen Webs wurde durch den Erfolg von Suchmaschinen und Techniken der natürlichen Sprachverarbeitung, die es ermöglichen, strukturierte Daten aus Texten zu extrahieren, etwas verlangsamt. Dennoch gibt es in einigen Bereichen weiterhin erhebliche Bemühungen, Ontologien und Wissensbasen zu pflegen. Einige Projekte, die erwähnenswert sind: + +* [WikiData](https://wikidata.org/) ist eine Sammlung von maschinenlesbaren Wissensbasen, die mit Wikipedia verbunden sind. Die meisten Daten stammen aus den Wikipedia *InfoBoxen*, Stücken strukturierten Inhalts innerhalb von Wikipedia-Seiten. Du kannst [abfragen](https://query.wikidata.org/) wikidata in SPARQL, einer speziellen Abfragesprache für das semantische Web. Hier ist eine Beispielabfrage, die die beliebtesten Augenfarben unter Menschen anzeigt: + +```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/) ist ein weiterer Versuch, ähnlich wie WikiData. + +> ✅ Wenn du mit dem Erstellen deiner eigenen Ontologien oder dem Öffnen bestehender experimentieren möchtest, gibt es einen großartigen visuellen Ontologie-Editor namens [Protégé](https://protege.stanford.edu/). Lade ihn herunter oder benutze ihn online. + + + + + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/2-Symbolic/assignment.md b/translations/de/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..f4e5c871 --- /dev/null +++ b/translations/de/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# Eine Ontologie erstellen + +Der Aufbau einer Wissensdatenbank dreht sich darum, ein Modell zu kategorisieren, das Fakten über ein Thema repräsentiert. Wählen Sie ein Thema - wie eine Person, einen Ort oder eine Sache - und erstellen Sie dann ein Modell dieses Themas. Verwenden Sie einige der Techniken und Modellierungsstrategien, die in dieser Lektion beschrieben werden. Ein Beispiel wäre die Erstellung einer Ontologie für ein Wohnzimmer mit Möbeln, Beleuchtung und so weiter. Wie unterscheidet sich das Wohnzimmer von der Küche? Vom Badezimmer? Wie wissen Sie, dass es sich um ein Wohnzimmer und nicht um ein Esszimmer handelt? Verwenden Sie [Protégé](https://protege.stanford.edu/), um Ihre Ontologie zu erstellen. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/de/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..8480c822 --- /dev/null +++ b/translations/de/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,96 @@ +# Einführung in Neuronale Netze: Perzeptron + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Einer der ersten Versuche, etwas Ähnliches wie ein modernes neuronales Netzwerk zu implementieren, wurde 1957 von Frank Rosenblatt vom Cornell Aeronautical Laboratory unternommen. Es handelte sich um eine Hardware-Implementierung namens "Mark-1", die darauf ausgelegt war, primitive geometrische Figuren wie Dreiecke, Quadrate und Kreise zu erkennen. + +| | | +|--------------|-----------| +|Frank Rosenblatt | Das Mark 1 Perzeptron| + +> Bilder [von Wikipedia](https://en.wikipedia.org/wiki/Perceptron) + +Ein Eingabebild wurde durch ein 20x20-Photodetektor-Array dargestellt, sodass das neuronale Netzwerk 400 Eingaben und eine binäre Ausgabe hatte. Ein einfaches Netzwerk bestand aus einem Neuron, das auch als **Schwellwertlogikeinheit** bezeichnet wird. Die Gewichte des neuronalen Netzwerks wirkten wie Potentiometer, die während der Trainingsphase manuell angepasst werden mussten. + +> ✅ Ein Potentiometer ist ein Gerät, das es dem Benutzer ermöglicht, den Widerstand eines Schaltkreises anzupassen. + +> Die New York Times schrieb zu dieser Zeit über das Perzeptron: *der Embryo eines elektronischen Computers, von dem [die Marine] erwartet, dass er gehen, sprechen, sehen, schreiben, sich selbst reproduzieren und sich seiner Existenz bewusst sein wird.* + +## Perzeptron-Modell + +Angenommen, wir haben N Merkmale in unserem Modell, in diesem Fall wäre der Eingangsvektor ein Vektor der Größe N. Ein Perzeptron ist ein **binäres Klassifikations**modell, d.h. es kann zwischen zwei Klassen von Eingabedaten unterscheiden. Wir nehmen an, dass für jeden Eingangsvektor x die Ausgabe unseres Perzeptrons entweder +1 oder -1 beträgt, je nach Klasse. Die Ausgabe wird mit der Formel berechnet: + +y(x) = f(wTx) + +wobei f eine Schritt-Aktivierungsfunktion ist. + + + + +## Training des Perzeptrons + +Um ein Perzeptron zu trainieren, müssen wir einen Gewichtungsvektor w finden, der die meisten Werte korrekt klassifiziert, d.h. der den kleinsten **Fehler** ergibt. Dieser Fehler E wird durch das **Perzeptron-Kriterium** wie folgt definiert: + +E(w) = -∑wTxiti + +wobei: + +* die Summe über die Trainingsdatenpunkte i genommen wird, die zu einer falschen Klassifikation führen +* xi die Eingabedaten sind und ti für negative und positive Beispiele entsprechend -1 oder +1 ist. + +Dieses Kriterium wird als Funktion der Gewichte w betrachtet, und wir müssen es minimieren. Oft wird eine Methode namens **Gradientenabstieg** verwendet, bei der wir mit einigen Anfangsgewichten w(0) beginnen und dann bei jedem Schritt die Gewichte gemäß der Formel aktualisieren: + +w(t+1) = w(t) - η∇E(w) + +Hierbei ist η die sogenannte **Lernrate**, und ∇E(w) bezeichnet den **Gradienten** von E. Nachdem wir den Gradienten berechnet haben, erhalten wir + +w(t+1) = w(t) + ∑ηxiti + +Der Algorithmus in Python sieht so aus: + +```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 +``` + +## Fazit + +In dieser Lektion haben Sie über ein Perzeptron gelernt, das ein binäres Klassifikationsmodell ist, und wie man es mit einem Gewichtungsvektor trainiert. + +## 🚀 Herausforderung + +Wenn Sie versuchen möchten, Ihr eigenes Perzeptron zu bauen, probieren Sie [dieses Labor auf Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), das den [Azure ML Designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) verwendet. + +## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Überprüfung & Selbststudium + +Um zu sehen, wie wir das Perzeptron zur Lösung eines Spielzeugsproblems sowie realer Probleme verwenden können und um weiter zu lernen - gehen Sie zum [Perzeptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) Notizbuch. + +Hier ist ein interessanter [Artikel über Perzeptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590 +) ebenfalls. + +## [Aufgabe](lab/README.md) + +In dieser Lektion haben wir ein Perzeptron für die binäre Klassifizierungsaufgabe implementiert und es verwendet, um zwischen zwei handgeschriebenen Ziffern zu klassifizieren. In diesem Labor sind Sie aufgefordert, das Problem der Ziffernklassifizierung vollständig zu lösen, d.h. zu bestimmen, welche Ziffer am wahrscheinlichsten einem gegebenen Bild entspricht. + +* [Anleitungen](lab/README.md) +* [Notizbuch](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/de/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..062d07a6 --- /dev/null +++ b/translations/de/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# Mehrklassenklassifikation mit Perzeptron + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +Verwenden Sie den Code, den wir in dieser Lektion für die binäre Klassifikation von handgeschriebenen MNIST-Ziffern entwickelt haben, um einen Mehrklassenklassifikator zu erstellen, der in der Lage ist, jede Ziffer zu erkennen. Berechnen Sie die Klassifikationsgenauigkeit auf dem Trainings- und Testdatensatz und drucken Sie die Verwirrungsmatrix aus. + +## Hinweise + +1. Erstellen Sie für jede Ziffer einen Datensatz für den binären Klassifikator "diese Ziffer vs. alle anderen Ziffern" +1. Trainieren Sie 10 verschiedene Perzeptrons für die binäre Klassifikation (eines für jede Ziffer) +1. Definieren Sie eine Funktion, die eine Eingabenziffer klassifiziert + +> **Hinweis**: Wenn wir die Gewichte aller 10 Perzeptrons in eine Matrix kombinieren, sollten wir in der Lage sein, alle 10 Perzeptrons auf die Eingabenziffern durch eine Matrixmultiplikation anzuwenden. Die wahrscheinlichste Ziffer kann dann einfach durch die Anwendung der `argmax`-Operation auf die Ausgabe gefunden werden. + +## Notizbuch starten + +Starten Sie das Labor, indem Sie [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) öffnen. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..dda900be --- /dev/null +++ b/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# Einführung in Neuronale Netzwerke. Mehrschichtiger Perzeptron + +Im vorherigen Abschnitt haben Sie das einfachste Modell eines neuronalen Netzwerks kennengelernt - den einlagigen Perzeptron, ein lineares Klassifikationsmodell für zwei Klassen. + +In diesem Abschnitt werden wir dieses Modell zu einem flexibleren Rahmen erweitern, der es uns ermöglicht: + +* **Mehrklassenklassifikation** zusätzlich zur Zwei-Klassen-Klassifikation durchzuführen +* **Regressionsprobleme** zusätzlich zur Klassifikation zu lösen +* Klassen zu trennen, die nicht linear separierbar sind + +Wir werden auch unser eigenes modulares Framework in Python entwickeln, das es uns ermöglicht, verschiedene Architekturen neuronaler Netzwerke zu konstruieren. + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalisierung des Maschinellen Lernens + +Lassen Sie uns mit der Formalisierung des Problems des Maschinellen Lernens beginnen. Angenommen, wir haben einen Trainingsdatensatz **X** mit Labels **Y**, und wir müssen ein Modell *f* erstellen, das die genauesten Vorhersagen trifft. Die Qualität der Vorhersagen wird durch die **Verlustfunktion** ℒ gemessen. Folgende Verlustfunktionen werden häufig verwendet: + +* Für das Regressionsproblem, wenn wir eine Zahl vorhersagen müssen, können wir den **absoluten Fehler** ∑i|f(x(i))-y(i)| oder den **quadratischen Fehler** ∑i(f(x(i))-y(i))2 verwenden +* Für die Klassifikation verwenden wir den **0-1 Fehler** (der im Wesentlichen dasselbe wie die **Genauigkeit** des Modells ist) oder den **logistischen Fehler**. + +Für den einlagigen Perzeptron wurde die Funktion *f* als lineare Funktion *f(x)=wx+b* definiert (hier ist *w* die Gewichtsmatrix, *x* der Vektor der Eingangsmerkmale und *b* der Bias-Vektor). Für verschiedene Architekturen neuronaler Netzwerke kann diese Funktion komplexere Formen annehmen. + +> Im Falle der Klassifikation ist es oft wünschenswert, Wahrscheinlichkeiten der entsprechenden Klassen als Netzwerk-Ausgabe zu erhalten. Um willkürliche Zahlen in Wahrscheinlichkeiten umzuwandeln (z.B. um die Ausgabe zu normalisieren), verwenden wir oft die **Softmax**-Funktion σ, und die Funktion *f* wird zu *f(x)=σ(wx+b)* + +In der obigen Definition von *f* werden *w* und *b* als **Parameter** θ=⟨*w,b*⟩ bezeichnet. Gegebenen den Datensatz ⟨**X**,**Y**⟩ können wir einen Gesamter Fehler über den gesamten Datensatz als Funktion der Parameter θ berechnen. + +> ✅ **Das Ziel des Trainings eines neuronalen Netzwerks besteht darin, den Fehler durch Variieren der Parameter θ zu minimieren.** + +## Gradientabstieg-Optimierung + +Es gibt eine bekannte Methode zur Optimierung von Funktionen, die als **Gradientenabstieg** bezeichnet wird. Die Idee ist, dass wir die Ableitung (im mehrdimensionalen Fall als **Gradient** bezeichnet) der Verlustfunktion bezüglich der Parameter berechnen und die Parameter so variieren, dass der Fehler sinkt. Dies kann wie folgt formalisiert werden: + +* Initialisieren Sie die Parameter mit zufälligen Werten w(0), b(0) +* Wiederholen Sie den folgenden Schritt viele Male: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Während des Trainings sollen die Optimierungsschritte unter Berücksichtigung des gesamten Datensatzes berechnet werden (denken Sie daran, dass der Verlust als Summe über alle Trainingsproben berechnet wird). In der Praxis nehmen wir jedoch kleine Portionen des Datensatzes, die als **Minibatches** bezeichnet werden, und berechnen die Gradienten basierend auf einer Teilmenge von Daten. Da die Teilmenge jedes Mal zufällig ausgewählt wird, wird diese Methode als **stochastischer Gradientabstieg** (SGD) bezeichnet. + +## Mehrschichtige Perzeptrons und Rückpropagation + +Das einlagige Netzwerk, wie wir oben gesehen haben, ist in der Lage, linear separierbare Klassen zu klassifizieren. Um ein reichhaltigeres Modell zu erstellen, können wir mehrere Schichten des Netzwerks kombinieren. Mathematisch würde das bedeuten, dass die Funktion *f* eine komplexere Form annehmen würde und in mehreren Schritten berechnet wird: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Hier ist α eine **nicht-lineare Aktivierungsfunktion**, σ ist eine Softmax-Funktion, und die Parameter sind θ=<*w1,b1,w2,b2*>. + +Der Gradientabstiegsalgorithmus bleibt derselbe, aber es wird schwieriger, die Gradienten zu berechnen. Gegebenen der Kettenregel für Ableitungen können wir die Ableitungen wie folgt berechnen: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ Die Kettenregel wird verwendet, um die Ableitungen der Verlustfunktion bezüglich der Parameter zu berechnen. + +Beachten Sie, dass der linkeste Teil all dieser Ausdrücke gleich ist, und somit können wir die Ableitungen effektiv berechnen, indem wir von der Verlustfunktion ausgehen und "rückwärts" durch den Berechnungsgraphen gehen. Daher wird die Methode zum Trainieren eines mehrschichtigen Perzeptrons als **Rückpropagation** oder 'Backprop' bezeichnet. + +Berechnungsgraph + +> TODO: Bildnachweis + +> ✅ Wir werden die Rückpropagation in unserem Notizbuchbeispiel viel detaillierter behandeln. + +## Fazit + +In dieser Lektion haben wir unsere eigene Bibliothek für neuronale Netzwerke erstellt und sie für eine einfache zweidimensionale Klassifikationsaufgabe verwendet. + +## 🚀 Herausforderung + +Im begleitenden Notizbuch werden Sie Ihr eigenes Framework zur Erstellung und zum Training von mehrschichtigen Perzeptrons implementieren. Sie werden im Detail sehen, wie moderne neuronale Netzwerke funktionieren. + +Gehen Sie zum Notizbuch [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) und arbeiten Sie es durch. + +## [Nachvorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Überprüfung & Selbststudium + +Rückpropagation ist ein gängiger Algorithmus, der in KI und ML verwendet wird und es wert ist, [im Detail](https://wikipedia.org/wiki/Backpropagation) studiert zu werden. + +## [Aufgabe](lab/README.md) + +In diesem Labor werden Sie gebeten, das Framework, das Sie in dieser Lektion erstellt haben, zu verwenden, um die Klassifikation handgeschriebener Ziffern im MNIST-Datensatz zu lösen. + +* [Anleitungen](lab/README.md) +* [Notizbuch](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Haftungsausschluss**: +Dieses Dokument wurde mit Hilfe von KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..644891a6 --- /dev/null +++ b/translations/de/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# MNIST-Klassifikation mit unserem eigenen Framework + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +Löse das Problem der Klassifikation handgeschriebener Ziffern im MNIST-Datensatz mithilfe von 1-, 2- und 3-schichtigen Perzeptronen. Nutze das neuronale Netzwerk-Framework, das wir in der Lektion entwickelt haben. + +## Notebook starten + +Beginne das Labor, indem du [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) öffnest. + +## Fragen + +Versuche als Ergebnis dieses Labors die folgenden Fragen zu beantworten: + +- Beeinflusst die Aktivierungsfunktion zwischen den Schichten die Leistung des Netzwerks? +- Benötigen wir für diese Aufgabe ein 2- oder 3-schichtiges Netzwerk? +- Hattest du Probleme beim Trainieren des Netzwerks? Besonders als die Anzahl der Schichten zunahm. +- Wie verhalten sich die Gewichte des Netzwerks während des Trainings? Du kannst den maximalen Absolutwert der Gewichte im Vergleich zur Epoche auftragen, um die Beziehung zu verstehen. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/de/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..752e0b35 --- /dev/null +++ b/translations/de/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# Frameworks für Neuronale Netzwerke + +Wie wir bereits gelernt haben, um neuronale Netzwerke effizient zu trainieren, müssen wir zwei Dinge tun: + +* Mit Tensors arbeiten, z. B. multiplizieren, addieren und Funktionen wie Sigmoid oder Softmax berechnen +* Die Gradienten aller Ausdrücke berechnen, um die Optimierung durch Gradientenabstieg durchzuführen + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Während die `numpy` Bibliothek den ersten Teil erledigen kann, benötigen wir einen Mechanismus zur Berechnung von Gradienten. In [unserem Framework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), das wir im vorherigen Abschnitt entwickelt haben, mussten wir alle Ableitungsfunktionen manuell innerhalb der `backward` Methode programmieren, die Backpropagation durchführt. Idealerweise sollte ein Framework uns die Möglichkeit geben, die Gradienten *jeden Ausdrucks* zu berechnen, den wir definieren können. + +Ein weiterer wichtiger Aspekt ist die Fähigkeit, Berechnungen auf der GPU oder anderen spezialisierten Recheneinheiten wie [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) durchzuführen. Das Training tiefer neuronaler Netzwerke erfordert *eine Menge* Berechnungen, und die Möglichkeit, diese Berechnungen auf GPUs zu parallelisieren, ist von großer Bedeutung. + +> ✅ Der Begriff 'parallelisieren' bedeutet, die Berechnungen auf mehrere Geräte zu verteilen. + +Derzeit sind die beiden beliebtesten neuronalen Frameworks: [TensorFlow](http://TensorFlow.org) und [PyTorch](https://pytorch.org/). Beide bieten eine Low-Level-API, um mit Tensors sowohl auf CPU als auch auf GPU zu arbeiten. Darüber hinaus gibt es eine höherstufige API, die entsprechend [Keras](https://keras.io/) und [PyTorch Lightning](https://pytorchlightning.ai/) genannt wird. + +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** in beiden Frameworks ermöglichen es Ihnen, sogenannte **Berechnungsgraphen** zu erstellen. Dieser Graph definiert, wie man die Ausgabe (normalerweise die Verlustfunktion) mit gegebenen Eingabeparametern berechnet und kann zur Berechnung auf der GPU verschoben werden, wenn diese verfügbar ist. Es gibt Funktionen, um diesen Berechnungsgraphen zu differenzieren und Gradienten zu berechnen, die dann zur Optimierung der Modellparameter verwendet werden können. + +**High-Level APIs** betrachten neuronale Netzwerke im Wesentlichen als eine **Folge von Schichten** und erleichtern den Aufbau der meisten neuronalen Netzwerke erheblich. Das Training des Modells erfordert normalerweise die Vorbereitung der Daten und dann das Aufrufen einer `fit` Funktion, um die Arbeit zu erledigen. + +Die hochgradige API ermöglicht es Ihnen, typische neuronale Netzwerke sehr schnell zu konstruieren, ohne sich um viele Details kümmern zu müssen. Gleichzeitig bieten Low-Level-APIs viel mehr Kontrolle über den Trainingsprozess, und daher werden sie häufig in der Forschung verwendet, wenn es darum geht, neue Architekturen neuronaler Netzwerke zu entwickeln. + +Es ist auch wichtig zu verstehen, dass Sie beide APIs zusammen verwenden können, z. B. können Sie Ihre eigene Netzwerkarchitektur mit der Low-Level-API entwickeln und sie dann in das größere Netzwerk einfügen, das mit der High-Level-API konstruiert und trainiert wurde. Oder Sie können ein Netzwerk mit der High-Level-API als Folge von Schichten definieren und dann Ihre eigene Low-Level-Trainingsschleife verwenden, um die Optimierung durchzuführen. Beide APIs verwenden die gleichen grundlegenden zugrunde liegenden Konzepte und sind so gestaltet, dass sie gut zusammenarbeiten. + +## Lernen + +In diesem Kurs bieten wir den Großteil des Inhalts sowohl für PyTorch als auch für TensorFlow an. Sie können Ihr bevorzugtes Framework auswählen und nur die entsprechenden Notebooks durchgehen. Wenn Sie sich nicht sicher sind, welches Framework Sie wählen sollen, lesen Sie einige Diskussionen im Internet über **PyTorch vs. TensorFlow**. Sie können auch beide Frameworks betrachten, um ein besseres Verständnis zu bekommen. + +Wo immer möglich, werden wir High-Level-APIs zur Vereinfachung verwenden. Wir glauben jedoch, dass es wichtig ist, zu verstehen, wie neuronale Netzwerke von Grund auf funktionieren, weshalb wir zu Beginn mit der Low-Level-API und Tensors arbeiten. Wenn Sie jedoch schnell vorankommen und nicht viel Zeit mit dem Lernen dieser Details verbringen möchten, können Sie diese überspringen und direkt zu den High-Level-API-Notebooks gehen. + +## ✍️ Übungen: Frameworks + +Setzen Sie Ihr Lernen in den folgenden Notebooks fort: + +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* + +Nachdem Sie die Frameworks gemeistert haben, lassen Sie uns das Konzept des Overfittings zusammenfassen. + +# Overfitting + +Overfitting ist ein äußerst wichtiges Konzept im maschinellen Lernen, und es ist sehr wichtig, es richtig zu verstehen! + +Betrachten Sie das folgende Problem, 5 Punkte (dargestellt durch `x` in den Grafiken unten) zu approximieren: + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.de.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.de.jpg) +-------------------------|-------------------------- +**Lineares Modell, 2 Parameter** | **Nicht-lineares Modell, 7 Parameter** +Training Fehler = 5.3 | Training Fehler = 0 +Validierungsfehler = 5.1 | Validierungsfehler = 20 + +* Links sehen wir eine gute gerade Linienapproximation. Da die Anzahl der Parameter angemessen ist, erfasst das Modell die Idee hinter der Punktverteilung gut. +* Rechts ist das Modell zu mächtig. Da wir nur 5 Punkte haben und das Modell 7 Parameter hat, kann es sich so anpassen, dass es durch alle Punkte verläuft, was den Trainingsfehler auf 0 reduziert. Dies hindert das Modell jedoch daran, das korrekte Muster hinter den Daten zu verstehen, sodass der Validierungsfehler sehr hoch ist. + +Es ist sehr wichtig, ein korrektes Gleichgewicht zwischen der Komplexität des Modells (Anzahl der Parameter) und der Anzahl der Trainingsproben zu finden. + +## Warum Overfitting auftritt + + * Nicht genügend Trainingsdaten + * Zu mächtiges Modell + * Zu viel Rauschen in den Eingabedaten + +## Wie man Overfitting erkennt + +Wie Sie aus dem obigen Diagramm sehen können, kann Overfitting durch einen sehr niedrigen Trainingsfehler und einen hohen Validierungsfehler erkannt werden. Normalerweise sehen wir während des Trainings, dass sowohl der Trainings- als auch der Validierungsfehler zu sinken beginnen, und dann kann der Validierungsfehler an einem bestimmten Punkt aufhören zu sinken und anfangen zu steigen. Dies wird ein Zeichen für Overfitting sein und der Hinweis, dass wir wahrscheinlich an dieser Stelle das Training stoppen sollten (oder zumindest einen Snapshot des Modells erstellen sollten). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.de.png) + +## Wie man Overfitting verhindert + +Wenn Sie sehen, dass Overfitting auftritt, können Sie Folgendes tun: + + * Erhöhen Sie die Menge an Trainingsdaten + * Verringern Sie die Komplexität des Modells + * Verwenden Sie eine [Regularisierungstechnik](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), wie z. B. [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), die wir später betrachten werden. + +## Overfitting und Bias-Varianz-Handel + +Overfitting ist tatsächlich ein Fall eines allgemeineren Problems in der Statistik, das als [Bias-Varianz-Handel](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) bekannt ist. Wenn wir die möglichen Fehlerquellen in unserem Modell betrachten, können wir zwei Arten von Fehlern sehen: + +* **Bias-Fehler** entstehen, weil unser Algorithmus nicht in der Lage ist, die Beziehung zwischen den Trainingsdaten korrekt zu erfassen. Dies kann darauf zurückzuführen sein, dass unser Modell nicht mächtig genug ist (**Underfitting**). +* **Varianz-Fehler**, die entstehen, weil das Modell Rauschen in den Eingabedaten anstelle von bedeutungsvollen Beziehungen approximiert (**Overfitting**). + +Während des Trainings nimmt der Bias-Fehler ab (da unser Modell lernt, die Daten zu approximieren), und der Varianz-Fehler nimmt zu. Es ist wichtig, das Training zu stoppen - entweder manuell (wenn wir Overfitting erkennen) oder automatisch (durch Einführung von Regularisierung) - um Overfitting zu verhindern. + +## Fazit + +In dieser Lektion haben Sie die Unterschiede zwischen den verschiedenen APIs der beiden beliebtesten KI-Frameworks, TensorFlow und PyTorch, kennengelernt. Darüber hinaus haben Sie ein sehr wichtiges Thema, Overfitting, behandelt. + +## 🚀 Herausforderung + +In den begleitenden Notebooks finden Sie am Ende 'Aufgaben'; arbeiten Sie die Notebooks durch und erfüllen Sie die Aufgaben. + +## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Überprüfung & Selbststudium + +Recherchieren Sie zu den folgenden Themen: + +- TensorFlow +- PyTorch +- Overfitting + +Stellen Sie sich die folgenden Fragen: + +- Was ist der Unterschied zwischen TensorFlow und PyTorch? +- Was ist der Unterschied zwischen Overfitting und Underfitting? + +## [Aufgabe](lab/README.md) + +In diesem Labor werden Sie gebeten, zwei Klassifikationsprobleme mit ein- und mehrschichtigen voll verbundenen Netzwerken mit PyTorch oder TensorFlow zu lösen. + +* [Anweisungen](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/de/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..982b2d9d --- /dev/null +++ b/translations/de/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# Klassifikation mit PyTorch/TensorFlow + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +Lösen Sie zwei Klassifikationsprobleme mithilfe von ein- und mehrschichtigen vollständig verbundenen Netzwerken mit PyTorch oder TensorFlow: + +1. **[Iris-Klassifikation](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - ein Beispiel für ein Problem mit tabellarischen Eingabedaten, das mit klassischem maschinellem Lernen bearbeitet werden kann. Ihr Ziel ist es, Irisblumen in 3 Klassen basierend auf 4 numerischen Parametern zu klassifizieren. +2. **MNIST** Klassifikation handgeschriebener Ziffern, die wir bereits gesehen haben. + +Probieren Sie verschiedene Netzwerkarchitekturen aus, um die bestmögliche Genauigkeit zu erreichen. + +## Notizbuch starten + +Beginnen Sie das Labor, indem Sie [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) öffnen. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/3-NeuralNetworks/README.md b/translations/de/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..2de01914 --- /dev/null +++ b/translations/de/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# Einführung in Neuronale Netzwerke + +![Zusammenfassung des Inhalts zu Einführung in Neuronale Netzwerke in einem Doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.de.png) + +Wie wir in der Einführung besprochen haben, ist eine der Möglichkeiten, Intelligenz zu erreichen, ein **Computermodell** oder ein **künstliches Gehirn** zu trainieren. Seit der Mitte des 20. Jahrhunderts haben Forscher verschiedene mathematische Modelle ausprobiert, bis sich in den letzten Jahren diese Richtung als äußerst erfolgreich erwies. Solche mathematischen Modelle des Gehirns werden als **neuronale Netzwerke** bezeichnet. + +> Manchmal werden neuronale Netzwerke als *Künstliche Neuronale Netzwerke* (ANNs) bezeichnet, um zu verdeutlichen, dass wir von Modellen und nicht von echten Netzwerken von Neuronen sprechen. + +## Maschinelles Lernen + +Neuronale Netzwerke sind ein Teil eines größeren Fachgebiets, das **Maschinelles Lernen** genannt wird, dessen Ziel es ist, Daten zu verwenden, um Computermodelle zu trainieren, die in der Lage sind, Probleme zu lösen. Maschinelles Lernen ist ein großer Teil der Künstlichen Intelligenz, jedoch behandeln wir klassisches ML in diesem Lehrplan nicht. + +> Besuchen Sie unseren separaten **[Maschinelles Lernen für Anfänger](http://github.com/microsoft/ml-for-beginners)** Lehrplan, um mehr über klassisches Maschinelles Lernen zu erfahren. + +Im Maschinellen Lernen nehmen wir an, dass wir einen Datensatz von Beispielen **X** und die entsprechenden Ausgabewerte **Y** haben. Beispiele sind oft N-dimensionale Vektoren, die aus **Merkmalen** bestehen, und Ausgaben werden als **Labels** bezeichnet. + +Wir werden die zwei häufigsten Probleme des maschinellen Lernens betrachten: + +* **Klassifikation**, bei der wir ein Eingabeobjekt in zwei oder mehr Klassen einordnen müssen. +* **Regression**, bei der wir eine numerische Zahl für jede der Eingabemuster vorhersagen müssen. + +> Wenn Eingaben und Ausgaben als Tensoren dargestellt werden, ist der Eingabedatensatz eine Matrix der Größe M×N, wobei M die Anzahl der Proben und N die Anzahl der Merkmale ist. Die Ausgabelabel Y ist der Vektor der Größe M. + +In diesem Lehrplan konzentrieren wir uns ausschließlich auf Modelle neuronaler Netzwerke. + +## Ein Modell eines Neurons + +Aus der Biologie wissen wir, dass unser Gehirn aus Nervenzellen besteht, von denen jede mehrere "Eingänge" (Axone) und einen Ausgang (Dendrit) hat. Axone und Dendriten können elektrische Signale leiten, und die Verbindungen zwischen Axonen und Dendriten können unterschiedliche Leitfähigkeiten aufweisen (gesteuert durch Neuromediatoren). + +![Modell eines Neurons](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.de.jpg) | ![Modell eines Neurons](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.de.png) +----|---- +Reales Neuron *([Bild](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) von Wikipedia)* | Künstliches Neuron *(Bild vom Autor)* + +Somit enthält das einfachste mathematische Modell eines Neurons mehrere Eingänge X1, ..., XN und einen Ausgang Y sowie eine Reihe von Gewichten W1, ..., WN. Ein Ausgang wird berechnet als: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +wobei f eine nichtlineare **Aktivierungsfunktion** ist. + +> Frühe Modelle von Neuronen wurden in dem klassischen Papier [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) von Warren McCullock und Walter Pitts im Jahr 1943 beschrieben. Donald Hebb schlug in seinem Buch "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" vor, wie diese Netzwerke trainiert werden können. + +## In diesem Abschnitt + +In diesem Abschnitt werden wir lernen über: +* [Perzeptron](03-Perceptron/README.md), eines der frühesten Modelle neuronaler Netzwerke für die Klassifikation in zwei Klassen +* [Mehrschichtige Netzwerke](04-OwnFramework/README.md) mit einem begleitenden Notizbuch [wie man unser eigenes Framework erstellt](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Frameworks für Neuronale Netzwerke](05-Frameworks/README.md), mit diesen Notizbüchern: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) und [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Overfitting](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von KI-gestützten maschinellen Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/de/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..6d56b31a --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# Einführung in die Computer Vision + +[Computer Vision](https://wikipedia.org/wiki/Computer_vision) ist ein Fachgebiet, das darauf abzielt, Computern ein umfassendes Verständnis digitaler Bilder zu ermöglichen. Diese Definition ist recht breit gefasst, da *Verstehen* viele verschiedene Bedeutungen haben kann, einschließlich der Identifizierung eines Objekts auf einem Bild (**Objekterkennung**), dem Verständnis dessen, was passiert (**Ereigniserkennung**), der Beschreibung eines Bildes in Text oder der Rekonstruktion einer Szene in 3D. Es gibt auch spezielle Aufgaben im Zusammenhang mit menschlichen Bildern: Alters- und Emotionserkennung, Gesichtserkennung und -identifikation sowie 3D-Pose-Schätzung, um nur einige zu nennen. + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Eine der einfachsten Aufgaben der Computer Vision ist die **Bildklassifizierung**. + +Computer Vision wird oft als ein Zweig der KI betrachtet. Heutzutage werden die meisten Aufgaben der Computer Vision mit Hilfe von neuronalen Netzwerken gelöst. In diesem Abschnitt werden wir mehr über die speziellen Arten von neuronalen Netzwerken lernen, die für Computer Vision verwendet werden, [faltungsneuronale Netzwerke](../07-ConvNets/README.md). + +Bevor Sie jedoch das Bild an ein neuronales Netzwerk übergeben, macht es in vielen Fällen Sinn, einige algorithmische Techniken zur Verbesserung des Bildes zu verwenden. + +Es gibt mehrere Python-Bibliotheken für die Bildverarbeitung: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** kann zum Lesen/Schreiben verschiedener Bildformate verwendet werden. Es unterstützt auch ffmpeg, ein nützliches Tool zum Konvertieren von Videobildern in Bilder. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (auch bekannt als PIL) ist etwas leistungsfähiger und unterstützt auch einige Bildmanipulationen wie Morphing, Palettenanpassungen und mehr. +* **[OpenCV](https://opencv.org/)** ist eine leistungsstarke Bildverarbeitungsbibliothek, die in C++ geschrieben wurde und zum *de facto* Standard für die Bildverarbeitung geworden ist. Sie hat eine praktische Python-Schnittstelle. +* **[dlib](http://dlib.net/)** ist eine C++-Bibliothek, die viele Algorithmen des maschinellen Lernens implementiert, einschließlich einiger Algorithmen der Computer Vision. Sie hat ebenfalls eine Python-Schnittstelle und kann für herausfordernde Aufgaben wie Gesichtserkennung und Erkennung von Gesichtsmerkmalen verwendet werden. + +## OpenCV + +[OpenCV](https://opencv.org/) wird als der *de facto* Standard für die Bildverarbeitung angesehen. Es enthält viele nützliche Algorithmen, die in C++ implementiert sind. Sie können OpenCV auch aus Python heraus aufrufen. + +Ein guter Ort, um OpenCV zu lernen, ist [dieser Learn OpenCV-Kurs](https://learnopencv.com/getting-started-with-opencv/). In unserem Lehrplan ist es nicht unser Ziel, OpenCV zu lernen, sondern Ihnen einige Beispiele zu zeigen, wann es verwendet werden kann und wie. + +### Bilder laden + +Bilder in Python können bequem durch NumPy-Arrays dargestellt werden. Beispielsweise würden Graustufenbilder mit einer Größe von 320x200 Pixeln in einem 200x320-Array gespeichert werden, während Farbbilder derselben Dimension die Form 200x320x3 (für 3 Farbkanäle) hätten. Um ein Bild zu laden, können Sie den folgenden Code verwenden: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Traditionell verwendet OpenCV die BGR (Blau-Grün-Rot) Kodierung für Farbbilder, während die meisten anderen Python-Tools das traditionellere RGB (Rot-Grün-Blau) verwenden. Damit das Bild richtig aussieht, müssen Sie es in den RGB-Farbraum konvertieren, entweder indem Sie die Dimensionen im NumPy-Array vertauschen oder eine OpenCV-Funktion aufrufen: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Die gleiche `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. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **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` Funktionen, die oft vorzuziehen sind, um Helligkeit oder Kontrast anzupassen. +* Verschiedene [Transformationen](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) auf das Bild anwenden: + - **[Affintransformationen](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** können nützlich sein, wenn Sie Rotation, Größenänderung und Verzerrung des Bildes kombinieren müssen und die Quelle und Zielpositionen von drei Punkten im Bild kennen. Affintransformationen halten parallele Linien parallel. + - **[Perspektivtransformationen](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** können nützlich sein, wenn Sie die Quelle und Zielpositionen von 4 Punkten im Bild kennen. Zum Beispiel, wenn Sie ein Bild eines rechteckigen Dokuments mit einer Smartphone-Kamera aus einem bestimmten Winkel aufnehmen und ein rechteckiges Bild des Dokuments selbst erstellen möchten. +* Bewegung im Bild verstehen, indem Sie **[optischen Fluss](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** verwenden. + +## Beispiele für die Verwendung von Computer Vision + +In unserem [OpenCV-Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) geben wir einige Beispiele, wann Computer Vision verwendet werden kann, um spezifische Aufgaben auszuführen: + +* **Vorverarbeitung eines Fotos eines Braille-Buchs**. Wir konzentrieren uns darauf, wie wir Schwellenwertbildung, Merkmalsdetektion, Perspektivtransformation und NumPy-Manipulationen verwenden können, um einzelne Braille-Symbole für eine weitere Klassifizierung durch ein neuronales Netzwerk zu trennen. + +![Braille-Bild](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.de.jpeg) | ![Vorverarbeitetes Braille-Bild](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.de.png) | ![Braille-Symbole](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.de.png) +----|-----|----- + +> Bild aus [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Bewegung im Video mithilfe von Frame-Differenz erkennen**. Wenn die Kamera feststeht, sollten die Bilder aus dem Kamerafeed ziemlich ähnlich sein. Da Bilder als Arrays dargestellt werden, erhalten wir durch das Subtrahieren dieser Arrays für zwei aufeinanderfolgende Bilder den Pixelunterschied, der für statische Bilder niedrig sein sollte und höher wird, sobald es eine erhebliche Bewegung im Bild gibt. + +![Bild von Video-Frames und Frame-Differenzen](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.de.png) + +> Bild aus [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Bewegung mithilfe des optischen Flusses erkennen**. [Optischer Fluss](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) ermöglicht es uns zu verstehen, wie sich einzelne Pixel auf Video-Frames bewegen. Es gibt zwei Arten von optischem Fluss: + + - **Dichter optischer Fluss** berechnet das Vektorfeld, das zeigt, wo sich jeder Pixel bewegt + - **Sparsame optische Flüsse** basieren darauf, einige markante Merkmale im Bild (z.B. Kanten) zu erfassen und deren Trajektorie von Frame zu Frame zu verfolgen. + +![Bild des optischen Flusses](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.de.png) + +> Bild aus [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Beispielnotebooks: OpenCV [probieren Sie OpenCV in Aktion](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Lassen Sie uns einige Experimente mit OpenCV durchführen, indem wir das [OpenCV-Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) erkunden. + +## Fazit + +Manchmal können relativ komplexe Aufgaben wie Bewegungs- oder Fingerspitzen-Erkennung rein durch Computer Vision gelöst werden. Daher ist es sehr hilfreich, die grundlegenden Techniken der Computer Vision zu kennen und zu wissen, was Bibliotheken wie OpenCV leisten können. + +## 🚀 Herausforderung + +Sehen Sie sich [dieses 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) aus der AI-Show an, um mehr über das Cortic Tigers-Projekt zu erfahren und wie sie eine blockbasierte Lösung entwickelt haben, um Computer Vision-Aufgaben über einen Roboter zu demokratisieren. Machen Sie etwas Recherche zu anderen Projekten dieser Art, die neuen Lernenden den Einstieg in das Feld erleichtern. + +## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Überprüfung & Selbststudium + +Lesen Sie mehr über optischen Fluss [in diesem großartigen Tutorial](https://learnopencv.com/optical-flow-in-opencv/). + +## [Aufgabe](lab/README.md) + +In diesem Labor werden Sie ein Video mit einfachen Gesten aufnehmen, und Ihr Ziel ist es, Bewegungen nach oben/unten/links/rechts mithilfe des optischen Flusses zu extrahieren. + +Palmbewegung Frame + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/de/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..b8271bc3 --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,22 @@ +# Bewegungen mit optischem Fluss erkennen + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://aka.ms/ai-beginners). + +## Aufgabe + +Betrachten Sie [dieses Video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), in dem die Handfläche einer Person sich nach links/rechts/oben/unten vor einem stabilen Hintergrund bewegt. Sie sind bis Oktober 2023 auf Daten trainiert. + +**Ihr Ziel** ist es, den optischen Fluss zu nutzen, um zu bestimmen, welche Teile des Videos Bewegungen nach oben/unten/links/rechts enthalten. + +**Stretch-Ziel** wäre es, tatsächlich die Bewegung der Handfläche/Finger mithilfe des Hauttons zu verfolgen, wie in [diesem Blogbeitrag](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) oder [hier](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) beschrieben. + +## Startnotizbuch + +Beginnen Sie das Labor, indem Sie [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) öffnen. + +## Fazit + +Manchmal können relativ komplexe Aufgaben wie Bewegungserkennung oder Fingerspitzen-Erkennung rein durch Computer Vision gelöst werden. Daher ist es sehr hilfreich zu wissen, was Bibliotheken wie OpenCV leisten können. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/de/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..bdae5efa --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# Bekannte CNN-Architekturen + +### VGG-16 + +VGG-16 ist ein Netzwerk, das 2014 eine Genauigkeit von 92,7 % bei der Top-5-Klassifizierung von ImageNet erreicht hat. Es hat die folgende Schichtstruktur: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.de.jpg) + +Wie Sie sehen können, folgt VGG einer traditionellen Pyramidenarchitektur, die aus einer Sequenz von Faltungs-Pooling-Schichten besteht. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.de.jpg) + +> Bild von [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 ist eine Familie von Modellen, die 2015 von Microsoft Research vorgeschlagen wurde. Die Hauptidee von ResNet besteht darin, **Residualblöcke** zu verwenden: + + + +> Bild aus [diesem Papier](https://arxiv.org/pdf/1512.03385.pdf) + +Der Grund für die Verwendung von Identitätsdurchgängen besteht darin, dass unsere Schicht **die Differenz** zwischen dem Ergebnis einer vorherigen Schicht und der Ausgabe des Residualblocks vorhersagen soll - daher der Name *residual*. Diese Blöcke sind viel einfacher zu trainieren, und man kann Netzwerke mit mehreren Hundert dieser Blöcke konstruieren (die gebräuchlichsten Varianten sind ResNet-52, ResNet-101 und ResNet-152). + +Man kann sich dieses Netzwerk auch so vorstellen, dass es seine Komplexität an den Datensatz anpassen kann. Zu Beginn, wenn Sie das Netzwerk zu trainieren beginnen, sind die Gewichtswerte klein, und das meiste Signal geht durch die Identitätsschichten. Mit dem Fortschreiten des Trainings und zunehmenden Gewichtswerten wächst die Bedeutung der Netzwerkparameter, und das Netzwerk passt sich an, um die erforderliche Ausdruckskraft zu gewährleisten, um die Trainingsbilder korrekt zu klassifizieren. + +### Google Inception + +Die Google Inception-Architektur geht einen Schritt weiter und baut jede Netzwerkschicht als Kombination aus mehreren verschiedenen Pfaden auf: + + + +> Bild von [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Hier müssen wir die Rolle von 1x1-Faltungen betonen, da sie zunächst keinen Sinn zu ergeben scheinen. Warum sollten wir mit einem 1x1-Filter über das Bild fahren? Sie müssen jedoch daran denken, dass Faltungfilter auch mit mehreren Tiefenkanälen arbeiten (ursprünglich - RGB-Farben, in nachfolgenden Schichten - Kanäle für verschiedene Filter), und die 1x1-Faltung wird verwendet, um diese Eingangskanäle mithilfe unterschiedlicher trainierbarer Gewichte zu mischen. Es kann auch als Herunterrechnen (Pooling) über die Kanaldimension betrachtet werden. + +Hier ist [ein guter Blogbeitrag](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) zu diesem Thema sowie [das ursprüngliche Papier](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet ist eine Familie von Modellen mit reduzierter Größe, die für mobile Geräte geeignet sind. Verwenden Sie sie, wenn Ihnen die Ressourcen ausgehen und Sie ein wenig Genauigkeit opfern können. Die Hauptidee dahinter ist die sogenannte **depthwise separable convolution**, die es ermöglicht, Faltungfilter als Kombination aus räumlichen Faltungen und 1x1-Faltungen über Tiefenkanäle darzustellen. Dies reduziert erheblich die Anzahl der Parameter, wodurch das Netzwerk kleiner wird und auch einfacher mit weniger Daten trainiert werden kann. + +Hier ist [ein guter Blogbeitrag über MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Fazit + +In dieser Einheit haben Sie das Hauptkonzept hinter neuronalen Netzwerken für Computer Vision - den Faltungsnetzwerken - kennengelernt. Echte Architekturen, die Bildklassifizierung, Objekterkennung und sogar Bildgenerierungsnetzwerke antreiben, basieren alle auf CNNs, nur mit mehr Schichten und einigen zusätzlichen Trainingstricks. + +## 🚀 Herausforderung + +In den begleitenden Notizbüchern finden Sie am Ende Hinweise, wie Sie eine höhere Genauigkeit erzielen können. Machen Sie einige Experimente, um zu sehen, ob Sie eine höhere Genauigkeit erreichen können. + +## [Quiz nach der Vorlesung](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Überprüfung & Selbststudium + +Während CNNs am häufigsten für Aufgaben der Computer Vision verwendet werden, sind sie im Allgemeinen gut geeignet, um Muster fester Größe zu extrahieren. Wenn wir beispielsweise mit Klängen arbeiten, möchten wir möglicherweise auch CNNs verwenden, um nach bestimmten Mustern im Audiosignal zu suchen - in diesem Fall wären die Filter eindimensional (und dieses CNN würde als 1D-CNN bezeichnet). Manchmal wird auch ein 3D-CNN verwendet, um Merkmale im mehrdimensionalen Raum zu extrahieren, wie etwa bestimmte Ereignisse, die in einem Video auftreten - CNNs können bestimmte Muster der Merkmalsänderung über die Zeit erfassen. Machen Sie einige Überprüfungen und Selbststudien zu anderen Aufgaben, die mit CNNs durchgeführt werden können. + +## [Aufgabe](lab/README.md) + +In diesem Labor sind Sie damit beauftragt, verschiedene Katzen- und Hunderassen zu klassifizieren. Diese Bilder sind komplexer als der MNIST-Datensatz und haben höhere Dimensionen, und es gibt mehr als 10 Klassen. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/de/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..89ade362 --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,59 @@ +# Convolutional Neural Networks + +Wir haben bereits gesehen, dass neuronale Netze ziemlich gut mit Bildern umgehen können, und sogar ein einstufiger Perzeptron in der Lage ist, handgeschriebene Ziffern aus dem MNIST-Datensatz mit angemessener Genauigkeit zu erkennen. Der MNIST-Datensatz ist jedoch sehr speziell, und alle Ziffern sind zentriert im Bild, was die Aufgabe einfacher macht. + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +Im echten Leben möchten wir in der Lage sein, Objekte auf einem Bild unabhängig von ihrer genauen Position im Bild zu erkennen. Die Computer Vision unterscheidet sich von der allgemeinen Klassifikation, denn wenn wir versuchen, ein bestimmtes Objekt im Bild zu finden, scannen wir das Bild nach bestimmten **Mustern** und deren Kombinationen. Zum Beispiel, wenn wir nach einer Katze suchen, schauen wir zuerst nach horizontalen Linien, die Schnurrhaare bilden können, und dann kann eine bestimmte Kombination von Schnurrhaaren uns sagen, dass es sich tatsächlich um ein Bild einer Katze handelt. Die relative Position und das Vorhandensein bestimmter Muster sind wichtig, nicht ihre genaue Position im Bild. + +Um Muster zu extrahieren, verwenden wir das Konzept der **konvolutionalen Filter**. Wie Sie wissen, wird ein Bild durch eine 2D-Matrix oder einen 3D-Tensor mit Farbtiefe dargestellt. Das Anwenden eines Filters bedeutet, dass wir eine relativ kleine **Filterkernel**-Matrix nehmen und für jedes Pixel im ursprünglichen Bild den gewichteten Durchschnitt mit benachbarten Punkten berechnen. Wir können dies als ein kleines Fenster betrachten, das über das gesamte Bild gleitet und alle Pixel gemäß den Gewichten in der Filterkernel-Matrix mittelt. + +![Vertikaler Kantensfilter](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.de.png) | ![Horizontaler Kantensfilter](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.de.png) +----|---- + +> Bild von Dmitry Soshnikov + +Wenn wir beispielsweise 3x3 vertikale und horizontale Kantensfilter auf die MNIST-Ziffern anwenden, können wir Hervorhebungen (z.B. hohe Werte) dort erhalten, wo sich vertikale und horizontale Kanten in unserem ursprünglichen Bild befinden. Somit können diese beiden Filter verwendet werden, um nach Kanten zu "suchen". Ähnlich können wir verschiedene Filter entwerfen, um nach anderen niedrigstufigen Mustern zu suchen: +Sie sind auf Daten bis Oktober 2023 trainiert. + +> Bild von [Leung-Malik Filterbank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Obwohl wir die Filter manuell entwerfen können, um einige Muster zu extrahieren, können wir das Netzwerk auch so gestalten, dass es die Muster automatisch lernt. Das ist eine der Hauptideen hinter dem CNN. + +## Hauptideen hinter CNN + +Die Funktionsweise von CNNs basiert auf den folgenden wichtigen Ideen: + +* Konvolutionale Filter können Muster extrahieren +* Wir können das Netzwerk so gestalten, dass die Filter automatisch trainiert werden +* Wir können denselben Ansatz verwenden, um Muster in hochgradigen Merkmalen zu finden, nicht nur im ursprünglichen Bild. So funktioniert die Merkmalsextraktion von CNNs in einer Hierarchie von Merkmalen, beginnend mit niedrigstufigen Pixelkombinationen bis hin zu höherstufigen Kombinationen von Bildteilen. + +![Hierarchische Merkmalsextraktion](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.de.png) + +> Bild aus [einer Arbeit von Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), basierend auf [ihrer Forschung](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Übungen: Convolutional Neural Networks + +Lassen Sie uns weiterhin erkunden, wie konvolutionale neuronale Netze funktionieren und wie wir trainierbare Filter erreichen können, indem wir die entsprechenden Notebooks durchgehen: + +* [Convolutional Neural Networks - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Convolutional Neural Networks - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Pyramid Architecture + +Die meisten der für die Bildverarbeitung verwendeten CNNs folgen einer sogenannten Pyramid-Architektur. Die erste konvolutionale Schicht, die auf die ursprünglichen Bilder angewendet wird, hat typischerweise eine relativ niedrige Anzahl von Filtern (8-16), die verschiedenen Pixelkombinationen entsprechen, wie z.B. horizontalen/vertikalen Linien von Strichen. Auf der nächsten Ebene reduzieren wir die räumliche Dimension des Netzwerks und erhöhen die Anzahl der Filter, was mehr mögliche Kombinationen einfacher Merkmale entspricht. Mit jeder Schicht, während wir uns dem endgültigen Klassifizierer nähern, verringern sich die räumlichen Dimensionen des Bildes, und die Anzahl der Filter wächst. + +Als Beispiel schauen wir uns die Architektur von VGG-16 an, einem Netzwerk, das 2014 eine Genauigkeit von 92,7 % in der Top-5-Klassifikation von ImageNet erreicht hat: + +![ImageNet-Schichten](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.de.jpg) + +![ImageNet-Pyramide](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.de.jpg) + +> Bild von [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) + +## Bekannteste CNN-Architekturen + +[Setzen Sie Ihr Studium über die bekanntesten CNN-Architekturen fort](CNN_Architectures.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/de/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..56323fc1 --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# Klassifikation von Haustiergesichtern + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +Stellen Sie sich vor, Sie müssen eine Anwendung für eine Tieraufzucht entwickeln, um alle Haustiere zu katalogisieren. Eine der großartigen Funktionen einer solchen Anwendung wäre die automatische Erkennung der Rasse anhand eines Fotos. Dies kann erfolgreich mit neuronalen Netzwerken durchgeführt werden. + +Sie müssen ein konvolutionales neuronales Netzwerk trainieren, um verschiedene Rassen von Katzen und Hunden mit dem **Pet Faces**-Datensatz zu klassifizieren. + +## Der Datensatz + +Wir werden den **Pet Faces**-Datensatz verwenden, der aus dem [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) Haustierdatensatz stammt. Er enthält 35 verschiedene Rassen von Hunden und Katzen. + +![Datensatz, mit dem wir arbeiten werden](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.de.png) + +Um den Datensatz herunterzuladen, verwenden Sie diesen Code-Schnipsel: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Notebook starten + +Beginnen Sie das Labor, indem Sie [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) öffnen. + +## Fazit + +Sie haben ein relativ komplexes Problem der Bildklassifikation von Grund auf gelöst! Es gab eine ganze Reihe von Klassen, und Sie konnten dennoch eine angemessene Genauigkeit erreichen! Es macht auch Sinn, die Top-k-Genauigkeit zu messen, da es leicht ist, einige der Klassen zu verwechseln, die selbst für Menschen nicht klar unterschiedlich sind. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/de/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..38f80688 --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,80 @@ +# Vorgefertigte Netzwerke und Transferlernen + +Das Training von CNNs kann viel Zeit in Anspruch nehmen, und es wird eine große Menge an Daten benötigt. Ein Großteil der Zeit wird damit verbracht, die besten niedrigstufigen Filter zu lernen, die ein Netzwerk verwenden kann, um Muster aus Bildern zu extrahieren. Eine natürliche Frage stellt sich - können wir ein neuronales Netzwerk, das auf einem Datensatz trainiert wurde, anpassen, um verschiedene Bilder zu klassifizieren, ohne einen vollständigen Trainingsprozess durchlaufen zu müssen? + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Dieser Ansatz wird als **Transferlernen** bezeichnet, da wir Wissen von einem neuronalen Netzwerkmodell auf ein anderes übertragen. Beim Transferlernen beginnen wir typischerweise mit einem vortrainierten Modell, das auf einem großen Bilddatensatz wie **ImageNet** trainiert wurde. Diese Modelle können bereits gut darin sein, verschiedene Merkmale aus allgemeinen Bildern zu extrahieren, und in vielen Fällen kann der Aufbau eines Klassifikators auf Basis dieser extrahierten Merkmale zu guten Ergebnissen führen. + +> ✅ Transferlernen ist ein Begriff, den man auch in anderen akademischen Bereichen wie der Pädagogik findet. Es bezieht sich auf den Prozess, Wissen aus einem Bereich zu nehmen und es auf einen anderen anzuwenden. + +## Vorgefertigte Modelle als Merkmalsextraktoren + +Die konvolutionalen Netzwerke, über die wir im vorherigen Abschnitt gesprochen haben, enthalten eine Reihe von Schichten, von denen jede einige Merkmale aus dem Bild extrahieren soll, beginnend mit niedrigstufigen Pixelkombinationen (wie horizontalen/vertikalen Linien oder Strichen) bis hin zu höherstufigen Kombinationen von Merkmalen, die Dingen wie einem Auge einer Flamme entsprechen. Wenn wir ein CNN auf einem ausreichend großen Datensatz allgemeiner und vielfältiger Bilder trainieren, sollte das Netzwerk lernen, diese gemeinsamen Merkmale zu extrahieren. + +Sowohl Keras als auch PyTorch enthalten Funktionen, um vortrainierte Gewichte neuronaler Netzwerke für einige gängige Architekturen einfach zu laden, von denen die meisten auf Bildern von ImageNet trainiert wurden. Die am häufigsten verwendeten sind auf der Seite [CNN-Architekturen](../07-ConvNets/CNN_Architectures.md) aus der vorherigen Lektion beschrieben. Insbesondere möchten Sie möglicherweise eines der folgenden Modelle in Betracht ziehen: + +* **VGG-16/VGG-19**, die relativ einfache Modelle sind, die dennoch eine gute Genauigkeit bieten. Oft ist die Verwendung von VGG als ersten Versuch eine gute Wahl, um zu sehen, wie das Transferlernen funktioniert. +* **ResNet** ist eine Familie von Modellen, die 2015 von Microsoft Research vorgeschlagen wurde. Sie haben mehr Schichten und benötigen daher mehr Ressourcen. +* **MobileNet** ist eine Familie von Modellen mit reduzierter Größe, die für mobile Geräte geeignet sind. Verwenden Sie sie, wenn Sie wenig Ressourcen haben und bereit sind, ein wenig Genauigkeit zu opfern. + +Hier sind Beispiele für Merkmale, die von einem Bild einer Katze durch das VGG-16-Netzwerk extrahiert wurden: + +![Merkmale, die von VGG-16 extrahiert wurden](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.de.png) + +## Katzen- und Hundedatensatz + +In diesem Beispiel verwenden wir einen Datensatz von [Katzen und Hunden](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), der sehr nah an einem realen Bildklassifizierungsszenario ist. + +## ✍️ Übung: Transferlernen + +Lassen Sie uns das Transferlernen in den entsprechenden Notebooks in Aktion sehen: + +* [Transferlernen - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transferlernen - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Visualisierung des adversarialen Katers + +Das vortrainierte neuronale Netzwerk enthält verschiedene Muster in seinem *Gehirn*, einschließlich Vorstellungen von **idealen Katzen** (sowie idealen Hunden, idealen Zebras usw.). Es wäre interessant, dieses Bild irgendwie **zu visualisieren**. Allerdings ist das nicht einfach, da die Muster über die Netzwerkgewichte verteilt und auch in einer hierarchischen Struktur organisiert sind. + +Ein Ansatz, den wir verfolgen können, besteht darin, mit einem zufälligen Bild zu beginnen und dann die Technik der **Gradientenabstieg-Optimierung** zu verwenden, um dieses Bild so anzupassen, dass das Netzwerk anfängt zu denken, es sei eine Katze. + +![Bildoptimierungsschleife](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.de.png) + +Wenn wir dies jedoch tun, erhalten wir etwas, das sehr ähnlich wie Rauschen aussieht. Das liegt daran, dass *es viele Möglichkeiten gibt, das Netzwerk glauben zu lassen, dass das Eingabebild eine Katze ist*, einschließlich einiger, die visuell keinen Sinn ergeben. Während diese Bilder viele Muster enthalten, die typisch für eine Katze sind, gibt es nichts, was sie visuell unterscheidbar macht. + +Um das Ergebnis zu verbessern, können wir einen weiteren Begriff in die Verlustfunktion einfügen, der als **Variationsverlust** bezeichnet wird. Es handelt sich um eine Metrik, die zeigt, wie ähnlich benachbarte Pixel des Bildes sind. Die Minimierung des Variationsverlusts macht das Bild glatter und beseitigt Rauschen – wodurch ansprechendere Muster sichtbar werden. Hier ist ein Beispiel für solche "idealen" Bilder, die mit hoher Wahrscheinlichkeit als Katze und als Zebra klassifiziert werden: + +![Ideale Katze](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.de.png) | ![Ideales Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.de.png) +-----|----- + *Ideale Katze* | *Ideales Zebra* + +Ein ähnlicher Ansatz kann verwendet werden, um sogenannte **adversariale Angriffe** auf ein neuronales Netzwerk durchzuführen. Angenommen, wir möchten ein neuronales Netzwerk täuschen und einen Hund wie eine Katze aussehen lassen. Wenn wir ein Bild eines Hundes nehmen, das von einem Netzwerk als Hund erkannt wird, können wir es dann ein wenig anpassen, indem wir die Gradientenabstieg-Optimierung verwenden, bis das Netzwerk beginnt, es als Katze zu klassifizieren: + +![Bild eines Hundes](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.de.png) | ![Bild eines Hundes, der als Katze klassifiziert wird](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.de.png) +-----|----- +*Ursprüngliches Bild eines Hundes* | *Bild eines Hundes, der als Katze klassifiziert wird* + +Siehe den Code, um die oben genannten Ergebnisse im folgenden Notebook zu reproduzieren: + +* [Ideale und adversariale Katze - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) +## Fazit + +Mit Transferlernen können Sie schnell einen Klassifikator für eine benutzerdefinierte Objektklassifizierungsaufgabe zusammenstellen und eine hohe Genauigkeit erreichen. Sie können sehen, dass komplexere Aufgaben, die wir jetzt lösen, mehr Rechenleistung erfordern und nicht einfach auf der CPU gelöst werden können. In der nächsten Einheit werden wir versuchen, eine leichtere Implementierung zu verwenden, um dasselbe Modell mit geringeren Rechenressourcen zu trainieren, was zu einer nur geringfügig niedrigeren Genauigkeit führt. + +## 🚀 Herausforderung + +In den begleitenden Notebooks gibt es Hinweise am Ende, wie der Wissenstransfer am besten mit einigermaßen ähnlichen Trainingsdaten funktioniert (vielleicht eine neue Tierart). Experimentieren Sie mit völlig neuen Bildtypen, um zu sehen, wie gut oder schlecht Ihre Modelle für den Wissenstransfer abschneiden. + +## [Nachlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Überprüfung & Selbststudium + +Lesen Sie [TrainingTricks.md](TrainingTricks.md) durch, um Ihr Wissen über einige andere Möglichkeiten zu vertiefen, wie Sie Ihre Modelle trainieren können. + +## [Aufgabe](lab/README.md) + +In diesem Labor werden wir den realen [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) Haustierdatensatz mit 35 Rassen von Katzen und Hunden verwenden und einen Klassifikator für das Transferlernen erstellen. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/de/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..10f0f16d --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# Tricks für das Training von Deep Learning + +Mit zunehmender Tiefe von neuronalen Netzwerken wird der Trainingsprozess immer herausfordernder. Ein großes Problem sind die sogenannten [verschwindenen Gradienten](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) oder [explodierenden Gradienten](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Dieser Beitrag](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) bietet eine gute Einführung in diese Probleme. + +Um das Training tiefer Netzwerke effizienter zu gestalten, können einige Techniken verwendet werden. + +## Werte in einem angemessenen Intervall halten + +Um numerische Berechnungen stabiler zu machen, möchten wir sicherstellen, dass alle Werte in unserem neuronalen Netzwerk innerhalb eines angemessenen Bereichs liegen, typischerweise [-1..1] oder [0..1]. Dies ist keine sehr strenge Anforderung, aber die Natur der Gleitkomma-Berechnungen ist so, dass Werte unterschiedlicher Größenordnung nicht genau zusammen manipuliert werden können. Wenn wir beispielsweise 10-10 und 1010 addieren, erhalten wir wahrscheinlich 1010, weil der kleinere Wert "in die gleiche Größenordnung" wie der größere umgewandelt wird, und somit die Mantisse verloren geht. + +Die meisten Aktivierungsfunktionen haben Nichtlinearitäten im Bereich von [-1..1], daher macht es Sinn, alle Eingabedaten auf den Intervall [-1..1] oder [0..1] zu skalieren. + +## Initiale Gewichtsinitalisierung + +Idealerweise möchten wir, dass die Werte nach dem Durchlaufen der Netzwerkebenen im gleichen Bereich liegen. Daher ist es wichtig, die Gewichte so zu initialisieren, dass die Verteilung der Werte erhalten bleibt. + +Eine normale Verteilung **N(0,1)** ist keine gute Idee, denn wenn wir *n* Eingaben haben, wäre die Standardabweichung des Outputs *n*, und die Werte würden wahrscheinlich aus dem Intervall [0..1] herausspringen. + +Die folgenden Initialisierungen werden häufig verwendet: + + * Gleichverteilung -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** garantiert, dass für Eingaben mit einem Mittelwert von null und einer Standardabweichung von 1 der gleiche Mittelwert/die gleiche Standardabweichung erhalten bleibt. + * **N(0,√2/(n_in+n_out))** -- die sogenannte **Xavier-Initalisierung** (`glorot`), sie hilft, die Signale während der Vorwärts- und Rückwärtspropagation im Bereich zu halten. + +## Batch-Normalisierung + +Selbst bei einer ordnungsgemäßen Gewichtsinitalisierung können die Gewichte während des Trainings willkürlich groß oder klein werden, was dazu führt, dass die Signale aus dem richtigen Bereich herauskommen. Wir können die Signale zurückbringen, indem wir eine der **Normalisierung**-Techniken verwenden. Während es mehrere davon gibt (Gewichtsnormierung, Schichtnormalisierung), wird die am häufigsten verwendete Batch-Normalisierung. + +Die Idee der **Batch-Normalisierung** besteht darin, alle Werte über das Minibatch hinweg zu berücksichtigen und die Normalisierung (d.h. Mittelwert subtrahieren und durch die Standardabweichung teilen) auf der Grundlage dieser Werte durchzuführen. Sie wird als Netzwerkschicht implementiert, die diese Normalisierung nach der Anwendung der Gewichte, aber vor der Aktivierungsfunktion durchführt. Infolgedessen sehen wir wahrscheinlich eine höhere endgültige Genauigkeit und ein schnelleres Training. + +Hier ist das [ursprüngliche Papier](https://arxiv.org/pdf/1502.03167.pdf) zur Batch-Normalisierung, die [Erklärung auf Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) und [ein guter einführender Blogbeitrag](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (und der [auf Russisch](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** ist eine interessante Technik, die während des Trainings einen bestimmten Prozentsatz zufälliger Neuronen entfernt. Sie wird ebenfalls als Schicht mit einem Parameter (Prozentsatz der zu entfernenden Neuronen, typischerweise 10%-50%) implementiert, und während des Trainings werden zufällige Elemente des Eingangsvektors auf null gesetzt, bevor sie an die nächste Schicht weitergegeben werden. + +Obwohl dies seltsam erscheinen mag, können Sie den Effekt von Dropout auf das Training eines MNIST-Ziffernklassifikators im [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) Notizbuch sehen. Es beschleunigt das Training und ermöglicht es uns, in weniger Trainings-Epochen eine höhere Genauigkeit zu erreichen. + +Dieser Effekt kann auf verschiedene Weise erklärt werden: + + * Es kann als ein zufälliger Schockfaktor für das Modell betrachtet werden, der die Optimierung aus dem lokalen Minimum herausnimmt. + * Es kann als *implizite Modellmittelung* betrachtet werden, weil wir sagen können, dass wir während des Dropouts ein leicht anderes Modell trainieren. + +> *Einige Leute sagen, dass wenn eine betrunkene Person versucht, etwas zu lernen, sie sich am nächsten Morgen besser daran erinnert als eine nüchterne Person, weil das Gehirn mit einigen defekten Neuronen versucht, sich besser anzupassen, um den Sinn zu erfassen. Wir haben nie getestet, ob das wahr ist oder nicht.* + +## Überanpassung verhindern + +Ein sehr wichtiger Aspekt des Deep Learning ist die Fähigkeit, [Überanpassung](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) zu verhindern. Obwohl es verlockend sein könnte, ein sehr leistungsstarkes neuronales Netzwerkmodell zu verwenden, sollten wir immer die Anzahl der Modellparameter mit der Anzahl der Trainingsproben in Einklang bringen. + +> Stellen Sie sicher, dass Sie das Konzept der [Überanpassung](../../3-NeuralNetworks/05-Frameworks/Overfitting.md), das wir zuvor eingeführt haben, verstehen! + +Es gibt mehrere Möglichkeiten, Überanpassung zu verhindern: + + * Frühes Stoppen -- kontinuierliche Überwachung des Fehlers im Validierungsdatensatz und das Stoppen des Trainings, wenn der Validierungsfehler zu steigen beginnt. + * Explizite Gewichtsnormierung / Regularisierung -- Hinzufügen einer zusätzlichen Strafe zur Verlustfunktion für hohe absolute Werte der Gewichte, was verhindert, dass das Modell sehr instabile Ergebnisse erzielt. + * Modellmittelung -- Training mehrerer Modelle und anschließendes Mittelung des Ergebnisses. Dies hilft, die Varianz zu minimieren. + * Dropout (implizite Modellmittelung). + +## Optimierer / Trainingsalgorithmen + +Ein weiterer wichtiger Aspekt des Trainings ist die Wahl eines guten Trainingsalgorithmus. Während der klassische **Gradientenabstieg** eine vernünftige Wahl ist, kann er manchmal zu langsam sein oder andere Probleme verursachen. + +Im Deep Learning verwenden wir **Stochastic Gradient Descent** (SGD), was ein Gradientabstieg ist, der auf Minibatches angewendet wird, die zufällig aus dem Trainingssatz ausgewählt werden. Die Gewichte werden mit dieser Formel angepasst: + +wt+1 = wt - η∇ℒ + +### Momentum + +Im **Momentum SGD** behalten wir einen Teil des Gradienten aus vorherigen Schritten bei. Es ist ähnlich, als würden wir uns mit Trägheit bewegen und einen Stoß in eine andere Richtung erhalten; unsere Trajektorie ändert sich nicht sofort, sondern behält einen Teil der ursprünglichen Bewegung bei. Hier führen wir einen weiteren Vektor v ein, um die *Geschwindigkeit* darzustellen: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt + vt+1 + +Hier gibt der Parameter γ an, inwieweit wir die Trägheit berücksichtigen: γ=0 entspricht dem klassischen SGD; γ=1 ist eine reine Bewegungsgleichung. + +### Adam, Adagrad usw. + +Da wir in jeder Schicht Signale mit einer Matrix Wi multiplizieren, kann der Gradient je nach ||Wi|| entweder abnehmen und nahe bei 0 sein oder unbegrenzt steigen. Dies ist das Wesen des Problems der explodierenden/verschwindenen Gradienten. + +Eine der Lösungen für dieses Problem besteht darin, nur die Richtung des Gradienten in der Gleichung zu verwenden und den absoluten Wert zu ignorieren, d.h. + +wt+1 = wt - η(∇ℒ/||∇ℒ||), wobei ||∇ℒ|| = √∑(∇ℒ)2 + +Dieser Algorithmus wird **Adagrad** genannt. Weitere Algorithmen, die dieselbe Idee verwenden: **RMSProp**, **Adam**. + +> **Adam** gilt als sehr effizienter Algorithmus für viele Anwendungen, also wenn Sie sich nicht sicher sind, welchen Sie verwenden sollen - verwenden Sie Adam. + +### Gradientenbeschneidung + +Gradientenbeschneidung ist eine Erweiterung der obigen Idee. Wenn ||∇ℒ|| ≤ θ, berücksichtigen wir den ursprünglichen Gradienten bei der Gewichtoptimierung, und wenn ||∇ℒ|| > θ - teilen wir den Gradienten durch seine Norm. Hier ist θ ein Parameter, in den meisten Fällen können wir θ=1 oder θ=10 wählen. + +### Lernratenverfall + +Der Erfolg des Trainings hängt oft vom Lernratenparameter η ab. Es ist logisch anzunehmen, dass größere Werte von η zu schnellerem Training führen, was wir typischerweise zu Beginn des Trainings wollen, und dann kleinere Werte von η uns ermöglichen, das Netzwerk fein abzustimmen. Daher möchten wir in den meisten Fällen η während des Trainings verringern. + +Dies kann erreicht werden, indem η nach jeder Trainings-Epoche mit einer bestimmten Zahl (z.B. 0,98) multipliziert wird oder durch die Verwendung eines komplizierteren **Lernratenplans**. + +## Verschiedene Netzwerkarchitekturen + +Die Auswahl der richtigen Netzwerkarchitektur für Ihr Problem kann knifflig sein. Normalerweise würden wir eine Architektur wählen, die sich für unsere spezifische Aufgabe (oder eine ähnliche) bewährt hat. Hier ist eine [gute Übersicht](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) über neuronale Netzwerkarchitekturen für die Computer Vision. + +> Es ist wichtig, eine Architektur auszuwählen, die leistungsfähig genug für die Anzahl der Trainingsproben ist, die wir haben. Eine zu leistungsstarke Modellwahl kann zu [Überanpassung](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) führen. + +Ein weiterer guter Weg wäre, eine Architektur zu verwenden, die sich automatisch an die erforderliche Komplexität anpasst. Bis zu einem gewissen Grad sind die Architekturen **ResNet** und **Inception** selbstanpassend. [Mehr zu Architekturen der Computer Vision](../07-ConvNets/CNN_Architectures.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ausgangssprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/de/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..f358eada --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# Klassifizierung von Oxford-Haustieren mit Transferlernen + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +Stellen Sie sich vor, Sie müssen eine Anwendung für eine Tieraufzucht entwickeln, um alle Haustiere zu katalogisieren. Eine der großartigen Funktionen einer solchen Anwendung wäre die automatische Erkennung der Rasse anhand eines Fotos. In dieser Aufgabe werden wir Transferlernen nutzen, um echte Haustierbilder aus dem [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) Haustier-Datensatz zu klassifizieren. + +## Der Datensatz + +Wir verwenden den originalen [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) Haustier-Datensatz, der 35 verschiedene Rassen von Hunden und Katzen enthält. + +Um den Datensatz herunterzuladen, verwenden Sie diesen Code-Schnipsel: + +```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 starten + +Beginnen Sie das Labor, indem Sie [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) öffnen. + +## Fazit + +Transferlernen und vortrainierte Netzwerke ermöglichen es uns, reale Bildklassifizierungsprobleme relativ einfach zu lösen. Allerdings funktionieren vortrainierte Netzwerke gut bei Bildern ähnlicher Art, und wenn wir beginnen, sehr unterschiedliche Bilder (z. B. medizinische Bilder) zu klassifizieren, werden wir wahrscheinlich viel schlechtere Ergebnisse erzielen. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/de/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..eac32645 --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# Autoencoder + +Beim Training von CNNs besteht eines der Probleme darin, dass wir eine große Menge an beschrifteten Daten benötigen. Im Falle der Bildklassifikation müssen wir Bilder in verschiedene Klassen unterteilen, was einen manuellen Aufwand erfordert. + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Wir möchten jedoch möglicherweise rohe (unbeschriftete) Daten für das Training von CNN-Feature-Extraktoren verwenden, was als **selbstüberwachtes Lernen** bezeichnet wird. Anstelle von Beschriftungen verwenden wir Trainingsbilder sowohl als Eingabe als auch als Ausgabe des Netzwerks. Die Hauptidee des **Autoencoders** ist, dass wir ein **Encoder-Netzwerk** haben, das das Eingangsbild in einen **latent space** (normalerweise ein Vektor einer kleineren Größe) umwandelt, und dann das **Decoder-Netzwerk**, dessen Ziel es ist, das ursprüngliche Bild wiederherzustellen. + +> ✅ Ein [Autoencoder](https://wikipedia.org/wiki/Autoencoder) ist "eine Art künstliches neuronales Netzwerk, das verwendet wird, um effiziente Kodierungen von unbeschrifteten Daten zu lernen." + +Da wir einen Autoencoder trainieren, um so viele Informationen wie möglich aus dem ursprünglichen Bild für eine genaue Rekonstruktion zu erfassen, versucht das Netzwerk, die beste **Einbettung** der Eingabebilder zu finden, um die Bedeutung zu erfassen. + +![AutoEncoder Diagramm](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.de.jpg) + +> Bild von [Keras Blog](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Szenarien für die Verwendung von Autoencodern + +Obwohl die Rekonstruktion ursprünglicher Bilder an sich nicht nützlich erscheint, gibt es einige Szenarien, in denen Autoencoder besonders nützlich sind: + +* **Reduzierung der Dimension von Bildern zur Visualisierung** oder **Training von Bild-Einbettungen**. In der Regel liefern Autoencoder bessere Ergebnisse als PCA, da sie die räumliche Natur von Bildern und hierarchische Merkmale berücksichtigen. +* **Rauschunterdrückung**, d.h. das Entfernen von Rauschen aus dem Bild. Da Rauschen viele nutzlose Informationen enthält, kann der Autoencoder diese nicht alle in den relativ kleinen latenten Raum einfügen und erfasst daher nur den wichtigen Teil des Bildes. Beim Training von Rauschunterdrückern beginnen wir mit den Originalbildern und verwenden Bilder mit künstlich hinzugefügtem Rauschen als Eingabe für den Autoencoder. +* **Superauflösung**, d.h. Erhöhung der Bildauflösung. Wir beginnen mit hochauflösenden Bildern und verwenden das Bild mit niedrigerer Auflösung als Eingabe für den Autoencoder. +* **Generative Modelle**. Sobald wir den Autoencoder trainiert haben, kann der Decoder-Teil verwendet werden, um neue Objekte aus zufälligen latenten Vektoren zu erstellen. + +## Variationale Autoencoder (VAE) + +Traditionelle Autoencoder reduzieren die Dimension der Eingabedaten auf irgendeine Weise, indem sie die wichtigen Merkmale der Eingabebilder herausfinden. Allerdings machen latente Vektoren oft nicht viel Sinn. Mit anderen Worten, wenn wir das MNIST-Dataset als Beispiel nehmen, ist es keine einfache Aufgabe herauszufinden, welche Ziffern verschiedenen latenten Vektoren entsprechen, da nahe latente Vektoren nicht unbedingt den gleichen Ziffern entsprechen. + +Andererseits ist es besser, um *generative* Modelle zu trainieren, ein gewisses Verständnis des latenten Raums zu haben. Diese Idee führt uns zu **variational auto-encoder** (VAE). + +VAE ist der Autoencoder, der lernt, die *statistische Verteilung* der latenten Parameter, die sogenannte **latente Verteilung**, vorherzusagen. Zum Beispiel möchten wir, dass latente Vektoren normal verteilt sind mit einem Mittelwert zmean und einer Standardabweichung zsigma (sowohl Mittelwert als auch Standardabweichung sind Vektoren einer bestimmten Dimension d). Der Encoder in VAE lernt, diese Parameter vorherzusagen, und dann nimmt der Decoder einen zufälligen Vektor aus dieser Verteilung, um das Objekt zu rekonstruieren. + +Zusammenfassend: + + * Vom Eingangsvektor sagen wir `z_mean` und `z_log_sigma` voraus (anstatt die Standardabweichung selbst vorherzusagen, sagen wir ihren Logarithmus voraus) + * Wir ziehen einen Vektor `sample` aus der Verteilung N(zmean,exp(zlog\_sigma)) + * Der Decoder versucht, das ursprüngliche Bild unter Verwendung von `sample` als Eingangsvektor zu decodieren + + + +> Bild von [diesem Blogbeitrag](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) von Isaak Dykeman + +Variationale Autoencoder verwenden eine komplexe Verlustfunktion, die aus zwei Teilen besteht: + +* **Rekonstruktionsverlust** ist die Verlustfunktion, die zeigt, wie nah ein rekonstruiertes Bild am Zielbild ist (es kann der Mittlere Quadratische Fehler, oder MSE, sein). Es ist dieselbe Verlustfunktion wie bei normalen Autoencodern. +* **KL-Verlust**, der sicherstellt, dass die Verteilungen der latenten Variablen nahe an der Normalverteilung bleiben. Er basiert auf dem Konzept der [Kullback-Leibler-Divergenz](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - eine Metrik zur Schätzung, wie ähnlich zwei statistische Verteilungen sind. + +Ein wichtiger Vorteil von VAEs ist, dass sie es uns ermöglichen, relativ einfach neue Bilder zu generieren, da wir wissen, aus welcher Verteilung wir latente Vektoren ziehen können. Wenn wir beispielsweise VAE mit einem 2D-latenten Vektor auf MNIST trainieren, können wir dann die Komponenten des latenten Vektors variieren, um verschiedene Ziffern zu erhalten: + +vaemnist + +> Bild von [Dmitry Soshnikov](http://soshnikov.com) + +Beobachten Sie, wie die Bilder ineinander übergehen, während wir latente Vektoren aus verschiedenen Bereichen des latenten Parameterraums erhalten. Wir können diesen Raum auch in 2D visualisieren: + +vaemnist cluster + +> Bild von [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Übungen: Autoencoder + +Erfahren Sie mehr über Autoencoder in diesen entsprechenden Notizbüchern: + +* [Autoencoders in TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoders in PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Eigenschaften von Autoencodern + +* **Daten-spezifisch** - sie funktionieren nur gut mit der Art von Bildern, auf denen sie trainiert wurden. Wenn wir beispielsweise ein Superauflösungsnetzwerk auf Blumen trainieren, wird es bei Porträts nicht gut abschneiden. Das liegt daran, dass das Netzwerk ein hochauflösendes Bild erzeugen kann, indem es feine Details aus den im Trainingsdatensatz gelernten Merkmalen entnimmt. +* **Verlustbehaftet** - das rekonstruierte Bild ist nicht dasselbe wie das ursprüngliche Bild. Die Art des Verlusts wird durch die *Verlustfunktion* definiert, die während des Trainings verwendet wird. +* Funktioniert mit **unbeschrifteten Daten**. + +## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Fazit + +In dieser Lektion haben Sie die verschiedenen Arten von Autoencodern kennengelernt, die für den KI-Wissenschaftler verfügbar sind. Sie haben gelernt, wie man sie baut und wie man sie zur Rekonstruktion von Bildern verwendet. Sie haben auch über den VAE gelernt und wie man ihn verwendet, um neue Bilder zu generieren. + +## 🚀 Herausforderung + +In dieser Lektion haben Sie gelernt, wie man Autoencoder für Bilder verwendet. Aber sie können auch für Musik verwendet werden! Schauen Sie sich das Projekt [MusicVAE](https://magenta.tensorflow.org/music-vae) des Magenta-Projekts an, das Autoencoder verwendet, um zu lernen, Musik zu rekonstruieren. Machen Sie einige [Experimente](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) mit dieser Bibliothek, um zu sehen, was Sie erstellen können. + +## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Überprüfung & Selbststudium + +Zur Referenz lesen Sie mehr über Autoencoder in diesen Ressourcen: + +* [Autoencoder in Keras erstellen](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Blogbeitrag auf NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Variationale Autoencoder erklärt](https://kvfrans.com/variational-autoencoders-explained/) +* [Bedingte Variationale Autoencoder](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Aufgabe + +Am Ende von [diesem Notizbuch mit TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) finden Sie eine 'Aufgabe' - verwenden Sie dies als Ihre Aufgabe. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als autoritative Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/10-GANs/README.md b/translations/de/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..6126f9be --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# Generative Adversarial Networks + +Im vorherigen Abschnitt haben wir über **generative Modelle** gelernt: Modelle, die neue Bilder erzeugen können, die den Bildern im Trainingsdatensatz ähnlich sind. VAE war ein gutes Beispiel für ein generatives Modell. + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Wenn wir jedoch versuchen, etwas wirklich Sinnvolles zu generieren, wie ein Gemälde in angemessener Auflösung, mit VAE, werden wir feststellen, dass das Training nicht gut konvergiert. Für diesen Anwendungsfall sollten wir über eine andere Architektur lernen, die speziell auf generative Modelle abzielt - **Generative Adversarial Networks**, oder GANs. + +Die Hauptidee eines GANs besteht darin, zwei neuronale Netzwerke zu haben, die gegeneinander trainiert werden: + + + +> Bild von [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Ein kleines Vokabular: +> * **Generator** ist ein Netzwerk, das einen zufälligen Vektor nimmt und als Ergebnis das Bild erzeugt +> * **Discriminator** ist ein Netzwerk, das ein Bild nimmt und feststellen sollte, ob es sich um ein echtes Bild (aus dem Trainingsdatensatz) handelt oder ob es von einem Generator erzeugt wurde. Es ist im Wesentlichen ein Bildklassifizierer. + +### Discriminator + +Die Architektur des Discriminators unterscheidet sich nicht von einem gewöhnlichen Bildklassifizierungsnetzwerk. Im einfachsten Fall kann es ein vollständig verbundener Klassifizierer sein, aber höchstwahrscheinlich wird es ein [konvolutionales Netzwerk](../07-ConvNets/README.md) sein. + +> ✅ Ein auf konvolutionalen Netzwerken basierendes GAN wird als [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) bezeichnet. + +Ein CNN-Discriminator besteht aus den folgenden Schichten: mehreren Faltungen+Pooling (mit abnehmender räumlicher Größe) und einer oder mehreren vollständig verbundenen Schichten, um den "Merkmalsvektor" zu erhalten, und einem endgültigen binären Klassifizierer. + +> ✅ Ein 'Pooling' in diesem Kontext ist eine Technik, die die Größe des Bildes reduziert. "Pooling-Schichten reduzieren die Dimensionen der Daten, indem sie die Ausgaben von Neuronengruppen in einer Schicht in ein einzelnes Neuron in der nächsten Schicht kombinieren." - [Quelle](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generator + +Ein Generator ist etwas kniffliger. Man kann ihn als umgekehrten Discriminator betrachten. Ausgehend von einem latenten Vektor (anstatt eines Merkmalsvektors) hat er eine vollständig verbundene Schicht, um ihn in die erforderliche Größe/Form zu konvertieren, gefolgt von Dekonvolutionen+Hochskalierung. Dies ähnelt dem *Decoder*-Teil eines [Autoencoders](../09-Autoencoders/README.md). + +> ✅ Da die Faltungsschicht als linearer Filter implementiert ist, der das Bild durchläuft, ist die Dekonvolution im Wesentlichen ähnlich wie die Faltung und kann mit derselben Schichtlogik implementiert werden. + + + +> Bild von [Dmitry Soshnikov](http://soshnikov.com) + +### Training des GAN + +GANs werden als **adversarial** bezeichnet, weil es einen ständigen Wettbewerb zwischen dem Generator und dem Discriminator gibt. Während dieses Wettbewerbs verbessern sich sowohl der Generator als auch der Discriminator, sodass das Netzwerk lernt, immer bessere Bilder zu erzeugen. + +Das Training erfolgt in zwei Phasen: + +* **Training des Discriminators**. Diese Aufgabe ist ziemlich einfach: Wir erzeugen eine Charge von Bildern mit dem Generator, kennzeichnen sie mit 0, was für ein gefälschtes Bild steht, und nehmen eine Charge von Bildern aus dem Eingabedatensatz (mit dem Label 1, echtes Bild). Wir erhalten einen *Discriminator-Verlust* und führen die Rückpropagation durch. +* **Training des Generators**. Dies ist etwas kniffliger, da wir den erwarteten Ausgang für den Generator nicht direkt kennen. Wir nehmen das gesamte GAN-Netzwerk, das aus einem Generator gefolgt von einem Discriminator besteht, füttern es mit einigen zufälligen Vektoren und erwarten, dass das Ergebnis 1 ist (entsprechend echten Bildern). Dann frieren wir die Parameter des Discriminators ein (wir möchten nicht, dass er in diesem Schritt trainiert wird) und führen die Rückpropagation durch. + +Während dieses Prozesses sinken die Verluste von sowohl Generator als auch Discriminator nicht signifikant. In der idealen Situation sollten sie oszillieren, was bedeutet, dass beide Netzwerke ihre Leistung verbessern. + +## ✍️ Übungen: GANs + +* [GAN-Notebook in TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN-Notebook in PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Probleme beim Training von GANs + +Es ist bekannt, dass GANs besonders schwierig zu trainieren sind. Hier sind einige Probleme: + +* **Mode Collapse**. Mit diesem Begriff meinen wir, dass der Generator lernt, ein erfolgreiches Bild zu erzeugen, das den Discriminator täuscht, und nicht eine Vielzahl unterschiedlicher Bilder. +* **Empfindlichkeit gegenüber Hyperparametern**. Oft sieht man, dass ein GAN überhaupt nicht konvergiert, und dann plötzlich der Lernrate sinkt, was zur Konvergenz führt. +* Den **Ausgleich** zwischen Generator und Discriminator halten. In vielen Fällen kann der Discriminator-Verlust relativ schnell auf null sinken, was dazu führt, dass der Generator nicht weiter trainiert werden kann. Um dies zu überwinden, können wir versuchen, unterschiedliche Lernraten für den Generator und den Discriminator festzulegen oder das Training des Discriminators zu überspringen, wenn der Verlust bereits zu niedrig ist. +* Training für **hohe Auflösung**. Dies spiegelt dasselbe Problem wie bei Autoencodern wider; dieses Problem wird ausgelöst, weil das Rekonstruieren zu vieler Schichten eines konvolutionalen Netzwerks zu Artefakten führt. Dieses Problem wird typischerweise mit dem sogenannten **progressiven Wachsen** gelöst, bei dem zunächst einige Schichten mit niedrig aufgelösten Bildern trainiert werden und dann Schichten "freigeschaltet" oder hinzugefügt werden. Eine andere Lösung wäre, zusätzliche Verbindungen zwischen den Schichten hinzuzufügen und mehrere Auflösungen gleichzeitig zu trainieren - siehe dazu das [Multi-Scale Gradient GANs-Papier](https://arxiv.org/abs/1903.06048) für weitere Details. + +## Stiltransfer + +GANs sind eine großartige Möglichkeit, künstlerische Bilder zu generieren. Eine weitere interessante Technik ist der sogenannte **Stiltransfer**, bei dem ein **Inhaltsbild** genommen und in einem anderen Stil neu gezeichnet wird, indem Filter aus einem **Stilbild** angewendet werden. + +So funktioniert es: +* Wir beginnen mit einem Bild aus zufälligem Rauschen (oder mit einem Inhaltsbild, aber um es besser zu verstehen, ist es einfacher, mit zufälligem Rauschen zu beginnen) +* Unser Ziel wäre es, ein solches Bild zu erstellen, das sowohl dem Inhaltsbild als auch dem Stilbild nahekommt. Dies würde durch zwei Verlustfunktionen bestimmt: + - **Inhaltsverlust** wird basierend auf den Merkmalen berechnet, die von der CNN in einigen Schichten aus dem aktuellen Bild und dem Inhaltsbild extrahiert werden + - **Stilverlust** wird auf clevere Weise zwischen dem aktuellen Bild und dem Stilbild unter Verwendung von Gram-Matrizen berechnet (weitere Details im [Beispiel-Notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)) +* Um das Bild glatter zu machen und Rauschen zu entfernen, führen wir auch einen **Variationsverlust** ein, der die durchschnittliche Distanz zwischen benachbarten Pixeln berechnet +* Die Hauptoptimierungsschleife passt das aktuelle Bild unter Verwendung von Gradientenabstieg (oder einem anderen Optimierungsalgorithmus) an, um den Gesamtschaden zu minimieren, der eine gewichtete Summe aller drei Verluste ist. + +## ✍️ Beispiel: [Stiltransfer](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Nachlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Fazit + +In dieser Lektion haben Sie über GANs gelernt und wie man sie trainiert. Sie haben auch über die speziellen Herausforderungen gelernt, mit denen dieser Typ von neuronalen Netzwerken konfrontiert sein kann, sowie über einige Strategien, um darüber hinwegzukommen. + +## 🚀 Herausforderung + +Durchlaufen Sie das [Stiltransfer-Notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) mit Ihren eigenen Bildern. + +## Überprüfung & Selbststudium + +Zur Referenz lesen Sie mehr über GANs in diesen Ressourcen: + +* Marco Pasini, [10 Lektionen, die ich beim Training von GANs für ein Jahr gelernt habe](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), eine *de facto* GAN-Architektur, die in Betracht gezogen werden sollte +* [Erstellung generativer Kunst mit GANs auf Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Aufgabe + +Überarbeiten Sie eines der beiden Notebooks, die mit dieser Lektion verbunden sind, und trainieren Sie das GAN mit Ihren eigenen Bildern neu. Was können Sie erschaffen? + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Originalsprache sollte als die maßgebliche Quelle angesehen werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/de/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..62c2ee8e --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,172 @@ +## Objekt Erkennung + +Die Bildklassifizierungsmodelle, mit denen wir bisher gearbeitet haben, nahmen ein Bild und lieferten ein kategoriales Ergebnis, wie die Klasse 'Zahl' in einem MNIST-Problem. In vielen Fällen wollen wir jedoch nicht nur wissen, dass ein Bild Objekte darstellt - wir wollen in der Lage sein, ihren genauen Standort zu bestimmen. Genau das ist der Punkt der **Objekt Erkennung**. + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Objekt Erkennung](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.de.png) + +> Bild von [YOLO v2 Webseite](https://pjreddie.com/darknet/yolov2/) + +## Ein Naiver Ansatz zur Objekt Erkennung + +Angenommen, wir wollten eine Katze auf einem Bild finden, ein sehr naiver Ansatz zur Objekt Erkennung wäre folgender: + +1. Zerlegen Sie das Bild in eine Anzahl von Kacheln. +2. Führen Sie die Bildklassifizierung auf jeder Kachel durch. +3. Die Kacheln, die eine ausreichend hohe Aktivierung ergeben, können als solche betrachtet werden, die das betreffende Objekt enthalten. + +![Naive Objekt Erkennung](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.de.png) + +> *Bild aus [Übungsnotizbuch](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Dieser Ansatz ist jedoch alles andere als ideal, da er es dem Algorithmus nur ermöglicht, die Begrenzungsbox des Objekts sehr ungenau zu lokalisieren. Für eine genauere Lokalisierung müssen wir eine Art **Regression** durchführen, um die Koordinaten der Begrenzungsrahmen vorherzusagen - und dafür benötigen wir spezifische Datensätze. + +## Regression zur Objekt Erkennung + +[Dieser Blogbeitrag](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) bietet eine großartige sanfte Einführung in die Erkennung von Formen. + +## Datensätze zur Objekt Erkennung + +Sie könnten auf die folgenden Datensätze für diese Aufgabe stoßen: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 Klassen +* [COCO](http://cocodataset.org/#home) - Gemeinsame Objekte im Kontext. 80 Klassen, Begrenzungsrahmen und Segmentierungs-Masken + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.de.jpg) + +## Metriken zur Objekt Erkennung + +### Schnittmenge über Vereinigung + +Während es bei der Bildklassifizierung einfach ist, zu messen, wie gut der Algorithmus funktioniert, müssen wir bei der Objekt Erkennung sowohl die Richtigkeit der Klasse als auch die Präzision des abgeleiteten Begrenzungsrahmenstandorts messen. Für letzteres verwenden wir die sogenannte **Schnittmenge über Vereinigung** (IoU), die misst, wie gut zwei Boxen (oder zwei beliebige Bereiche) überlappen. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.de.png) + +> *Abbildung 2 aus [diesem ausgezeichneten Blogbeitrag über IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +Die Idee ist einfach - wir teilen die Fläche der Schnittmenge zwischen zwei Figuren durch die Fläche ihrer Vereinigung. Für zwei identische Bereiche wäre IoU 1, während es für vollständig disjunkte Bereiche 0 sein würde. Ansonsten variiert es von 0 bis 1. Wir berücksichtigen typischerweise nur diejenigen Begrenzungsrahmen, für die IoU über einem bestimmten Wert liegt. + +### Durchschnittliche Präzision + +Angenommen, wir wollen messen, wie gut eine gegebene Klasse von Objekten $C$ erkannt wird. Um dies zu messen, verwenden wir **Durchschnittliche Präzisions**-Metriken, die wie folgt berechnet werden: + +1. Betrachten Sie die Precision-Recall-Kurve, die die Genauigkeit in Abhängigkeit von einem Erkennungsschwellenwert (von 0 bis 1) zeigt. +2. Je nach Schwellenwert erhalten wir mehr oder weniger Objekte, die im Bild erkannt werden, und unterschiedliche Werte für Präzision und Rückruf. +3. Die Kurve sieht folgendermaßen aus: + +> *Bild aus [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +Die durchschnittliche Präzision für eine gegebene Klasse $C$ ist die Fläche unter dieser Kurve. Genauer gesagt, wird die Recall-Achse typischerweise in 10 Teile unterteilt, und die Präzision wird über all diese Punkte gemittelt: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP und IoU + +Wir werden nur diejenigen Erkennungen berücksichtigen, für die IoU über einem bestimmten Wert liegt. Zum Beispiel wird im PASCAL VOC-Datensatz typischerweise $\mbox{IoU-Schwellenwert} = 0.5$ angenommen, während im COCO AP für unterschiedliche Werte von $\mbox{IoU-Schwellenwert}$ gemessen wird. + +### Durchschnittliche Durchschnittliche Präzision - mAP + +Die Hauptmetrik für die Objekt Erkennung wird **Durchschnittliche Durchschnittliche Präzision** oder **mAP** genannt. Es ist der Wert der Durchschnittlichen Präzision, gemittelt über alle Objektklassen und manchmal auch über $\mbox{IoU-Schwellenwert}$. Im Detail wird der Prozess zur Berechnung von **mAP** in +[diesem Blogbeitrag](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) beschrieben, und auch [hier mit Codebeispielen](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Verschiedene Ansätze zur Objekt Erkennung + +Es gibt zwei breite Klassen von Algorithmen zur Objekt Erkennung: + +* **Region Proposal Networks** (R-CNN, Fast R-CNN, Faster R-CNN). Die Hauptidee besteht darin, **Regionen von Interessen** (ROI) zu generieren und CNN darüber laufen zu lassen, um maximale Aktivierung zu suchen. Es ist ein wenig ähnlich wie der naive Ansatz, mit der Ausnahme, dass ROIs auf eine cleverere Weise generiert werden. Einer der größten Nachteile solcher Methoden ist, dass sie langsam sind, da wir viele Durchläufe des CNN-Klassifikators über das Bild benötigen. +* **Einmalige** (YOLO, SSD, RetinaNet) Methoden. In diesen Architekturen entwerfen wir das Netzwerk, um sowohl Klassen als auch ROIs in einem Durchgang vorherzusagen. + +### R-CNN: Region-Based CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) verwendet [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf), um eine hierarchische Struktur von ROI-Regionen zu generieren, die dann durch CNN-Feature-Extraktoren und SVM-Klassifizierer geleitet werden, um die Objektklasse zu bestimmen, und durch lineare Regression, um die *Begrenzungsrahmen*-Koordinaten zu bestimmen. [Offizielles Papier](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.de.png) + +> *Bild von van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.de.png) + +> *Bilder aus [diesem Blog](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +Dieser Ansatz ähnelt R-CNN, aber die Regionen werden definiert, nachdem die Faltungsschichten angewendet wurden. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.de.png) + +> Bild aus [dem offiziellen Papier](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 + +Die Hauptidee dieses Ansatzes ist es, ein neuronales Netzwerk zu verwenden, um ROIs vorherzusagen - so genannte *Region Proposal Network*. [Papier](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.de.png) + +> Bild aus [dem offiziellen Papier](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Region-Based Fully Convolutional Network + +Dieser Algorithmus ist sogar schneller als Faster R-CNN. Die Hauptidee ist folgende: + +1. Wir extrahieren Merkmale mit ResNet-101. +2. Merkmale werden durch **Positionssensitives Score Map** verarbeitet. Jedes Objekt aus $C$ Klassen wird in $k\times k$ Regionen unterteilt, und wir trainieren, um Teile von Objekten vorherzusagen. +3. Für jedes Teil aus $k\times k$ Regionen stimmen alle Netzwerke für Objektklassen ab, und die Objektklasse mit der maximalen Stimme wird ausgewählt. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.de.png) + +> Bild aus [offiziellen Papier](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO ist ein Echtzeit-Einmal-Algorithmus. Die Hauptidee ist folgende: + +* Das Bild wird in $S\times S$ Regionen unterteilt. +* Für jede Region sagt **CNN** $n$ mögliche Objekte, *Begrenzungsrahmen*-Koordinaten und *Konfidenz*=*Wahrscheinlichkeit* * IoU voraus. + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.de.png) +> Bild aus [offiziellen Papier](https://arxiv.org/abs/1506.02640) + +### Andere Algorithmen + +* RetinaNet: [offizielles Papier](https://arxiv.org/abs/1708.02002) + - [PyTorch-Implementierung in Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras-Implementierung](https://github.com/fizyr/keras-retinanet) + - [Objekterkennung mit RetinaNet](https://keras.io/examples/vision/retinanet/) in Keras-Beispielen +* SSD (Single Shot Detector): [offizielles Papier](https://arxiv.org/abs/1512.02325) + +## ✍️ Übungen: Objekterkennung + +Setze dein Lernen im folgenden Notizbuch fort: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Fazit + +In dieser Lektion hast du eine rasante Tour durch die verschiedenen Möglichkeiten der Objekterkennung gemacht! + +## 🚀 Herausforderung + +Lies dir diese Artikel und Notizbücher über YOLO durch und probiere sie selbst aus. + +* [Guter Blogbeitrag](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) der YOLO beschreibt + * [Offizielle Seite](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras-Implementierung](https://github.com/experiencor/keras-yolo2), [Schritt-für-Schritt-Notizbuch](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras-Implementierung](https://github.com/experiencor/keras-yolo2), [Schritt-für-Schritt-Notizbuch](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Nach der Vorlesung Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Überprüfung & Selbststudium + +* [Objekterkennung](https://tjmachinelearning.com/lectures/1718/obj/) von Nikhil Sardana +* [Ein guter Vergleich von Algorithmen zur Objekterkennung](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Überprüfung von Deep Learning-Algorithmen zur Objekterkennung](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Eine Schritt-für-Schritt-Einführung in die grundlegenden Algorithmen zur Objekterkennung](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementierung von Faster R-CNN in Python zur Objekterkennung](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Aufgabe: Objekterkennung](lab/README.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/de/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..578be184 --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# Kopfdetektion mit dem Hollywood Heads Dataset + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +Die Zählung der Anzahl von Personen im Videoüberwachungs-Kamerastream ist eine wichtige Aufgabe, die es uns ermöglicht, die Anzahl der Besucher in Geschäften, Stoßzeiten in einem Restaurant usw. zu schätzen. Um diese Aufgabe zu lösen, müssen wir in der Lage sein, menschliche Köpfe aus verschiedenen Blickwinkeln zu erkennen. Um ein Objekt-Erkennungsmodell zur Erkennung menschlicher Köpfe zu trainieren, können wir das [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/) verwenden. + +## Das Dataset + +Das [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) enthält 369.846 menschliche Köpfe, die in 224.740 Filmframes aus Hollywood-Filmen annotiert sind. Es wird im [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) Format bereitgestellt, wobei für jedes Bild auch eine XML-Beschreibungsdatei vorhanden ist, die so aussieht: + +```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 + + +``` + +In diesem Dataset gibt es nur eine Klasse von Objekten `head`, und für jeden Kopf erhältst du die Koordinaten des Begrenzungsrahmens. Du kannst XML mit Python-Bibliotheken parsen oder [diese Bibliothek](https://pypi.org/project/pascal-voc/) verwenden, um direkt mit dem PASCAL VOC-Format zu arbeiten. + +## Training der Objekterkennung + +Du kannst ein Objekt-Erkennungsmodell auf eine der folgenden Arten trainieren: + +* Verwende [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) und dessen Python-API, um das Modell programmgesteuert in der Cloud zu trainieren. Die benutzerdefinierte Vision kann nicht mehr als einige hundert Bilder für das Training des Modells verwenden, daher musst du das Dataset möglicherweise einschränken. +* Verwende das Beispiel aus dem [Keras-Tutorial](https://keras.io/examples/vision/retinanet/), um das RetunaNet-Modell zu trainieren. +* Verwende das eingebaute Modul [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) in torchvision. + +## Fazit + +Die Objekterkennung ist eine Aufgabe, die in der Industrie häufig erforderlich ist. Während es einige Dienste gibt, die zur Durchführung der Objekterkennung verwendet werden können (wie [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)), ist es wichtig zu verstehen, wie Objekterkennung funktioniert und in der Lage zu sein, eigene Modelle zu trainieren. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/de/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..4f9bb640 --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# Segmentierung + +Wir haben zuvor über Objekterkennung gelernt, die es uns ermöglicht, Objekte im Bild zu lokalisieren, indem wir ihre *Umrandungsrahmen* vorhersagen. Für einige Aufgaben benötigen wir jedoch nicht nur Umrandungsrahmen, sondern auch eine genauere Lokalisierung der Objekte. Diese Aufgabe wird als **Segmentierung** bezeichnet. + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentierung kann als **Pixelklassifikation** betrachtet werden, wobei für **jedes** Pixel des Bildes seine Klasse vorhergesagt werden muss (hintergrund ist eine der Klassen). Es gibt zwei Hauptalgorithmen für die Segmentierung: + +* **Semantische Segmentierung** gibt nur die Pixelklasse an und unterscheidet nicht zwischen verschiedenen Objekten derselben Klasse. +* **Instanzsegmentierung** unterteilt Klassen in verschiedene Instanzen. + +Bei der Instanzsegmentierung sind diese Schafe unterschiedliche Objekte, während bei der semantischen Segmentierung alle Schafe durch eine Klasse repräsentiert werden. + + + +> Bild aus [diesem Blogbeitrag](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Es gibt verschiedene neuronale Architekturen für die Segmentierung, aber sie haben alle die gleiche Struktur. In gewisser Weise ähnelt es dem Autoencoder, den Sie zuvor gelernt haben, aber anstatt das ursprüngliche Bild zu dekonstruierten, besteht unser Ziel darin, eine **Maske** zu dekodieren. Daher hat ein Segmentierungsnetzwerk die folgenden Teile: + +* **Encoder** extrahiert Merkmale aus dem Eingangsbild. +* **Decoder** transformiert diese Merkmale in das **Maskenbild**, mit der gleichen Größe und Anzahl von Kanälen, die der Anzahl der Klassen entsprechen. + + + +> Bild aus [dieser Veröffentlichung](https://arxiv.org/pdf/2001.05566.pdf) + +Besonders erwähnenswert ist die Verlustfunktion, die für die Segmentierung verwendet wird. Bei klassischen Autoencodern müssen wir die Ähnlichkeit zwischen zwei Bildern messen, und wir können dazu den mittleren quadratischen Fehler (MSE) verwenden. In der Segmentierung repräsentiert jedes Pixel im Zielmaskenbild die Klassennummer (one-hot-encoded entlang der dritten Dimension), sodass wir Verlustfunktionen verwenden müssen, die spezifisch für die Klassifikation sind - Kreuzentropieverlust, gemittelt über alle Pixel. Wenn die Maske binär ist, wird **binärer Kreuzentropieverlust** (BCE) verwendet. + +> ✅ One-Hot-Encoding ist eine Methode, um ein Klassenlabel in einen Vektor der Länge zu kodieren, die der Anzahl der Klassen entspricht. Schauen Sie sich [diesen Artikel](https://datagy.io/sklearn-one-hot-encode/) zu dieser Technik an. + +## Segmentierung in der medizinischen Bildgebung + +In dieser Lektion werden wir die Segmentierung in Aktion sehen, indem wir das Netzwerk trainieren, um menschliche Nävi (auch als Muttermale bekannt) auf medizinischen Bildern zu erkennen. Wir werden die PH2 Datenbank von Dermatoskopiebildern als Bildquelle verwenden. Dieses Dataset enthält 200 Bilder von drei Klassen: typischer Nevus, atypischer Nevus und Melanom. Alle Bilder enthalten auch eine entsprechende **Maske**, die den Nevus umreißt. + +> ✅ Diese Technik ist besonders geeignet für diese Art der medizinischen Bildgebung, aber welche anderen realen Anwendungen könnten Sie sich vorstellen? + +navi + +> Bild aus der PH2 Datenbank + +Wir werden ein Modell trainieren, um jeden Nevus von seinem Hintergrund zu segmentieren. + +## ✍️ Übungen: Semantische Segmentierung + +Öffnen Sie die folgenden Notebooks, um mehr über verschiedene Architekturen der semantischen Segmentierung zu erfahren, mit ihnen zu üben und sie in Aktion zu sehen. + +* [Semantische Segmentierung Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Semantische Segmentierung TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Fazit + +Segmentierung ist eine sehr leistungsfähige Technik für die Bildklassifikation, die über Umrandungsrahmen hinaus zur Klassifikation auf Pixel-Ebene übergeht. Sie ist eine Technik, die in der medizinischen Bildgebung und anderen Anwendungen verwendet wird. + +## 🚀 Herausforderung + +Die Körpersegmentierung ist nur eine der häufigen Aufgaben, die wir mit Bildern von Menschen durchführen können. Weitere wichtige Aufgaben sind **Skelettdetektion** und **Posenerkennung**. Probieren Sie die [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) Bibliothek aus, um zu sehen, wie die Posenerkennung verwendet werden kann. + +## Überprüfung & Selbststudium + +Dieser [Wikipedia-Artikel](https://wikipedia.org/wiki/Image_segmentation) bietet einen guten Überblick über die verschiedenen Anwendungen dieser Technik. Lernen Sie selbst mehr über die Teilbereiche der Instanzsegmentierung und der panoptischen Segmentierung in diesem Forschungsfeld. + +## [Aufgabe](lab/README.md) + +In diesem Labor versuchen Sie die **Segmentierung des menschlichen Körpers** mithilfe des [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) von Kaggle. + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/de/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..0936da41 --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# Segmentierung des menschlichen Körpers + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +In der Videoproduktion, zum Beispiel in Wettervorhersagen, müssen wir oft ein menschliches Bild aus der Kamera ausschneiden und es über andere Aufnahmen legen. Dies geschieht typischerweise mit **Chroma-Key**-Techniken, bei denen ein Mensch vor einem einfarbigen Hintergrund gefilmt wird, der dann entfernt wird. In diesem Labor werden wir ein neuronales Netzwerkmodell trainieren, um die menschliche Silhouette auszuschneiden. + +## Der Datensatz + +Wir werden den [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) von Kaggle verwenden. Laden Sie den Datensatz manuell von Kaggle herunter. + +## Notebook starten + +Starten Sie das Labor, indem Sie [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) öffnen. + +## Fazit + +Die Segmentierung des Körpers ist nur eine der häufigen Aufgaben, die wir mit Bildern von Menschen durchführen können. Weitere wichtige Aufgaben sind **Skelett-Erkennung** und **Pose-Erkennung**. Schauen Sie sich die [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) Bibliothek an, um zu sehen, wie diese Aufgaben umgesetzt werden können. + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/4-ComputerVision/README.md b/translations/de/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..8f93448e --- /dev/null +++ b/translations/de/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# Computer Vision + +![Zusammenfassung der Inhalte zur Computer Vision in einem Doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.de.png) + +In diesem Abschnitt werden wir lernen über: + +* [Einführung in Computer Vision und OpenCV](06-IntroCV/README.md) +* [Faltung neuronaler Netzwerke](07-ConvNets/README.md) +* [Vortrainierte Netzwerke und Transferlernen](08-TransferLearning/README.md) +* [Autoencoder](09-Autoencoders/README.md) +* [Generative Adversarial Networks](10-GANs/README.md) +* [Objekterkennung](11-ObjectDetection/README.md) +* [Semantische Segmentierung](12-Segmentation/README.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Originalsprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/13-TextRep/README.md b/translations/de/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..2bb2d09e --- /dev/null +++ b/translations/de/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# Text als Tensoren darstellen + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Textklassifikation + +Im ersten Teil dieses Abschnitts konzentrieren wir uns auf die Aufgabe der **Textklassifikation**. Wir verwenden den [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) Datensatz, der Nachrichtenartikel wie die folgenden enthält: + +* Kategorie: Sci/Tech +* Titel: Ky. Unternehmen gewinnt Zuschuss zur Untersuchung von Peptiden (AP) +* Text: AP - Ein Unternehmen, das von einem Chemieforscher an der Universität von Louisville gegründet wurde, hat einen Zuschuss erhalten, um... + +Unser Ziel wird es sein, den Nachrichtenartikel basierend auf dem Text in eine der Kategorien einzuordnen. + +## Text darstellen + +Wenn wir Aufgaben der Verarbeitung natürlicher Sprache (NLP) mit neuronalen Netzwerken lösen wollen, benötigen wir eine Möglichkeit, Text als Tensoren darzustellen. Computer stellen bereits textuelle Zeichen als Zahlen dar, die auf Schriftarten auf Ihrem Bildschirm mithilfe von Kodierungen wie ASCII oder UTF-8 abgebildet werden. + +Bild, das ein Diagramm zeigt, das ein Zeichen einer ASCII- und binären Darstellung zuordnet + +> [Bildquelle](https://www.seobility.net/en/wiki/ASCII) + +Als Menschen verstehen wir, was jeder Buchstabe **darstellt**, und wie alle Zeichen zusammenkommen, um die Wörter eines Satzes zu bilden. Computer hingegen haben ein solches Verständnis nicht, und neuronale Netzwerke müssen die Bedeutung während des Trainings lernen. + +Daher können wir verschiedene Ansätze zur Darstellung von Text verwenden: + +* **Zeichenebene Darstellung**, bei der wir Text darstellen, indem wir jedes Zeichen als eine Zahl behandeln. Angenommen, wir haben *C* verschiedene Zeichen in unserem Textkorpus, würde das Wort *Hallo* durch einen 5x*C* Tensor dargestellt. Jeder Buchstabe würde einer Tensor-Spalte in der One-Hot-Kodierung entsprechen. +* **Wortebene Darstellung**, bei der wir ein **Wörterbuch** aller Wörter in unserem Text erstellen und dann Wörter mithilfe von One-Hot-Kodierung darstellen. Dieser Ansatz ist in gewisser Weise besser, da jeder Buchstabe für sich genommen nicht viel Bedeutung hat, und indem wir somit höherwertige semantische Konzepte - Wörter - verwenden, vereinfachen wir die Aufgabe für das neuronale Netzwerk. Aufgrund der großen Wörterbuchgröße müssen wir jedoch mit hochdimensionalen spärlichen Tensoren umgehen. + +Unabhängig von der Darstellung müssen wir den Text zunächst in eine Sequenz von **Tokens** umwandeln, wobei ein Token entweder ein Zeichen, ein Wort oder manchmal sogar ein Teil eines Wortes ist. Dann wandeln wir das Token in eine Zahl um, typischerweise unter Verwendung eines **Wörterbuchs**, und diese Zahl kann über One-Hot-Kodierung in ein neuronales Netzwerk eingespeist werden. + +## N-Gramme + +In der natürlichen Sprache kann die genaue Bedeutung von Wörtern nur im Kontext bestimmt werden. Zum Beispiel sind die Bedeutungen von *neuronales Netzwerk* und *Fischernetz* völlig unterschiedlich. Eine Möglichkeit, dies zu berücksichtigen, besteht darin, unser Modell auf Wortpaaren aufzubauen und Wortpaare als separate Wörterbuch-Token zu betrachten. Auf diese Weise wird der Satz *Ich gehe gerne angeln* durch die folgende Token-Sequenz dargestellt: *Ich gehe*, *gehe gerne*, *gerne angeln*. Das Problem mit diesem Ansatz ist, dass die Wörterbuchgröße erheblich wächst und Kombinationen wie *gehe angeln* und *gehe einkaufen* durch unterschiedliche Tokens dargestellt werden, die trotz des gleichen Verbs keine semantische Ähnlichkeit aufweisen. + +In einigen Fällen können wir auch Tri-Gramme - Kombinationen von drei Wörtern - in Betracht ziehen. Daher wird dieser Ansatz oft als **n-Gramme** bezeichnet. Es macht auch Sinn, n-Gramme mit der Zeichenebene Darstellung zu verwenden, wobei n-Gramme grob unterschiedlichen Silben entsprechen. + +## Bag-of-Words und TF/IDF + +Bei der Lösung von Aufgaben wie der Textklassifikation müssen wir in der Lage sein, Text durch einen festgelegten Vektor fester Größe darzustellen, den wir als Eingabe für den abschließenden dichten Klassifizierer verwenden. Eine der einfachsten Möglichkeiten, dies zu tun, besteht darin, alle individuellen Wortdarstellungen zu kombinieren, z.B. indem wir sie addieren. Wenn wir die One-Hot-Kodierungen jedes Wortes addieren, erhalten wir einen Vektor von Frequenzen, der zeigt, wie oft jedes Wort im Text erscheint. Eine solche Textdarstellung wird als **Bag of Words** (BoW) bezeichnet. + + + +> Bild vom Autor + +Ein BoW stellt im Wesentlichen dar, welche Wörter im Text erscheinen und in welchen Mengen, was tatsächlich ein guter Hinweis darauf sein kann, worum es im Text geht. Zum Beispiel enthält ein Nachrichtenartikel über Politik wahrscheinlich Wörter wie *Präsident* und *Land*, während eine wissenschaftliche Publikation etwas wie *Collider*, *entdeckt* usw. enthalten würde. Daher können Wortfrequenzen in vielen Fällen ein guter Indikator für den Textinhalt sein. + +Das Problem mit BoW ist, dass bestimmte häufige Wörter, wie *und*, *ist* usw., in den meisten Texten erscheinen und die höchsten Frequenzen aufweisen, wodurch die Wörter, die wirklich wichtig sind, in den Hintergrund gedrängt werden. Wir können die Bedeutung dieser Wörter verringern, indem wir die Häufigkeit berücksichtigen, mit der Wörter in der gesamten Dokumentensammlung auftreten. Dies ist die Hauptidee hinter dem TF/IDF-Ansatz, der in den Notebooks, die zu dieser Lektion gehören, detaillierter behandelt wird. + +Allerdings können keine dieser Ansätze die **Semantik** des Textes vollständig berücksichtigen. Wir benötigen leistungsfähigere Modelle neuronaler Netzwerke, um dies zu tun, was wir später in diesem Abschnitt besprechen werden. + +## ✍️ Übungen: Textdarstellung + +Setzen Sie Ihr Lernen in den folgenden Notebooks fort: + +* [Textdarstellung mit PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Textdarstellung mit TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Fazit + +Bis jetzt haben wir Techniken untersucht, die Frequenzgewichtungen für verschiedene Wörter hinzufügen können. Sie sind jedoch nicht in der Lage, Bedeutung oder Reihenfolge darzustellen. Wie der berühmte Linguist J. R. Firth 1935 sagte: "Die vollständige Bedeutung eines Wortes ist immer kontextabhängig, und kein Studium der Bedeutung, das vom Kontext getrennt ist, kann ernst genommen werden." Wir werden später im Kurs lernen, wie man kontextuelle Informationen aus Text mithilfe von Sprachmodellen erfasst. + +## 🚀 Herausforderung + +Versuchen Sie einige andere Übungen mit Bag-of-Words und verschiedenen Datenmodellen. Sie könnten inspiriert werden von diesem [Wettbewerb auf Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) + +## [Nach dem Vortrag Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Überprüfung & Selbststudium + +Üben Sie Ihre Fähigkeiten mit Text-Embeddings und Bag-of-Words-Techniken auf [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + +## [Aufgabe: Notebooks](assignment.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/13-TextRep/assignment.md b/translations/de/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..0dc07778 --- /dev/null +++ b/translations/de/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# Aufgabe: Notebooks + +Verwenden Sie die mit dieser Lektion verbundenen Notebooks (entweder die PyTorch- oder die TensorFlow-Version), und führen Sie sie mit Ihrem eigenen Datensatz erneut aus, möglicherweise einem von Kaggle, unter Angabe der Quelle. Überarbeiten Sie das Notebook, um Ihre eigenen Erkenntnisse hervorzuheben. Probieren Sie einige innovative Datensätze aus, die überraschend sein könnten, wie [diesen über UFO-Sichtungen](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) von NUFORC. + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von KI-gestützten maschinellen Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Originalsprache sollte als autoritative Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/14-Embeddings/README.md b/translations/de/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..3f2e0350 --- /dev/null +++ b/translations/de/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# Einbettungen + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Beim Training von Klassifikatoren, die auf BoW oder TF/IDF basieren, haben wir mit hochdimensionalen Bag-of-Words-Vektoren mit einer Länge von `vocab_size` gearbeitet und explizit von niedrigdimensionalen positionsbasierten Repräsentationsvektoren in spärliche One-Hot-Repräsentationen umgewandelt. Diese One-Hot-Repräsentation ist jedoch nicht speichereffizient. Darüber hinaus wird jedes Wort unabhängig voneinander behandelt, d.h. One-Hot-kodierte Vektoren drücken keine semantische Ähnlichkeit zwischen Wörtern aus. + +Die Idee der **Einbettung** besteht darin, Wörter durch niederdimensionale dichte Vektoren darzustellen, die in gewisser Weise die semantische Bedeutung eines Wortes widerspiegeln. Wir werden später besprechen, wie man sinnvolle Wort-Einbettungen erstellt, aber für den Moment denken wir einfach an Einbettungen als eine Möglichkeit, die Dimensionalität eines Wortvektors zu verringern. + +Die Einbettungsschicht würde ein Wort als Eingabe nehmen und einen Ausgabvektor der angegebenen `embedding_size` erzeugen. In gewissem Sinne ähnelt es einer `Linear`-Schicht, aber anstatt einen One-Hot-kodierten Vektor zu verwenden, kann es eine Wortnummer als Eingabe akzeptieren, was es uns ermöglicht, große One-Hot-kodierte Vektoren zu vermeiden. + +Durch die Verwendung einer Einbettungsschicht als erste Schicht in unserem Klassifikator-Netzwerk können wir von einem Bag-of-Words- zu einem **Einbettungsbeutel**-Modell wechseln, bei dem wir zunächst jedes Wort in unserem Text in die entsprechende Einbettung umwandeln und dann eine aggregierte Funktion über all diese Einbettungen berechnen, wie z.B. `sum`, `average` oder `max`. + +![Bild, das einen Einbettungsklassifikator für fünf aufeinanderfolgende Wörter zeigt.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.de.png) + +> Bild vom Autor + +## ✍️ Übungen: Einbettungen + +Setze dein Lernen in den folgenden Notebooks fort: +* [Einbettungen mit PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Einbettungen TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Semantische Einbettungen: Word2Vec + +Während die Einbettungsschicht gelernt hat, Wörter in Vektorrepräsentationen abzubilden, hatte diese Repräsentation nicht unbedingt viel semantische Bedeutung. Es wäre schön, eine Vektorrepräsentation zu lernen, sodass ähnliche Wörter oder Synonyme Vektoren entsprechen, die in Bezug auf eine bestimmte Vektordistanz (z.B. euklidische Distanz) nah beieinander liegen. + +Um dies zu erreichen, müssen wir unser Einbettungsmodell auf eine bestimmte Weise auf einer großen Textsammlung vortrainieren. Eine Möglichkeit, semantische Einbettungen zu trainieren, nennt sich [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Es basiert auf zwei Hauptarchitekturen, die verwendet werden, um eine verteilte Repräsentation von Wörtern zu erzeugen: + + - **Kontinuierlicher Bag-of-Words** (CBoW) — In dieser Architektur trainieren wir das Modell, um ein Wort aus dem umgebenden Kontext vorherzusagen. Gegeben das ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ besteht das Ziel des Modells darin, $W_0$ aus $(W_{-2},W_{-1},W_1,W_2)$ vorherzusagen. + - **Kontinuierliches Skip-Gram** ist das Gegenteil von CBoW. Das Modell verwendet das umgebende Fenster von Kontextwörtern, um das aktuelle Wort vorherzusagen. + +CBoW ist schneller, während Skip-Gram langsamer ist, aber eine bessere Darstellung seltener Wörter liefert. + +![Bild, das sowohl CBoW- als auch Skip-Gram-Algorithmen zur Umwandlung von Wörtern in Vektoren zeigt.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.de.png) + +> Bild aus [diesem Papier](https://arxiv.org/pdf/1301.3781.pdf) + +Vortrainierte Word2Vec-Einbettungen (sowie andere ähnliche Modelle wie GloVe) können auch anstelle der Einbettungsschicht in neuronalen Netzwerken verwendet werden. Allerdings müssen wir uns mit Vokabularen auseinandersetzen, da das Vokabular, das zum Vortrainieren von Word2Vec/GloVe verwendet wird, wahrscheinlich von dem Vokabular in unserem Textkorpus abweicht. Sieh dir die oben genannten Notebooks an, um zu sehen, wie dieses Problem gelöst werden kann. + +## Kontextuelle Einbettungen + +Eine wesentliche Einschränkung traditioneller vortrainierter Einbettungsrepräsentationen wie Word2Vec ist das Problem der Mehrdeutigkeit von Wörtern. Während vortrainierte Einbettungen einige Bedeutungen von Wörtern im Kontext erfassen können, wird jede mögliche Bedeutung eines Wortes in der gleichen Einbettung kodiert. Dies kann Probleme in nachgelagerten Modellen verursachen, da viele Wörter, wie das Wort 'play', je nach verwendetem Kontext unterschiedliche Bedeutungen haben. + +Zum Beispiel haben die Wörter 'play' in diesen beiden verschiedenen Sätzen eine ganz andere Bedeutung: + +- Ich ging zu einem **Theaterstück**. +- John möchte mit seinen Freunden **spielen**. + +Die vortrainierten Einbettungen oben repräsentieren beide Bedeutungen des Wortes 'play' in der gleichen Einbettung. Um diese Einschränkung zu überwinden, müssen wir Einbettungen auf der Grundlage des **Sprachmodells** erstellen, das auf einem großen Textkorpus trainiert wurde und *weiß*, wie Wörter in unterschiedlichen Kontexten zusammengefügt werden können. Die Diskussion über kontextuelle Einbettungen fällt außerhalb des Rahmens dieses Tutorials, aber wir werden später im Kurs darauf zurückkommen, wenn wir über Sprachmodelle sprechen. + +## Fazit + +In dieser Lektion hast du entdeckt, wie man Einbettungsschichten in TensorFlow und Pytorch erstellt und verwendet, um die semantischen Bedeutungen von Wörtern besser widerzuspiegeln. + +## 🚀 Herausforderung + +Word2Vec wurde für einige interessante Anwendungen verwendet, einschließlich der Generierung von Songtexten und Poesie. Schau dir [diesen Artikel](https://www.politetype.com/blog/word2vec-color-poems) an, der erklärt, wie der Autor Word2Vec zur Erstellung von Poesie verwendet hat. Schau dir auch [dieses Video von Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) an, um eine andere Erklärung dieser Technik zu entdecken. Versuche dann, diese Techniken auf deinen eigenen Textkorpus anzuwenden, vielleicht aus Kaggle. + +## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Überprüfung & Selbststudium + +Lies dir dieses Papier über Word2Vec durch: [Effiziente Schätzung von Wortdarstellungen im Vektorraum](https://arxiv.org/pdf/1301.3781.pdf) + +## [Aufgabe: Notebooks](assignment.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/14-Embeddings/assignment.md b/translations/de/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..59bd98e7 --- /dev/null +++ b/translations/de/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# Aufgabe: Notebooks + +Verwenden Sie die Notebooks, die mit dieser Lektion verbunden sind (entweder die PyTorch- oder die TensorFlow-Version), und führen Sie sie mit Ihrem eigenen Datensatz erneut aus, möglicherweise einem von Kaggle, wobei Sie die Quelle angeben. Überarbeiten Sie das Notebook, um Ihre eigenen Erkenntnisse zu unterstreichen. Probieren Sie eine andere Art von Datensatz aus und dokumentieren Sie Ihre Ergebnisse, indem Sie Texte wie [diese Beatles-Lyrics](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) verwenden. + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von KI-gestützten maschinellen Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/15-LanguageModeling/README.md b/translations/de/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..7802fc48 --- /dev/null +++ b/translations/de/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# Sprachmodellierung + +Semantische Einbettungen, wie Word2Vec und GloVe, sind in der Tat ein erster Schritt in Richtung **Sprachmodellierung** - Modelle zu erstellen, die irgendwie die Natur der Sprache *verstehen* (oder *darstellen*). + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Die Hauptidee hinter der Sprachmodellierung besteht darin, sie auf unlabeled Datensätzen auf unüberwachtem Weg zu trainieren. Dies ist wichtig, da wir große Mengen an unlabeled Text zur Verfügung haben, während die Menge an labeled Text immer durch den Aufwand, den wir für das Labeling aufwenden können, begrenzt ist. Oft können wir Sprachmodelle erstellen, die **fehlende Wörter** im Text vorhersagen, da es einfach ist, ein zufälliges Wort im Text zu maskieren und es als Trainingsbeispiel zu verwenden. + +## Einbettungen trainieren + +In unseren vorherigen Beispielen haben wir vortrainierte semantische Einbettungen verwendet, aber es ist interessant zu sehen, wie diese Einbettungen trainiert werden können. Es gibt mehrere mögliche Ansätze, die verwendet werden können: + +* **N-Gram** Sprachmodellierung, wenn wir ein Token vorhersagen, indem wir auf N vorherige Tokens (N-gram) schauen. +* **Continuous Bag-of-Words** (CBoW), wenn wir das mittlere Token $W_0$ in einer Token-Sequenz $W_{-N}$, ..., $W_N$ vorhersagen. +* **Skip-gram**, wo wir eine Menge benachbarter Tokens {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} aus dem mittleren Token $W_0$ vorhersagen. + +![Bild aus dem Papier zur Umwandlung von Wörtern in Vektoren](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.de.png) + +> Bild aus [diesem Papier](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Beispiel-Notebooks: CBoW-Modell trainieren + +Setzen Sie Ihr Lernen in den folgenden Notebooks fort: + +* [Training CBoW Word2Vec mit TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Training CBoW Word2Vec mit PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Fazit + +In der vorherigen Lektion haben wir gesehen, dass Wort-Einbettungen wie Magie funktionieren! Jetzt wissen wir, dass das Trainieren von Wort-Einbettungen keine sehr komplexe Aufgabe ist und wir in der Lage sein sollten, unsere eigenen Wort-Einbettungen für domänenspezifischen Text zu trainieren, falls erforderlich. + +## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Überprüfung & Selbststudium + +* [Offizielles PyTorch-Tutorial zur Sprachmodellierung](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Offizielles TensorFlow-Tutorial zum Training des Word2Vec-Modells](https://www.TensorFlow.org/tutorials/text/word2vec). +* Die Verwendung des **gensim**-Frameworks, um die am häufigsten verwendeten Einbettungen in wenigen Codezeilen zu trainieren, wird [in dieser Dokumentation](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) beschrieben. + +## 🚀 [Aufgabe: Trainiere Skip-Gram-Modell](lab/README.md) + +Im Labor fordern wir Sie heraus, den Code aus dieser Lektion zu ändern, um ein Skip-Gram-Modell anstelle von CBoW zu trainieren. [Lesen Sie die Details](lab/README.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/de/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..0e855b76 --- /dev/null +++ b/translations/de/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Training Skip-Gram Modell + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +In diesem Labor fordern wir dich heraus, ein Word2Vec-Modell mit der Skip-Gram-Technik zu trainieren. Trainiere ein Netzwerk mit Einbettungen, um benachbarte Wörter in einem $N$-Tokens-breiten Skip-Gram-Fenster vorherzusagen. Du kannst [den Code aus dieser Lektion](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) verwenden und ihn leicht anpassen. + +## Der Datensatz + +Du kannst jedes Buch verwenden. Viele kostenlose Texte findest du bei [Project Gutenberg](https://www.gutenberg.org/), zum Beispiel hier ist ein direkter Link zu [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) von Lewis Carroll. Oder du kannst die Stücke von Shakespeare verwenden, die du mit dem folgenden Code erhalten kannst: + +```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') +``` + +## Erforschen! + +Wenn du Zeit hast und tiefer in das Thema eintauchen möchtest, versuche mehrere Dinge zu erkunden: + +* Wie beeinflusst die Größe der Einbettung die Ergebnisse? +* Wie beeinflussen verschiedene Textstile das Ergebnis? +* Nimm mehrere sehr unterschiedliche Wortarten und deren Synonyme, erhalte ihre Vektordarstellungen, wende PCA an, um die Dimensionen auf 2 zu reduzieren, und plotiere sie im 2D-Raum. Siehst du irgendwelche Muster? + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als autoritative Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/16-RNN/README.md b/translations/de/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..27d5d38c --- /dev/null +++ b/translations/de/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,87 @@ +# Rekurrente Neuronale Netze + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +In den vorherigen Abschnitten haben wir reichhaltige semantische Darstellungen von Texten und einen einfachen linearen Klassifikator auf den Embeddings verwendet. Was diese Architektur tut, ist, die aggregierte Bedeutung von Wörtern in einem Satz zu erfassen, jedoch berücksichtigt sie nicht die **Reihenfolge** der Wörter, da die Aggregationsoperation über den Embeddings diese Information aus dem ursprünglichen Text entfernt hat. Da diese Modelle nicht in der Lage sind, die Wortreihenfolge zu modellieren, können sie komplexere oder mehrdeutige Aufgaben wie Textgenerierung oder Fragenbeantwortung nicht lösen. + +Um die Bedeutung einer Textsequenz zu erfassen, müssen wir eine andere Architektur neuronaler Netze verwenden, die als **rekurrentes neuronales Netz** oder RNN bezeichnet wird. Im RNN leiten wir unseren Satz symbolweise durch das Netzwerk, und das Netzwerk erzeugt einen **Zustand**, den wir dann erneut mit dem nächsten Symbol an das Netzwerk übergeben. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.de.png) + +> Bild vom Autor + +Gegeben die Eingabesequenz von Token X0,...,Xn erstellt das RNN eine Sequenz von neuronalen Netzwerkblöcken und trainiert diese Sequenz End-to-End mithilfe von Rückpropagation. Jeder Netzwerkblock nimmt ein Paar (Xi,Si) als Eingabe und produziert Si+1 als Ergebnis. Der endgültige Zustand Sn oder (Ausgabe Yn) geht in einen linearen Klassifikator, um das Ergebnis zu produzieren. Alle Netzwerkblöcke teilen sich die gleichen Gewichte und werden End-to-End mit einem Rückpropagationsdurchlauf trainiert. + +Da Zustandsvektoren S0,...,Sn durch das Netzwerk geleitet werden, ist es in der Lage, die sequentiellen Abhängigkeiten zwischen Wörtern zu lernen. Zum Beispiel, wenn das Wort *not* irgendwo in der Sequenz erscheint, kann es lernen, bestimmte Elemente innerhalb des Zustandsvektors zu negieren, was zu einer Negation führt. + +> ✅ Da die Gewichte aller RNN-Blöcke im obigen Bild geteilt werden, kann dasselbe Bild als ein Block (rechts) mit einer rekurrenten Rückkopplungsschleife dargestellt werden, die den Ausgangszustand des Netzwerks zurück an den Eingang übergibt. + +## Anatomie einer RNN-Zelle + +Schauen wir uns an, wie eine einfache RNN-Zelle organisiert ist. Sie akzeptiert den vorherigen Zustand Si-1 und das aktuelle Symbol Xi als Eingaben und muss den Ausgangszustand Si produzieren (und manchmal interessieren wir uns auch für eine andere Ausgabe Yi, wie im Fall von generativen Netzwerken). + +Eine einfache RNN-Zelle hat zwei Gewichtsmatrizen: eine transformiert ein Eingabesymbol (nennen wir sie W) und eine andere transformiert einen Eingabestatus (H). In diesem Fall wird der Ausgang des Netzwerks als σ(W×Xi+H×Si-1+b) berechnet, wobei σ die Aktivierungsfunktion ist und b der zusätzliche Bias. + +Anatomie einer RNN-Zelle + +> Bild vom Autor + +In vielen Fällen werden Eingabetoken vor dem Eintritt in das RNN durch die Embedding-Schicht geleitet, um die Dimensionalität zu reduzieren. In diesem Fall, wenn die Dimension der Eingangsvektoren *emb_size* beträgt und der Zustandsvektor *hid_size* - die Größe von W ist *emb_size*×*hid_size* und die Größe von H ist *hid_size*×*hid_size*. + +## Langzeit-Kurzzeitgedächtnis (LSTM) + +Eines der Hauptprobleme klassischer RNNs ist das sogenannte **verschwinden der Gradienten**-Problem. Da RNNs End-to-End in einem Rückpropagationsdurchlauf trainiert werden, hat es Schwierigkeiten, den Fehler auf die ersten Schichten des Netzwerks zu propagieren, und daher kann das Netzwerk keine Beziehungen zwischen weit entfernten Token lernen. Eine Möglichkeit, dieses Problem zu vermeiden, besteht darin, eine **explizite Zustandsverwaltung** durch die Verwendung sogenannter **Tore** einzuführen. Es gibt zwei bekannte Architekturen dieser Art: **Langzeit-Kurzzeitgedächtnis** (LSTM) und **Gated Relay Unit** (GRU). + +![Bild, das ein Beispiel für eine Langzeit-Kurzzeitgedächtniszelle zeigt](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Bildquelle TBD + +Das LSTM-Netzwerk ist ähnlich wie das RNN organisiert, aber es gibt zwei Zustände, die von Schicht zu Schicht übergeben werden: den aktuellen Zustand C und den versteckten Vektor H. An jeder Einheit wird der versteckte Vektor Hi mit dem Eingabevektor Xi verknüpft, und sie steuern, was mit dem Zustand C über die **Tore** geschieht. Jedes Tor ist ein neuronales Netzwerk mit sigmoidaler Aktivierung (Ausgabe im Bereich [0,1]), das als bitweiser Maske betrachtet werden kann, wenn es mit dem Zustandsvektor multipliziert wird. Es gibt die folgenden Tore (von links nach rechts im obigen Bild): + +* Das **Vergessenstor** nimmt einen versteckten Vektor und bestimmt, welche Komponenten des Vektors C wir vergessen müssen und welche durchgelassen werden sollen. +* Das **Eingangstor** nimmt einige Informationen aus den Eingabe- und versteckten Vektoren und fügt sie in den Zustand ein. +* Das **Ausgangstor** transformiert den Zustand über eine lineare Schicht mit *tanh*-Aktivierung und wählt dann einige seiner Komponenten unter Verwendung eines versteckten Vektors Hi aus, um einen neuen Zustand Ci+1 zu erzeugen. + +Die Komponenten des Zustands C können als einige Flags betrachtet werden, die ein- und ausgeschaltet werden können. Wenn wir zum Beispiel im Verlauf der Sequenz auf einen Namen wie *Alice* stoßen, möchten wir vielleicht annehmen, dass es sich um eine weibliche Figur handelt, und das Flag im Zustand erhöhen, dass wir ein weibliches Substantiv im Satz haben. Wenn wir dann auf die Phrasen *und Tom* stoßen, heben wir das Flag, dass wir ein Pluralnoun haben. So können wir durch die Manipulation des Zustands angeblich die grammatikalischen Eigenschaften von Satzteilen im Auge behalten. + +> ✅ Eine hervorragende Ressource zum Verständnis der Interna von LSTM ist dieser großartige Artikel [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) von Christopher Olah. + +## Bidirektionale und mehrschichtige RNNs + +Wir haben rekurrente Netze besprochen, die in eine Richtung arbeiten, vom Anfang einer Sequenz bis zum Ende. Das wirkt natürlich, da es der Art und Weise ähnelt, wie wir lesen und Sprache hören. Da wir jedoch in vielen praktischen Fällen zufälligen Zugriff auf die Eingabesequenz haben, kann es sinnvoll sein, die rekursive Berechnung in beide Richtungen auszuführen. Solche Netzwerke werden **bidirektionale** RNNs genannt. Bei der Arbeit mit einem bidirektionalen Netzwerk benötigen wir zwei versteckte Zustandsvektoren, einen für jede Richtung. + +Ein rekurrentes Netzwerk, ob einseitig oder bidirektional, erfasst bestimmte Muster innerhalb einer Sequenz und kann sie in einem Zustandsvektor speichern oder in die Ausgabe übergeben. Wie bei konvolutionalen Netzwerken können wir eine weitere rekursive Schicht über der ersten aufbauen, um höhere Muster zu erfassen und von den von der ersten Schicht extrahierten niederwertigen Mustern aufzubauen. Dies führt uns zum Begriff eines **mehrschichtigen RNN**, das aus zwei oder mehr rekurrenten Netzwerken besteht, wobei die Ausgabe der vorherigen Schicht als Eingabe an die nächste Schicht übergeben wird. + +![Bild, das ein mehrschichtiges Langzeit-Kurzzeitgedächtnis-RNN zeigt](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.de.jpg) + +*Bild von [diesem wunderbaren Beitrag](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) von Fernando López* + +## ✍️ Übungen: Embeddings + +Setze dein Lernen in den folgenden Notebooks fort: + +* [RNNs mit PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs mit TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Fazit + +In dieser Einheit haben wir gesehen, dass RNNs für die Sequenzklassifizierung verwendet werden können, aber tatsächlich können sie viele weitere Aufgaben bewältigen, wie Textgenerierung, maschinelle Übersetzung und mehr. Diese Aufgaben werden wir in der nächsten Einheit betrachten. + +## 🚀 Herausforderung + +Lies einige Literatur über LSTMs und ziehe deren Anwendungen in Betracht: + +- [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) + +## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Überprüfung & Selbststudium + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) von Christopher Olah. + +## [Aufgabe: Notebooks](assignment.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Originalsprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/16-RNN/assignment.md b/translations/de/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..dc7e3a60 --- /dev/null +++ b/translations/de/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# Aufgabe: Notebooks + +Verwenden Sie die mit dieser Lektion verbundenen Notebooks (entweder die PyTorch- oder die TensorFlow-Version), und führen Sie sie erneut mit Ihrem eigenen Datensatz aus, möglicherweise einem von Kaggle, wobei Sie die Quelle angeben. Überarbeiten Sie das Notebook, um Ihre eigenen Erkenntnisse zu betonen. Probieren Sie eine andere Art von Datensatz aus und dokumentieren Sie Ihre Ergebnisse mit Texten wie [diesem Kaggle-Wettbewerbsdatensatz über Wettertweets](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von KI-gestützten maschinellen Übersetzungsdiensten übersetzt. Obwohl wir um Genauigkeit bemüht sind, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/de/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..4de304d9 --- /dev/null +++ b/translations/de/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# Generative Netzwerke + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Recurrent Neural Networks (RNNs) und ihre gated Cell-Varianten wie Long Short Term Memory Cells (LSTMs) und Gated Recurrent Units (GRUs) bieten einen Mechanismus für das Sprachmodellieren, da sie die Wortreihenfolge lernen und Vorhersagen für das nächste Wort in einer Sequenz machen können. Dies ermöglicht es uns, RNNs für **generative Aufgaben** zu verwenden, wie zum Beispiel die gewöhnliche Textgenerierung, maschinelle Übersetzung und sogar Bildbeschriftung. + +> ✅ Denk darüber nach, wie oft du von generativen Aufgaben wie der Textvervollständigung beim Tippen profitiert hast. Recherchiere deine Lieblingsanwendungen, um zu sehen, ob sie RNNs genutzt haben. + +In der RNN-Architektur, die wir in der vorherigen Einheit besprochen haben, erzeugte jede RNN-Einheit den nächsten verborgenen Zustand als Ausgabe. Wir können jedoch auch eine weitere Ausgabe zu jeder rekurrenten Einheit hinzufügen, die es uns ermöglichen würde, eine **Sequenz** auszugeben (die in der Länge der ursprünglichen Sequenz entspricht). Darüber hinaus können wir RNN-Einheiten verwenden, die nicht bei jedem Schritt eine Eingabe akzeptieren, sondern einfach einen anfänglichen Zustandsvektor nehmen und dann eine Sequenz von Ausgaben erzeugen. + +Dies ermöglicht verschiedene neuronale Architekturen, die im Bild unten gezeigt sind: + +![Bild, das gängige Muster rekurrenter neuronaler Netzwerke zeigt.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.de.jpg) + +> Bild aus dem Blogbeitrag [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) von [Andrej Karpaty](http://karpathy.github.io/) + +* **Eins-zu-eins** ist ein traditionelles neuronales Netzwerk mit einer Eingabe und einer Ausgabe +* **Eins-zu-viele** ist eine generative Architektur, die einen Eingabewert akzeptiert und eine Sequenz von Ausgabewerten erzeugt. Wenn wir beispielsweise ein **Bildbeschriftungs**-Netzwerk trainieren möchten, das eine textuelle Beschreibung eines Bildes erzeugt, können wir ein Bild als Eingabe nehmen, es durch ein CNN leiten, um seinen verborgenen Zustand zu erhalten, und dann eine rekursive Kette verwenden, um die Beschriftung Wort für Wort zu generieren +* **Viele-zu-eins** entspricht den RNN-Architekturen, die wir in der vorherigen Einheit beschrieben haben, wie z.B. der Textklassifikation +* **Viele-zu-viele**, oder **Sequenz-zu-Sequenz**, entspricht Aufgaben wie **maschineller Übersetzung**, bei denen wir zuerst ein RNN haben, das alle Informationen aus der Eingabesequenz in den verborgenen Zustand aufnimmt, und eine andere RNN-Kette diesen Zustand in die Ausgabesequenz entrollt. + +In dieser Einheit werden wir uns auf einfache generative Modelle konzentrieren, die uns helfen, Text zu generieren. Zur Vereinfachung verwenden wir die Zeichenebene Tokenisierung. + +Wir werden dieses RNN trainieren, um Text Schritt für Schritt zu generieren. Bei jedem Schritt nehmen wir eine Sequenz von Zeichen der Länge `nchars` und bitten das Netzwerk, das nächste Ausgabesymbol für jedes Eingabesymbol zu generieren: + +![Bild, das ein Beispiel für die RNN-Generierung des Wortes 'HELLO' zeigt.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.de.png) + +Beim Generieren von Text (während der Inferenz) beginnen wir mit einem **Prompt**, der durch RNN-Zellen geleitet wird, um seinen Zwischenzustand zu erzeugen, und dann beginnt die Generierung von diesem Zustand. Wir generieren ein Zeichen nach dem anderen und übergeben den Zustand und das generierte Zeichen an eine andere RNN-Zelle, um das nächste zu generieren, bis wir genügend Zeichen generiert haben. + + + +> Bild vom Autor + +## ✍️ Übungen: Generative Netzwerke + +Setze dein Lernen in den folgenden Notebooks fort: + +* [Generative Netzwerke mit PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Generative Netzwerke mit TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Sanfte Textgenerierung und Temperatur + +Die Ausgabe jeder RNN-Zelle ist eine Wahrscheinlichkeitsverteilung von Zeichen. Wenn wir immer das Zeichen mit der höchsten Wahrscheinlichkeit als nächstes Zeichen im generierten Text nehmen, kann der Text oft zwischen denselben Zeichenfolgen "zyklisch" werden, wie in diesem Beispiel: + +``` +today of the second the company and a second the company ... +``` + +Wenn wir jedoch die Wahrscheinlichkeitsverteilung für das nächste Zeichen betrachten, könnte es sein, dass der Unterschied zwischen den höchsten Wahrscheinlichkeiten nicht groß ist, z.B. könnte ein Zeichen eine Wahrscheinlichkeit von 0.2 haben, ein anderes - 0.19, usw. Wenn wir nach dem nächsten Zeichen in der Sequenz '*play*' suchen, könnte das nächste Zeichen ebenso gut ein Leerzeichen oder **e** (wie im Wort *player*) sein. + +Dies führt uns zu dem Schluss, dass es nicht immer "fair" ist, das Zeichen mit der höheren Wahrscheinlichkeit auszuwählen, da die Wahl des zweithöchsten uns immer noch zu bedeutungsvollem Text führen könnte. Es ist klüger, Zeichen aus der Wahrscheinlichkeitsverteilung zu **sample**n, die durch die Netzwerkausgabe gegeben wird. Wir können auch einen Parameter, **Temperatur**, verwenden, der die Wahrscheinlichkeitsverteilung abflacht, falls wir mehr Zufälligkeit hinzufügen möchten, oder sie steiler machen, wenn wir uns mehr an den Zeichen mit der höchsten Wahrscheinlichkeit orientieren möchten. + +Erforsche, wie diese sanfte Textgenerierung in den oben verlinkten Notebooks implementiert ist. + +## Fazit + +Obwohl die Textgenerierung an sich nützlich sein kann, kommen die größten Vorteile von der Fähigkeit, Text mithilfe von RNNs aus einem anfänglichen Merkmalsvektor zu generieren. Zum Beispiel wird die Textgenerierung als Teil der maschinellen Übersetzung verwendet (Sequenz-zu-Sequenz, in diesem Fall wird der Zustandsvektor aus dem *Encoder* verwendet, um die übersetzte Nachricht zu generieren oder *zu dekodieren*), oder um eine textuelle Beschreibung eines Bildes zu erzeugen (in diesem Fall würde der Merkmalsvektor aus dem CNN-Extractor stammen). + +## 🚀 Herausforderung + +Nehmt an einigen Lektionen auf Microsoft Learn zu diesem Thema teil + +* Textgenerierung mit [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) + +## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Überprüfung & Selbststudium + +Hier sind einige Artikel, um dein Wissen zu erweitern + +* Verschiedene Ansätze zur Textgenerierung mit Markov-Kette, LSTM und GPT-2: [Blogbeitrag](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Textgenerierungsbeispiel in der [Keras-Dokumentation](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Aufgabe](lab/README.md) + +Wir haben gesehen, wie man Text Zeichen für Zeichen generiert. Im Labor wirst du die Textgenerierung auf Wortebene erkunden. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/de/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..990f294f --- /dev/null +++ b/translations/de/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# Wortbasierte Textgenerierung mit RNNs + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +In diesem Labor müssen Sie ein beliebiges Buch auswählen und es als Datensatz verwenden, um einen wortbasierten Textgenerator zu trainieren. + +## Der Datensatz + +Sie können jedes Buch verwenden. Sie finden viele kostenlose Texte auf [Project Gutenberg](https://www.gutenberg.org/). Zum Beispiel, hier ist ein direkter Link zu [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) von Lewis Carroll. + +**Haftungsausschluss**: +Dieses Dokument wurde mit Hilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/de/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..1b77c79e --- /dev/null +++ b/translations/de/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# Aufmerksamkeitsmechanismen und Transformer + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Eines der wichtigsten Probleme im Bereich der NLP ist die **maschinelle Übersetzung**, eine grundlegende Aufgabe, die Tools wie Google Translate zugrunde liegt. In diesem Abschnitt konzentrieren wir uns auf maschinelle Übersetzung oder, allgemeiner, auf jede *Sequenz-zu-Sequenz*-Aufgabe (die auch als **Satztransduktion** bezeichnet wird). + +Bei RNNs wird Sequenz-zu-Sequenz durch zwei rekursive Netzwerke implementiert, wobei ein Netzwerk, der **Encoder**, eine Eingabesequenz in einen verborgenen Zustand zusammenfasst, während ein anderes Netzwerk, der **Decoder**, diesen verborgenen Zustand in ein übersetztes Ergebnis entfaltet. Es gibt einige Probleme mit diesem Ansatz: + +* Der endgültige Zustand des Encoder-Netzwerks hat Schwierigkeiten, sich an den Anfang eines Satzes zu erinnern, was zu einer schlechten Modellqualität bei langen Sätzen führt. +* Alle Wörter in einer Sequenz haben den gleichen Einfluss auf das Ergebnis. In der Realität haben jedoch bestimmte Wörter in der Eingabesequenz oft einen größeren Einfluss auf die sequenziellen Ausgaben als andere. + +**Aufmerksamkeitsmechanismen** bieten ein Mittel, um den kontextuellen Einfluss jedes Eingangsvektors auf jede Vorhersageausgabe des RNN zu gewichten. Die Implementierung erfolgt durch die Schaffung von Abkürzungen zwischen den Zwischenzuständen des Eingangs-RNN und dem Ausgangs-RNN. Auf diese Weise berücksichtigen wir beim Generieren des Ausgabesymbols yt alle Eingangsversteckzustände hi mit unterschiedlichen Gewichtungskoeffizienten αt,i. + +![Bild, das ein Encoder/Decoder-Modell mit einer additiven Aufmerksamkeitschicht zeigt](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.de.png) + +> Das Encoder-Decoder-Modell mit dem additiven Aufmerksamkeitsmechanismus in [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), zitiert aus [diesem Blogbeitrag](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Die Aufmerksamkeitsmatrix {αi,j} würde den Grad darstellen, in dem bestimmte Eingabewörter an der Generierung eines bestimmten Wortes in der Ausgabesequenz beteiligt sind. Im Folgenden finden Sie ein Beispiel für eine solche Matrix: + +![Bild, das eine Beispielausrichtung zeigt, die von RNNsearch-50 gefunden wurde, entnommen von Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.de.png) + +> Abbildung aus [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Aufmerksamkeitsmechanismen sind für einen Großteil des aktuellen oder nahezu aktuellen Stands der Technik im NLP verantwortlich. Die Hinzufügung von Aufmerksamkeit erhöht jedoch erheblich die Anzahl der Modellparameter, was zu Skalierungsproblemen bei RNNs führte. Eine wichtige Einschränkung bei der Skalierung von RNNs ist, dass die rekursive Natur der Modelle es schwierig macht, das Training zu batchen und zu parallelisieren. In einem RNN muss jedes Element einer Sequenz in sequentieller Reihenfolge verarbeitet werden, was bedeutet, dass es nicht leicht parallelisiert werden kann. + +![Encoder Decoder mit Aufmerksamkeit](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Abbildung aus [Google's Blog](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Die Einführung von Aufmerksamkeitsmechanismen in Kombination mit dieser Einschränkung führte zur Schaffung der heutigen State-of-the-Art-Transformer-Modelle, die wir kennen und verwenden, wie BERT und Open-GPT3. + +## Transformermodelle + +Eine der Hauptideen hinter Transformern ist es, die sequentielle Natur von RNNs zu vermeiden und ein Modell zu schaffen, das während des Trainings parallelisierbar ist. Dies wird erreicht, indem zwei Ideen implementiert werden: + +* Positionskodierung +* Verwendung des Selbstaufmerksamkeitsmechanismus zur Erfassung von Mustern anstelle von RNNs (oder CNNs) (deshalb heißt das Papier, das Transformer einführt, *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Positionskodierung/Einbettung + +Die Idee der Positionskodierung ist die folgende. +1. Bei der Verwendung von RNNs wird die relative Position der Tokens durch die Anzahl der Schritte dargestellt und muss daher nicht explizit dargestellt werden. +2. Sobald wir jedoch zu Aufmerksamkeit wechseln, müssen wir die relativen Positionen der Tokens innerhalb einer Sequenz kennen. +3. Um die Positionskodierung zu erhalten, erweitern wir unsere Sequenz von Tokens um eine Sequenz von Tokenpositionen in der Sequenz (d.h. eine Sequenz von Zahlen 0,1, ...). +4. Wir mischen dann die Tokenposition mit einem Token-Einbettungsvektor. Um die Position (ganzzahlig) in einen Vektor zu transformieren, können wir verschiedene Ansätze verwenden: + +* Trainierbare Einbettung, ähnlich wie bei der Token-Einbettung. Dies ist der Ansatz, den wir hier betrachten. Wir wenden Einbettungsschichten auf sowohl die Tokens als auch ihre Positionen an, was zu Einbettungsvektoren der gleichen Dimensionen führt, die wir dann zusammenaddieren. +* Feste Positionskodierungsfunktion, wie im ursprünglichen Papier vorgeschlagen. + + + +> Bild des Autors + +Das Ergebnis, das wir mit der Positions-Einbettung erhalten, bettet sowohl das ursprüngliche Token als auch seine Position innerhalb einer Sequenz ein. + +### Multi-Head Selbstaufmerksamkeit + +Als Nächstes müssen wir einige Muster innerhalb unserer Sequenz erfassen. Dazu verwenden Transformer einen **Selbstaufmerksamkeits**mechanismus, der im Wesentlichen Aufmerksamkeit auf die gleiche Sequenz anwendet, die als Eingabe und Ausgabe dient. Die Anwendung von Selbstaufmerksamkeit ermöglicht es uns, den **Kontext** innerhalb des Satzes zu berücksichtigen und zu sehen, welche Wörter miteinander in Beziehung stehen. Zum Beispiel ermöglicht es uns zu sehen, welche Wörter durch Kofe referenziert werden, wie *es*, und auch den Kontext zu berücksichtigen: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.de.png) + +> Bild aus dem [Google Blog](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +In Transformern verwenden wir **Multi-Head Attention**, um dem Netzwerk die Fähigkeit zu geben, mehrere verschiedene Arten von Abhängigkeiten zu erfassen, z.B. langfristige vs. kurzfristige Wortbeziehungen, Kofeferenz vs. etwas anderes usw. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) enthält weitere Details zur Implementierung von Transformerschichten. + +### Encoder-Decoder-Aufmerksamkeit + +In Transformern wird Aufmerksamkeit an zwei Stellen verwendet: + +* Um Muster innerhalb des Eingabetextes mit Selbstaufmerksamkeit zu erfassen +* Um die Sequenzübersetzung durchzuführen - es ist die Aufmerksamkeitschicht zwischen Encoder und Decoder. + +Die Encoder-Decoder-Aufmerksamkeit ähnelt sehr dem Aufmerksamkeitsmechanismus, der in RNNs verwendet wird, wie zu Beginn dieses Abschnitts beschrieben. Dieses animierte Diagramm erklärt die Rolle der Encoder-Decoder-Aufmerksamkeit. + +![Animiertes GIF, das zeigt, wie die Bewertungen in Transformermodellen durchgeführt werden.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Da jede Eingabeposition unabhängig auf jede Ausgabeposition abgebildet wird, können Transformer besser parallelisieren als RNNs, was viel größere und ausdrucksstärkere Sprachmodelle ermöglicht. Jeder Aufmerksamkeitskopf kann verwendet werden, um verschiedene Beziehungen zwischen Wörtern zu lernen, die nachgelagerte Aufgaben der natürlichen Sprachverarbeitung verbessern. + +## BERT + +**BERT** (Bidirektionale Encoder-Darstellungen von Transformern) ist ein sehr großes, mehrschichtiges Transformernetzwerk mit 12 Schichten für *BERT-base* und 24 für *BERT-large*. Das Modell wird zunächst auf einem großen Korpus von Textdaten (Wikipedia + Bücher) mit unüberwachtem Training (Vorhersage maskierter Wörter in einem Satz) vortrainiert. Während des Vortrainings absorbiert das Modell erhebliche Niveaus des Sprachverständnisses, die dann mit anderen Datensätzen durch Feinabstimmung genutzt werden können. Dieser Prozess wird als **Transferlernen** bezeichnet. + +![Bild von http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.de.png) + +> Bild [Quelle](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Übungen: Transformer + +Setzen Sie Ihr Lernen in den folgenden Notebooks fort: + +* [Transformers in PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformers in TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Fazit + +In dieser Lektion haben Sie über Transformer und Aufmerksamkeitsmechanismen gelernt, alles wesentliche Werkzeuge im NLP-Toolkit. Es gibt viele Variationen von Transformer-Architekturen, darunter BERT, DistilBERT, BigBird, OpenGPT3 und mehr, die feinabgestimmt werden können. Das [HuggingFace-Paket](https://github.com/huggingface/) bietet ein Repository zum Trainieren vieler dieser Architekturen sowohl mit PyTorch als auch mit TensorFlow. + +## 🚀 Herausforderung + +## [Nachlesequiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Überprüfung & Selbststudium + +* [Blogbeitrag](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), der das klassische [Attention is all you need](https://arxiv.org/abs/1706.03762) Papier über Transformer erklärt. +* [Eine Reihe von Blogbeiträgen](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) über Transformer, die die Architektur im Detail erklären. + +## [Aufgabe](assignment.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/18-Transformers/assignment.md b/translations/de/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..b50eec68 --- /dev/null +++ b/translations/de/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# Aufgabe: Transformer + +Experimentiere mit Transformers auf HuggingFace! Probiere einige der Skripte aus, die sie bereitstellen, um mit den verschiedenen Modellen zu arbeiten, die auf ihrer Seite verfügbar sind: https://huggingface.co/docs/transformers/run_scripts. Teste einen ihrer Datensätze, importiere dann einen eigenen aus diesem Lehrplan oder von Kaggle und schaue, ob du interessante Texte generieren kannst. Erstelle ein Notizbuch mit deinen Ergebnissen. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/19-NER/README.md b/translations/de/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..f718e07e --- /dev/null +++ b/translations/de/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,84 @@ +# Benannte Entitätenerkennung + +Bis jetzt haben wir uns hauptsächlich auf eine NLP-Aufgabe - Klassifikation - konzentriert. Es gibt jedoch auch andere NLP-Aufgaben, die mit neuronalen Netzwerken durchgeführt werden können. Eine dieser Aufgaben ist die **[Benannte Entitätenerkennung](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), die sich mit der Erkennung spezifischer Entitäten innerhalb von Texten befasst, wie z.B. Orte, Personennamen, Zeiträume, chemische Formeln und so weiter. + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Beispiel für die Verwendung von NER + +Angenommen, Sie möchten einen Chatbot für natürliche Sprache entwickeln, ähnlich wie Amazon Alexa oder Google Assistant. Die Funktionsweise intelligenter Chatbots besteht darin, zu *verstehen*, was der Benutzer möchte, indem sie eine Textklassifikation auf dem eingegebenen Satz durchführen. Das Ergebnis dieser Klassifikation ist die sogenannte **Intention**, die bestimmt, was ein Chatbot tun sollte. + +Bot NER + +> Bild vom Autor + +Ein Benutzer kann jedoch einige Parameter als Teil des Satzes angeben. Wenn sie beispielsweise nach dem Wetter fragt, kann sie einen Ort oder ein Datum angeben. Ein Bot sollte in der Lage sein, diese Entitäten zu verstehen und die Parameter entsprechend auszufüllen, bevor er die Aktion ausführt. Genau hier kommt NER ins Spiel. + +> ✅ Ein weiteres Beispiel wäre [die Analyse wissenschaftlicher medizinischer Arbeiten](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Eine der Hauptsachen, auf die wir achten müssen, sind spezifische medizinische Begriffe, wie Krankheiten und medizinische Substanzen. Während eine kleine Anzahl von Krankheiten wahrscheinlich mit Substring-Suche extrahiert werden kann, erfordern komplexere Entitäten, wie chemische Verbindungen und Medikamentennamen, einen komplexeren Ansatz. + +## NER als Token-Klassifikation + +NER-Modelle sind im Wesentlichen **Token-Klassifikationsmodelle**, da wir für jedes der Eingabetokens entscheiden müssen, ob es zu einer Entität gehört oder nicht, und wenn ja - zu welcher Entitätsklasse. + +Betrachten Sie den folgenden Titel einer Arbeit: + +**Trikuspidalklappeninsuffizienz** und **Lithiumcarbonat** **Toxizität** bei einem Neugeborenen. + +Die Entitäten hier sind: + +* Trikuspidalklappeninsuffizienz ist eine Krankheit (`DIS`) +* Lithiumcarbonat ist eine chemische Substanz (`CHEM`) +* Toxizität ist ebenfalls eine Krankheit (`DIS`) + +Beachten Sie, dass eine Entität mehrere Tokens umfassen kann. Und, wie in diesem Fall, müssen wir zwischen zwei aufeinanderfolgenden Entitäten unterscheiden. Daher ist es üblich, zwei Klassen für jede Entität zu verwenden - eine, die das erste Token der Entität angibt (häufig wird das `B-`-Präfix verwendet, für **b**eginning), und eine andere - die Fortsetzung einer Entität (`I-`, für **i**nner token). Wir verwenden auch `O` als Klasse, um alle **o**ther Tokens darzustellen. Solches Token-Tagging wird als [BIO-Tagging](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (oder IOB) bezeichnet. Wenn wir unseren Titel taggen, sieht er folgendermaßen aus: + +Token | Tag +------|----- +Trikuspidal | B-DIS +klappe | I-DIS +insuffizienz | I-DIS +und | O +lithium | B-CHEM +carbonat | I-CHEM +toxizität | B-DIS +bei | O +einem | O +neugeborenen | O +. | O + +Da wir eine Eins-zu-eins-Zuordnung zwischen Tokens und Klassen herstellen müssen, können wir ein rechtsseitiges **viele-zu-viele** neuronales Netzwerkmodell aus diesem Bild trainieren: + +![Bild zeigt gängige Muster wiederkehrender neuronaler Netzwerke.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.de.jpg) + +> *Bild aus [diesem Blogbeitrag](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) von [Andrej Karpathy](http://karpathy.github.io/). NER-Token-Klassifikationsmodelle entsprechen der ganz rechts stehenden Netzwerkarchitektur in diesem Bild.* + +## Training von NER-Modellen + +Da ein NER-Modell im Wesentlichen ein Token-Klassifikationsmodell ist, können wir RNNs verwenden, mit denen wir bereits vertraut sind. In diesem Fall gibt jeder Block des rekurrenten Netzwerks die Token-ID zurück. Das folgende Beispiel-Notebook zeigt, wie man LSTM für die Token-Klassifikation trainiert. + +## ✍️ Beispiel-Notebooks: NER + +Setzen Sie Ihr Lernen im folgenden Notebook fort: + +* [NER mit TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Fazit + +Ein NER-Modell ist ein **Token-Klassifikationsmodell**, was bedeutet, dass es zur Durchführung der Token-Klassifikation verwendet werden kann. Dies ist eine sehr gängige Aufgabe im NLP, die hilft, spezifische Entitäten innerhalb von Texten zu erkennen, einschließlich Orte, Namen, Daten und mehr. + +## 🚀 Herausforderung + +Schließen Sie die unten verlinkte Aufgabe ab, um ein Modell zur Benannten Entitätenerkennung für medizinische Begriffe zu trainieren, und testen Sie es dann an einem anderen Datensatz. + +## [Nachvorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Überprüfung & Selbststudium + +Lesen Sie den Blog [Die unangemessene Effektivität von rekurrenten neuronalen Netzwerken](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) und folgen Sie dem Abschnitt Weiterführende Literatur in diesem Artikel, um Ihr Wissen zu vertiefen. + +## [Aufgabe](lab/README.md) + +In der Aufgabe für diese Lektion müssen Sie ein Modell zur Erkennung medizinischer Entitäten trainieren. Sie können mit dem Training eines LSTM-Modells beginnen, wie in dieser Lektion beschrieben, und dann das BERT-Transformator-Modell verwenden. Lesen Sie [die Anweisungen](lab/README.md), um alle Details zu erhalten. + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/19-NER/lab/README.md b/translations/de/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..fa04df4a --- /dev/null +++ b/translations/de/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +In diesem Labor müssen Sie ein Modell zur Erkennung benannter Entitäten für medizinische Begriffe trainieren. + +## Der Datensatz + +Um das NER-Modell zu trainieren, benötigen wir einen richtig beschrifteten Datensatz mit medizinischen Entitäten. Der [BC5CDR-Datensatz](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) enthält beschriftete Krankheiten und chemische Entitäten aus mehr als 1500 Arbeiten. Sie können den Datensatz herunterladen, nachdem Sie sich auf ihrer Website registriert haben. + +Der BC5CDR-Datensatz sieht folgendermaßen aus: + +``` +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 +... +``` + +In diesem Datensatz befinden sich der Titel und die Zusammenfassung der Arbeit in den ersten beiden Zeilen, gefolgt von einzelnen Entitäten mit Anfangs- und Endpositionen im Titel+Zusammenfassungsblock. Zusätzlich zum Entitätstyp erhalten Sie die Ontologie-ID dieser Entität innerhalb einer medizinischen Ontologie. + +Sie müssen einige Python-Codes schreiben, um dies in BIO-Codierung umzuwandeln. + +## Das Netzwerk + +Der erste Versuch zur NER kann unter Verwendung eines LSTM-Netzwerks erfolgen, wie in unserem Beispiel, das Sie während der Lektion gesehen haben. In NLP-Aufgaben zeigen jedoch [Transformator-Architekturen](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) und insbesondere [BERT-Sprachmodelle](https://en.wikipedia.org/wiki/BERT_(language_model)) deutlich bessere Ergebnisse. Vorgefertigte BERT-Modelle verstehen die allgemeine Struktur einer Sprache und können mit relativ kleinen Datensätzen und geringen Rechenkosten für spezifische Aufgaben feinabgestimmt werden. + +Da wir planen, NER im medizinischen Szenario anzuwenden, ist es sinnvoll, ein BERT-Modell zu verwenden, das auf medizinischen Texten trainiert wurde. Microsoft Research hat ein vortrainiertes Modell namens [PubMedBERT][PubMedBERT] ([Veröffentlichung][PubMedBERT-Pub]) veröffentlicht, das mithilfe von Texten aus dem [PubMed](https://pubmed.ncbi.nlm.nih.gov/) Repository feinabgestimmt wurde. + +Der *de facto* Standard für das Training von Transformator-Modellen ist die [Hugging Face Transformers](https://huggingface.co/) Bibliothek. Sie enthält auch ein Repository von von der Community gewarteten vortrainierten Modellen, einschließlich PubMedBERT. Um dieses Modell zu laden und zu verwenden, benötigen wir nur ein paar Zeilen Code: + +```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) +``` + +Dies gibt uns das `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer`-Objekt, das den Eingabetext in Tokens aufteilen kann. Sie müssen den Datensatz in das BIO-Format umwandeln und dabei die Tokenisierung von PubMedBERT berücksichtigen. Sie können [diesen Python-Code](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) als Inspiration verwenden. + +## Fazit + +Diese Aufgabe ist sehr nah an der tatsächlichen Aufgabe, die Sie wahrscheinlich haben werden, wenn Sie mehr Einblicke in große Mengen an Texten in natürlicher Sprache gewinnen möchten. In unserem Fall können wir unser trainiertes Modell auf den [Datensatz von COVID-bezogenen Arbeiten](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) anwenden und sehen, welche Erkenntnisse wir gewinnen können. [Dieser Blogbeitrag](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) und [dieses Papier](https://www.mdpi.com/2504-2289/6/1/4) beschreiben die Forschung, die an diesem Korpus von Arbeiten unter Verwendung von NER durchgeführt werden kann. + +**Haftungsausschluss**: +Dieses Dokument wurde mit Hilfe von KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Originalsprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/de/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..76efd60f --- /dev/null +++ b/translations/de/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,56 @@ +# Vorgebildete große Sprachmodelle + +In all unseren vorherigen Aufgaben haben wir ein neuronales Netzwerk trainiert, um eine bestimmte Aufgabe mit einem beschrifteten Datensatz auszuführen. Bei großen Transformermodellen wie BERT nutzen wir Sprachmodellierung in selbstüberwachter Weise, um ein Sprachmodell zu erstellen, das dann für spezifische nachgelagerte Aufgaben mit weiterem domänenspezifischem Training spezialisiert wird. Es wurde jedoch gezeigt, dass große Sprachmodelle viele Aufgaben auch ohne jegliches domänenspezifisches Training lösen können. Eine Familie von Modellen, die dazu in der Lage ist, wird als **GPT** bezeichnet: Generative Pre-Trained Transformer. + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Textgenerierung und Perplexität + +Die Idee, dass ein neuronales Netzwerk in der Lage ist, allgemeine Aufgaben ohne nachgelagertes Training auszuführen, wird im Papier [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) präsentiert. Die Hauptidee ist, dass viele andere Aufgaben mit **Textgenerierung** modelliert werden können, da das Verständnis von Text im Wesentlichen bedeutet, in der Lage zu sein, ihn zu produzieren. Da das Modell auf einer riesigen Menge an Text trainiert wurde, die menschliches Wissen umfasst, wird es auch über eine Vielzahl von Themen informiert. + +> Das Verständnis und die Fähigkeit, Text zu produzieren, bedeutet auch, etwas über die Welt um uns herum zu wissen. Menschen lernen auch in großem Maße durch Lesen, und das GPT-Netzwerk ist in dieser Hinsicht ähnlich. + +Textgenerierungsnetzwerke funktionieren, indem sie die Wahrscheinlichkeit des nächsten Wortes $$P(w_N)$$ vorhersagen. Die bedingungslose Wahrscheinlichkeit des nächsten Wortes entspricht jedoch der Häufigkeit dieses Wortes im Textkorpus. GPT kann uns die **bedingte Wahrscheinlichkeit** des nächsten Wortes geben, basierend auf den vorherigen: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Sie können mehr über Wahrscheinlichkeiten in unserem [Data Science for Beginners Curriculum](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) lesen. + +Die Qualität des sprachgenerierenden Modells kann mit **Perplexität** definiert werden. Es ist eine intrinsische Metrik, die es uns ermöglicht, die Modellqualität ohne einen aufgaben-spezifischen Datensatz zu messen. Sie basiert auf dem Konzept der *Wahrscheinlichkeit eines Satzes* – das Modell weist einem Satz, der wahrscheinlich echt ist (d.h. das Modell ist nicht **verwirrt** von ihm), eine hohe Wahrscheinlichkeit zu, und einer niedrigen Wahrscheinlichkeit für Sätze, die weniger Sinn machen (z.B. *Kann es was tun?*). Wenn wir unserem Modell Sätze aus einem echten Textkorpus geben, erwarten wir, dass sie eine hohe Wahrscheinlichkeit und eine niedrige **Perplexität** haben. Mathematisch wird es als normalisierte inverse Wahrscheinlichkeit des Testdatensatzes definiert: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Sie können mit der Textgenerierung den [GPT-gestützten Texteditor von Hugging Face](https://transformer.huggingface.co/doc/gpt2-large) ausprobieren.** In diesem Editor beginnen Sie, Ihren Text zu schreiben, und durch Drücken von **[TAB]** erhalten Sie mehrere Vervollständigungsoptionen. Wenn diese zu kurz sind oder Sie nicht zufrieden sind, drücken Sie erneut [TAB], und Sie erhalten weitere Optionen, einschließlich längerer Textabschnitte. + +## GPT ist eine Familie + +GPT ist kein einzelnes Modell, sondern eine Sammlung von Modellen, die von [OpenAI](https://openai.com) entwickelt und trainiert wurden. + +Unter den GPT-Modellen haben wir: + +| [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) | +| -- | -- | -- | +| Sprachmodell mit bis zu 1,5 Milliarden Parametern. | Sprachmodell mit bis zu 175 Milliarden Parametern | 100T Parameter und akzeptiert sowohl Bild- als auch Texteingaben und gibt Text aus. | + + +Die Modelle GPT-3 und GPT-4 sind [als kognitiver Dienst von Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) sowie als [OpenAI API](https://openai.com/api/) verfügbar. + +## Prompt-Engineering + +Da GPT auf riesigen Datenmengen trainiert wurde, um Sprache und Code zu verstehen, liefern sie Ausgaben als Antwort auf Eingaben (Prompts). Prompts sind die Eingaben oder Abfragen an GPT, bei denen man den Modellen Anweisungen zu den Aufgaben gibt, die sie als Nächstes ausführen sollen. Um ein gewünschtes Ergebnis zu erzielen, benötigen Sie den effektivsten Prompt, der die Auswahl der richtigen Wörter, Formate, Phrasen oder sogar Symbole umfasst. Dieser Ansatz wird als [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) bezeichnet. + +[Diese Dokumentation](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) bietet Ihnen weitere Informationen zum Prompt-Engineering. + +## ✍️ Beispielnotizbuch: [Spielen mit OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Setzen Sie Ihr Lernen in den folgenden Notizbüchern fort: + +* [Textgenerierung mit OpenAI-GPT und Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Fazit + +Neue allgemeine vortrainierte Sprachmodelle modellieren nicht nur die Sprachstruktur, sondern enthalten auch eine riesige Menge an natürlicher Sprache. Daher können sie effektiv eingesetzt werden, um einige NLP-Aufgaben in Zero-Shot- oder Few-Shot-Einstellungen zu lösen. + +## [Nachlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/5-NLP/README.md b/translations/de/lessons/5-NLP/README.md new file mode 100644 index 00000000..250720e1 --- /dev/null +++ b/translations/de/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# Verarbeitung natürlicher Sprache + +![Zusammenfassung der NLP-Aufgaben in einem Doodle](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.de.png) + +In diesem Abschnitt konzentrieren wir uns darauf, neuronale Netzwerke für Aufgaben im Bereich der **Verarbeitung natürlicher Sprache (NLP)** zu nutzen. Es gibt viele NLP-Probleme, die wir möchten, dass Computer lösen können: + +* **Textklassifikation** ist ein typisches Klassifikationsproblem, das sich auf Textsequenzen bezieht. Beispiele sind die Klassifizierung von E-Mail-Nachrichten als Spam oder Nicht-Spam oder die Kategorisierung von Artikeln in Sport, Wirtschaft, Politik usw. Auch bei der Entwicklung von Chatbots müssen wir oft verstehen, was ein Benutzer sagen wollte – in diesem Fall beschäftigen wir uns mit **Intent-Klassifikation**. Oft müssen wir bei der Intent-Klassifikation mit vielen Kategorien umgehen. +* **Sentimentanalyse** ist ein typisches Regressionsproblem, bei dem wir einer Zahl (einem Sentiment) zuordnen müssen, wie positiv oder negativ die Bedeutung eines Satzes ist. Eine fortgeschrittenere Version der Sentimentanalyse ist die **aspektbasierte Sentimentanalyse** (ABSA), bei der wir das Sentiment nicht dem gesamten Satz, sondern verschiedenen Teilen davon (Aspekten) zuordnen, z. B. *In diesem Restaurant mochte ich die Küche, aber die Atmosphäre war schrecklich*. +* **Named Entity Recognition** (NER) bezieht sich auf das Problem, bestimmte Entitäten aus Text zu extrahieren. Zum Beispiel müssen wir möglicherweise verstehen, dass im Satz *Ich muss morgen nach Paris fliegen* das Wort *morgen* auf DATUM verweist und *Paris* ein ORT ist. +* **Schlüsselwortextraktion** ähnelt NER, aber wir müssen automatisch Wörter extrahieren, die für die Bedeutung des Satzes wichtig sind, ohne eine Vorab-Trainierung für spezifische Entitätstypen. +* **Textclustering** kann nützlich sein, wenn wir ähnliche Sätze gruppieren möchten, beispielsweise ähnliche Anfragen in technischen Supportgesprächen. +* **Fragenbeantwortung** bezieht sich auf die Fähigkeit eines Modells, eine spezifische Frage zu beantworten. Das Modell erhält einen Textabschnitt und eine Frage als Eingaben und muss einen Ort im Text angeben, an dem die Antwort auf die Frage enthalten ist (oder manchmal den Antworttext generieren). +* **Textgenerierung** ist die Fähigkeit eines Modells, neuen Text zu generieren. Sie kann als Klassifikationsaufgabe betrachtet werden, die den nächsten Buchstaben/Wort basierend auf einem *Text-Prompt* vorhersagt. Fortgeschrittene Textgenerierungsmodelle, wie GPT-3, sind in der Lage, andere NLP-Aufgaben wie Klassifikation mit einer Technik namens [Prompt-Programmierung](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) oder [Prompt-Engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) zu lösen. +* **Textzusammenfassung** ist eine Technik, bei der wir möchten, dass ein Computer langen Text "liest" und ihn in wenigen Sätzen zusammenfasst. +* **Maschinelle Übersetzung** kann als Kombination aus Textverständnis in einer Sprache und Textgenerierung in einer anderen angesehen werden. + +Ursprünglich wurden die meisten NLP-Aufgaben mit traditionellen Methoden wie Grammatiken gelöst. Zum Beispiel wurden in der maschinellen Übersetzung Parser verwendet, um den ursprünglichen Satz in einen Syntaxbaum zu transformieren, dann wurden höhere semantische Strukturen extrahiert, um die Bedeutung des Satzes darzustellen, und basierend auf dieser Bedeutung und der Grammatik der Zielsprache wurde das Ergebnis generiert. Heutzutage werden viele NLP-Aufgaben effektiver mit neuronalen Netzwerken gelöst. + +> Viele klassische NLP-Methoden sind in der Python-Bibliothek [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) implementiert. Es gibt ein großartiges [NLTK-Buch](https://www.nltk.org/book/), das online verfügbar ist und behandelt, wie verschiedene NLP-Aufgaben mit NLTK gelöst werden können. + +In unserem Kurs werden wir uns hauptsächlich auf die Verwendung neuronaler Netzwerke für NLP konzentrieren und NLTK dort einsetzen, wo es notwendig ist. + +Wir haben bereits gelernt, wie man neuronale Netzwerke für die Verarbeitung von tabellarischen Daten und Bildern einsetzt. Der Hauptunterschied zwischen diesen Datentypen und Text ist, dass Text eine Sequenz variabler Länge ist, während die Eingangsgröße im Fall von Bildern im Voraus bekannt ist. Während konvolutionale Netzwerke Muster aus Eingabedaten extrahieren können, sind Muster in Text komplexer. Zum Beispiel kann die Negation für viele Wörter vom Subjekt getrennt sein (z. B. *Ich mag keine Orangen* vs. *Ich mag diese großen bunten leckeren Orangen nicht*), und das sollte immer noch als ein Muster interpretiert werden. Daher müssen wir zur Handhabung von Sprache neue Arten von neuronalen Netzwerken einführen, wie *rekurrente Netzwerke* und *Transformatoren*. + +## Bibliotheken installieren + +Wenn Sie eine lokale Python-Installation verwenden, um diesen Kurs durchzuführen, müssen Sie möglicherweise alle erforderlichen Bibliotheken für NLP mit den folgenden Befehlen installieren: + +**Für PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Für TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Sie können NLP mit TensorFlow auf [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) ausprobieren. + +## GPU-Warnung + +In diesem Abschnitt werden wir in einigen Beispielen recht große Modelle trainieren. +* **Verwenden Sie einen GPU-fähigen Computer**: Es wird empfohlen, Ihre Notebooks auf einem GPU-fähigen Computer auszuführen, um die Wartezeiten beim Arbeiten mit großen Modellen zu reduzieren. +* **GPU-Speicherbeschränkungen**: Das Ausführen auf einer GPU kann zu Situationen führen, in denen der GPU-Speicher erschöpft ist, insbesondere beim Trainieren großer Modelle. +* **GPU-Speicherverbrauch**: Die Menge an GPU-Speicher, die während des Trainings verbraucht wird, hängt von verschiedenen Faktoren ab, einschließlich der Mini-Batch-Größe. +* **Mini-Batch-Größe minimieren**: Wenn Sie auf GPU-Speicherprobleme stoßen, ziehen Sie in Betracht, die Mini-Batch-Größe in Ihrem Code als potenzielle Lösung zu reduzieren. +* **TensorFlow GPU-Speicherfreigabe**: Ältere Versionen von TensorFlow geben den GPU-Speicher möglicherweise nicht korrekt frei, wenn mehrere Modelle innerhalb eines Python-Kernels trainiert werden. Um die GPU-Speichernutzung effektiv zu verwalten, können Sie TensorFlow so konfigurieren, dass GPU-Speicher nur nach Bedarf zugewiesen wird. +* **Code-Einbeziehung**: Um TensorFlow so einzustellen, dass die GPU-Speicherzuweisung nur bei Bedarf wächst, fügen Sie den folgenden Code in Ihre Notebooks ein: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Wenn Sie daran interessiert sind, NLP aus einer klassischen ML-Perspektive zu lernen, besuchen Sie [diese Reihe von Lektionen](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). + +## In diesem Abschnitt +In diesem Abschnitt werden wir lernen über: + +* [Text als Tensoren darstellen](13-TextRep/README.md) +* [Wort-Einbettungen](14-Emdeddings/README.md) +* [Sprachmodellierung](15-LanguageModeling/README.md) +* [Rekurrente neuronale Netzwerke](16-RNN/README.md) +* [Generative Netzwerke](17-GenerativeNetworks/README.md) +* [Transformatoren](18-Transformers/README.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Verantwortung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/de/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..1aff5f16 --- /dev/null +++ b/translations/de/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# Genetische Algorithmen + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Genetische Algorithmen** (GA) basieren auf einem **evolutionären Ansatz** für KI, bei dem Methoden der Evolution einer Population verwendet werden, um eine optimale Lösung für ein gegebenes Problem zu finden. Sie wurden 1975 von [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland) vorgeschlagen. + +Genetische Algorithmen beruhen auf den folgenden Ideen: + +* Gültige Lösungen für das Problem können als **Gene** dargestellt werden. +* **Crossover** ermöglicht es uns, zwei Lösungen zu kombinieren, um eine neue gültige Lösung zu erhalten. +* **Selektion** wird verwendet, um optimalere Lösungen mithilfe einer **Fitnessfunktion** auszuwählen. +* **Mutationen** werden eingeführt, um die Optimierung zu destabilisieren und uns aus dem lokalen Minimum herauszuholen. + +Wenn Sie einen genetischen Algorithmus implementieren möchten, benötigen Sie Folgendes: + +* Eine Methode zu finden, um unsere Problemlösungen mit **Genen** g∈Γ zu codieren. +* Auf der Menge der Gene Γ müssen wir eine **Fitnessfunktion** fit: Γ→**R** definieren. Kleinere Funktionswerte entsprechen besseren Lösungen. +* Einen **Crossover**-Mechanismus zu definieren, um zwei Gene zu kombinieren, um eine neue gültige Lösung zu erhalten: crossover: Γ2→Γ. +* Einen **Mutations**-Mechanismus zu definieren: mutate: Γ→Γ. + +In vielen Fällen sind Crossover und Mutation recht einfache Algorithmen, um Gene als numerische Sequenzen oder Bitvektoren zu manipulieren. + +Die spezifische Implementierung eines genetischen Algorithmus kann von Fall zu Fall variieren, aber die allgemeine Struktur ist wie folgt: + +1. Wählen Sie eine Anfangspopulation G⊂Γ aus. +2. Wählen Sie zufällig eine der Operationen aus, die in diesem Schritt durchgeführt werden: Crossover oder Mutation. +3. **Crossover**: + * Wählen Sie zufällig zwei Gene g1, g2 ∈ G aus. + * Berechnen Sie das Crossover g=crossover(g1,g2). + * Wenn fit(g)1) oder fit(g)2) - ersetzen Sie das entsprechende Gen in der Population durch g. +4. **Mutation** - wählen Sie ein zufälliges Gen g∈G aus und ersetzen Sie es durch mutate(g). +5. Wiederholen Sie Schritt 2, bis wir einen ausreichend kleinen Wert für fit erhalten oder bis die Grenze für die Anzahl der Schritte erreicht ist. + +## Typische Aufgaben + +Typische Aufgaben, die durch genetische Algorithmen gelöst werden, umfassen: + +1. Terminoptimierung +1. Optimale Verpackung +1. Optimales Schneiden +1. Beschleunigung der exhaustiven Suche + +## ✍️ Übungen: Genetische Algorithmen + +Setzen Sie Ihr Lernen in den folgenden Notebooks fort: + +Gehen Sie zu [diesem Notebook](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb), um zwei Beispiele für die Verwendung genetischer Algorithmen zu sehen: + +1. Gerechte Aufteilung von Schätzen +1. 8-Damen-Problem + +## Fazit + +Genetische Algorithmen werden verwendet, um viele Probleme zu lösen, einschließlich Logistik- und Suchprobleme. Das Feld ist inspiriert von Forschungen, die Themen aus Psychologie und Informatik zusammengeführt haben. + +## 🚀 Herausforderung + +"Genetische Algorithmen sind einfach zu implementieren, aber ihr Verhalten ist schwer zu verstehen." [Quelle](https://wikipedia.org/wiki/Genetic_algorithm) Machen Sie einige Recherchen, um eine Implementierung eines genetischen Algorithmus zu finden, wie z.B. das Lösen eines Sudoku-Rätsels, und erklären Sie, wie es funktioniert, als Skizze oder Flussdiagramm. + +## [Nachvorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Überprüfung & Selbststudium + +Sehen Sie sich [dieses großartige Video](https://www.youtube.com/watch?v=qv6UVOQ0F44) an, das darüber spricht, wie Computer lernen können, Super Mario mit Hilfe von neuronalen Netzwerken zu spielen, die durch genetische Algorithmen trainiert wurden. Wir werden mehr darüber lernen, wie Computer Spiele wie dieses spielen [im nächsten Abschnitt](../22-DeepRL/README.md). + +## [Aufgabe: Diophantische Gleichung](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Ihr Ziel ist es, die sogenannte **diophantische Gleichung** zu lösen - eine Gleichung mit ganzzahligen Wurzeln. Betrachten Sie zum Beispiel die Gleichung a+2b+3c+4d=30. Sie müssen die ganzzahligen Wurzeln finden, die diese Gleichung erfüllen. + +*Diese Aufgabe ist inspiriert von [diesem Beitrag](https://habr.com/post/128704/).* + +Hinweise: + +1. Sie können die Wurzeln im Intervall [0;30] betrachten. +1. Verwenden Sie als Gen die Liste der Wurzelwerte. + +Verwenden Sie [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) als Ausgangspunkt. + +**Haftungsausschluss**: +Dieses Dokument wurde mit Hilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/6-Other/22-DeepRL/README.md b/translations/de/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..7ecf9070 --- /dev/null +++ b/translations/de/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# Deep Reinforcement Learning + +Reinforcement Learning (RL) wird als eines der grundlegenden Paradigmen des maschinellen Lernens angesehen, neben dem überwachten und unüberwachten Lernen. Während wir im überwachten Lernen auf Datensätze mit bekannten Ergebnissen angewiesen sind, basiert RL auf **Lernen durch Handeln**. Zum Beispiel, wenn wir ein Computer-Spiel zum ersten Mal sehen, fangen wir an zu spielen, selbst ohne die Regeln zu kennen, und bald sind wir in der Lage, unsere Fähigkeiten allein durch das Spielen und Anpassen unseres Verhaltens zu verbessern. + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Um RL durchzuführen, benötigen wir: + +* Eine **Umgebung** oder **Simulation**, die die Regeln des Spiels festlegt. Wir sollten in der Lage sein, die Experimente in der Simulation durchzuführen und die Ergebnisse zu beobachten. +* Eine **Belohnungsfunktion**, die angibt, wie erfolgreich unser Experiment war. Im Fall des Lernens, ein Computerspiel zu spielen, wäre die Belohnung unser Endpunktestand. + +Basierend auf der Belohnungsfunktion sollten wir in der Lage sein, unser Verhalten anzupassen und unsere Fähigkeiten zu verbessern, damit wir beim nächsten Mal besser spielen. Der Hauptunterschied zwischen anderen Arten des maschinellen Lernens und RL besteht darin, dass wir im RL typischerweise nicht wissen, ob wir gewinnen oder verlieren, bis wir das Spiel beenden. Daher können wir nicht sagen, ob ein bestimmter Zug allein gut oder schlecht ist - wir erhalten die Belohnung erst am Ende des Spiels. + +Während des RL führen wir typischerweise viele Experimente durch. Während jedes Experiments müssen wir ein Gleichgewicht finden zwischen der Verfolgung der optimalen Strategie, die wir bisher gelernt haben (**Exploitation**), und der Erkundung neuer möglicher Zustände (**Exploration**). + +## OpenAI Gym + +Ein großartiges Werkzeug für RL ist das [OpenAI Gym](https://gym.openai.com/) - eine **Simulationsumgebung**, die viele verschiedene Umgebungen simulieren kann, von Atari-Spielen bis hin zur Physik hinter dem Balancieren eines Mastes. Es ist eine der beliebtesten Simulationsumgebungen zur Schulung von Reinforcement-Learning-Algorithmen und wird von [OpenAI](https://openai.com/) gepflegt. + +> **Hinweis**: Sie können alle verfügbaren Umgebungen von OpenAI Gym [hier](https://gym.openai.com/envs/#classic_control) einsehen. + +## CartPole Balancing + +Sie haben wahrscheinlich alle moderne Balanciergeräte wie den *Segway* oder *Gyroscooter* gesehen. Diese sind in der Lage, automatisch zu balancieren, indem sie ihre Räder als Reaktion auf ein Signal von einem Beschleunigungsmesser oder Gyroskop anpassen. In diesem Abschnitt werden wir lernen, wie man ein ähnliches Problem löst - das Balancieren eines Mastes. Es ist vergleichbar mit einer Situation, in der ein Zirkuskünstler einen Mast auf seiner Hand balancieren muss - jedoch findet dieses Balancieren nur in 1D statt. + +Eine vereinfachte Version des Balancierens ist als **CartPole**-Problem bekannt. In der CartPole-Welt haben wir einen horizontalen Schieber, der sich nach links oder rechts bewegen kann, und das Ziel ist es, einen vertikalen Mast oben auf dem Schieber auszubalancieren, während er sich bewegt. + +ein cartpole + +Um diese Umgebung zu erstellen und zu nutzen, benötigen wir ein paar Zeilen Python-Code: + +```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}") +``` + +Jede Umgebung kann auf genau die gleiche Weise aufgerufen werden: +* `env.reset` starts a new experiment +* `env.step` führt einen Simulationsschritt durch. Es erhält eine **Aktion** aus dem **Aktionsraum** und gibt eine **Beobachtung** (aus dem Beobachtungsraum) sowie eine Belohnung und ein Beendigungsflag zurück. + +Im obigen Beispiel führen wir bei jedem Schritt eine zufällige Aktion aus, weshalb die Lebensdauer des Experiments sehr kurz ist: + +![nicht balancierendes cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Das Ziel eines RL-Algorithmus ist es, ein Modell - die sogenannte **Politik** π - zu trainieren, das die Aktion als Antwort auf einen gegebenen Zustand zurückgibt. Wir können die Politik auch als probabilistisch betrachten, d.h. für jeden Zustand *s* und jede Aktion *a* gibt sie die Wahrscheinlichkeit π(*a*|*s*) zurück, dass wir *a* im Zustand *s* wählen sollten. + +## Policy Gradients Algorithmus + +Der offensichtlichste Weg, eine Politik zu modellieren, besteht darin, ein neuronales Netzwerk zu erstellen, das Zustände als Eingabe nimmt und die entsprechenden Aktionen (oder besser gesagt die Wahrscheinlichkeiten aller Aktionen) zurückgibt. In gewissem Sinne wäre es ähnlich wie bei einer normalen Klassifikationsaufgabe, mit einem wesentlichen Unterschied - wir wissen im Voraus nicht, welche Aktionen wir in jedem Schritt ausführen sollten. + +Die Idee hier ist, diese Wahrscheinlichkeiten zu schätzen. Wir erstellen einen Vektor von **kumulierten Belohnungen**, der unsere Gesamtbelohnung in jedem Schritt des Experiments zeigt. Wir wenden auch **Belohnungsdiskontierung** an, indem wir frühere Belohnungen mit einem Koeffizienten γ=0.99 multiplizieren, um die Rolle der früheren Belohnungen zu verringern. Dann verstärken wir die Schritte entlang des Experimentpfades, die größere Belohnungen erzielen. + +> Erfahren Sie mehr über den Policy-Gradient-Algorithmus und sehen Sie ihn in Aktion im [Beispiel-Notebook](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Actor-Critic Algorithmus + +Eine verbesserte Version des Policy-Gradients-Ansatzes wird als **Actor-Critic** bezeichnet. Die Hauptidee dahinter ist, dass das neuronale Netzwerk trainiert wird, um zwei Dinge zurückzugeben: + +* Die Politik, die bestimmt, welche Aktion zu ergreifen ist. Dieser Teil wird **Actor** genannt. +* Die Schätzung der Gesamtbelohnung, die wir in diesem Zustand erwarten können - dieser Teil wird **Critic** genannt. + +In gewissem Sinne ähnelt diese Architektur einem [GAN](../../4-ComputerVision/10-GANs/README.md), bei dem wir zwei Netzwerke haben, die gegeneinander trainiert werden. Im Actor-Critic-Modell schlägt der Actor die Aktion vor, die wir ausführen müssen, und der Critic versucht, kritisch zu sein und das Ergebnis zu schätzen. Unser Ziel ist es jedoch, diese Netzwerke gemeinsam zu trainieren. + +Da wir sowohl die tatsächlichen kumulierten Belohnungen als auch die Ergebnisse, die der Critic während des Experiments zurückgibt, kennen, ist es relativ einfach, eine Verlustfunktion zu erstellen, die den Unterschied zwischen ihnen minimiert. Das würde uns **Critic-Verlust** geben. Wir können **Actor-Verlust** berechnen, indem wir denselben Ansatz wie im Policy-Gradient-Algorithmus verwenden. + +Nach dem Ausführen eines dieser Algorithmen können wir erwarten, dass unser CartPole so aussieht: + +![ein balancierendes cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Übungen: Policy Gradients und Actor-Critic RL + +Setzen Sie Ihr Lernen in den folgenden Notebooks fort: + +* [RL in TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL in PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Weitere RL-Aufgaben + +Reinforcement Learning ist heutzutage ein schnell wachsendes Forschungsfeld. Einige interessante Beispiele für Reinforcement Learning sind: + +* Einem Computer beibringen, **Atari-Spiele** zu spielen. Der herausfordernde Teil dieses Problems besteht darin, dass wir keinen einfachen Zustand in Form eines Vektors haben, sondern eher einen Screenshot - und wir müssen das CNN verwenden, um dieses Bildschirmbild in einen Merkmalsvektor zu konvertieren oder Belohnungsinformationen zu extrahieren. Atari-Spiele sind im Gym verfügbar. +* Einem Computer beibringen, Brettspiele wie Schach und Go zu spielen. Kürzlich wurden hochmoderne Programme wie **Alpha Zero** von zwei Agenten, die gegeneinander spielten und sich mit jedem Schritt verbesserten, von Grund auf trainiert. +* In der Industrie wird RL verwendet, um Steuerungssysteme aus Simulationen zu erstellen. Ein Dienst namens [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) wurde speziell dafür entwickelt. + +## Fazit + +Wir haben nun gelernt, wie man Agenten trainiert, um gute Ergebnisse zu erzielen, indem wir ihnen eine Belohnungsfunktion bereitstellen, die den gewünschten Zustand des Spiels definiert, und ihnen die Möglichkeit geben, den Suchraum intelligent zu erkunden. Wir haben erfolgreich zwei Algorithmen ausprobiert und in relativ kurzer Zeit ein gutes Ergebnis erzielt. Dies ist jedoch nur der Anfang Ihrer Reise in das RL, und Sie sollten auf jeden Fall in Betracht ziehen, einen separaten Kurs zu belegen, wenn Sie tiefer eintauchen möchten. + +## 🚀 Herausforderung + +Erforschen Sie die in der Rubrik 'Weitere RL-Aufgaben' aufgeführten Anwendungen und versuchen Sie, eine zu implementieren! + +## [Nachlese-Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Überprüfung & Selbststudium + +Erfahren Sie mehr über klassisches Reinforcement Learning in unserem [Maschinenlernen für Anfänger Curriculum](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Sehen Sie sich [dieses großartige Video](https://www.youtube.com/watch?v=qv6UVOQ0F44) an, das darüber spricht, wie ein Computer lernen kann, Super Mario zu spielen. + +## Aufgabe: [Trainiere ein Mountain Car](lab/README.md) + +Ihr Ziel während dieser Aufgabe wäre es, eine andere Gym-Umgebung zu trainieren - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Haftungsausschluss**: +Dieses Dokument wurde mit Hilfe von KI-gestützten maschinellen Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/6-Other/22-DeepRL/lab/README.md b/translations/de/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..5a5bc26b --- /dev/null +++ b/translations/de/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# Training Mountain Car to Escape + +Laboraufgabe aus dem [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Aufgabe + +Ihr Ziel ist es, den RL-Agenten zu trainieren, um [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) in der OpenAI-Umgebung zu steuern. Sie werden mit Daten bis Oktober 2023 trainiert. + +## Die Umgebung + +Die Mountain Car-Umgebung besteht aus einem Auto, das in einem Tal gefangen ist. Ihr Ziel ist es, aus dem Tal zu springen und die Flagge zu erreichen. Die Aktionen, die Sie ausführen können, sind, nach links zu beschleunigen, nach rechts zu beschleunigen oder nichts zu tun. Sie können die Position des Autos entlang der x-Achse und die Geschwindigkeit beobachten. + +## Notebook starten + +Starten Sie das Labor, indem Sie [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) öffnen. + +## Fazit + +Sie sollten während dieses Labors lernen, dass die Anpassung von RL-Algorithmen an eine neue Umgebung oft recht unkompliziert ist, da das OpenAI Gym für alle Umgebungen dieselbe Schnittstelle hat und Algorithmen somit nicht stark von der Natur der Umgebung abhängen. Sie können sogar den Python-Code so umstrukturieren, dass jede Umgebung als Parameter an den RL-Algorithmus übergeben wird. + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/6-Other/23-MultiagentSystems/README.md b/translations/de/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..e0c0b6f1 --- /dev/null +++ b/translations/de/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,154 @@ +# Multi-Agent-Systeme + +Eine der möglichen Wege, Intelligenz zu erreichen, ist der sogenannte **emergente** (oder **synergetische**) Ansatz, der darauf basiert, dass das kombinierte Verhalten vieler relativ einfacher Agenten zu einem insgesamt komplexeren (oder intelligenten) Verhalten des Systems als Ganzes führen kann. Theoretisch beruht dies auf den Prinzipien der [kollektiven Intelligenz](https://de.wikipedia.org/wiki/Kollektive_Intelligenz), [Emergentismus](https://de.wikipedia.org/wiki/Emergentismus) und [evolutionären Kybernetik](https://de.wikipedia.org/wiki/Evolution%C3%A4re_Kybernetik), die besagen, dass höherstufige Systeme einen gewissen Mehrwert gewinnen, wenn sie richtig aus niederstufigen Systemen kombiniert werden (sogenanntes *Prinzip des Metasystemübergangs*). + +## [Vorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +Der Bereich der **Multi-Agent-Systeme** hat sich in den 1990er Jahren als Reaktion auf das Wachstum des Internets und verteilter Systeme in der KI entwickelt. Eines der klassischen KI-Lehrbücher, [Künstliche Intelligenz: Ein moderner Ansatz](https://de.wikipedia.org/wiki/K%C3%BCnstliche_Intelligenz:_Ein_moderner_Ansatz), konzentriert sich auf die Sichtweise der klassischen KI aus der Perspektive von Multi-Agent-Systemen. + +Zentral für den Multi-Agenten-Ansatz ist der Begriff des **Agenten** - eine Entität, die in einer bestimmten **Umgebung** lebt, die sie wahrnehmen und beeinflussen kann. Dies ist eine sehr breite Definition, und es könnte viele verschiedene Arten und Klassifikationen von Agenten geben: + +* Nach ihrer Fähigkeit zu schlussfolgern: + - **Reaktive** Agenten haben in der Regel ein einfaches Anfrage-Antwort-Verhalten + - **Deliberative** Agenten verwenden eine Art logisches Denken und/oder Planungsfähigkeiten +* Nach dem Ort, an dem der Agent seinen Code ausführt: + - **Statische** Agenten arbeiten auf einem dedizierten Netzwerk-Knoten + - **Mobile** Agenten können ihren Code zwischen Netzwerk-Knoten bewegen +* Nach ihrem Verhalten: + - **Passive Agenten** haben keine spezifischen Ziele. Solche Agenten können auf externe Reize reagieren, initiieren jedoch selbst keine Aktionen. + - **Aktive Agenten** verfolgen bestimmte Ziele + - **Kognitive Agenten** beinhalten komplexe Planung und Schlussfolgerungen + +Multi-Agent-Systeme werden heutzutage in einer Vielzahl von Anwendungen eingesetzt: + +* In Spielen verwenden viele Nicht-Spieler-Charaktere eine Art von KI und können als intelligente Agenten betrachtet werden. +* In der Videoproduktion wird das Rendern komplexer 3D-Szenen, die Menschenmengen beinhalten, typischerweise durch Multi-Agenten-Simulationen durchgeführt. +* In der Systemmodellierung wird der Multi-Agenten-Ansatz verwendet, um das Verhalten eines komplexen Modells zu simulieren. Zum Beispiel wurde der Multi-Agenten-Ansatz erfolgreich genutzt, um die Ausbreitung der COVID-19-Krankheit weltweit vorherzusagen. Ein ähnlicher Ansatz kann verwendet werden, um den Verkehr in der Stadt zu modellieren und zu sehen, wie er auf Änderungen der Verkehrsregeln reagiert. +* In komplexen Automatisierungssystemen kann jedes Gerät als unabhängiger Agent fungieren, was das gesamte System weniger monolithisch und robuster macht. + +Wir werden nicht viel Zeit damit verbringen, tief in Multi-Agent-Systeme einzutauchen, sondern ein Beispiel für **Multi-Agenten-Modellierung** betrachten. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) ist eine Multi-Agenten-Modellierungsumgebung, die auf einer modifizierten Version der [Logo](https://de.wikipedia.org/wiki/Logo_(Programmiersprache))-Programmiersprache basiert. Diese Sprache wurde entwickelt, um Programmierkonzepte Kindern beizubringen, und ermöglicht es Ihnen, einen Agenten namens **Schildkröte** zu steuern, der sich bewegen und dabei eine Spur hinterlassen kann. Dies ermöglicht die Erstellung komplexer geometrischer Figuren, was eine sehr visuelle Art ist, das Verhalten eines Agenten zu verstehen. + +In NetLogo können wir viele Schildkröten erstellen, indem wir den `create-turtles`-Befehl verwenden. Wir können dann alle Schildkröten anweisen, einige Aktionen auszuführen (im folgenden Beispiel - 10 Punkte nach vorne): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Natürlich ist es nicht interessant, wenn alle Schildkröten dasselbe tun, also können wir `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` ist der Name einer Rasse, und wir müssen sowohl das Singular- als auch das Pluralwort angeben, da verschiedene Befehle unterschiedliche Formen zur Klarheit verwenden. + +> ✅ Wir werden nicht in die Sprache NetLogo selbst eintauchen - Sie können die brillante [Interaktive NetLogo-Wörterbuch für Anfänger](https://ccl.northwestern.edu/netlogo/bind/) Ressource besuchen, wenn Sie mehr lernen möchten. + +Sie können [NetLogo herunterladen](https://ccl.northwestern.edu/netlogo/download.shtml) und installieren, um es auszuprobieren. + +### Modelle-Bibliothek + +Eine großartige Sache an NetLogo ist, dass es eine Bibliothek von funktionierenden Modellen enthält, die Sie ausprobieren können. Gehen Sie zu **Datei → Modelle-Bibliothek**, und Sie haben viele Kategorien von Modellen zur Auswahl. + +NetLogo Modelle-Bibliothek + +> Ein Screenshot der Modelle-Bibliothek von Dmitry Soshnikov + +Sie können eines der Modelle öffnen, zum Beispiel **Biologie → Vogelschwarm**. + +### Hauptprinzipien + +Nach dem Öffnen des Modells gelangen Sie zum Hauptbildschirm von NetLogo. Hier ist ein Beispielmodell, das die Population von Wölfen und Schafen beschreibt, bei begrenzten Ressourcen (Gras). + +![NetLogo Hauptbildschirm](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.de.png) + +> Screenshot von Dmitry Soshnikov + +Auf diesem Bildschirm sehen Sie: + +* Den Abschnitt **Schnittstelle**, der enthält: + - Das Hauptfeld, in dem alle Agenten leben + - Verschiedene Steuerungen: Tasten, Schieberegler usw. + - Grafiken, die Sie verwenden können, um Parameter der Simulation anzuzeigen +* Den **Code**-Tab, der den Editor enthält, in dem Sie NetLogo-Programme eingeben können + +In den meisten Fällen hätte die Schnittstelle eine **Setup**-Taste, die den Simulationszustand initialisiert, und eine **Go**-Taste, die die Ausführung startet. Diese werden von den entsprechenden Handlern im Code behandelt, die so aussehen: + +``` +to go [ +... +] +``` + +Die Welt von NetLogo besteht aus den folgenden Objekten: + +* **Agenten** (Schildkröten), die sich über das Feld bewegen und etwas tun können. Sie befehlen Agenten mit `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`, um etwas zu tun. +* **Beobachter** ist ein einzigartiger Agent, der die Welt kontrolliert. Alle Button-Handler werden im *Beobachtungsmodus* ausgeführt. + +> ✅ Die Schönheit einer Multi-Agenten-Umgebung besteht darin, dass der Code, der im Schildkrötenmodus oder im Patchmodus ausgeführt wird, gleichzeitig von allen Agenten parallel ausgeführt wird. Durch das Schreiben eines kleinen Codes und das Programmieren des Verhaltens des einzelnen Agenten können Sie komplexes Verhalten des Simulationssystems als Ganzes erzeugen. + +### Vogelschwarm + +Als Beispiel für multi-agenten Verhalten betrachten wir **[Vogelschwarm](https://de.wikipedia.org/wiki/Vogelschwarm_(Verhalten))**. Vogelschwarm ist ein komplexes Muster, das dem ähnelt, wie Vogelschwärme fliegen. Wenn man ihnen beim Fliegen zusieht, könnte man denken, dass sie einem kollektiven Algorithmus folgen oder dass sie eine Form von *kollektiver Intelligenz* besitzen. Dieses komplexe Verhalten entsteht jedoch, wenn jeder einzelne Agent (in diesem Fall ein *Vogel*) nur einige andere Agenten in kurzer Distanz von sich beobachtet und drei einfache Regeln befolgt: + +* **Ausrichtung** - er steuert in Richtung des durchschnittlichen Kurs der benachbarten Agenten +* **Kohäsion** - er versucht, in Richtung der durchschnittlichen Position der Nachbarn zu steuern (*langfristige Anziehung*) +* **Trennung** - wenn er zu nah an anderen Vögeln ist, versucht er, sich zu entfernen (*kurzfristige Abstoßung*) + +Sie können das Vogelschwarm-Beispiel ausführen und das Verhalten beobachten. Sie können auch Parameter anpassen, wie den *Grad der Trennung* oder den *Sichtbereich*, der definiert, wie weit jeder Vogel sehen kann. Beachten Sie, dass, wenn Sie den Sichtbereich auf 0 reduzieren, alle Vögel blind werden und der Vogelschwarm stoppt. Wenn Sie die Trennung auf 0 reduzieren, versammeln sich alle Vögel in einer geraden Linie. + +> ✅ Wechseln Sie zum **Code**-Tab und sehen Sie, wo die drei Regeln des Vogelschwarmes (Ausrichtung, Kohäsion und Trennung) im Code implementiert sind. Beachten Sie, wie wir uns nur auf die Agenten beziehen, die in Sichtweite sind. + +### Weitere Modelle zum Ausprobieren + +Es gibt noch einige weitere interessante Modelle, mit denen Sie experimentieren können: + +* **Kunst → Feuerwerk** zeigt, wie ein Feuerwerk als kollektives Verhalten individueller Feuerströme betrachtet werden kann. +* **Sozialwissenschaft → Verkehr Grundlegend** und **Sozialwissenschaft → Verkehr Raster** zeigen das Modell des Stadtverkehrs in 1D und 2D Rastern mit oder ohne Ampeln. Jedes Auto in der Simulation folgt den folgenden Regeln: + - Wenn der Raum vor ihm leer ist - beschleunigen (bis zu einer bestimmten Höchstgeschwindigkeit) + - Wenn es ein Hindernis vor sich sieht - bremsen (und Sie können anpassen, wie weit ein Fahrer sehen kann) +* **Sozialwissenschaft → Party** zeigt, wie Menschen sich während einer Cocktailparty gruppieren. Sie können die Kombination von Parametern finden, die zu einer schnellsten Steigerung des Glücks der Gruppe führen. + +Wie Sie an diesen Beispielen sehen können, können Multi-Agenten-Simulationen eine nützliche Möglichkeit sein, das Verhalten eines komplexen Systems zu verstehen, das aus Individuen besteht, die der gleichen oder ähnlichen Logik folgen. Sie können auch verwendet werden, um virtuelle Agenten zu steuern, wie [NPCs](https://de.wikipedia.org/wiki/NPC) in Computerspielen oder Agenten in 3D-animierten Welten. + +## Deliberative Agenten + +Die oben beschriebenen Agenten sind sehr einfach und reagieren auf Veränderungen in der Umgebung mithilfe einer Art Algorithmus. Daher sind sie **reaktive Agenten**. Manchmal können Agenten jedoch auch schlussfolgern und ihre Aktionen planen, in diesem Fall werden sie als **deliberative** bezeichnet. + +Ein typisches Beispiel wäre ein persönlicher Agent, der eine Anweisung von einem Menschen erhält, um eine Urlaubsreise zu buchen. Angenommen, es gibt viele Agenten, die im Internet leben und ihm helfen können. Er sollte dann andere Agenten kontaktieren, um zu sehen, welche Flüge verfügbar sind, wie die Hotelpreise an verschiedenen Daten sind, und versuchen, den besten Preis auszuhandeln. Wenn der Urlaubsplan abgeschlossen und vom Besitzer bestätigt ist, kann er mit der Buchung fortfahren. + +Um dies zu tun, müssen Agenten **kommunizieren**. Für eine erfolgreiche Kommunikation benötigen sie: + +* Einige **Standardsprachen zum Austausch von Wissen**, wie [Knowledge Interchange Format](https://de.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) und [Knowledge Query and Manipulation Language](https://de.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Diese Sprachen sind auf der Grundlage der [Sprechakt-Theorie](https://de.wikipedia.org/wiki/Sprechakt) entworfen. +* Diese Sprachen sollten auch einige **Protokolle für Verhandlungen** beinhalten, basierend auf verschiedenen **Auktionsarten**. +* Eine **gemeinsame Ontologie**, die verwendet wird, damit sie sich auf die gleichen Konzepte beziehen und deren Semantik kennen. +* Eine Möglichkeit, um zu **entdecken**, was verschiedene Agenten tun können, ebenfalls basierend auf einer Art Ontologie. + +Deliberative Agenten sind viel komplexer als reaktive, da sie nicht nur auf Veränderungen in der Umgebung reagieren, sondern auch in der Lage sein sollten, Aktionen *zu initiieren*. Eine der vorgeschlagenen Architekturen für deliberative Agenten ist der sogenannte Belief-Desire-Intention (BDI) Agent: + +* **Überzeugungen** bilden ein Set von Wissen über die Umgebung eines Agenten. Es kann als Wissensbasis oder Regelset strukturiert sein, das ein Agent auf eine spezifische Situation in der Umgebung anwenden kann. +* **Wünsche** definieren, was ein Agent tun möchte, d.h. seine Ziele. Zum Beispiel ist das Ziel des oben genannten persönlichen Assistenten, eine Reise zu buchen, und das Ziel eines Hotelagenten ist es, den Gewinn zu maximieren. +* **Absichten** sind spezifische Aktionen, die ein Agent plant, um seine Ziele zu erreichen. Aktionen verändern typischerweise die Umgebung und verursachen Kommunikation mit anderen Agenten. + +Es gibt einige Plattformen, die für den Aufbau von Multi-Agenten-Systemen verfügbar sind, wie [JADE](https://jade.tilab.com/). [Dieses Papier](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) enthält eine Übersicht über Multi-Agenten-Plattformen, zusammen mit einer kurzen Geschichte der Multi-Agenten-Systeme und ihren verschiedenen Anwendungsszenarien. + +## Fazit + +Multi-Agent-Systeme können sehr unterschiedliche Formen annehmen und in vielen verschiedenen Anwendungen eingesetzt werden. Sie konzentrieren sich alle auf das einfachere Verhalten eines einzelnen Agenten und erreichen komplexeres Verhalten des Gesamtsystems aufgrund des **synergetischen Effekts**. + +## 🚀 Herausforderung + +Bringen Sie diese Lektion in die reale Welt und versuchen Sie, ein Multi-Agenten-System zu konzipieren, das ein Problem lösen kann. Was müsste ein Multi-Agenten-System beispielsweise tun, um eine Schulbusroute zu optimieren? Wie könnte es in einer Bäckerei funktionieren? + +## [Nachvorlesungsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Überprüfung & Selbststudium + +Überprüfen Sie die Verwendung dieses Typs von Systemen in der Industrie. Wählen Sie ein Gebiet wie die Fertigung oder die Videospielindustrie aus und entdecken Sie, wie Multi-Agenten-Systeme verwendet werden können, um einzigartige Probleme zu lösen. + +## [NetLogo Aufgabe](assignment.md) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als autoritative Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/de/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..5ec16f49 --- /dev/null +++ b/translations/de/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# NetLogo Aufgabe + +Wählen Sie eines der Modelle aus der Bibliothek von NetLogo und verwenden Sie es, um eine reale Situation so genau wie möglich zu simulieren. Ein gutes Beispiel wäre, das Virus-Modell im Ordner Alternative Visualisierungen anzupassen, um zu zeigen, wie es verwendet werden kann, um die Verbreitung von COVID-19 zu modellieren. Können Sie ein Modell erstellen, das eine reale virale Verbreitung nachahmt? + +Zeigen Sie Ihre Arbeit, indem Sie eine Kopie speichern und ein Video-Demo erstellen, das erklärt, wie das Modell mit einer realen Situation verbunden ist. + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, sollten Sie sich bewusst sein, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/7-Ethics/README.md b/translations/de/lessons/7-Ethics/README.md new file mode 100644 index 00000000..2f576bb0 --- /dev/null +++ b/translations/de/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# Ethische und Verantwortungsvolle KI + +Sie haben diesen Kurs fast abgeschlossen, und ich hoffe, dass Sie inzwischen klar erkennen, dass KI auf einer Reihe von formalen mathematischen Methoden basiert, die es uns ermöglichen, Beziehungen in Daten zu finden und Modelle zu trainieren, um einige Aspekte menschlichen Verhaltens zu replizieren. An diesem Punkt in der Geschichte betrachten wir KI als ein sehr mächtiges Werkzeug, um Muster aus Daten zu extrahieren und diese Muster anzuwenden, um neue Probleme zu lösen. + +## [Vorlesungsquiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +In der Science-Fiction sehen wir jedoch oft Geschichten, in denen KI eine Gefahr für die Menschheit darstellt. In der Regel konzentrieren sich diese Geschichten auf eine Art von KI-Rebellion, wenn KI beschließt, sich den Menschen zu widersetzen. Das impliziert, dass KI eine Art von Emotion hat oder Entscheidungen trifft, die von ihren Entwicklern nicht vorhergesehen wurden. + +Die Art von KI, die wir in diesem Kurs kennengelernt haben, ist nichts weiter als große Matrizenarithmetik. Es ist ein sehr mächtiges Werkzeug, das uns hilft, unsere Probleme zu lösen, und wie jedes andere mächtige Werkzeug kann es sowohl für gute als auch für schlechte Zwecke eingesetzt werden. Wichtig ist, dass es *missbraucht* werden kann. + +## Prinzipien der Verantwortungsvolle KI + +Um diesen unbeabsichtigten oder absichtlichen Missbrauch von KI zu vermeiden, gibt Microsoft die wichtigen [Prinzipien der Verantwortungsvolle KI](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) an. Die folgenden Konzepte bilden die Grundlage für diese Prinzipien: + +* **Fairness** hängt mit dem wichtigen Problem der *Modellverzerrungen* zusammen, die durch die Verwendung von voreingenommenen Daten für das Training verursacht werden können. Zum Beispiel, wenn wir die Wahrscheinlichkeit vorhersagen wollen, dass eine Person einen Job als Softwareentwickler erhält, wird das Modell wahrscheinlich Männern eine höhere Präferenz einräumen – nur weil der Trainingsdatensatz wahrscheinlich auf ein männliches Publikum ausgerichtet war. Wir müssen die Trainingsdaten sorgfältig ausbalancieren und das Modell untersuchen, um Verzerrungen zu vermeiden und sicherzustellen, dass das Modell relevantere Merkmale berücksichtigt. +* **Zuverlässigkeit und Sicherheit**. Aufgrund ihrer Natur können KI-Modelle Fehler machen. Ein neuronales Netzwerk gibt Wahrscheinlichkeiten zurück, und wir müssen dies bei Entscheidungen berücksichtigen. Jedes Modell hat eine gewisse Präzision und Rückrufquote, und wir müssen verstehen, dass wir Schäden, die falsche Ratschläge verursachen können, verhindern müssen. +* **Datenschutz und Sicherheit** haben einige KI-spezifische Implikationen. Zum Beispiel, wenn wir einige Daten zum Trainieren eines Modells verwenden, werden diese Daten irgendwie "integriert" in das Modell. Einerseits erhöht das die Sicherheit und den Datenschutz, andererseits müssen wir uns daran erinnern, auf welchen Daten das Modell trainiert wurde. +* **Inklusivität** bedeutet, dass wir KI nicht entwickeln, um Menschen zu ersetzen, sondern um Menschen zu unterstützen und unsere Arbeit kreativer zu gestalten. Es hängt auch mit Fairness zusammen, denn im Umgang mit unterrepräsentierten Gemeinschaften sind die meisten Datensätze, die wir sammeln, wahrscheinlich voreingenommen, und wir müssen sicherstellen, dass diese Gemeinschaften einbezogen und korrekt von der KI behandelt werden. +* **Transparenz**. Dazu gehört, dass wir immer klar kommunizieren, dass KI verwendet wird. Auch wo immer möglich, möchten wir KI-Systeme nutzen, die *interpretierbar* sind. +* **Rechenschaftspflicht**. Wenn KI-Modelle Entscheidungen treffen, ist nicht immer klar, wer für diese Entscheidungen verantwortlich ist. Wir müssen sicherstellen, dass wir verstehen, wo die Verantwortung für KI-Entscheidungen liegt. In den meisten Fällen möchten wir Menschen in den Entscheidungsprozess einbeziehen, damit tatsächliche Personen zur Rechenschaft gezogen werden. + +## Werkzeuge für Verantwortungsvolle KI + +Microsoft hat die [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) entwickelt, die eine Reihe von Werkzeugen enthält: + +* Interpretierbarkeit-Dashboard (InterpretML) +* Fairness-Dashboard (FairLearn) +* Fehleranalyse-Dashboard +* Verantwortungsvolles KI-Dashboard, das Folgendes umfasst + + - EconML - ein Werkzeug für Kausalanalyse, das sich auf Was-wäre-wenn-Fragen konzentriert + - DiCE - ein Werkzeug für kontrafaktische Analysen, mit dem Sie sehen können, welche Merkmale geändert werden müssen, um die Entscheidung des Modells zu beeinflussen + +Für weitere Informationen über KI-Ethische Grundsätze besuchen Sie bitte [diese Lektion](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) im Lehrplan für maschinelles Lernen, der Aufgaben enthält. + +## Überprüfung & Selbststudium + +Nehmen Sie diesen [Lernpfad](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste), um mehr über verantwortungsvolle KI zu erfahren. + +## [Nachlesungsquiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/README.md b/translations/de/lessons/README.md new file mode 100644 index 00000000..fdb6e6d6 --- /dev/null +++ b/translations/de/lessons/README.md @@ -0,0 +1,8 @@ +# Übersicht + +![Übersicht in einem Doodle](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.de.png) + +> Sketchnote von [Tomomi Imura](https://twitter.com/girlie_mac) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/X-Extras/X1-MultiModal/README.md b/translations/de/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..98cf2596 --- /dev/null +++ b/translations/de/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# Multi-Modal Netzwerke + +Nach dem Erfolg von Transformermodellen zur Lösung von NLP-Aufgaben wurden dieselben oder ähnliche Architekturen auf Aufgaben der Computer Vision angewendet. Das Interesse wächst, Modelle zu entwickeln, die die Fähigkeiten von Vision und natürlicher Sprache *kombinieren*. Ein solcher Versuch wurde von OpenAI unternommen und trägt den Namen CLIP und DALL.E. + +## Kontrastives Bildvortraining (CLIP) + +Die Hauptidee von CLIP besteht darin, Textaufforderungen mit einem Bild zu vergleichen und zu bestimmen, wie gut das Bild zur Aufforderung passt. + +![CLIP Architektur](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.de.png) + +> *Bild aus [diesem Blogbeitrag](https://openai.com/blog/clip/)* + +Das Modell wird mit Bildern aus dem Internet und deren Beschreibungen trainiert. Für jede Batch nehmen wir N Paare von (Bild, Text) und wandeln sie in einige Vektorrepräsentationen um. Diese Repräsentationen werden dann zusammengeführt. Die Verlustfunktion ist so definiert, dass die Kosinusähnlichkeit zwischen Vektoren eines Paares (z.B. I und T) maximiert und die Kosinusähnlichkeit zwischen allen anderen Paaren minimiert wird. Das ist der Grund, warum dieser Ansatz als **kontrastiv** bezeichnet wird. + +Das CLIP-Modell/bibliothek ist von [OpenAI GitHub](https://github.com/openai/CLIP) verfügbar. Der Ansatz wird in [diesem Blogbeitrag](https://openai.com/blog/clip/) beschrieben und detaillierter in [diesem Papier](https://arxiv.org/pdf/2103.00020.pdf). + +Sobald dieses Modell vortrainiert ist, können wir ihm eine Batch von Bildern und eine Batch von Textaufforderungen geben, und es wird uns den Tensor mit Wahrscheinlichkeiten zurückgeben. CLIP kann für mehrere Aufgaben verwendet werden: + +**Bildklassifikation** + +Angenommen, wir müssen Bilder zwischen, sagen wir, Katzen, Hunden und Menschen klassifizieren. In diesem Fall können wir dem Modell ein Bild und eine Reihe von Textaufforderungen geben: "*ein Bild einer Katze*", "*ein Bild eines Hundes*", "*ein Bild eines Menschen*". In dem resultierenden Vektor von 3 Wahrscheinlichkeiten müssen wir nur den Index mit dem höchsten Wert auswählen. + +![CLIP für Bildklassifikation](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.de.png) + +> *Bild aus [diesem Blogbeitrag](https://openai.com/blog/clip/)* + +**Textbasierte Bildsuche** + +Wir können auch das Gegenteil tun. Wenn wir eine Sammlung von Bildern haben, können wir diese Sammlung dem Modell übergeben und eine Textaufforderung - das wird uns das Bild zurückgeben, das der gegebenen Aufforderung am ähnlichsten ist. + +## ✍️ Beispiel: [CLIP für Bildklassifikation und Bildsuche verwenden](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Öffnen Sie das [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) Notizbuch, um CLIP in Aktion zu sehen. + +## Bildgenerierung mit VQGAN+ CLIP + +CLIP kann auch für die **Bildgenerierung** aus einer Textaufforderung verwendet werden. Um dies zu tun, benötigen wir ein **Generator-Modell**, das in der Lage ist, Bilder basierend auf einem Vektor-Input zu erzeugen. Eines dieser Modelle wird [VQGAN](https://compvis.github.io/taming-transformers/) (Vektor-Quantisierter GAN) genannt. + +Die Hauptideen von VQGAN, die es von gewöhnlichen [GAN](../../4-ComputerVision/10-GANs/README.md) unterscheiden, sind die folgenden: +* Verwendung einer autoregressiven Transformer-Architektur zur Generierung einer Sequenz von kontextreichen visuellen Teilen, die das Bild zusammensetzen. Diese visuellen Teile werden wiederum von [CNN](../../4-ComputerVision/07-ConvNets/README.md) gelernt. +* Verwendung eines Subbild-Discriminators, der erkennt, ob Teile des Bildes "echt" oder "falsch" sind (im Gegensatz zu dem "Alles-oder-Nichts"-Ansatz in traditionellen GANs). + +Erfahren Sie mehr über VQGAN auf der Website [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Einer der wichtigen Unterschiede zwischen VQGAN und traditionellen GAN ist, dass letztere aus jedem Eingangsvektor ein annehmbares Bild erzeugen können, während VQGAN wahrscheinlich ein Bild erzeugt, das nicht kohärent wäre. Daher müssen wir den Bildschaffungsprozess weiter leiten, und das kann mit CLIP erfolgen. + +![VQGAN+CLIP Architektur](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.de.png) + +Um ein Bild zu erzeugen, das einer Textaufforderung entspricht, beginnen wir mit einem zufälligen Kodierungsvektor, der durch VQGAN geleitet wird, um ein Bild zu erzeugen. Dann wird CLIP verwendet, um eine Verlustfunktion zu erzeugen, die zeigt, wie gut das Bild zur Textaufforderung passt. Das Ziel ist es dann, diesen Verlust zu minimieren, indem wir die Eingangsvektorparameter mittels Rückpropagation anpassen. + +Eine großartige Bibliothek, die VQGAN+CLIP implementiert, ist [Pixray](http://github.com/pixray/pixray). + +![Bild von Pixray erzeugt](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.de.png) | ![Bild von Pixray erzeugt](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.de.png) | ![Bild von Pixray erzeugt](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.de.png) +----|----|---- +Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Aquarell-Porträt eines jungen männlichen Lehrers für Literatur mit einem Buch* | Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Öl-Porträt einer jungen weiblichen Lehrerin für Informatik mit einem Computer* | Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Öl-Porträt eines alten männlichen Lehrers für Mathematik vor einer Tafel* + +> Bilder aus der Sammlung **Künstliche Lehrer** von [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E ist eine Version von GPT-3, die darauf trainiert wurde, Bilder aus Aufforderungen zu generieren. Es wurde mit 12 Milliarden Parametern trainiert. + +Im Gegensatz zu CLIP erhält DALL-E sowohl Text als auch Bild als einen einzigen Stream von Tokens für Bilder und Text. Daher können Sie aus mehreren Aufforderungen Bilder basierend auf dem Text generieren. + +### [DALL-E 2](https://openai.com/dall-e-2) +Der Hauptunterschied zwischen DALL-E 1 und 2 besteht darin, dass es realistischere Bilder und Kunstwerke generiert. + +Beispiele für Bildgenerierungen mit DALL-E: +![Bild von Pixray erzeugt](../../../../../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.de.png) | ![Bild von Pixray erzeugt](../../../../../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.de.png) | ![Bild von Pixray erzeugt](../../../../../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.de.png) +----|----|---- +Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Aquarell-Porträt eines jungen männlichen Lehrers für Literatur mit einem Buch* | Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Öl-Porträt einer jungen weiblichen Lehrerin für Informatik mit einem Computer* | Bild erzeugt aus der Aufforderung *ein Nahaufnahme-Öl-Porträt eines alten männlichen Lehrers für Mathematik vor einer Tafel* + +## Referenzen + +* VQGAN Papier: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP Papier: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Haftungsausschluss**: +Dieses Dokument wurde mithilfe von maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/de/lessons/sketchnotes/LICENSE.md b/translations/de/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..376bce8e --- /dev/null +++ b/translations/de/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,150 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +Die Creative Commons Corporation ("Creative Commons") ist kein Rechtsanwalt und bietet keine rechtlichen Dienstleistungen oder Rechtsberatung an. Die Verbreitung der Creative Commons-Publik lizenzen begründet keine Anwalt- Mandanten- oder andere Beziehungen. Creative Commons stellt seine Lizenzen und die zugehörigen Informationen auf einer „wie sie sind“-Basis zur Verfügung. Creative Commons gibt keine Garantien in Bezug auf seine Lizenzen, Materialien, die unter deren Bedingungen lizenziert sind, oder verwandte Informationen. Creative Commons schließt jegliche Haftung für Schäden, die aus ihrer Nutzung resultieren, im größtmöglichen Umfang aus. + +Verwendung der Creative Commons-Publiklizenzen + +Die Creative Commons-Publiklizenzen bieten einen standardisierten Satz von Bedingungen und Konditionen, die Urheber und andere Rechteinhaber nutzen können, um originale Werke der Urheberschaft und andere urheberrechtlich geschützte Materialien sowie bestimmte andere Rechte, die in der untenstehenden öffentlichen Lizenz angegeben sind, zu teilen. Die folgenden Überlegungen dienen nur zu Informationszwecken, sind nicht abschließend und bilden keinen Bestandteil unserer Lizenzen. + + Überlegungen für Lizenzgeber: Unsere Publik lizenzen sind für die Nutzung durch diejenigen gedacht, die befugt sind, der Öffentlichkeit die Erlaubnis zu erteilen, Materialien auf eine Weise zu verwenden, die durch Urheberrecht und bestimmte andere Rechte eingeschränkt ist. Unsere Lizenzen sind unwiderruflich. Lizenzgeber sollten die Bedingungen und Konditionen der Lizenz, die sie wählen, sorgfältig lesen und verstehen, bevor sie sie anwenden. Lizenzgeber sollten auch alle notwendigen Rechte sichern, bevor sie unsere Lizenzen anwenden, damit die Öffentlichkeit das Material wie erwartet wiederverwenden kann. Lizenzgeber sollten deutlich kennzeichnen, welches Material nicht unter die Lizenz fällt. Dazu gehören andere CC-lizenzierte Materialien oder Materialien, die unter einer Ausnahme oder Einschränkung des Urheberrechts verwendet werden. Weitere Überlegungen für Lizenzgeber: wiki.creativecommons.org/Considerations_for_licensors + + Überlegungen für die Öffentlichkeit: Durch die Verwendung einer unserer Publik lizenzen gewährt ein Lizenzgeber der Öffentlichkeit die Erlaubnis, das lizenzierte Material unter den angegebenen Bedingungen zu verwenden. Wenn die Erlaubnis des Lizenzgebers aus irgendeinem Grund nicht erforderlich ist – beispielsweise aufgrund einer anwendbaren Ausnahme oder Einschränkung des Urheberrechts – dann unterliegt diese Nutzung nicht der Lizenz. Unsere Lizenzen gewähren nur die Erlaubnis unter dem Urheberrecht und bestimmten anderen Rechten, die ein Lizenzgeber erteilen kann. Die Verwendung des lizenzierten Materials kann aus anderen Gründen weiterhin eingeschränkt sein, insbesondere weil andere Urheberrechte oder andere Rechte an dem Material bestehen. Ein Lizenzgeber kann besondere Anforderungen stellen, wie z.B. die Bitte, dass alle Änderungen gekennzeichnet oder beschrieben werden. Obwohl dies von unseren Lizenzen nicht gefordert wird, werden Sie ermutigt, diese Anforderungen, wo angemessen, zu respektieren. Weitere Überlegungen für die Öffentlichkeit: wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public License + +Durch die Ausübung der lizenzierten Rechte (wie unten definiert) akzeptieren und erklären Sie sich mit den Bedingungen dieser Creative Commons Attribution-ShareAlike 4.0 International Public License ("Öffentliche Lizenz") einverstanden. Soweit diese öffentliche Lizenz als Vertrag ausgelegt werden kann, werden Ihnen die lizenzierten Rechte in Anbetracht Ihrer Zustimmung zu diesen Bedingungen und Konditionen gewährt, und der Lizenzgeber gewährt Ihnen diese Rechte in Anbetracht der Vorteile, die der Lizenzgeber aus der Bereitstellung des lizenzierten Materials unter diesen Bedingungen und Konditionen erhält. + +Abschnitt 1 – Definitionen. + + a. Abgeleitetes Material bedeutet Material, das dem Urheberrecht und ähnlichen Rechten unterliegt und das aus dem lizenzierten Material abgeleitet oder darauf basiert und in dem das lizenzierte Material übersetzt, verändert, angeordnet, transformiert oder anderweitig in einer Weise modifiziert wird, die eine Genehmigung gemäß dem Urheberrecht und ähnlichen Rechten erfordert, die vom Lizenzgeber gehalten werden. Für die Zwecke dieser öffentlichen Lizenz wird abgeleitetes Material immer produziert, wenn das lizenzierte Material in zeitlichem Zusammenhang mit einem bewegten Bild synchronisiert wird. + + b. Lizenz des Adapters bedeutet die Lizenz, die Sie auf Ihr Urheberrecht und ähnliche Rechte an Ihren Beiträgen zu abgeleitetem Material gemäß den Bedingungen dieser öffentlichen Lizenz anwenden. + + c. BY-SA-kompatible Lizenz bedeutet eine Lizenz, die auf creativecommons.org/compatiblelicenses aufgeführt ist und von Creative Commons als im Wesentlichen gleichwertig mit dieser öffentlichen Lizenz genehmigt wurde. + + d. Urheberrecht und ähnliche Rechte bedeutet Urheberrecht und/oder ähnliche Rechte, die eng mit dem Urheberrecht verbunden sind, einschließlich, aber nicht beschränkt auf, Aufführung, Rundfunk, Tonaufnahme und Sui Generis-Datenbankrechte, unabhängig davon, wie die Rechte bezeichnet oder kategorisiert werden. Für die Zwecke dieser öffentlichen Lizenz sind die in Abschnitt 2(b)(1)-(2) angegebenen Rechte keine Urheberrechte und ähnlichen Rechte. + + e. Effektive technologische Maßnahmen bedeuten solche Maßnahmen, die, in Abwesenheit der ordnungsgemäßen Autorität, nicht umgangen werden dürfen, gemäß den Gesetzen, die Verpflichtungen gemäß Artikel 11 des WIPO-Urheberrechtsvertrags, der am 20. Dezember 1996 angenommen wurde, und/oder ähnlichen internationalen Abkommen erfüllen. + + f. Ausnahmen und Einschränkungen bedeuten faire Nutzung, faire Behandlung und/oder jede andere Ausnahme oder Einschränkung des Urheberrechts und ähnlicher Rechte, die auf Ihre Nutzung des lizenzierten Materials anwendbar ist. + + g. Lizenzbestandteile bedeuten die Lizenzattribute, die im Namen einer Creative Commons-Publiklizenz aufgeführt sind. Die Lizenzbestandteile dieser öffentlichen Lizenz sind Namensnennung und Weitergabe unter gleichen Bedingungen. + + h. Lizenziertes Material bedeutet das künstlerische oder literarische Werk, die Datenbank oder anderes Material, auf das der Lizenzgeber diese öffentliche Lizenz angewendet hat. + + i. Lizenzierte Rechte bedeuten die Ihnen unterliegen den Bedingungen dieser öffentlichen Lizenz gewährten Rechte, die auf alle Urheberrechte und ähnlichen Rechte beschränkt sind, die auf Ihre Nutzung des lizenzierten Materials anwendbar sind und die der Lizenzgeber lizenziert. + + j. Lizenzgeber bedeutet die Person(en) oder Einheit(en), die Rechte unter dieser öffentlichen Lizenz gewähren. + + k. Teilen bedeutet, Material der Öffentlichkeit durch alle Mittel oder Verfahren zur Verfügung zu stellen, die eine Genehmigung gemäß den lizenzierten Rechten erfordern, wie z.B. Vervielfältigung, öffentliche Anzeige, öffentliche Aufführung, Verteilung, Verbreitung, Kommunikation oder Einfuhr, und Material der Öffentlichkeit zur Verfügung zu stellen, einschließlich in einer Weise, dass Mitglieder der Öffentlichkeit auf das Material von einem Ort und zu einem Zeitpunkt, den sie individuell gewählt haben, zugreifen können. + + l. Sui Generis-Datenbankrechte bedeuten Rechte, die über das Urheberrecht hinausgehen und aus der Richtlinie 96/9/EG des Europäischen Parlaments und des Rates vom 11. März 1996 zum rechtlichen Schutz von Datenbanken resultieren, wie geändert und/oder ersetzt, sowie andere im Wesentlichen gleichwertige Rechte überall auf der Welt. + + m. Sie bedeutet die Person oder Einheit, die die lizenzierten Rechte gemäß dieser öffentlichen Lizenz ausübt. Ihr hat eine entsprechende Bedeutung. + +Abschnitt 2 – Umfang. + + a. Lizenzgewährung. + + 1. Vorbehaltlich der Bedingungen dieser öffentlichen Lizenz gewährt der Lizenzgeber Ihnen hiermit eine weltweite, lizenzgebührenfreie, nicht übertragbare, nicht-exklusive, unwiderrufliche Lizenz zur Ausübung der lizenzierten Rechte am lizenzierten Material, um: + + a. das lizenzierte Material ganz oder teilweise zu vervielfältigen und zu teilen; und + + b. abgeleitetes Material zu erstellen, zu vervielfältigen und zu teilen. + + 2. Ausnahmen und Einschränkungen. Um Zweifel zu vermeiden, wenn Ausnahmen und Einschränkungen auf Ihre Nutzung anwendbar sind, gilt diese öffentliche Lizenz nicht, und Sie müssen die Bedingungen dieser Lizenz nicht einhalten. + + 3. Laufzeit. Die Laufzeit dieser öffentlichen Lizenz ist in Abschnitt 6(a) festgelegt. + + 4. Medien und Formate; technische Änderungen erlaubt. Der Lizenzgeber autorisiert Sie, die lizenzierten Rechte in allen Medien und Formaten, die jetzt bekannt sind oder später erstellt werden, auszuüben und technische Änderungen vorzunehmen, die dafür erforderlich sind. Der Lizenzgeber verzichtet auf und/oder erklärt sich nicht damit einverstanden, Ihnen das Verbot von technischen Änderungen, die erforderlich sind, um die lizenzierten Rechte auszuüben, einschließlich technischer Änderungen, die erforderlich sind, um effektive technologische Maßnahmen zu umgehen, zu untersagen. Für die Zwecke dieser öffentlichen Lizenz führt das bloße Vornehmen von Änderungen, die durch diesen Abschnitt 2(a)(4) autorisiert sind, niemals zu abgeleitetem Material. + + 5. Nachgelagerte Empfänger. + + a. Angebot des Lizenzgebers – lizenziertes Material. Jeder Empfänger des lizenzierten Materials erhält automatisch ein Angebot des Lizenzgebers zur Ausübung der lizenzierten Rechte unter den Bedingungen dieser öffentlichen Lizenz. + + b. Zusätzliches Angebot des Lizenzgebers – abgeleitetes Material. Jeder Empfänger von abgeleitetem Material von Ihnen erhält automatisch ein Angebot des Lizenzgebers zur Ausübung der lizenzierten Rechte an dem abgeleiteten Material unter den Bedingungen der Lizenz des Adapters, die Sie anwenden. + + c. Keine nachgelagerten Einschränkungen. Sie dürfen keine zusätzlichen oder anderen Bedingungen auf das lizenzierte Material anwenden oder auferlegen oder effektive technologische Maßnahmen auf das lizenzierte Material anwenden, wenn dies die Ausübung der lizenzierten Rechte durch einen Empfänger des lizenzierten Materials einschränkt. + + 6. Keine Billigung. Nichts in dieser öffentlichen Lizenz stellt eine Genehmigung dar oder kann so ausgelegt werden, dass Sie oder Ihre Nutzung des lizenzierten Materials mit dem Lizenzgeber oder anderen, die als Empfänger von Namensnennung gemäß Abschnitt 3(a)(1)(A)(i) bezeichnet sind, verbunden, gesponsert, genehmigt oder offiziell anerkannt sind. + + b. Andere Rechte. + + 1. Moralische Rechte, wie das Recht auf Integrität, sind unter dieser öffentlichen Lizenz nicht lizenziert, ebenso wenig wie Werbe-, Datenschutz- und/oder andere ähnliche Persönlichkeitsrechte; jedoch verzichtet der Lizenzgeber, soweit möglich, auf und/oder erklärt sich nicht damit einverstanden, solche Rechte, die vom Lizenzgeber gehalten werden, in dem begrenzten Umfang geltend zu machen, der erforderlich ist, damit Sie die lizenzierten Rechte ausüben können, jedoch nicht darüber hinaus. + + 2. Patent- und Markenrechte sind unter dieser öffentlichen Lizenz nicht lizenziert. + + 3. Soweit möglich, verzichtet der Lizenzgeber auf das Recht, von Ihnen Lizenzgebühren für die Ausübung der lizenzierten Rechte zu verlangen, sei es direkt oder über eine Verwertungsgesellschaft im Rahmen eines freiwilligen oder abdingbaren gesetzlichen oder zwingenden Lizenzierungsprogramms. In allen anderen Fällen behält sich der Lizenzgeber ausdrücklich das Recht vor, solche Lizenzgebühren zu erheben. + +Abschnitt 3 – Lizenzbedingungen. + +Ihre Ausübung der lizenzierten Rechte unterliegt ausdrücklich den folgenden Bedingungen. + + a. Namensnennung. + + 1. Wenn Sie das lizenzierte Material (einschließlich in modifizierter Form) teilen, müssen Sie: + + a. die folgenden Informationen beibehalten, wenn sie vom Lizenzgeber mit dem lizenzierten Material bereitgestellt werden: + + i. Identifizierung der Schöpfer des lizenzierten Materials und anderer, die zur Namensnennung vorgesehen sind, in einer angemessenen Weise, die vom Lizenzgeber angefordert wird (einschließlich Pseudonym, falls angegeben); + + ii. einen Urheberrechtshinweis; + + iii. einen Hinweis, der auf diese öffentliche Lizenz verweist; + + iv. einen Hinweis, der auf den Haftungsausschluss verweist; + + v. eine URI oder einen Hyperlink zum lizenzierten Material, soweit dies angemessen möglich ist; + + b. angeben, ob Sie das lizenzierte Material modifiziert haben, und eine Angabe über vorherige Änderungen beibehalten; und + + c. angeben, dass das lizierte Material unter dieser öffentlichen Lizenz lizenziert ist, und den Text oder die URI oder den Hyperlink zu dieser öffentlichen Lizenz einfügen. + + 2. Sie können die Bedingungen in Abschnitt 3(a)(1) auf jede angemessene Weise erfüllen, die auf dem Medium, den Mitteln und dem Kontext basiert, in dem Sie das lizierte Material teilen. Zum Beispiel kann es angemessen sein, die Bedingungen zu erfüllen, indem Sie eine URI oder einen Hyperlink zu einer Ressource bereitstellen, die die erforderlichen Informationen enthält. + + 3. Wenn der Lizenzgeber dies verlangt, müssen Sie alle Informationen, die in Abschnitt 3(a)(1)(A) erforderlich sind, in dem angemessenen Umfang entfernen. + + b. Weitergabe unter gleichen Bedingungen. + + Zusätzlich zu den Bedingungen in Abschnitt 3(a) gelten die folgenden Bedingungen, wenn Sie abgeleitetes Material teilen, das Sie erstellen. + + 1. Die Lizenz des Adapters, die Sie anwenden, muss eine Creative Commons-Lizenz mit denselben Lizenzbestandteilen, dieser Version oder einer späteren, oder eine BY-SA-kompatible Lizenz sein. + + 2. Sie müssen den Text oder die URI oder den Hyperlink zu der Lizenz des Adapters, die Sie anwenden, einfügen. Sie können diese Bedingung auf jede angemessene Weise erfüllen, die auf dem Medium, den Mitteln und dem Kontext basiert, in dem Sie abgeleitetes Material teilen. + + 3. Sie dürfen keine zusätzlichen oder anderen Bedingungen auf abgeleitetes Material anwenden oder auferlegen oder effektive technologische Maßnahmen auf abgeleitetes Material anwenden, die die Ausübung der Rechte, die unter der Lizenz des Adapters gewährt werden, einschränken. + +Abschnitt 4 – Sui Generis-Datenbankrechte. + +Soweit die lizenzierten Rechte Sui Generis-Datenbankrechte umfassen, die auf Ihre Nutzung des lizenzierten Materials anwendbar sind: + + a. Um Zweifel zu vermeiden, gewährt Abschnitt 2(a)(1) Ihnen das Recht, alle oder einen wesentlichen Teil des Inhalts der Datenbank zu extrahieren, wiederzuverwenden, zu reproduzieren und zu teilen; + + b. Wenn Sie alle oder einen wesentlichen Teil des Inhalts der Datenbank in einer Datenbank einfügen, in der Sie Sui Generis-Datenbankrechte haben, dann ist die Datenbank, in der Sie Sui Generis-Datenbankrechte haben (aber nicht deren einzelne Inhalte), abgeleitetes Material, einschließlich für die Zwecke von Abschnitt 3(b); und + + c. Sie müssen die Bedingungen in Abschnitt 3(a) einhalten, wenn Sie alle oder einen wesentlichen Teil des Inhalts der Datenbank teilen. + +Um Zweifel zu vermeiden, ergänzt dieser Abschnitt 4 Ihre Verpflichtungen unter dieser öffentlichen Lizenz, wenn die lizenzierten Rechte andere Urheberrechte und ähnliche Rechte umfassen. + +Abschnitt 5 – Haftungsausschluss und Haftungsbeschränkung. + + a. SOFERN NICHT ANDERS VON DEM LIZENZGEBER GETROFFEN, BIETET DER LIZENZGEBER DAS LIZENZIERTE MATERIAL SO WIE ES IST UND SO WIE VERFÜGBAR AN UND GIBT KEINE ERKLÄRUNGEN ODER GARANTIEN JEDER ART IN BEZUG AUF DAS LIZENZIERTE MATERIAL AB, OB AUSDRÜCKLICH, STILLSCHWEIGEND, GESETZLICH ODER ANDERWEITIG. DIES BEINHALTET, OHNE EINSCHRÄNKUNG, GARANTIEN FÜR EIGENTUM, MARKTFÄHIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, NICHTVERLETZUNG, FEHLEN ODER ANDERE MÄNGEL, GENAUIGKEIT ODER DAS VORHANDENSEIN ODER FEHLEN VON FEHLERN, UNABHÄNGIG DAVON, OB BEKANNT ODER ENTDECKBAR. WENN HAFTUNGSAUSSCHLÜSSE NICHT VOLLSTÄNDIG ODER TEILWEISE ERLAUBT SIND, GILT DIESER HAFTUNGSAUSSCHLUSS MÖGLICHERWEISE NICHT FÜR SIE. + + b. SOWEIT MÖGLICH, WIRD DER LIZENZGEBER IN KEINEM FALL FÜR SIE AUF GRUNDLAGE IRGENDEINER RECHTSTHEORIE (EINSCHLIEßLICH, ABER NICHT BESCHRÄNKT AUF, FAHRLÄSSIGKEIT) ODER ANDERWEITIG FÜR DIREKTE, SPEZIELLE, INDIREKTE, NEBEN-, FOLGE-, STRAF-, EXEMPLARISCHE ODER ANDERE VERLUSTE, KOSTEN, AUSGABEN ODER SCHÄDEN, DIE AUS DIESER ÖFFENTLICHEN LIZENZ ODER DER NUTZUNG DES LIZENZIERTEN MATERIALS ENTSTEHEN, HAFTBAR GEMACHT WERDEN, SELBST WENN DER LIZENZGEBER AUF DIE MÖGLICHKEIT SOLCHER VERLUSTE, KOSTEN, AUSGABEN ODER SCHÄDEN HINGEWIESEN WURDE. WENN EINE HAFTUNGSBESCHRÄNKUNG NICHT VOLLSTÄNDIG ODER TEILWEISE ERLAUBT IST, GILT DIESE BESCHRÄNKUNG MÖGLICHERWEISE NICHT FÜR SIE. + + c. Der Haftungsausschluss für Garantien und die Haftungsbeschränkung, die oben angegeben sind, werden so ausgelegt, dass sie, soweit möglich, einem absoluten Haftungsausschluss und einem Verzicht auf alle Haftungen am nächsten kommen. + +Abschnitt 6 – Laufzeit und Beendigung. + + a. Diese öffentliche Lizenz gilt für die Laufzeit des hier lizenzierten Urheberrechts und ähnlicher Rechte. Wenn Sie jedoch gegen diese öffentliche Lizenz verstoßen, erlöschen Ihre Rechte unter dieser öffentlichen Lizenz automatisch. + + b. Wenn Ihr Recht, das lizenzierte Material zu nutzen, gemäß Abschnitt 6(a) erloschen ist, wird es wiederhergestellt: + + 1. automatisch ab dem Datum, an dem der Verstoß behoben wird, vorausgesetzt, er wird innerhalb von 30 Tagen nach Ihrer Entdeckung + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung resultieren. \ No newline at end of file diff --git a/translations/de/lessons/sketchnotes/README.md b/translations/de/lessons/sketchnotes/README.md new file mode 100644 index 00000000..cc29912c --- /dev/null +++ b/translations/de/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +Alle Sketchnotes des Lehrplans können hier heruntergeladen werden. + +🎨 Erstellt von: 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/) + +**Haftungsausschluss**: +Dieses Dokument wurde mit maschinellen KI-Übersetzungsdiensten übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als die maßgebliche Quelle angesehen werden. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen. \ No newline at end of file diff --git a/translations/es/README.md b/translations/es/README.md new file mode 100644 index 00000000..c2423a52 --- /dev/null +++ b/translations/es/README.md @@ -0,0 +1,140 @@ +[![Licencia de GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![Contribuyentes de GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![Problemas de GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![Solicitudes de extracción de GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Bienvenidos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![Observadores de GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![Forks de GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![Estrellas de GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# Inteligencia Artificial para Principiantes - Un Currículo + +|![ Sketchnote por [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI Para Principiantes - _Sketchnote por [@girlie_mac](https://twitter.com/girlie_mac)_ | + +¡Explora el mundo de la **Inteligencia Artificial** (IA) con nuestro currículo de 12 semanas y 24 lecciones! Incluye lecciones prácticas, cuestionarios y laboratorios. El currículo es amigable para principiantes y abarca herramientas como TensorFlow y PyTorch, así como la ética en la IA. + +## Lo que aprenderás + +**[Mapa mental del curso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +En este currículo, aprenderás: + +* Diferentes enfoques de la Inteligencia Artificial, incluido el "buen viejo" enfoque simbólico con **Representación del Conocimiento** y razonamiento ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Redes Neuronales** y **Aprendizaje Profundo**, que son el núcleo de la IA moderna. Ilustraremos los conceptos detrás de estos temas importantes utilizando código en dos de los marcos más populares: [TensorFlow](http://Tensorflow.org) y [PyTorch](http://pytorch.org). +* **Arquitecturas Neuronales** para trabajar con imágenes y texto. Cubriremos modelos recientes, aunque puede que no estemos completamente al día con el estado del arte. +* Enfoques de IA menos populares, como **Algoritmos Genéticos** y **Sistemas Multi-Agente**. + +Lo que no cubriremos en este currículo: + +> [Encuentra todos los recursos adicionales para este curso en nuestra colección de Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Casos de negocio sobre el uso de **IA en los Negocios**. Considera tomar la ruta de aprendizaje [Introducción a la IA para usuarios de negocios](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) en Microsoft Learn, o [Escuela de Negocios de IA](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), desarrollada en cooperación con [INSEAD](https://www.insead.edu/). +* **Aprendizaje Automático Clásico**, que está bien descrito en nuestro [Currículo de Aprendizaje Automático para Principiantes](http://github.com/Microsoft/ML-for-Beginners). +* Aplicaciones prácticas de IA construidas usando **[Servicios Cognitivos](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para esto, te recomendamos que comiences con los módulos de Microsoft Learn para [visión](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [procesamiento de lenguaje natural](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[IA Generativa con Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** y otros. +* **Frameworks de ML específicos en la nube**, como [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) o [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Considera utilizar las rutas de aprendizaje [Construir y operar soluciones de aprendizaje automático con Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) y [Construir y operar soluciones de aprendizaje automático con Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **IA Conversacional** y **Bots de Chat**. Hay una ruta de aprendizaje separada llamada [Crear soluciones de IA conversacional](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), y también puedes consultar [esta publicación de blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para más detalles. +* **Matemáticas Avanzadas** detrás del aprendizaje profundo. Para esto, recomendamos [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) de Ian Goodfellow, Yoshua Bengio y Aaron Courville, que también está disponible en línea en [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Para una introducción suave a los temas de _IA en la Nube_, puedes considerar tomar la ruta de aprendizaje [Introducción a la inteligencia artificial en Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# Contenido + +| | Enlace de la Lección | PyTorch/Keras/TensorFlow | Lab | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Configuración del Curso](./lessons/0-course-setup/setup.md) | [Configura tu Entorno de Desarrollo](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Introducción a la IA**](./lessons/1-Intro/README.md) | | | +| 01 | [Introducción e Historia de la IA](./lessons/1-Intro/README.md) | - | - | +| II | **IA Simbólica** | +| 02 | [Representación del Conocimiento y Sistemas Expertos](./lessons/2-Symbolic/README.md) | [Sistemas Expertos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontología](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Gráfico de Conceptos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Introducción a las Redes Neuronales**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptrón](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [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 | [Perceptrón Multicapa y Creando nuestro propio 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 | [Introducción a Frameworks (PyTorch/TensorFlow) y Sobreajuste](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Visión por Computadora**](./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)| [Explorar Visión por Computadora en Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Introducción a la Visión por Computadora. 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) | [Laboratorio](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Redes Neuronales Convolucionales](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Arquitecturas de CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Laboratorio](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Redes Pre-entrenadas y Aprendizaje por Transferencia](./lessons/4-ComputerVision/08-TransferLearning/README.md) y [Trucos de Entrenamiento](./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) | [Laboratorio](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Autoencoders y VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [Redes Generativas Antagónicas y Transferencia de Estilo Artístico](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Detección de Objetos](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Laboratorio](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Segmentación Semántica. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | +| V | [**Procesamiento de Lenguaje Natural**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Explora el Procesamiento de Lenguaje Natural en Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Representación de Texto. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [Embeddings semánticos de palabras. Word2Vec y GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Modelado del Lenguaje. Entrenando tus propios 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) | [Laboratorio](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Redes Neuronales Recurrentes](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [Redes Generativas Recurrentes](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Laboratorio](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformadores. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [Reconocimiento de Entidades Nombradas](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratorio](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Modelos de Lenguaje Grandes, Programación de Prompts y Tareas de Pocos Ejemplos](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Otras Técnicas de IA** || | +| 21 | [Algoritmos Genéticos](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Cuaderno](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Aprendizaje por Refuerzo Profundo](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Laboratorio](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Sistemas Multiagente](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Ética en IA** | | | +| 24 | [Ética en IA y IA Responsable](./lessons/7-Ethics/README.md) | [Microsoft Learn: Principios de IA Responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Extras** | | | +| 25 | [Redes Multi-Modal, CLIP y VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Cuaderno](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## Cada lección contiene + +* Material de lectura previa +* Cuadernos Jupyter ejecutables, que a menudo son específicos del marco (**PyTorch** o **TensorFlow**). El cuaderno ejecutable también contiene mucho material teórico, por lo que para entender el tema necesitas revisar al menos una versión del cuaderno (ya sea de PyTorch o TensorFlow). +* **Laboratorios** disponibles para algunos temas, que te brindan la oportunidad de intentar aplicar el material que has aprendido a un problema específico. +* Algunas secciones contienen enlaces a módulos de [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) que cubren temas relacionados. + +## Comenzando + +- Hemos creado una [lección de configuración](./lessons/0-course-setup/setup.md) para ayudarte a configurar tu entorno de desarrollo. - Para educadores, también hemos creado una [lección de configuración curricular](./lessons/0-course-setup/for-teachers.md) para ti. +- Cómo [Ejecutar el código en VSCode o Codepace](./lessons/0-course-setup/how-to-run.md) + +Sigue estos pasos: + +Haz un fork del repositorio: Haz clic en el botón "Fork" en la esquina superior derecha de esta página. + +Clona el repositorio: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +No olvides marcar (🌟) este repositorio para encontrarlo más fácilmente después. + +## Conoce a otros Aprendices + +Únete a nuestro [servidor oficial de Discord de IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) para conocer y hacer networking con otros aprendices que están tomando este curso y obtener apoyo. + +## Cuestionarios + +> **Una nota sobre los cuestionarios**: Todos los cuestionarios se encuentran en la carpeta Quiz-app en etc\quiz-app. Están vinculados desde dentro de las lecciones, la aplicación de cuestionarios se puede ejecutar localmente o desplegarse en Azure; sigue las instrucciones en la carpeta `quiz-app`. Están siendo localizados gradualmente. + +## Se Busca Ayuda + +¿Tienes sugerencias o encontraste errores de ortografía o de código? Abre un problema o crea una solicitud de extracción. + +## Agradecimientos Especiales + +* **✍️ Autor Principal:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustrador de Sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Creadora de Cuestionarios:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Contribuidores Clave:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Otros Currículos + +¡Nuestro equipo produce otros currículos! Echa un vistazo a: + +* [Ciencia de Datos para Principiantes](https://aka.ms/ds4beginners) +* [**Versión 2.0** IA Generativa para Principiantes](https://aka.ms/genai-beginners) +* [**NUEVO** Ciberseguridad para Principiantes](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [Desarrollo Web para Principiantes](https://aka.ms/webdev-beginners) +* [IoT para Principiantes](https://aka.ms/iot-beginners) +* [Aprendizaje Automático para Principiantes](https://aka.ms/ml4beginners) +* [Desarrollo XR para Principiantes](https://aka.ms/xr-dev-for-beginners) +* [Dominando GitHub Copilot para Programación en Pareja con IA](https://aka.ms/GitHubCopilotAI) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/SECURITY.md b/translations/es/SECURITY.md new file mode 100644 index 00000000..3c786cc9 --- /dev/null +++ b/translations/es/SECURITY.md @@ -0,0 +1,40 @@ +## Seguridad + +Microsoft se toma muy en serio la seguridad de nuestros productos y servicios de software, lo que incluye todos los repositorios de código fuente gestionados a través de nuestras organizaciones en GitHub, que incluyen [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) y [nuestras organizaciones en GitHub](https://opensource.microsoft.com/). + +Si crees que has encontrado una vulnerabilidad de seguridad en algún repositorio de Microsoft que cumpla con [la definición de vulnerabilidad de seguridad de Microsoft](https://aka.ms/opensource/security/definition), por favor repórtala a nosotros como se describe a continuación. + +## Reportar Problemas de Seguridad + +**Por favor, no reportes vulnerabilidades de seguridad a través de problemas públicos de GitHub.** + +En su lugar, repórtalas al Centro de Respuesta de Seguridad de Microsoft (MSRC) en [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Si prefieres enviar tu reporte sin iniciar sesión, envía un correo electrónico a [secure@microsoft.com](mailto:secure@microsoft.com). Si es posible, cifra tu mensaje con nuestra clave PGP; por favor descárgala de la [página de Clave PGP del Centro de Respuesta de Seguridad de Microsoft](https://aka.ms/opensource/security/pgpkey). + +Deberías recibir una respuesta dentro de 24 horas. Si por alguna razón no lo haces, por favor haz un seguimiento por correo electrónico para asegurarte de que recibimos tu mensaje original. Puedes encontrar información adicional en [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Por favor incluye la información solicitada que se detalla a continuación (tanto como puedas proporcionar) para ayudarnos a entender mejor la naturaleza y el alcance del posible problema: + + * Tipo de problema (por ejemplo, desbordamiento de búfer, inyección SQL, scripting entre sitios, etc.) + * Rutas completas de los archivos fuente relacionados con la manifestación del problema + * La ubicación del código fuente afectado (etiqueta/rama/confirmación o URL directa) + * Cualquier configuración especial requerida para reproducir el problema + * Instrucciones paso a paso para reproducir el problema + * Prueba de concepto o código de explotación (si es posible) + * Impacto del problema, incluyendo cómo un atacante podría explotar el problema + +Esta información nos ayudará a clasificar tu reporte más rápidamente. + +Si estás reportando para un programa de recompensas por errores, reportes más completos pueden contribuir a una mayor recompensa. Por favor visita nuestra página del [Programa de Recompensas por Errores de Microsoft](https://aka.ms/opensource/security/bounty) para más detalles sobre nuestros programas activos. + +## Idiomas Preferidos + +Preferimos que todas las comunicaciones sean en inglés. + +## Política + +Microsoft sigue el principio de [Divulgación Coordinada de Vulnerabilidades](https://aka.ms/opensource/security/cvd). + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por un humano. No somos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/CODE_OF_CONDUCT.md b/translations/es/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..00885f3b --- /dev/null +++ b/translations/es/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Código de Conducta de Microsoft para Código Abierto + +Este proyecto ha adoptado el [Código de Conducta de Microsoft para Código Abierto](https://opensource.microsoft.com/codeofconduct/). + +Recursos: + +- [Código de Conducta de Microsoft para Código Abierto](https://opensource.microsoft.com/codeofconduct/) +- [Preguntas Frecuentes sobre el Código de Conducta de Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Contacta a [opencode@microsoft.com](mailto:opencode@microsoft.com) si tienes preguntas o inquietudes. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/CONTRIBUTING.md b/translations/es/etc/CONTRIBUTING.md new file mode 100644 index 00000000..b155fbee --- /dev/null +++ b/translations/es/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# Contribuyendo + +Este proyecto da la bienvenida a contribuciones y sugerencias. La mayoría de las contribuciones requieren que aceptes un Acuerdo de Licencia de Contribuidor (CLA) que declara que tienes el derecho de, y realmente lo haces, otorgarnos los derechos para usar tu contribución. Para más detalles, visita https://cla.microsoft.com. + +Cuando envíes una solicitud de extracción, un bot de CLA determinará automáticamente si necesitas proporcionar un CLA y decorará la PR de manera apropiada (por ejemplo, etiqueta, comentario). Simplemente sigue las instrucciones proporcionadas por el bot. Solo necesitarás hacer esto una vez en todos los repositorios que utilicen nuestro CLA. + +Este proyecto ha adoptado el [Código de Conducta de Código Abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/). Para más información, consulta las [Preguntas Frecuentes sobre el Código de Conducta](https://opensource.microsoft.com/codeofconduct/faq/) o contacta a [opencode@microsoft.com](mailto:opencode@microsoft.com) con cualquier pregunta o comentario adicional. + +# Buscando Contribuciones + +Actualmente estamos buscando activamente contribuciones sobre los siguientes temas: + +- [ ] Escribir sección sobre Aprendizaje por Refuerzo Profundo +- [ ] Mejorar la sección + cuaderno sobre Detección de Objetos +- [ ] PyTorch Lightning (para [esta sección](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Escribir sección + ejemplos sobre Reconocimiento de Entidades Nombradas +- [ ] Crear ejemplos para entrenar nuestras propias incrustaciones para [esta sección](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/Mindmap.md b/translations/es/etc/Mindmap.md new file mode 100644 index 00000000..a5431495 --- /dev/null +++ b/translations/es/etc/Mindmap.md @@ -0,0 +1,76 @@ +# IA + +## [Introducción a la IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definición de IA + - Historia de la IA + - Enfoques de la IA + - De arriba hacia abajo/Simbólico + - De abajo hacia arriba/Neuronal + - Evolutivo + - IA Sinérgica / Emergente + - [Escuela de Negocios de IA de Microsoft](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [IA Simbólica](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Representación del Conocimiento + - [Sistemas Expertos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontologías](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Web Semántica + +## [Redes Neuronales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [Perceptrón](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [Redes Multicapa](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Introducción a los Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [Sobreajuste](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Visión por Computadora](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - En MS Learn + - [Fundamentos de IA: Explorar Visión por Computadora](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Visión por Computadora con PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Visión por Computadora con TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Introducción a CV. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Redes Convolucionales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Arquitecturas de CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Aprendizaje por Transferencia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Trucos de Entrenamiento](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencoders y VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Redes Generativas Antagónicas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Transferencia de Estilo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Detección de Objetos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentación](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Procesamiento de Lenguaje Natural](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - En MS Learn + - [Fundamentos de IA: Explorar PLN](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PLN con PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [PLN con TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [Representación de Texto](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bolsa de Palabras + - TF/IDF + - [Incrustaciones Semánticas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modelado de Lenguaje](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Redes Neuronales Recurrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Redes Generativas Recurrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers y BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Reconocimiento de Entidades Nombradas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Generación de Texto y GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## Otras Técnicas + - [Algoritmos Genéticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Aprendizaje por Refuerzo Profundo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Sistemas Multiagente](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Ética de la IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn sobre IA Responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## Extras + - [Redes Multimodales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/SUPPORT.md b/translations/es/etc/SUPPORT.md new file mode 100644 index 00000000..195f1e49 --- /dev/null +++ b/translations/es/etc/SUPPORT.md @@ -0,0 +1,14 @@ +# Soporte + +## Cómo reportar problemas y obtener ayuda + +Este proyecto utiliza GitHub Issues para rastrear errores y solicitudes de funciones. Por favor, busca en los problemas existentes antes de presentar nuevos problemas para evitar duplicados. Para nuevos problemas, presenta tu error o solicitud de función como un nuevo Issue. + +Para ayuda y preguntas sobre el uso de este proyecto, por favor utiliza los Foros de Discusión. + +## Política de Soporte de Microsoft + +El soporte para este proyecto está limitado a los recursos mencionados anteriormente. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/TRANSLATIONS.md b/translations/es/etc/TRANSLATIONS.md new file mode 100644 index 00000000..be2ea661 --- /dev/null +++ b/translations/es/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# Contribuye traduciendo lecciones + +¡Damos la bienvenida a las traducciones de las lecciones en este currículo! + +## Directrices + +Hay carpetas en cada carpeta de lección y en la carpeta de introducción de la lección que contienen los archivos markdown traducidos. + +> Nota: por favor, no traduzcas ningún código en los archivos de muestra de código; las únicas cosas que se deben traducir son README, tareas y cuestionarios. ¡Gracias! + +Los archivos traducidos deben seguir esta convención de nomenclatura: + +**README._[language]_.md** + +donde _[language]_ es una abreviatura de dos letras para el idioma según el estándar ISO 639-1 (por ejemplo, `README.es.md` para español y `README.nl.md` para neerlandés). + +**assignment._[language]_.md** + +Similar a los Readme, por favor traduce también las tareas. + +**Cuestionarios** + +1. Agrega tu traducción al quiz-app añadiendo un archivo aquí: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, con la convención de nomenclatura adecuada (en.json, fr.json). **Sin embargo, por favor no localices las palabras 'true' o 'false'. ¡Gracias!** + +2. Agrega tu código de idioma al menú desplegable en el archivo App.vue del quiz-app. + +3. Edita el archivo [translations index.js del quiz-app](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) para añadir tu idioma. + +4. Finalmente, edita TODOS los enlaces de cuestionarios en tus archivos README.md traducidos para que apunten directamente a tu cuestionario traducido: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 se convierte en https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**GRACIAS** + +¡Apreciamos sinceramente tus esfuerzos! + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/etc/quiz-app/README.md b/translations/es/etc/quiz-app/README.md new file mode 100644 index 00000000..d3e1126e --- /dev/null +++ b/translations/es/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# Cuestionarios + +Estos cuestionarios son los cuestionarios de antes y después de la conferencia para el currículo de IA en https://aka.ms/ai-beginners + +## Agregar un conjunto de cuestionarios traducidos + +Agrega una traducción de cuestionario creando estructuras de cuestionarios coincidentes en las carpetas `assets/translations`. Los cuestionarios canónicos están en `assets/translations/en`. Los cuestionarios están divididos en varios grupos por lección. Asegúrate de alinear la numeración con la sección de cuestionarios correspondiente. Hay un total de 40 cuestionarios en este currículo, comenzando desde 0. + +Después de editar las traducciones, edita el archivo index.js en la carpeta de traducción para importar todos los archivos siguiendo las convenciones en `en`. + +Edita el archivo `index.js` en `assets/translations` para importar los nuevos archivos traducidos. + +Luego, edita el menú desplegable en `App.vue` en esta aplicación para agregar tu idioma. Asegúrate de que la abreviatura localizada coincida con el nombre de la carpeta de tu idioma. + +Finalmente, edita todos los enlaces de cuestionarios en las lecciones traducidas, si existen, para incluir esta localización como un parámetro de consulta: `?loc=fr`, por ejemplo. + +## Configuración del proyecto + +``` +npm install +``` + +### Compila y recarga en caliente para desarrollo + +``` +npm run serve +``` + +### Compila y minimiza para producción + +``` +npm run build +``` + +### Lint y corrige archivos + +``` +npm run lint +``` + +### Personaliza la configuración + +Consulta [Referencia de Configuración](https://cli.vuejs.org/config/). + +Créditos: Gracias a la versión original de esta aplicación de cuestionarios: https://github.com/arpan45/simple-quiz-vue + +## Despliegue en Azure + +Aquí tienes una guía paso a paso para ayudarte a comenzar: + +1. Haz un fork de un repositorio de GitHub +Asegúrate de que el código de tu aplicación web estática esté en tu repositorio de GitHub. Haz un fork de este repositorio. + +2. Crea una Aplicación Web Estática de Azure +- Crea una [cuenta de Azure](http://azure.microsoft.com) +- Ve al [portal de Azure](https://portal.azure.com) +- Haz clic en “Crear un recurso” y busca “Aplicación Web Estática”. +- Haz clic en “Crear”. + +3. Configura la Aplicación Web Estática +- Básicos: Suscripción: Selecciona tu suscripción de Azure. +- Grupo de Recursos: Crea un nuevo grupo de recursos o usa uno existente. +- Nombre: Proporciona un nombre para tu aplicación web estática. +- Región: Elige la región más cercana a tus usuarios. + +- #### Detalles de Despliegue: +- Fuente: Selecciona “GitHub”. +- Cuenta de GitHub: Autoriza a Azure para acceder a tu cuenta de GitHub. +- Organización: Selecciona tu organización de GitHub. +- Repositorio: Elige el repositorio que contiene tu aplicación web estática. +- Rama: Selecciona la rama desde la que deseas desplegar. + +- #### Detalles de Construcción: +- Presets de Construcción: Elige el framework con el que está construida tu aplicación (por ejemplo, React, Angular, Vue, etc.). +- Ubicación de la Aplicación: Especifica la carpeta que contiene el código de tu aplicación (por ejemplo, / si está en la raíz). +- Ubicación de la API: Si tienes una API, especifica su ubicación (opcional). +- Ubicación de Salida: Especifica la carpeta donde se genera la salida de la construcción (por ejemplo, build o dist). + +4. Revisa y Crea +Revisa tus configuraciones y haz clic en “Crear”. Azure configurará los recursos necesarios y creará un flujo de trabajo de GitHub Actions en tu repositorio. + +5. Flujo de Trabajo de GitHub Actions +Azure creará automáticamente un archivo de flujo de trabajo de GitHub Actions en tu repositorio (.github/workflows/azure-static-web-apps-.yml). Este flujo de trabajo manejará el proceso de construcción y despliegue. + +6. Monitorea el Despliegue +Ve a la pestaña “Actions” en tu repositorio de GitHub. +Deberías ver un flujo de trabajo en ejecución. Este flujo de trabajo construirá y desplegará tu aplicación web estática en Azure. +Una vez que el flujo de trabajo se complete, tu aplicación estará activa en la URL de Azure proporcionada. + +### Ejemplo de Archivo de Flujo de Trabajo + +Aquí tienes un ejemplo de cómo podría verse el archivo de flujo de trabajo de GitHub Actions: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### Recursos Adicionales +- [Documentación de Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Documentación de GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/0-course-setup/for-teachers.md b/translations/es/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..fb382468 --- /dev/null +++ b/translations/es/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# Para Educadores + +¿Te gustaría utilizar este currículo en tu aula? ¡Siéntete libre de hacerlo! + +De hecho, puedes usarlo dentro de GitHub mismo utilizando GitHub Classroom. + +Para hacerlo, haz un fork de este repositorio. Necesitarás crear un repositorio para cada lección, así que tendrás que extraer cada carpeta en un repositorio separado. De esa manera, [GitHub Classroom](https://classroom.github.com/classrooms) puede recoger cada lección por separado. + +Estas [instrucciones completas](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) te darán una idea de cómo configurar tu aula. + +## Usando el repositorio tal como está + +Si deseas utilizar este repositorio tal como está actualmente, sin usar GitHub Classroom, también se puede hacer. Tendrás que comunicarte con tus estudiantes sobre qué lección trabajar juntos. + +En un formato en línea (Zoom, Teams u otro), podrías formar salas de grupo para los cuestionarios y guiar a los estudiantes para ayudarles a prepararse para aprender. Luego, invita a los estudiantes a participar en los cuestionarios y enviar sus respuestas como 'issues' en un momento determinado. Podrías hacer lo mismo con las tareas, si deseas que los estudiantes trabajen colaborativamente de manera abierta. + +Si prefieres un formato más privado, pide a tus estudiantes que hagan un fork del currículo, lección por lección, a sus propios repositorios de GitHub como repositorios privados y te den acceso. Así podrán completar cuestionarios y tareas de forma privada y enviártelos a través de issues en tu repositorio del aula. + +Hay muchas maneras de hacer que esto funcione en un formato de aula en línea. ¡Por favor, háznos saber qué funciona mejor para ti! + +## Por favor, danos tu opinión + +Queremos que este currículo funcione para ti y tus estudiantes. ¡Por favor, déjanos tus comentarios en los foros de discusión! + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/0-course-setup/how-to-run.md b/translations/es/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..4b6a02e3 --- /dev/null +++ b/translations/es/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# Cómo Ejecutar el Código + +Este plan de estudios contiene muchos ejemplos y laboratorios ejecutables que querrás correr. Para hacer esto, necesitas la capacidad de ejecutar código Python en los Jupyter Notebooks proporcionados como parte de este plan de estudios. Tienes varias opciones para ejecutar el código: + +## Ejecutar localmente en tu computadora + +Para ejecutar el código localmente en tu computadora, necesitas tener alguna versión de Python instalada. Personalmente, recomiendo instalar **[miniconda](https://conda.io/en/latest/miniconda.html)**; es una instalación bastante ligera que soporta el gestor de paquetes `conda` para diferentes **entornos virtuales** de Python. + +Después de instalar miniconda, necesitas clonar el repositorio y crear un entorno virtual que se utilizará para este curso: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Usando Visual Studio Code con la Extensión de Python + +Probablemente, la mejor manera de utilizar el plan de estudios es abrirlo en [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) con la [Extensión de Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Nota**: Una vez que clones y abras el directorio en VS Code, te sugerirá automáticamente instalar las extensiones de Python. También tendrás que instalar miniconda como se describió anteriormente. + +> **Nota**: Si VS Code te sugiere reabrir el repositorio en un contenedor, debes rechazar esto para usar la instalación local de Python. + +### Usando Jupyter en el Navegador + +También puedes usar el entorno de Jupyter directamente desde el navegador en tu propia computadora. De hecho, tanto Jupyter clásico como Jupyter Hub proporcionan un entorno de desarrollo bastante conveniente con autocompletado, resaltado de código, etc. + +Para iniciar Jupyter localmente, ve al directorio del curso y ejecuta: + +```bash +jupyter notebook +``` +o +```bash +jupyterhub +``` +Luego puedes navegar a cualquiera de las carpetas `.ipynb` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` que indican cómo construir un contenedor para este repositorio; VS Code te ofrecerá reabrir el código en un contenedor. Esto requerirá la instalación de Docker y también será más complejo, por lo que recomendamos esto a usuarios más experimentados. + +## Ejecutando en la Nube + +Si no deseas instalar Python localmente y tienes acceso a algunos recursos en la nube, una buena alternativa sería ejecutar el código en la nube. Hay varias formas de hacerlo: + +* Usando **[GitHub Codespaces](https://github.com/features/codespaces)**, que es un entorno virtual creado para ti en GitHub, accesible a través de la interfaz del navegador de VS Code. Si tienes acceso a Codespaces, solo necesitas hacer clic en el botón **Code** en el repositorio, iniciar un codespace y comenzar a trabajar en poco tiempo. +* Usando **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) es un recurso de computación gratuito proporcionado en la nube para que personas como tú prueben algún código en GitHub. Hay un botón en la página principal para abrir el repositorio en Binder; esto te llevará rápidamente al sitio de Binder, que construirá el contenedor subyacente y comenzará la interfaz web de Jupyter sin problemas. + +> **Nota**: Para prevenir el uso indebido, Binder tiene acceso bloqueado a algunos recursos web. Esto puede impedir que parte del código funcione, especialmente el que obtiene modelos y/o conjuntos de datos de Internet público. Es posible que necesites encontrar algunas soluciones alternativas. Además, los recursos de computación proporcionados por Binder son bastante básicos, por lo que el entrenamiento será lento, especialmente en lecciones más complejas más adelante. + +## Ejecutando en la Nube con GPU + +Algunas de las lecciones posteriores en este plan de estudios se beneficiarían enormemente del soporte de GPU, porque de lo contrario el entrenamiento será dolorosamente lento. Hay algunas opciones que puedes seguir, especialmente si tienes acceso a la nube ya sea a través de [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) o a través de tu institución: + +* Crea una [Máquina Virtual de Ciencia de Datos](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) y conéctate a ella a través de Jupyter. Luego puedes clonar el repositorio directamente en la máquina y comenzar a aprender. Las máquinas virtuales de la serie NC tienen soporte para GPU. + +> **Nota**: Algunas suscripciones, incluyendo Azure for Students, no proporcionan soporte de GPU por defecto. Es posible que necesites solicitar núcleos de GPU adicionales a través de una solicitud de soporte técnico. + +* Crea un [Espacio de Trabajo de Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) y luego utiliza la función de Notebook allí. [Este video](https://azure-for-academics.github.io/quickstart/azureml-papers/) muestra cómo clonar un repositorio en un notebook de Azure ML y comenzar a usarlo. + +También puedes utilizar Google Colab, que viene con algo de soporte gratuito de GPU, y subir Jupyter Notebooks allí para ejecutarlos uno por uno. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/0-course-setup/setup.md b/translations/es/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..20f19a92 --- /dev/null +++ b/translations/es/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# Introducción a este Currículo + +## ¿Eres un estudiante? + +Comienza con los siguientes recursos: + +* [Página del Hub para Estudiantes](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) En esta página, encontrarás recursos para principiantes, paquetes para estudiantes e incluso formas de obtener un vale de certificación gratuito. Esta es una página que querrás marcar y revisar de vez en cuando, ya que cambiamos el contenido al menos una vez al mes. +* [Embajadores de Microsoft Student Learn](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Únete a una comunidad global de embajadores estudiantiles, esta podría ser tu puerta de entrada a Microsoft. + +**Estudiantes**, hay un par de maneras de usar el currículo. Primero que todo, puedes simplemente leer el texto y revisar el código directamente en GitHub. Si deseas ejecutar el código en cualquiera de los cuadernos - [lee nuestras instrucciones](./etc/how-to-run.md), y encuentra más consejos sobre cómo hacerlo [en esta publicación del blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Nota**: [Instrucciones sobre cómo ejecutar el código en este currículo](/how-to-run.md) + +## Autoestudio + +Sin embargo, si deseas tomar el curso como un proyecto de autoestudio, te sugerimos que hagas un fork del repositorio completo a tu propia cuenta de GitHub y completes los ejercicios por tu cuenta o con un grupo: + +* Comienza con un cuestionario previo a la clase. +* Lee el texto introductorio de la clase. +* Si la clase tiene cuadernos adicionales, revísalos, leyendo y ejecutando el código. Si se proporcionan cuadernos de TensorFlow y PyTorch, puedes enfocarte en uno de ellos: elige tu framework favorito. +* Los cuadernos a menudo contienen algunos de los desafíos que requieren que ajustes un poco el código para experimentar. +* Realiza el cuestionario posterior a la clase. +* Si hay un laboratorio adjunto al módulo, completa la tarea. +* Visita el [foro de discusión](https://github.com/microsoft/AI-For-Beginners/discussions) para "aprender en voz alta". + +> Para un estudio adicional, recomendamos seguir estos módulos y rutas de aprendizaje de [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). + +**Profesores**, hemos [incluido algunas sugerencias](/for-teachers.md) sobre cómo utilizar este currículo. + +--- + +## Pedagogía + +Hemos elegido dos principios pedagógicos al construir este currículo: asegurar que sea **basado en proyectos** y que incluya **cuestionarios frecuentes**. + +Al asegurar que el contenido esté alineado con proyectos, el proceso se vuelve más atractivo para los estudiantes y se incrementa la retención de conceptos. Además, un cuestionario de bajo riesgo antes de una clase establece la intención del estudiante hacia el aprendizaje de un tema, mientras que un segundo cuestionario después de la clase asegura una mayor retención. Este currículo fue diseñado para ser flexible y divertido y puede ser tomado en su totalidad o en parte. Los proyectos comienzan pequeños y se vuelven cada vez más complejos al final del ciclo de 12 semanas. + +> **Una nota sobre los cuestionarios**: Todos los cuestionarios están contenidos [en esta aplicación](https://red-field-0a6ddfd03.1.azurestaticapps.net/), con un total de 50 cuestionarios de tres preguntas cada uno. Están vinculados desde las lecciones, pero la aplicación de cuestionarios puede ejecutarse localmente; sigue las instrucciones en la carpeta `etc/quiz-app`. + +## Acceso sin conexión + +Puedes ejecutar esta documentación sin conexión utilizando [Docsify](https://docsify.js.org/#/). Haz un fork de este repositorio, [instala Docsify](https://docsify.js.org/#/quickstart) en tu máquina local, y luego en la carpeta `etc/docsify` de este repositorio, escribe `docsify serve`. El sitio web se servirá en el puerto 3000 en tu localhost: `localhost:3000`. Un pdf del currículo está disponible [en este enlace](../../../../../../etc/pdf/readme.pdf). + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional por parte de un humano. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/1-Intro/README.md b/translations/es/lessons/1-Intro/README.md new file mode 100644 index 00000000..cf49e000 --- /dev/null +++ b/translations/es/lessons/1-Intro/README.md @@ -0,0 +1,56 @@ +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +A medida que pasó el tiempo, los recursos informáticos se volvieron más baratos y más datos se hicieron disponibles, por lo que los enfoques de redes neuronales comenzaron a demostrar un gran rendimiento en la competencia con los seres humanos en muchas áreas, como la visión por computadora o la comprensión del habla. En la última década, el término Inteligencia Artificial se ha utilizado principalmente como un sinónimo de Redes Neuronales, ya que la mayoría de los éxitos de IA de los que escuchamos se basan en ellas. + +Podemos observar cómo cambiaron los enfoques, por ejemplo, en la creación de un programa de computadora para jugar ajedrez: + +* Los primeros programas de ajedrez se basaban en la búsqueda: un programa intentaba estimar explícitamente los posibles movimientos de un oponente para un número determinado de movimientos siguientes y seleccionaba un movimiento óptimo basado en la posición óptima que se puede lograr en unos pocos movimientos. Esto llevó al desarrollo del algoritmo de búsqueda llamado [poda alfa-beta](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Las estrategias de búsqueda funcionan bien hacia el final del juego, donde el espacio de búsqueda está limitado por un pequeño número de posibles movimientos. Sin embargo, al principio del juego, el espacio de búsqueda es enorme, y el algoritmo se puede mejorar aprendiendo de partidas existentes entre jugadores humanos. Experimentos posteriores emplearon el llamado [razonamiento basado en casos](https://en.wikipedia.org/wiki/Case-based_reasoning), donde el programa buscaba casos en la base de conocimientos muy similares a la posición actual en el juego. +* Los programas modernos que ganan a los jugadores humanos se basan en redes neuronales y [aprendizaje por refuerzo](https://en.wikipedia.org/wiki/Reinforcement_learning), donde los programas aprenden a jugar únicamente jugando mucho tiempo contra sí mismos y aprendiendo de sus propios errores, de manera similar a como lo hacen los seres humanos al aprender a jugar ajedrez. Sin embargo, un programa de computadora puede jugar muchos más juegos en mucho menos tiempo, y así puede aprender mucho más rápido. + +✅ Investiga un poco sobre otros juegos que han sido jugados por IA. + +De manera similar, podemos ver cómo cambió el enfoque hacia la creación de "programas que hablan" (que podrían pasar la prueba de Turing): + +* Los primeros programas de este tipo, como [Eliza](https://en.wikipedia.org/wiki/ELIZA), se basaban en reglas gramaticales muy simples y la reformulación de la oración de entrada en una pregunta. +* Los asistentes modernos, como Cortana, Siri o Google Assistant, son todos sistemas híbridos que utilizan redes neuronales para convertir el habla en texto y reconocer nuestra intención, y luego emplean algún razonamiento o algoritmos explícitos para realizar las acciones requeridas. +* En el futuro, podemos esperar un modelo completamente basado en redes neuronales para manejar el diálogo por sí mismo. Las recientes redes neuronales de la familia GPT y [Turing-NLG](https://turing.microsoft.com/) muestran un gran éxito en esto. + +> Imagen de Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) de [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Investigación reciente en IA + +El enorme crecimiento reciente en la investigación de redes neuronales comenzó alrededor de 2010, cuando comenzaron a estar disponibles grandes conjuntos de datos públicos. Una enorme colección de imágenes llamada [ImageNet](https://en.wikipedia.org/wiki/ImageNet), que contiene alrededor de 14 millones de imágenes anotadas, dio origen al [Desafío de Reconocimiento Visual a Gran Escala de ImageNet](https://image-net.org/challenges/LSVRC/). + +![Precisión de ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) +En 2012, se utilizaron por primera vez las [Redes Neuronales Convolucionales](../4-ComputerVision/07-ConvNets/README.md) en la clasificación de imágenes, lo que llevó a una disminución significativa de los errores de clasificación (de casi 30% a 16.4%). En 2015, la arquitectura ResNet de Microsoft Research [alcanzó una precisión a nivel humano](https://doi.org/10.1109/ICCV.2015.123). + +Desde entonces, las Redes Neuronales han demostrado un comportamiento muy exitoso en muchas tareas: + +--- + +Año | Paridad Humana alcanzada +-----|-------- +2015 | [Clasificación de Imágenes](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Reconocimiento de Voz Conversacional](https://arxiv.org/abs/1610.05256) +2018 | [Traducción Automática de Máquinas](https://arxiv.org/abs/1803.05567) (chino-inglés) +2020 | [Generación de Descripciones de Imágenes](https://arxiv.org/abs/2009.13682) + +En los últimos años hemos sido testigos de grandes éxitos con modelos de lenguaje de gran tamaño, como BERT y GPT-3. Esto ocurrió principalmente debido al hecho de que hay una gran cantidad de datos de texto general disponibles que nos permiten entrenar modelos para capturar la estructura y el significado de los textos, preentrenarlos en colecciones de texto generales y luego especializar esos modelos para tareas más específicas. Aprenderemos más sobre [Procesamiento de Lenguaje Natural](../5-NLP/README.md) más adelante en este curso. + +## 🚀 Desafío + +Haz un recorrido por internet para determinar dónde, en tu opinión, se utiliza la IA de manera más efectiva. ¿Es en una aplicación de mapeo, en algún servicio de reconocimiento de voz a texto o en un videojuego? Investiga cómo se construyó el sistema. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Revisión y Autoestudio + +Revisa la historia de la IA y el ML leyendo [esta lección](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Toma un elemento de la sketchnote en la parte superior de esa lección o de esta y investígalo más a fondo para entender el contexto cultural que informa su evolución. + +**Tarea**: [Game Jam](assignment.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/1-Intro/assignment.md b/translations/es/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..dd5adcb9 --- /dev/null +++ b/translations/es/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# Game Jam + +Los juegos son un área que ha sido fuertemente influenciada por los desarrollos en IA y ML. En esta tarea, escribe un breve ensayo sobre un juego que te guste y que haya sido influenciado por la evolución de la IA. Debe ser un juego lo suficientemente antiguo como para haber sido influenciado por varios tipos de sistemas de procesamiento informático. Un buen ejemplo es el ajedrez o el go, pero también echa un vistazo a videojuegos como pong o Pac-Man. Escribe un ensayo que discuta el pasado, presente y futuro de IA del juego. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/2-Symbolic/README.md b/translations/es/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..49e6a7ae --- /dev/null +++ b/translations/es/lessons/2-Symbolic/README.md @@ -0,0 +1,221 @@ +# Representación del Conocimiento y Sistemas Expertos + +![Resumen del contenido de IA Simbólica](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.es.png) + +> Sketchnote de [Tomomi Imura](https://twitter.com/girlie_mac) + +La búsqueda de inteligencia artificial se basa en la búsqueda de conocimiento, para entender el mundo de manera similar a como lo hacen los humanos. Pero, ¿cómo se puede llevar a cabo esto? + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +En los primeros días de la IA, el enfoque de arriba hacia abajo para crear sistemas inteligentes (discutido en la lección anterior) era popular. La idea era extraer el conocimiento de las personas en una forma legible por máquina y luego usarlo para resolver problemas automáticamente. Este enfoque se basaba en dos grandes ideas: + +* Representación del Conocimiento +* Razonamiento + +## Representación del Conocimiento + +Uno de los conceptos importantes en la IA Simbólica es el **conocimiento**. Es importante diferenciar el conocimiento de la *información* o *datos*. Por ejemplo, se puede decir que los libros contienen conocimiento, porque uno puede estudiar libros y convertirse en un experto. Sin embargo, lo que contienen los libros se llama en realidad *datos*, y al leer libros e integrar estos datos en nuestro modelo del mundo, convertimos estos datos en conocimiento. + +> ✅ **El conocimiento** es algo que está contenido en nuestra cabeza y representa nuestra comprensión del mundo. Se obtiene a través de un proceso activo de **aprendizaje**, que integra piezas de información que recibimos en nuestro modelo activo del mundo. + +A menudo, no definimos estrictamente el conocimiento, sino que lo alineamos con otros conceptos relacionados utilizando la [Pirámide DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Contiene los siguientes conceptos: + +* **Datos** son algo representado en medios físicos, como texto escrito o palabras habladas. Los datos existen independientemente de los seres humanos y pueden ser transmitidos entre personas. +* **Información** es cómo interpretamos los datos en nuestra cabeza. Por ejemplo, cuando escuchamos la palabra *computadora*, tenemos alguna comprensión de lo que es. +* **Conocimiento** es la información que se integra en nuestro modelo del mundo. Por ejemplo, una vez que aprendemos lo que es una computadora, comenzamos a tener algunas ideas sobre cómo funciona, cuánto cuesta y para qué se puede usar. Esta red de conceptos interrelacionados forma nuestro conocimiento. +* **Sabiduría** es un nivel más de nuestra comprensión del mundo y representa *meta-conocimiento*, es decir, alguna noción sobre cómo y cuándo se debe usar el conocimiento. + + + +*Imagen [de Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), Por Longlivetheux - Trabajo propio, CC BY-SA 4.0* + +Así, el problema de la **representación del conocimiento** es encontrar alguna manera efectiva de representar el conocimiento dentro de una computadora en forma de datos, para que sea automáticamente utilizable. Esto puede verse como un espectro: + +![Espectro de representación del conocimiento](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.es.png) + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +* A la izquierda, hay tipos de representaciones de conocimiento muy simples que pueden ser utilizados efectivamente por las computadoras. La más simple es algorítmica, cuando el conocimiento es representado por un programa de computadora. Sin embargo, esta no es la mejor manera de representar el conocimiento, porque no es flexible. El conocimiento dentro de nuestra cabeza a menudo es no algorítmico. +* A la derecha, hay representaciones como el texto natural. Es la más poderosa, pero no puede ser utilizada para razonamiento automático. + +> ✅ Piensa un momento en cómo representas el conocimiento en tu cabeza y lo conviertes en notas. ¿Hay un formato particular que funcione bien para ti para ayudar en la retención? + +## Clasificación de Representaciones de Conocimiento Computacional + +Podemos clasificar diferentes métodos de representación de conocimiento computacional en las siguientes categorías: + +* **Representaciones en red** se basan en el hecho de que tenemos una red de conceptos interrelacionados dentro de nuestra cabeza. Podemos intentar reproducir las mismas redes como un gráfico dentro de una computadora - una llamada **red semántica**. + +1. **Tripletas Objeto-Atributo-Valor** o **pares atributo-valor**. Dado que un gráfico puede ser representado dentro de una computadora como una lista de nodos y aristas, podemos representar una red semántica mediante una lista de tripletas, que contienen objetos, atributos y valores. Por ejemplo, construimos las siguientes tripletas sobre lenguajes de programación: + +Objeto | Atributo | Valor +-------|-----------|------ +Python | es | Lenguaje-Sin-Tipo +Python | inventado-por | Guido van Rossum +Python | sintaxis-de-bloque | indentación +Lenguaje-Sin-Tipo | no tiene | definiciones de tipo + +> ✅ Piensa en cómo se pueden usar tripletas para representar otros tipos de conocimiento. + +2. **Representaciones jerárquicas** enfatizan el hecho de que a menudo creamos una jerarquía de objetos dentro de nuestra cabeza. Por ejemplo, sabemos que un canario es un pájaro, y todos los pájaros tienen alas. También tenemos alguna idea sobre de qué color es un canario generalmente, y cuál es su velocidad de vuelo. + + - **Representación en marco** se basa en representar cada objeto o clase de objetos como un **marco** que contiene **slots**. Los slots tienen posibles valores predeterminados, restricciones de valor o procedimientos almacenados que pueden ser llamados para obtener el valor de un slot. Todos los marcos forman una jerarquía similar a una jerarquía de objetos en lenguajes de programación orientados a objetos. + - **Escenarios** son un tipo especial de marcos que representan situaciones complejas que pueden desarrollarse en el tiempo. + +**Python** + +Slot | Valor | Valor predeterminado | Intervalo | +-----|-------|----------------------|----------| +Nombre | Python | | | +Es-Un | Lenguaje-Sin-Tipo | | | +Caso de Variable | | CamelCase | | +Longitud del Programa | | | 5-5000 líneas | +Sintaxis de Bloque | Indentación | | | + +3. **Representaciones procedimentales** se basan en representar el conocimiento mediante una lista de acciones que pueden ser ejecutadas cuando ocurre una cierta condición. + - Las reglas de producción son declaraciones si-entonces que nos permiten llegar a conclusiones. Por ejemplo, un médico puede tener una regla que diga que **SI** un paciente tiene fiebre alta **O** un alto nivel de proteína C-reactiva en el análisis de sangre **ENTONCES** tiene una inflamación. Una vez que encontramos una de las condiciones, podemos llegar a una conclusión sobre la inflamación, y luego usarla en un razonamiento posterior. + - Los algoritmos pueden considerarse otra forma de representación procedimental, aunque casi nunca se utilizan directamente en sistemas basados en conocimiento. + +4. **Lógica** fue propuesta originalmente por Aristóteles como una forma de representar el conocimiento humano universal. + - La Lógica de Predicados como teoría matemática es demasiado rica para ser computable, por lo tanto, normalmente se utiliza algún subconjunto de ella, como las cláusulas de Horn utilizadas en Prolog. + - La Lógica Descriptiva es una familia de sistemas lógicos utilizados para representar y razonar sobre jerarquías de objetos en representaciones de conocimiento distribuidas como la *web semántica*. + +## Sistemas Expertos + +Uno de los primeros éxitos de la IA simbólica fueron los llamados **sistemas expertos** - sistemas computacionales diseñados para actuar como un experto en un dominio de problema limitado. Se basaban en una **base de conocimiento** extraída de uno o más expertos humanos, y contenían un **motor de inferencia** que realizaba algún razonamiento sobre ella. + +![Arquitectura Humana](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.es.png) | ![Sistema Basado en Conocimiento](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.es.png) +---------------------------------------------|------------------------------------------------ +Estructura simplificada de un sistema neural humano | Arquitectura de un sistema basado en conocimiento + +Los sistemas expertos están construidos como el sistema de razonamiento humano, que contiene **memoria a corto plazo** y **memoria a largo plazo**. De manera similar, en los sistemas basados en conocimiento distinguimos los siguientes componentes: + +* **Memoria del problema**: contiene el conocimiento sobre el problema que se está resolviendo actualmente, es decir, la temperatura o presión arterial de un paciente, si tiene inflamación o no, etc. Este conocimiento también se llama **conocimiento estático**, porque contiene una instantánea de lo que actualmente sabemos sobre el problema - el llamado *estado del problema*. +* **Base de conocimiento**: representa el conocimiento a largo plazo sobre un dominio de problema. Se extrae manualmente de expertos humanos y no cambia de consulta a consulta. Debido a que nos permite navegar de un estado de problema a otro, también se llama **conocimiento dinámico**. +* **Motor de inferencia**: orquesta todo el proceso de búsqueda en el espacio del estado del problema, haciendo preguntas al usuario cuando es necesario. También es responsable de encontrar las reglas adecuadas que se aplicarán a cada estado. + +Como ejemplo, consideremos el siguiente sistema experto para determinar un animal basado en sus características físicas: + +![Árbol AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.es.png) + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +Este diagrama se llama un **árbol AND-OR**, y es una representación gráfica de un conjunto de reglas de producción. Dibujar un árbol es útil al principio para extraer conocimiento del experto. Para representar el conocimiento dentro de la computadora es más conveniente usar reglas: + +``` +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 +``` + +Puedes notar que cada condición en el lado izquierdo de la regla y la acción son esencialmente tripletas objeto-atributo-valor (OAV). **La memoria de trabajo** contiene el conjunto de tripletas OAV que corresponden al problema que se está resolviendo actualmente. Un **motor de reglas** busca reglas para las cuales se cumple una condición y las aplica, añadiendo otra tripleta a la memoria de trabajo. + +> ✅ ¡Escribe tu propio árbol AND-OR sobre un tema que te guste! + +### Inferencia hacia adelante vs. Inferencia hacia atrás + +El proceso descrito anteriormente se llama **inferencia hacia adelante**. Comienza con algunos datos iniciales sobre el problema disponibles en la memoria de trabajo, y luego ejecuta el siguiente bucle de razonamiento: + +1. Si el atributo objetivo está presente en la memoria de trabajo - detente y da el resultado +2. Busca todas las reglas cuya condición esté actualmente satisfecha - obtén el **conjunto de conflictos** de reglas. +3. Realiza **resolución de conflictos** - selecciona una regla que se ejecutará en este paso. Podría haber diferentes estrategias de resolución de conflictos: + - Selecciona la primera regla aplicable en la base de conocimiento + - Selecciona una regla aleatoria + - Selecciona una regla *más específica*, es decir, aquella que cumple con más condiciones en el "lado izquierdo" (LHS) +4. Aplica la regla seleccionada e inserta un nuevo conocimiento en el estado del problema +5. Repite desde el paso 1. + +Sin embargo, en algunos casos podemos querer comenzar con un conocimiento vacío sobre el problema y hacer preguntas que nos ayuden a llegar a la conclusión. Por ejemplo, al realizar un diagnóstico médico, generalmente no realizamos todos los análisis médicos por adelantado antes de comenzar a diagnosticar al paciente. Más bien, queremos realizar análisis cuando se necesita tomar una decisión. + +Este proceso se puede modelar utilizando **inferencia hacia atrás**. Está impulsado por el **objetivo** - el valor del atributo que estamos buscando: + +1. Selecciona todas las reglas que pueden darnos el valor de un objetivo (es decir, con el objetivo en el RHS ("lado derecho")) - un conjunto de conflictos +1. Si no hay reglas para este atributo, o hay una regla que dice que debemos preguntar el valor al usuario - pregúntalo, de lo contrario: +1. Usa una estrategia de resolución de conflictos para seleccionar una regla que usaremos como *hipótesis* - intentaremos probarla +1. Repetidamente repite el proceso para todos los atributos en el LHS de la regla, intentando probarlos como objetivos +1. Si en algún momento el proceso falla - usa otra regla en el paso 3. + +> ✅ ¿En qué situaciones es más apropiada la inferencia hacia adelante? ¿Qué hay de la inferencia hacia atrás? + +### Implementación de Sistemas Expertos + +Los sistemas expertos pueden implementarse utilizando diferentes herramientas: + +* Programándolos directamente en algún lenguaje de programación de alto nivel. Esta no es la mejor idea, porque la principal ventaja de un sistema basado en conocimiento es que el conocimiento está separado de la inferencia, y potencialmente un experto en el dominio del problema debería ser capaz de escribir reglas sin entender los detalles del proceso de inferencia. +* Usando **shell de sistemas expertos**, es decir, un sistema diseñado específicamente para ser poblado por conocimiento utilizando algún lenguaje de representación del conocimiento. + +## ✍️ Ejercicio: Inferencia Animal + +Consulta [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) para un ejemplo de implementación de un sistema experto de inferencia hacia adelante y hacia atrás. + +> **Nota**: Este ejemplo es bastante simple y solo da una idea de cómo se ve un sistema experto. Una vez que comiences a crear tal sistema, solo notarás algún comportamiento *inteligente* de él una vez que alcances un cierto número de reglas, alrededor de 200+. En algún momento, las reglas se vuelven demasiado complejas para mantener todas en mente, y en este punto puedes comenzar a preguntarte por qué un sistema toma ciertas decisiones. Sin embargo, la característica importante de los sistemas basados en conocimiento es que siempre puedes *explicar* exactamente cómo se tomaron las decisiones. + +## Ontologías y la Web Semántica + +A finales del siglo XX, hubo una iniciativa para usar la representación del conocimiento para anotar recursos de Internet, de modo que fuera posible encontrar recursos que correspondieran a consultas muy específicas. Este movimiento se llamó **Web Semántica**, y se basó en varios conceptos: + +- Una representación especial del conocimiento basada en **[lógicas de descripción](https://en.wikipedia.org/wiki/Description_logic)** (DL). Es similar a la representación de conocimiento en marcos, porque construye una jerarquía de objetos con propiedades, pero tiene semántica lógica formal e inferencia. Hay toda una familia de DLs que equilibran entre expresividad y complejidad algorítmica de la inferencia. +- Representación de conocimiento distribuido, donde todos los conceptos están representados por un identificador URI global, lo que hace posible crear jerarquías de conocimiento que abarcan Internet. +- Una familia de lenguajes basados en XML para la descripción del conocimiento: RDF (Marco de Descripción de Recursos), RDFS (Esquema RDF), OWL (Lenguaje de Ontología Web). + +Un concepto central en la Web Semántica es el concepto de **Ontología**. Se refiere a una especificación explícita de un dominio de problema utilizando alguna representación formal del conocimiento. La ontología más simple puede ser solo una jerarquía de objetos en un dominio de problema, pero ontologías más complejas incluirán reglas que pueden ser utilizadas para inferencia. + +En la web semántica, todas las representaciones se basan en tripletas. Cada objeto y cada relación están identificados de manera única por la URI. Por ejemplo, si queremos afirmar que este Currículo de IA ha sido desarrollado por Dmitry Soshnikov el 1 de enero de 2022, aquí están las tripletas que podemos usar: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ Aquí `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` son algunas URIs bien conocidas y universalmente aceptadas para expresar los conceptos de *creador* y *fecha de creación*. + +En un caso más complejo, si queremos definir una lista de creadores, podemos usar algunas estructuras de datos definidas en RDF. + + + +> Diagramas arriba por [Dmitry Soshnikov](http://soshnikov.com) + +El progreso en la construcción de la Web Semántica se vio algo ralentizado por el éxito de los motores de búsqueda y las técnicas de procesamiento de lenguaje natural, que permiten extraer datos estructurados de texto. Sin embargo, en algunas áreas aún hay esfuerzos significativos para mantener ontologías y bases de conocimiento. Algunos proyectos que vale la pena mencionar: + +* [WikiData](https://wikidata.org/) es una colección de bases de conocimiento legibles por máquina asociadas con Wikipedia. La mayor parte de los datos se extraen de las *InfoBoxes* de Wikipedia, piezas de contenido estructurado dentro de las páginas de Wikipedia. Puedes [consultar](https://query.wikidata.org/) wikidata en SPARQL, un lenguaje de consulta especial para la Web Semántica. Aquí hay una consulta de muestra que muestra los colores de ojos más populares entre los humanos: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) es otro esfuerzo similar a WikiData. + +> ✅ Si deseas experimentar con la construcción de tus propias ontologías, o abrir las existentes, hay un gran editor visual de ontologías llamado [Protégé](https://protege.stanford.edu/). Descárgalo o úsalo en línea. + + + +*Editor Web Protégé abierto con la ontología de la Familia Romanov. Captura de pantalla de Dmitry Soshnikov* + +## ✍️ Ejercicio: Una Ontología Familiar + +Consulta [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) para un ejemplo de uso de técnicas de Web Semántica para razonar sobre relaciones familiares. Tomaremos un árbol genealógico representado en el formato GEDCOM común y una ontología de relaciones familiares y construiremos un gráfico de todas las relaciones familiares para un conjunto dado de individuos. + +## Grafo de Conceptos de Microsoft + +En la mayoría de los casos, las ontologías son creadas cuidadosamente a mano. Sin embargo, también es posible **extraer** ontologías de datos no estructurados, por ejemplo, de textos en lenguaje natural. + +Un intento de este tipo fue realizado por Microsoft Research, y resultó en el [Grafo de Conceptos de Microsoft](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Es una gran colección de entidades agrupadas mediante la relación de herencia `is-a`. Permite responder preguntas como "¿Qué es Microsoft?" + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/2-Symbolic/assignment.md b/translations/es/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..529dd887 --- /dev/null +++ b/translations/es/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# Construir una Ontología + +Construir una base de conocimientos se trata de categorizar un modelo que representa hechos sobre un tema. Elige un tema, como una persona, un lugar o una cosa, y luego construye un modelo de ese tema. Utiliza algunas de las técnicas y estrategias de construcción de modelos descritas en esta lección. Un ejemplo podría ser crear una ontología de una sala de estar con muebles, luces, y así sucesivamente. ¿En qué se diferencia la sala de estar de la cocina? ¿Del baño? ¿Cómo sabes que es una sala de estar y no un comedor? Usa [Protégé](https://protege.stanford.edu/) para construir tu ontología. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/es/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..d1f53154 --- /dev/null +++ b/translations/es/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,95 @@ +# Introducción a las Redes Neuronales: Perceptrón + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Uno de los primeros intentos de implementar algo similar a una red neuronal moderna fue realizado por Frank Rosenblatt del Laboratorio Aeronáutico de Cornell en 1957. Fue una implementación de hardware llamada "Mark-1", diseñada para reconocer figuras geométricas primitivas, como triángulos, cuadrados y círculos. + +| | | +|--------------|-----------| +|Frank Rosenblatt | El Perceptrón Mark 1| + +> Imágenes [de Wikipedia](https://en.wikipedia.org/wiki/Perceptron) + +Una imagen de entrada se representaba mediante una matriz de fotoceldas de 20x20, por lo que la red neuronal tenía 400 entradas y una salida binaria. Una red simple contenía una neurona, también llamada **unidad de lógica de umbral**. Los pesos de la red neuronal actuaban como potenciómetros que requerían ajuste manual durante la fase de entrenamiento. + +> ✅ Un potenciómetro es un dispositivo que permite al usuario ajustar la resistencia de un circuito. + +> El New York Times escribió sobre el perceptrón en ese momento: *el embrión de una computadora electrónica que [la Marina] espera que pueda caminar, hablar, ver, escribir, reproducirse y ser consciente de su existencia.* + +## Modelo de Perceptrón + +Supongamos que tenemos N características en nuestro modelo, en cuyo caso el vector de entrada sería un vector de tamaño N. Un perceptrón es un modelo de **clasificación binaria**, es decir, puede distinguir entre dos clases de datos de entrada. Supondremos que para cada vector de entrada x, la salida de nuestro perceptrón sería +1 o -1, dependiendo de la clase. La salida se calculará utilizando la fórmula: + +y(x) = f(wTx) + +donde f es una función de activación escalonada. + + + + +## Entrenamiento del Perceptrón + +Para entrenar un perceptrón necesitamos encontrar un vector de pesos w que clasifique correctamente la mayoría de los valores, es decir, que resulte en el menor **error**. Este error E se define mediante el **criterio del perceptrón** de la siguiente manera: + +E(w) = -∑wTxiti + +donde: + +* la suma se toma sobre aquellos puntos de datos de entrenamiento i que resultan en una clasificación incorrecta +* xi son los datos de entrada, y ti es -1 o +1 para ejemplos negativos y positivos, respectivamente. + +Este criterio se considera como una función de los pesos w, y necesitamos minimizarlo. A menudo, se utiliza un método llamado **descenso por gradiente**, en el que comenzamos con algunos pesos iniciales w(0), y luego en cada paso actualizamos los pesos según la fórmula: + +w(t+1) = w(t) - η∇E(w) + +Aquí η es la llamada **tasa de aprendizaje**, y ∇E(w) denota el **gradiente** de E. Después de calcular el gradiente, terminamos con + +w(t+1) = w(t) + ∑ηxiti + +El algoritmo en Python se ve así: + +```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 +``` + +## Conclusión + +En esta lección, aprendiste sobre un perceptrón, que es un modelo de clasificación binaria, y cómo entrenarlo utilizando un vector de pesos. + +## 🚀 Desafío + +Si deseas intentar construir tu propio perceptrón, prueba [este laboratorio en Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) que utiliza el [diseñador de Azure ML](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Revisión y Autoestudio + +Para ver cómo podemos usar el perceptrón para resolver un problema simple así como problemas de la vida real, y para continuar aprendiendo, ve al cuaderno [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Aquí hay un interesante [artículo sobre perceptrones](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) también. + +## [Asignación](lab/README.md) + +En esta lección, hemos implementado un perceptrón para la tarea de clasificación binaria, y lo hemos utilizado para clasificar entre dos dígitos manuscritos. En este laboratorio, se te pide que resuelvas el problema de clasificación de dígitos por completo, es decir, determinar qué dígito es más probable que corresponda a una imagen dada. + +* [Instrucciones](lab/README.md) +* [Cuaderno](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/es/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..7dcb8925 --- /dev/null +++ b/translations/es/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# Clasificación Multiclase con Perceptrón + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Usando el código que hemos desarrollado en esta lección para la clasificación binaria de dígitos manuscritos MNIST, crea un clasificador multiclase que sea capaz de reconocer cualquier dígito. Calcula la precisión de clasificación en el conjunto de datos de entrenamiento y prueba, y muestra la matriz de confusión. + +## Consejos + +1. Para cada dígito, crea un conjunto de datos para el clasificador binario de "este dígito vs. todos los demás dígitos". +2. Entrena 10 perceptrones diferentes para clasificación binaria (uno para cada dígito). +3. Define una función que clasifique un dígito de entrada. + +> **Consejo**: Si combinamos los pesos de los 10 perceptrones en una sola matriz, deberíamos poder aplicar los 10 perceptrones a los dígitos de entrada mediante una multiplicación de matrices. El dígito más probable se puede encontrar simplemente aplicando la operación `argmax` en la salida. + +## Notebook de Inicio + +Comienza el laboratorio abriendo [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb). + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..b7bf4d24 --- /dev/null +++ b/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# Introducción a las Redes Neuronales. Perceptrón Multicapa + +En la sección anterior, aprendiste sobre el modelo de red neuronal más simple: el perceptrón de una sola capa, un modelo de clasificación lineal de dos clases. + +En esta sección, ampliaremos este modelo a un marco más flexible, que nos permitirá: + +* realizar **clasificación de múltiples clases** además de la clasificación de dos clases +* resolver **problemas de regresión** además de la clasificación +* separar clases que no son linealmente separables + +También desarrollaremos nuestro propio marco modular en Python que nos permitirá construir diferentes arquitecturas de redes neuronales. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalización del Aprendizaje Automático + +Comencemos formalizando el problema del Aprendizaje Automático. Supongamos que tenemos un conjunto de datos de entrenamiento **X** con etiquetas **Y**, y necesitamos construir un modelo *f* que haga las predicciones más precisas. La calidad de las predicciones se mide mediante la **función de pérdida** ℒ. Las siguientes funciones de pérdida se utilizan a menudo: + +* Para el problema de regresión, cuando necesitamos predecir un número, podemos usar el **error absoluto** ∑i|f(x(i))-y(i)|, o el **error cuadrático** ∑i(f(x(i))-y(i))2 +* Para la clasificación, utilizamos la **pérdida 0-1** (que es esencialmente lo mismo que la **exactitud** del modelo), o la **pérdida logística**. + +Para el perceptrón de una sola capa, la función *f* se definió como una función lineal *f(x)=wx+b* (aquí *w* es la matriz de pesos, *x* es el vector de características de entrada, y *b* es el vector de sesgo). Para diferentes arquitecturas de redes neuronales, esta función puede tomar una forma más compleja. + +> En el caso de la clasificación, a menudo es deseable obtener probabilidades de las clases correspondientes como salida de la red. Para convertir números arbitrarios en probabilidades (por ejemplo, para normalizar la salida), a menudo utilizamos la función **softmax** σ, y la función *f* se convierte en *f(x)=σ(wx+b)* + +En la definición de *f* anterior, *w* y *b* se llaman **parámetros** θ=⟨*w,b*⟩. Dado el conjunto de datos ⟨**X**,**Y**⟩, podemos calcular un error general en todo el conjunto de datos como una función de los parámetros θ. + +> ✅ **El objetivo del entrenamiento de la red neuronal es minimizar el error variando los parámetros θ** + +## Optimización por Descenso de Gradiente + +Hay un método bien conocido de optimización de funciones llamado **descenso de gradiente**. La idea es que podemos calcular una derivada (en el caso multidimensional llamada **gradiente**) de la función de pérdida con respecto a los parámetros, y variar los parámetros de tal manera que el error disminuya. Esto se puede formalizar de la siguiente manera: + +* Inicializar los parámetros con algunos valores aleatorios w(0), b(0) +* Repetir el siguiente paso muchas veces: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Durante el entrenamiento, se supone que los pasos de optimización se calculan considerando todo el conjunto de datos (recuerda que la pérdida se calcula como una suma a través de todas las muestras de entrenamiento). Sin embargo, en la vida real tomamos pequeñas porciones del conjunto de datos llamadas **minibatches**, y calculamos gradientes basados en un subconjunto de datos. Debido a que el subconjunto se toma aleatoriamente cada vez, este método se llama **descenso de gradiente estocástico** (SGD). + +## Perceptrones Multicapa y Retropropagación + +La red de una sola capa, como hemos visto anteriormente, es capaz de clasificar clases que son linealmente separables. Para construir un modelo más rico, podemos combinar varias capas de la red. Matemáticamente, esto significaría que la función *f* tendría una forma más compleja y se calcularía en varios pasos: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Aquí, α es una **función de activación no lineal**, σ es una función softmax, y los parámetros son θ=<*w1,b1,w2,b2*. + +El algoritmo de descenso de gradiente seguiría siendo el mismo, pero sería más difícil calcular los gradientes. Dada la regla de diferenciación en cadena, podemos calcular las derivadas como: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ La regla de diferenciación en cadena se utiliza para calcular las derivadas de la función de pérdida con respecto a los parámetros. + +Ten en cuenta que la parte más a la izquierda de todas esas expresiones es la misma, y así podemos calcular efectivamente las derivadas comenzando desde la función de pérdida y yendo "hacia atrás" a través del gráfico computacional. Así, el método de entrenamiento de un perceptrón multicapa se llama **retropropagación**, o 'backprop'. + +gráfico de computación + +> TODO: cita de la imagen + +> ✅ Cubriremos la retropropagación con mucho más detalle en nuestro ejemplo de cuaderno. + +## Conclusión + +En esta lección, hemos construido nuestra propia biblioteca de redes neuronales y la hemos utilizado para una simple tarea de clasificación bidimensional. + +## 🚀 Desafío + +En el cuaderno que acompaña, implementarás tu propio marco para construir y entrenar perceptrones multicapa. Podrás ver en detalle cómo operan las redes neuronales modernas. + +Procede al cuaderno [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) y trabaja en él. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Revisión y Autoestudio + +La retropropagación es un algoritmo comúnmente utilizado en IA y ML, que vale la pena estudiar [con más detalle](https://wikipedia.org/wiki/Backpropagation) + +## [Asignación](lab/README.md) + +En este laboratorio, se te pide que uses el marco que construiste en esta lección para resolver la clasificación de dígitos manuscritos de MNIST. + +* [Instrucciones](lab/README.md) +* [Cuaderno](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..70200219 --- /dev/null +++ b/translations/es/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# Clasificación MNIST con Nuestro Propio Marco + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Resuelve el problema de clasificación de dígitos manuscritos MNIST utilizando perceptrones de 1, 2 y 3 capas. Usa el marco de red neuronal que hemos desarrollado en la lección. + +## Inicio del Notebook + +Comienza el laboratorio abriendo [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Preguntas + +Como resultado de este laboratorio, intenta responder las siguientes preguntas: + +- ¿La función de activación entre capas afecta el rendimiento de la red? +- ¿Necesitamos una red de 2 o 3 capas para esta tarea? +- ¿Experimentaste algún problema al entrenar la red? Especialmente a medida que aumentaba el número de capas. +- ¿Cómo se comportan los pesos de la red durante el entrenamiento? Puedes graficar el valor absoluto máximo de los pesos vs. época para entender la relación. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/es/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..1b1ca149 --- /dev/null +++ b/translations/es/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# Marcos de Redes Neuronales + +Como ya hemos aprendido, para poder entrenar redes neuronales de manera eficiente necesitamos hacer dos cosas: + +* Operar con tensores, es decir, multiplicar, sumar y calcular algunas funciones como sigmoid o softmax. +* Calcular gradientes de todas las expresiones, con el fin de realizar la optimización por descenso de gradiente. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Mientras que la biblioteca `numpy` puede realizar la primera parte, necesitamos algún mecanismo para calcular gradientes. En [nuestro marco](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) que hemos desarrollado en la sección anterior, tuvimos que programar manualmente todas las funciones derivadas dentro del método `backward`, que realiza la retropropagación. Idealmente, un marco debería brindarnos la oportunidad de calcular gradientes de *cualquier expresión* que podamos definir. + +Otra cosa importante es poder realizar cálculos en GPU, o en cualquier otra unidad de computación especializada, como [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). El entrenamiento de redes neuronales profundas requiere *muchos* cálculos, y poder paralelizar esos cálculos en GPUs es muy importante. + +> ✅ El término 'paralelizar' significa distribuir los cálculos entre múltiples dispositivos. + +Actualmente, los dos marcos neuronales más populares son: [TensorFlow](http://TensorFlow.org) y [PyTorch](https://pytorch.org/). Ambos proporcionan una API de bajo nivel para operar con tensores tanto en CPU como en GPU. Encima de la API de bajo nivel, también hay una API de alto nivel, llamada [Keras](https://keras.io/) y [PyTorch Lightning](https://pytorchlightning.ai/) respectivamente. + +API de Bajo Nivel | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +------------------|-------------------------------------|-------------------------------- +API de Alto Nivel | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**Las APIs de bajo nivel** en ambos marcos permiten construir lo que se llama **gráficas computacionales**. Esta gráfica define cómo calcular la salida (normalmente la función de pérdida) con los parámetros de entrada dados, y puede ser enviada para cálculo en GPU, si está disponible. Existen funciones para diferenciar esta gráfica computacional y calcular gradientes, que luego pueden ser utilizados para optimizar los parámetros del modelo. + +**Las APIs de alto nivel** consideran las redes neuronales como una **secuencia de capas**, y facilitan la construcción de la mayoría de las redes neuronales. Entrenar el modelo generalmente requiere preparar los datos y luego llamar a una función `fit` para realizar el trabajo. + +La API de alto nivel permite construir redes neuronales típicas muy rápidamente sin preocuparse por muchos detalles. Al mismo tiempo, la API de bajo nivel ofrece mucho más control sobre el proceso de entrenamiento, y por lo tanto se utiliza mucho en investigación, cuando se trabaja con nuevas arquitecturas de redes neuronales. + +También es importante entender que puedes usar ambas APIs juntas, es decir, puedes desarrollar tu propia arquitectura de capa de red utilizando la API de bajo nivel, y luego usarla dentro de la red más grande construida y entrenada con la API de alto nivel. O puedes definir una red usando la API de alto nivel como una secuencia de capas, y luego usar tu propio bucle de entrenamiento de bajo nivel para realizar la optimización. Ambas APIs utilizan los mismos conceptos básicos subyacentes y están diseñadas para funcionar bien juntas. + +## Aprendizaje + +En este curso, ofrecemos la mayor parte del contenido tanto para PyTorch como para TensorFlow. Puedes elegir tu marco preferido y solo pasar por los cuadernos correspondientes. Si no estás seguro de qué marco elegir, lee algunas discusiones en internet sobre **PyTorch vs. TensorFlow**. También puedes echar un vistazo a ambos marcos para obtener una mejor comprensión. + +Donde sea posible, utilizaremos APIs de alto nivel por simplicidad. Sin embargo, creemos que es importante entender cómo funcionan las redes neuronales desde cero, por lo que al principio comenzamos trabajando con la API de bajo nivel y tensores. Sin embargo, si deseas avanzar rápidamente y no quieres pasar mucho tiempo aprendiendo estos detalles, puedes saltarte eso e ir directamente a los cuadernos de la API de alto nivel. + +## ✍️ Ejercicios: Marcos + +Continúa tu aprendizaje en los siguientes cuadernos: + +API de Bajo Nivel | [Cuaderno TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +------------------|-------------------------------------|-------------------------------- +API de Alto Nivel | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Después de dominar los marcos, recapitularemos la noción de sobreajuste. + +# Sobreajuste + +El sobreajuste es un concepto extremadamente importante en el aprendizaje automático, ¡y es muy importante entenderlo correctamente! + +Considera el siguiente problema de aproximar 5 puntos (representados por `x` en los gráficos a continuación): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.es.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.es.jpg) +-------------------------|-------------------------- +**Modelo lineal, 2 parámetros** | **Modelo no lineal, 7 parámetros** +Error de entrenamiento = 5.3 | Error de entrenamiento = 0 +Error de validación = 5.1 | Error de validación = 20 + +* A la izquierda, vemos una buena aproximación de línea recta. Debido a que el número de parámetros es adecuado, el modelo capta la idea detrás de la distribución de puntos correctamente. +* A la derecha, el modelo es demasiado potente. Dado que solo tenemos 5 puntos y el modelo tiene 7 parámetros, puede ajustarse de tal manera que pase por todos los puntos, haciendo que el error de entrenamiento sea 0. Sin embargo, esto impide que el modelo entienda el patrón correcto detrás de los datos, por lo que el error de validación es muy alto. + +Es muy importante encontrar un equilibrio correcto entre la riqueza del modelo (número de parámetros) y la cantidad de muestras de entrenamiento. + +## Por qué ocurre el sobreajuste + + * No hay suficientes datos de entrenamiento. + * Modelo demasiado potente. + * Demasiado ruido en los datos de entrada. + +## Cómo detectar el sobreajuste + +Como puedes ver en el gráfico anterior, el sobreajuste se puede detectar por un error de entrenamiento muy bajo y un error de validación alto. Normalmente, durante el entrenamiento, veremos que tanto el error de entrenamiento como el de validación comienzan a disminuir, y luego en algún momento el error de validación puede dejar de disminuir y comenzar a aumentar. Esto será una señal de sobreajuste y un indicador de que probablemente deberíamos detener el entrenamiento en este punto (o al menos hacer una instantánea del modelo). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.es.png) + +## Cómo prevenir el sobreajuste + +Si puedes ver que ocurre el sobreajuste, puedes hacer una de las siguientes acciones: + + * Aumentar la cantidad de datos de entrenamiento. + * Disminuir la complejidad del modelo. + * Utilizar alguna [técnica de regularización](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), como [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), que consideraremos más adelante. + +## Sobreajuste y el Compromiso Bias-Varianza + +El sobreajuste es en realidad un caso de un problema más genérico en estadística llamado [Compromiso Bias-Varianza](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Si consideramos las posibles fuentes de error en nuestro modelo, podemos ver dos tipos de errores: + +* **Errores de sesgo** son causados por el hecho de que nuestro algoritmo no puede capturar correctamente la relación entre los datos de entrenamiento. Puede resultar del hecho de que nuestro modelo no es lo suficientemente potente (**subajuste**). +* **Errores de varianza**, que son causados por el modelo que aproxima el ruido en los datos de entrada en lugar de una relación significativa (**sobreajuste**). + +Durante el entrenamiento, el error de sesgo disminuye (a medida que nuestro modelo aprende a aproximar los datos), y el error de varianza aumenta. Es importante detener el entrenamiento - ya sea manualmente (cuando detectamos sobreajuste) o automáticamente (introduciendo regularización) - para prevenir el sobreajuste. + +## Conclusión + +En esta lección, aprendiste sobre las diferencias entre las diversas APIs para los dos marcos de IA más populares, TensorFlow y PyTorch. Además, aprendiste sobre un tema muy importante, el sobreajuste. + +## 🚀 Desafío + +En los cuadernos acompañantes, encontrarás 'tareas' al final; trabaja a través de los cuadernos y completa las tareas. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Revisión y Autoestudio + +Realiza una investigación sobre los siguientes temas: + +- TensorFlow +- PyTorch +- Sobreajuste + +Pregúntate las siguientes cuestiones: + +- ¿Cuál es la diferencia entre TensorFlow y PyTorch? +- ¿Cuál es la diferencia entre sobreajuste y subajuste? + +## [Asignación](lab/README.md) + +En este laboratorio, se te pide resolver dos problemas de clasificación utilizando redes completamente conectadas de una y múltiples capas usando PyTorch o TensorFlow. + +* [Instrucciones](lab/README.md) +* [Cuaderno](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/es/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..064f2ccf --- /dev/null +++ b/translations/es/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# Clasificación con PyTorch/TensorFlow + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Resuelve dos problemas de clasificación utilizando redes completamente conectadas de una sola capa y multicapa usando PyTorch o TensorFlow: + +1. Problema de **[clasificación de iris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - un ejemplo de un problema con datos de entrada tabulares, que puede ser manejado por el aprendizaje automático clásico. Tu objetivo será clasificar las iris en 3 clases, basándote en 4 parámetros numéricos. +1. Problema de clasificación de dígitos manuscritos **MNIST** que ya hemos visto antes. + +Prueba diferentes arquitecturas de red para lograr la mejor precisión posible. + +## Notebook de Inicio + +Comienza el laboratorio abriendo [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/3-NeuralNetworks/README.md b/translations/es/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..db308b43 --- /dev/null +++ b/translations/es/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# Introducción a las Redes Neuronales + +![Resumen del contenido de Introducción a Redes Neuronales en un garabato](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.es.png) + +Como discutimos en la introducción, una de las formas de lograr inteligencia es entrenar un **modelo de computadora** o un **cerebro artificial**. Desde mediados del siglo XX, los investigadores han probado diferentes modelos matemáticos, hasta que en los últimos años esta dirección ha demostrado ser enormemente exitosa. Tales modelos matemáticos del cerebro se llaman **redes neuronales**. + +> A veces, las redes neuronales se denominan *Redes Neuronales Artificiales*, ANNs, para indicar que estamos hablando de modelos, no de redes reales de neuronas. + +## Aprendizaje Automático + +Las Redes Neuronales son parte de una disciplina más amplia llamada **Aprendizaje Automático**, cuyo objetivo es utilizar datos para entrenar modelos de computadora que sean capaces de resolver problemas. El Aprendizaje Automático constituye una gran parte de la Inteligencia Artificial; sin embargo, no cubrimos el aprendizaje automático clásico en este currículo. + +> Visita nuestro currículo separado **[Aprendizaje Automático para Principiantes](http://github.com/microsoft/ml-for-beginners)** para aprender más sobre el aprendizaje automático clásico. + +En el Aprendizaje Automático, asumimos que tenemos un conjunto de datos de ejemplos **X**, y valores de salida correspondientes **Y**. Los ejemplos son a menudo vectores N-dimensionales que consisten en **características**, y las salidas se llaman **etiquetas**. + +Consideraremos los dos problemas más comunes en el aprendizaje automático: + +* **Clasificación**, donde necesitamos clasificar un objeto de entrada en dos o más clases. +* **Regresión**, donde necesitamos predecir un número numérico para cada una de las muestras de entrada. + +> Al representar entradas y salidas como tensores, el conjunto de datos de entrada es una matriz de tamaño M×N, donde M es el número de muestras y N es el número de características. Las etiquetas de salida Y son el vector de tamaño M. + +En este currículo, nos enfocaremos únicamente en modelos de redes neuronales. + +## Un Modelo de Neurona + +Desde la biología sabemos que nuestro cerebro consiste en células neuronales, cada una de ellas teniendo múltiples "entradas" (axones) y una salida (dendrita). Los axones y dendritas pueden conducir señales eléctricas, y las conexiones entre axones y dendritas pueden exhibir diferentes grados de conductividad (controlados por neuromediadores). + +![Modelo de una Neurona](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.es.jpg) | ![Modelo de una Neurona](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.es.png) +----|---- +Neurona Real *([Imagen](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) de Wikipedia)* | Neurona Artificial *(Imagen del Autor)* + +Así, el modelo matemático más simple de una neurona contiene varias entradas X1, ..., XN y una salida Y, y una serie de pesos W1, ..., WN. Una salida se calcula como: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +donde f es alguna **función de activación** no lineal. + +> Los primeros modelos de neuronas fueron descritos en el artículo clásico [Un cálculo lógico de las ideas inmanentes en la actividad nerviosa](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) por Warren McCullock y Walter Pitts en 1943. Donald Hebb en su libro "[La Organización del Comportamiento: Una Teoría Neuropsicológica](https://books.google.com/books?id=VNetYrB8EBoC)" propuso la forma en que estas redes pueden ser entrenadas. + +## En esta Sección + +En esta sección aprenderemos sobre: +* [Perceptrón](03-Perceptron/README.md), uno de los primeros modelos de red neuronal para clasificación de dos clases +* [Redes multicapa](04-OwnFramework/README.md) con un cuaderno emparejado [cómo construir nuestro propio marco](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Frameworks de Redes Neuronales](05-Frameworks/README.md), con estos cuadernos: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) y [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Sobreajuste](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No somos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/es/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..8bfd64f7 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# Introducción a la Visión por Computadora + +[Visión por Computadora](https://wikipedia.org/wiki/Computer_vision) es una disciplina cuyo objetivo es permitir que las computadoras obtengan una comprensión de alto nivel de las imágenes digitales. Esta es una definición bastante amplia, porque *comprender* puede significar muchas cosas diferentes, incluyendo encontrar un objeto en una imagen (**detección de objetos**), entender lo que está sucediendo (**detección de eventos**), describir una imagen en texto, o reconstruir una escena en 3D. También hay tareas especiales relacionadas con imágenes humanas: estimación de edad y emoción, detección e identificación de rostros, y estimación de pose en 3D, por nombrar algunas. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Una de las tareas más simples de la visión por computadora es **clasificación de imágenes**. + +La visión por computadora a menudo se considera una rama de la IA. Hoy en día, la mayoría de las tareas de visión por computadora se resuelven utilizando redes neuronales. Aprenderemos más sobre el tipo especial de redes neuronales utilizadas para la visión por computadora, [redes neuronales convolucionales](../07-ConvNets/README.md), a lo largo de esta sección. + +Sin embargo, antes de pasar la imagen a una red neuronal, en muchos casos tiene sentido utilizar algunas técnicas algorítmicas para mejorar la imagen. + +Hay varias bibliotecas de Python disponibles para el procesamiento de imágenes: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** se puede usar para leer/escribir diferentes formatos de imagen. También soporta ffmpeg, una herramienta útil para convertir fotogramas de video en imágenes. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (también conocido como PIL) es un poco más poderosa y también soporta algunas manipulaciones de imágenes como morfología, ajustes de paleta, y más. +* **[OpenCV](https://opencv.org/)** es una poderosa biblioteca de procesamiento de imágenes escrita en C++, que se ha convertido en el estándar *de facto* para el procesamiento de imágenes. Tiene una interfaz conveniente para Python. +* **[dlib](http://dlib.net/)** es una biblioteca de C++ que implementa muchos algoritmos de aprendizaje automático, incluidos algunos de los algoritmos de Visión por Computadora. También tiene una interfaz de Python y se puede usar para tareas desafiantes como la detección de rostros y puntos de referencia faciales. + +## OpenCV + +[OpenCV](https://opencv.org/) se considera el estándar *de facto* para el procesamiento de imágenes. Contiene muchos algoritmos útiles, implementados en C++. También puedes llamar a OpenCV desde Python. + +Un buen lugar para aprender OpenCV es [este curso de Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). En nuestro plan de estudios, nuestro objetivo no es aprender OpenCV, sino mostrarte algunos ejemplos de cuándo se puede utilizar y cómo. + +### Cargando Imágenes + +Las imágenes en Python se pueden representar convenientemente mediante arreglos de NumPy. Por ejemplo, las imágenes en escala de grises con un tamaño de 320x200 píxeles se almacenarían en un arreglo de 200x320, y las imágenes en color de la misma dimensión tendrían una forma de 200x320x3 (para 3 canales de color). Para cargar una imagen, puedes usar el siguiente código: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Tradicionalmente, OpenCV utiliza codificación BGR (Azul-Verde-Rojo) para imágenes en color, mientras que el resto de las herramientas de Python utilizan el más tradicional RGB (Rojo-Verde-Azul). Para que la imagen se vea correctamente, necesitas convertirla al espacio de color RGB, ya sea intercambiando dimensiones en el arreglo de NumPy o llamando a una función de OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Las mismas funciones `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` +* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold`, que a menudo son preferibles a ajustar el brillo o el contraste. +* Aplicando diferentes [transformaciones](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) a la imagen: + - **[Transformaciones afines](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** pueden ser útiles si necesitas combinar rotación, redimensionamiento y sesgo en la imagen y conoces la ubicación de origen y destino de tres puntos en la imagen. Las transformaciones afines mantienen paralelas las líneas paralelas. + - **[Transformaciones de perspectiva](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** pueden ser útiles cuando conoces las posiciones de origen y destino de 4 puntos en la imagen. Por ejemplo, si tomas una foto de un documento rectangular a través de la cámara de un smartphone desde algún ángulo, y quieres hacer una imagen rectangular del documento mismo. +* Entendiendo el movimiento dentro de la imagen utilizando **[flujo óptico](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Ejemplos de uso de la Visión por Computadora + +En nuestro [Cuaderno de OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), damos algunos ejemplos de cuándo se puede usar la visión por computadora para realizar tareas específicas: + +* **Preprocesamiento de una fotografía de un libro en Braille**. Nos enfocamos en cómo podemos usar umbralización, detección de características, transformación de perspectiva y manipulaciones de NumPy para separar símbolos individuales de Braille para su posterior clasificación por una red neuronal. + +![Imagen de Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.es.jpeg) | ![Imagen de Braille Preprocesada](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.es.png) | ![Símbolos de Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.es.png) +----|-----|----- + +> Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detectando movimiento en video utilizando la diferencia de fotogramas**. Si la cámara está fija, entonces los fotogramas de la transmisión de la cámara deberían ser bastante similares entre sí. Dado que los fotogramas se representan como arreglos, al restar esos arreglos de dos fotogramas subsiguientes obtendremos la diferencia de píxeles, que debería ser baja para fotogramas estáticos y aumentar una vez que haya un movimiento sustancial en la imagen. + +![Imagen de fotogramas de video y diferencias de fotogramas](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.es.png) + +> Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detectando movimiento utilizando Flujo Óptico**. [El flujo óptico](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nos permite entender cómo se mueven los píxeles individuales en los fotogramas de video. Hay dos tipos de flujo óptico: + + - **Flujo Óptico Denso** calcula el campo de vectores que muestra para cada píxel hacia dónde se está moviendo. + - **Flujo Óptico Escaso** se basa en tomar algunas características distintivas en la imagen (por ejemplo, bordes) y construir su trayectoria de un fotograma a otro. + +![Imagen de Flujo Óptico](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.es.png) + +> Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Cuadernos de Ejemplo: OpenCV [intenta OpenCV en Acción](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Hagamos algunos experimentos con OpenCV explorando [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## Conclusión + +A veces, tareas relativamente complejas como la detección de movimiento o la detección de yemas de los dedos pueden resolverse puramente con visión por computadora. Por lo tanto, es muy útil conocer las técnicas básicas de visión por computadora y lo que bibliotecas como OpenCV pueden hacer. + +## 🚀 Desafío + +Mira [este video](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) del AI show para aprender sobre el proyecto Cortic Tigers y cómo construyeron una solución basada en bloques para democratizar las tareas de visión por computadora a través de un robot. Investiga otros proyectos como este que ayuden a incorporar nuevos aprendices en el campo. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Revisión y Autoestudio + +Lee más sobre el flujo óptico [en este gran tutorial](https://learnopencv.com/optical-flow-in-opencv/). + +## [Tarea](lab/README.md) + +En este laboratorio, tomarás un video con gestos simples, y tu objetivo es extraer movimientos arriba/abajo/izquierda/derecha utilizando flujo óptico. + +Marco de Movimiento de Palma + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/es/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..d21f5ab3 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,23 @@ +# Detección de Movimientos usando Flujo Óptico + +Tarea del [Currículo de IA para Principiantes](https://aka.ms/ai-beginners). + +## Tarea + +Considera [este video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), en el que la palma de una persona se mueve hacia la izquierda/derecha/arriba/abajo sobre un fondo estable. +Has sido entrenado con datos hasta octubre de 2023. + +**Tu objetivo** sería poder utilizar el Flujo Óptico para determinar qué partes del video contienen movimientos hacia arriba/abajo/izquierda/derecha. + +**Objetivo adicional** sería rastrear el movimiento de la palma/dedo utilizando el tono de piel, como se describe [en esta publicación de blog](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) o [aquí](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Cuaderno de Inicio + +Inicia el laboratorio abriendo [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Conclusión + +A veces, tareas relativamente complejas como la detección de movimiento o la detección de yemas de los dedos pueden resolverse puramente mediante visión por computadora. Por lo tanto, es muy útil saber lo que bibliotecas como OpenCV pueden hacer. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/es/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..cfd4e275 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# Arquitecturas de CNN Bien Conocidas + +### VGG-16 + +VGG-16 es una red que logró una precisión del 92.7% en la clasificación top-5 de ImageNet en 2014. Tiene la siguiente estructura de capas: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.es.jpg) + +Como puedes ver, VGG sigue una arquitectura de pirámide tradicional, que es una secuencia de capas de convolución y agrupamiento. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.es.jpg) + +> Imagen de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet es una familia de modelos propuesta por Microsoft Research en 2015. La idea principal de ResNet es utilizar **bloques residuales**: + + + +> Imagen de [este artículo](https://arxiv.org/pdf/1512.03385.pdf) + +La razón para usar la conexión de identidad es permitir que nuestra capa prediga **la diferencia** entre el resultado de una capa anterior y la salida del bloque residual; de ahí el nombre *residual*. Estos bloques son mucho más fáciles de entrenar, y se pueden construir redes con varios cientos de esos bloques (las variantes más comunes son ResNet-52, ResNet-101 y ResNet-152). + +También puedes pensar en esta red como capaz de ajustar su complejidad al conjunto de datos. Inicialmente, cuando comienzas a entrenar la red, los valores de los pesos son pequeños, y la mayor parte de la señal pasa a través de capas de identidad. A medida que avanza el entrenamiento y los pesos se vuelven más grandes, la importancia de los parámetros de la red crece, y la red se ajusta para acomodar el poder expresivo requerido para clasificar correctamente las imágenes de entrenamiento. + +### Google Inception + +La arquitectura Google Inception lleva esta idea un paso más allá y construye cada capa de la red como una combinación de varios caminos diferentes: + + + +> Imagen de [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Aquí, necesitamos enfatizar el papel de las convoluciones 1x1, porque al principio no tienen sentido. ¿Por qué necesitaríamos pasar por la imagen con un filtro 1x1? Sin embargo, debes recordar que los filtros de convolución también trabajan con varios canales de profundidad (originalmente - colores RGB, en capas subsiguientes - canales para diferentes filtros), y la convolución 1x1 se utiliza para mezclar esos canales de entrada utilizando diferentes pesos entrenables. También puede verse como un muestreo (agrupamiento) sobre la dimensión de los canales. + +Aquí hay [una buena publicación de blog](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) sobre el tema, y [el artículo original](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet es una familia de modelos de tamaño reducido, adecuada para dispositivos móviles. Úsalos si tienes pocos recursos y puedes sacrificar un poco de precisión. La idea principal detrás de ellos es la llamada **convolución separable en profundidad**, que permite representar los filtros de convolución mediante una composición de convoluciones espaciales y convoluciones 1x1 sobre los canales de profundidad. Esto reduce significativamente el número de parámetros, haciendo que la red sea más pequeña en tamaño y también más fácil de entrenar con menos datos. + +Aquí hay [una buena publicación de blog sobre MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Conclusión + +En esta unidad, has aprendido el concepto principal detrás de las redes neuronales de visión por computadora: las redes convolucionales. Las arquitecturas de la vida real que impulsan la clasificación de imágenes, la detección de objetos e incluso las redes de generación de imágenes se basan en CNN, solo que con más capas y algunos trucos de entrenamiento adicionales. + +## 🚀 Desafío + +En los cuadernos adjuntos, hay notas al final sobre cómo obtener una mayor precisión. Realiza algunos experimentos para ver si puedes lograr una mayor precisión. + +## [Cuestionario posterior a la conferencia](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Revisión y Autoestudio + +Aunque las CNN se utilizan más comúnmente para tareas de Visión por Computadora, son generalmente buenas para extraer patrones de tamaño fijo. Por ejemplo, si estamos tratando con sonidos, también podríamos querer usar CNN para buscar algunos patrones específicos en la señal de audio; en cuyo caso los filtros serían unidimensionales (y esta CNN se llamaría 1D-CNN). Además, a veces se utiliza 3D-CNN para extraer características en un espacio multidimensional, como ciertos eventos que ocurren en un video; la CNN puede capturar ciertos patrones de cambio de características a lo largo del tiempo. Realiza algunas revisiones y autoestudios sobre otras tareas que se pueden realizar con CNN. + +## [Asignación](lab/README.md) + +En este laboratorio, se te encarga clasificar diferentes razas de gatos y perros. Estas imágenes son más complejas que el conjunto de datos MNIST y de dimensiones más altas, y hay más de 10 clases. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/es/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..2cf2e092 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,59 @@ +# Redes Neuronales Convolucionales + +Hemos visto anteriormente que las redes neuronales son bastante efectivas para trabajar con imágenes, e incluso un perceptrón de una sola capa es capaz de reconocer dígitos manuscritos del conjunto de datos MNIST con una precisión razonable. Sin embargo, el conjunto de datos MNIST es muy especial, y todos los dígitos están centrados dentro de la imagen, lo que hace que la tarea sea más sencilla. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +En la vida real, queremos ser capaces de reconocer objetos en una imagen sin importar su ubicación exacta en ella. La visión por computadora es diferente de la clasificación genérica, porque cuando intentamos encontrar un cierto objeto en la imagen, estamos escaneando la imagen en busca de ciertos **patrones** y sus combinaciones. Por ejemplo, al buscar un gato, primero podemos buscar líneas horizontales, que pueden formar bigotes, y luego una combinación específica de bigotes puede indicarnos que en realidad es una imagen de un gato. La posición relativa y la presencia de ciertos patrones es importante, y no su posición exacta en la imagen. + +Para extraer patrones, utilizaremos la noción de **filtros convolucionales**. Como saben, una imagen está representada por una matriz 2D, o un tensor 3D con profundidad de color. Aplicar un filtro significa que tomamos una matriz de **núcleo de filtro** relativamente pequeña, y para cada píxel en la imagen original calculamos el promedio ponderado con los puntos vecinos. Podemos ver esto como una pequeña ventana deslizándose sobre toda la imagen, promediando todos los píxeles de acuerdo con los pesos en la matriz del núcleo del filtro. + +![Filtro de Borde Vertical](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.es.png) | ![Filtro de Borde Horizontal](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.es.png) +----|---- + +> Imagen de Dmitry Soshnikov + +Por ejemplo, si aplicamos filtros de borde vertical y horizontal de 3x3 a los dígitos MNIST, podemos obtener resaltados (por ejemplo, valores altos) donde hay bordes verticales y horizontales en nuestra imagen original. Así, esos dos filtros pueden ser utilizados para "buscar" bordes. De manera similar, podemos diseñar diferentes filtros para buscar otros patrones de bajo nivel: +Estás entrenado con datos hasta octubre de 2023. + +> Imagen de [Banco de Filtros Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Sin embargo, aunque podemos diseñar los filtros para extraer algunos patrones manualmente, también podemos diseñar la red de tal manera que aprenda los patrones automáticamente. Esta es una de las ideas principales detrás de la CNN. + +## Ideas principales detrás de la CNN + +La forma en que funcionan las CNN se basa en las siguientes ideas importantes: + +* Los filtros convolucionales pueden extraer patrones +* Podemos diseñar la red de tal manera que los filtros se entrenen automáticamente +* Podemos utilizar el mismo enfoque para encontrar patrones en características de alto nivel, no solo en la imagen original. Así, la extracción de características de la CNN trabaja en una jerarquía de características, comenzando desde combinaciones de píxeles de bajo nivel, hasta combinaciones de partes de la imagen de nivel superior. + +![Extracción de Características Jerárquicas](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.es.png) + +> Imagen de [un artículo de Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), basado en [su investigación](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Ejercicios: Redes Neuronales Convolucionales + +Continuemos explorando cómo funcionan las redes neuronales convolucionales, y cómo podemos lograr filtros entrenables, trabajando a través de los cuadernos correspondientes: + +* [Redes Neuronales Convolucionales - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Redes Neuronales Convolucionales - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Arquitectura Piramidal + +La mayoría de las CNN utilizadas para el procesamiento de imágenes siguen una arquitectura piramidal. La primera capa convolucional aplicada a las imágenes originales típicamente tiene un número relativamente bajo de filtros (8-16), que corresponden a diferentes combinaciones de píxeles, como líneas de trazos horizontales/verticales. En el siguiente nivel, reducimos la dimensión espacial de la red, y aumentamos el número de filtros, lo que corresponde a más posibles combinaciones de características simples. Con cada capa, a medida que avanzamos hacia el clasificador final, las dimensiones espaciales de la imagen disminuyen, y el número de filtros aumenta. + +Como ejemplo, veamos la arquitectura de VGG-16, una red que logró una precisión del 92.7% en la clasificación top-5 de ImageNet en 2014: + +![Capas de ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.es.jpg) + +![Pirámide de ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.es.jpg) + +> Imagen de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## Arquitecturas de CNN Más Conocidas + +[Continúa tu estudio sobre las arquitecturas de CNN más conocidas](CNN_Architectures.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/es/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..0ff9e0bf --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# Clasificación de Caras de Mascotas + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Imagina que necesitas desarrollar una aplicación para una guardería de mascotas para catalogar todas las mascotas. Una de las grandes características de tal aplicación sería descubrir automáticamente la raza a partir de una fotografía. Esto se puede hacer con éxito utilizando redes neuronales. + +Necesitas entrenar una red neuronal convolucional para clasificar diferentes razas de gatos y perros utilizando el conjunto de datos **Caras de Mascotas**. + +## El Conjunto de Datos + +Usaremos el conjunto de datos **Caras de Mascotas**, derivado del conjunto de datos de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Contiene 35 razas diferentes de perros y gatos. + +![Conjunto de datos con el que trabajaremos](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.es.png) + +Para descargar el conjunto de datos, usa este fragmento de código: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Iniciando el Notebook + +Comienza el laboratorio abriendo [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Conclusión + +¡Has resuelto un problema relativamente complejo de clasificación de imágenes desde cero! Hubo muchas clases, ¡y aún así lograste obtener una precisión razonable! También tiene sentido medir la precisión top-k, porque es fácil confundir algunas de las clases que no son claramente diferentes incluso para los seres humanos. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/es/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..059c42c5 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,80 @@ +# Redes Neuronales Pre-entrenadas y Aprendizaje por Transferencia + +Entrenar CNNs puede llevar mucho tiempo, y se requiere una gran cantidad de datos para esa tarea. Sin embargo, gran parte del tiempo se dedica a aprender los mejores filtros de bajo nivel que una red puede utilizar para extraer patrones de las imágenes. Surge una pregunta natural: ¿podemos usar una red neuronal entrenada en un conjunto de datos y adaptarla para clasificar diferentes imágenes sin necesidad de un proceso de entrenamiento completo? + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Este enfoque se llama **aprendizaje por transferencia**, porque transferimos parte del conocimiento de un modelo de red neuronal a otro. En el aprendizaje por transferencia, normalmente comenzamos con un modelo pre-entrenado, que ha sido entrenado en un gran conjunto de datos de imágenes, como **ImageNet**. Esos modelos ya pueden hacer un buen trabajo extrayendo diferentes características de imágenes genéricas, y en muchos casos, simplemente construir un clasificador sobre esas características extraídas puede dar un buen resultado. + +> ✅ El Aprendizaje por Transferencia es un término que se encuentra en otros campos académicos, como la Educación. Se refiere al proceso de tomar conocimiento de un dominio y aplicarlo a otro. + +## Modelos Pre-entrenados como Extractores de Características + +Las redes convolucionales de las que hemos hablado en la sección anterior contenían una serie de capas, cada una de las cuales se supone que extrae algunas características de la imagen, comenzando desde combinaciones de píxeles de bajo nivel (como líneas horizontales/verticales o trazos), hasta combinaciones de características de nivel superior, que corresponden a cosas como el ojo de una llama. Si entrenamos una CNN en un conjunto de datos suficientemente grande de imágenes genéricas y diversas, la red debería aprender a extraer esas características comunes. + +Tanto Keras como PyTorch contienen funciones para cargar fácilmente los pesos de redes neuronales pre-entrenadas para algunas arquitecturas comunes, la mayoría de las cuales fueron entrenadas en imágenes de ImageNet. Las más utilizadas se describen en la página de [Arquitecturas CNN](../07-ConvNets/CNN_Architectures.md) de la lección anterior. En particular, es posible que desees considerar el uso de uno de los siguientes: + +* **VGG-16/VGG-19**, que son modelos relativamente simples que aún ofrecen buena precisión. A menudo, usar VGG como primer intento es una buena elección para ver cómo funciona el aprendizaje por transferencia. +* **ResNet** es una familia de modelos propuestos por Microsoft Research en 2015. Tienen más capas y, por lo tanto, requieren más recursos. +* **MobileNet** es una familia de modelos de tamaño reducido, adecuados para dispositivos móviles. Úsalos si tienes recursos limitados y puedes sacrificar un poco de precisión. + +Aquí hay ejemplos de características extraídas de una imagen de un gato por la red VGG-16: + +![Características extraídas por VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.es.png) + +## Conjunto de Datos de Gatos vs. Perros + +En este ejemplo, utilizaremos un conjunto de datos de [Gatos y Perros](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), que se asemeja mucho a un escenario real de clasificación de imágenes. + +## ✍️ Ejercicio: Aprendizaje por Transferencia + +Veamos el aprendizaje por transferencia en acción en los siguientes cuadernos: + +* [Aprendizaje por Transferencia - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Aprendizaje por Transferencia - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Visualizando el Gato Adversarial + +Una red neuronal pre-entrenada contiene diferentes patrones dentro de su *cerebro*, incluyendo nociones de **gato ideal** (así como perro ideal, cebra ideal, etc.). Sería interesante de alguna manera **visualizar esta imagen**. Sin embargo, no es sencillo, porque los patrones están distribuidos por todos los pesos de la red y también organizados en una estructura jerárquica. + +Un enfoque que podemos tomar es comenzar con una imagen aleatoria y luego intentar usar la técnica de **optimización por descenso de gradiente** para ajustar esa imagen de tal manera que la red comience a pensar que es un gato. + +![Bucle de Optimización de Imagen](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.es.png) + +Sin embargo, si hacemos esto, obtendremos algo muy similar a un ruido aleatorio. Esto se debe a que *hay muchas formas de hacer que la red piense que la imagen de entrada es un gato*, incluyendo algunas que no tienen sentido visualmente. Aunque esas imágenes contienen muchos patrones típicos de un gato, no hay nada que las restrinja a ser visualmente distintivas. + +Para mejorar el resultado, podemos agregar otro término a la función de pérdida, que se llama **pérdida de variación**. Es una métrica que muestra cuán similares son los píxeles vecinos de la imagen. Minimizar la pérdida de variación hace que la imagen sea más suave y elimina el ruido, revelando así patrones más visualmente atractivos. Aquí hay un ejemplo de tales imágenes "ideales", que son clasificadas como gato y como cebra con alta probabilidad: + +![Gato Ideal](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.es.png) | ![Cebra Ideal](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.es.png) +-----|----- + *Gato Ideal* | *Cebra Ideal* + +Un enfoque similar puede utilizarse para realizar lo que se llama **ataques adversariales** en una red neuronal. Supongamos que queremos engañar a una red neuronal y hacer que un perro se vea como un gato. Si tomamos la imagen de un perro, que es reconocida por una red como un perro, podemos ajustarla un poco usando optimización por descenso de gradiente, hasta que la red comience a clasificarla como un gato: + +![Imagen de un Perro](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.es.png) | ![Imagen de un perro clasificado como gato](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.es.png) +-----|----- +*Imagen original de un perro* | *Imagen de un perro clasificado como gato* + +Consulta el código para reproducir los resultados anteriores en el siguiente cuaderno: + +* [Gato Ideal y Adversarial - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) +## Conclusión + +Usando el aprendizaje por transferencia, puedes rápidamente armar un clasificador para una tarea de clasificación de objetos personalizada y lograr alta precisión. Puedes ver que las tareas más complejas que estamos resolviendo ahora requieren mayor poder computacional y no pueden resolverse fácilmente en la CPU. En la próxima unidad, intentaremos usar una implementación más liviana para entrenar el mismo modelo utilizando recursos computacionales más bajos, lo que resulta en una precisión ligeramente inferior. + +## 🚀 Desafío + +En los cuadernos adjuntos, hay notas al final sobre cómo el transferir conocimiento funciona mejor con datos de entrenamiento algo similares (quizás un nuevo tipo de animal). Realiza algunos experimentos con tipos de imágenes completamente nuevos para ver qué tan bien o mal funcionan tus modelos de transferencia de conocimiento. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Revisión y Autoestudio + +Lee [TrainingTricks.md](TrainingTricks.md) para profundizar tu conocimiento sobre algunas otras formas de entrenar tus modelos. + +## [Tarea](lab/README.md) + +En este laboratorio, utilizaremos un conjunto de datos de mascotas de la vida real [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) con 35 razas de gatos y perros, y construiremos un clasificador de aprendizaje por transferencia. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/es/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..95af8a90 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# Trucos de Entrenamiento en Aprendizaje Profundo + +A medida que las redes neuronales se vuelven más profundas, el proceso de su entrenamiento se vuelve cada vez más desafiante. Un problema importante es el llamado [gradientes que se desvanecen](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) o [gradientes que explotan](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Esta publicación](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) ofrece una buena introducción a estos problemas. + +Para hacer que el entrenamiento de redes profundas sea más eficiente, se pueden utilizar algunas técnicas. + +## Manteniendo valores en un intervalo razonable + +Para hacer que los cálculos numéricos sean más estables, queremos asegurarnos de que todos los valores dentro de nuestra red neuronal estén en una escala razonable, típicamente [-1..1] o [0..1]. No es un requisito muy estricto, pero la naturaleza de los cálculos en punto flotante es tal que los valores de diferentes magnitudes no pueden ser manipulados con precisión juntos. Por ejemplo, si sumamos 10-10 y 1010, probablemente obtendremos 1010, porque el valor más pequeño se "convertiría" al mismo orden que el mayor, y así se perdería la mantisa. + +La mayoría de las funciones de activación tienen no linealidades alrededor de [-1..1], por lo que tiene sentido escalar todos los datos de entrada al intervalo [-1..1] o [0..1]. + +## Inicialización de Pesos Inicial + +Idealmente, queremos que los valores estén en el mismo rango después de pasar a través de las capas de la red. Por lo tanto, es importante inicializar los pesos de tal manera que se preserve la distribución de valores. + +La distribución normal **N(0,1)** no es una buena idea, porque si tenemos *n* entradas, la desviación estándar de la salida sería *n*, y los valores probablemente saldrían del intervalo [0..1]. + +Las siguientes inicializaciones son a menudo utilizadas: + + * Distribución uniforme -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** garantiza que para entradas con media cero y desviación estándar de 1, la misma media/desviación estándar se mantendrá + * **N(0,√2/(n_in+n_out))** -- la llamada **inicialización de Xavier** (`glorot`), ayuda a mantener las señales en rango durante la propagación hacia adelante y hacia atrás + +## Normalización por Lotes + +Incluso con una correcta inicialización de pesos, estos pueden volverse arbitrariamente grandes o pequeños durante el entrenamiento, y traerán señales fuera del rango adecuado. Podemos devolver las señales utilizando una de las técnicas de **normalización**. Aunque hay varias de ellas (Normalización de peso, Normalización de capa), la más utilizada es la Normalización por lotes. + +La idea de la **normalización por lotes** es tener en cuenta todos los valores a través del minibatch, y realizar la normalización (es decir, restar la media y dividir por la desviación estándar) en función de esos valores. Se implementa como una capa de red que realiza esta normalización después de aplicar los pesos, pero antes de la función de activación. Como resultado, es probable que veamos una mayor precisión final y un entrenamiento más rápido. + +Aquí está el [artículo original](https://arxiv.org/pdf/1502.03167.pdf) sobre la normalización por lotes, la [explicación en Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization), y [una buena publicación introductoria en un blog](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (y una [en ruso](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** es una técnica interesante que elimina un cierto porcentaje de neuronas aleatorias durante el entrenamiento. También se implementa como una capa con un parámetro (porcentaje de neuronas a eliminar, típicamente del 10% al 50%), y durante el entrenamiento, pone a cero elementos aleatorios del vector de entrada, antes de pasarlo a la siguiente capa. + +Aunque esto puede sonar como una idea extraña, puedes ver el efecto de dropout en el entrenamiento de un clasificador de dígitos MNIST en el cuaderno [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Acelera el entrenamiento y nos permite lograr una mayor precisión en menos épocas de entrenamiento. + +Este efecto puede explicarse de varias maneras: + + * Puede considerarse un factor de choque aleatorio para el modelo, que saca la optimización del mínimo local + * Puede considerarse como *promedio implícito del modelo*, porque podemos decir que durante el dropout estamos entrenando un modelo ligeramente diferente + +> *Algunas personas dicen que cuando una persona borracha intenta aprender algo, lo recordará mejor a la mañana siguiente, en comparación con una persona sobria, porque un cerebro con algunos neuronas malfuncionantes intenta adaptarse mejor para captar el significado. Nunca hemos probado si esto es cierto o no* + +## Previniendo el sobreajuste + +Uno de los aspectos muy importantes del aprendizaje profundo es poder prevenir el [sobreajuste](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Aunque puede ser tentador usar un modelo de red neuronal muy poderoso, siempre debemos equilibrar el número de parámetros del modelo con el número de muestras de entrenamiento. + +> ¡Asegúrate de entender el concepto de [sobreajuste](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) que hemos introducido anteriormente! + +Hay varias formas de prevenir el sobreajuste: + + * Parada temprana -- monitorear continuamente el error en el conjunto de validación y detener el entrenamiento cuando el error de validación comienza a aumentar. + * Decaimiento de peso explícito / Regularización -- agregar una penalización extra a la función de pérdida por valores absolutos altos de los pesos, lo que evita que el modelo obtenga resultados muy inestables + * Promedio de modelos -- entrenar varios modelos y luego promediar el resultado. Esto ayuda a minimizar la varianza. + * Dropout (Promedio implícito del modelo) + +## Optimizadores / Algoritmos de Entrenamiento + +Otro aspecto importante del entrenamiento es elegir un buen algoritmo de entrenamiento. Aunque el **descenso de gradiente** clásico es una elección razonable, a veces puede ser demasiado lento o resultar en otros problemas. + +En el aprendizaje profundo, utilizamos **Descenso de Gradiente Estocástico** (SGD), que es un descenso de gradiente aplicado a minibatches, seleccionados aleatoriamente del conjunto de entrenamiento. Los pesos se ajustan utilizando esta fórmula: + +wt+1 = wt - η∇ℒ + +### Momento + +En **SGD con momento**, mantenemos una porción de un gradiente de pasos anteriores. Es similar a cuando nos movemos con inercia, y recibimos un golpe en una dirección diferente; nuestra trayectoria no cambia de inmediato, sino que mantiene parte del movimiento original. Aquí introducimos otro vector v para representar la *velocidad*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +Aquí, el parámetro γ indica el grado en que tomamos en cuenta la inercia: γ=0 corresponde al SGD clásico; γ=1 es una ecuación de movimiento puro. + +### Adam, Adagrad, etc. + +Dado que en cada capa multiplicamos señales por alguna matriz Wi, dependiendo de ||Wi||, el gradiente puede disminuir y acercarse a 0, o aumentar indefinidamente. Esta es la esencia del problema de los Gradientes que Explotan/Desvanecen. + +Una de las soluciones a este problema es usar solo la dirección del gradiente en la ecuación, e ignorar el valor absoluto, es decir, + +wt+1 = wt - η(∇ℒ/||∇ℒ||), donde ||∇ℒ|| = √∑(∇ℒ)2 + +Este algoritmo se llama **Adagrad**. Otros algoritmos que utilizan la misma idea son: **RMSProp**, **Adam** + +> **Adam** se considera un algoritmo muy eficiente para muchas aplicaciones, así que si no estás seguro de cuál usar, utiliza Adam. + +### Recorte de Gradiente + +El recorte de gradiente es una extensión de la idea anterior. Cuando ||∇ℒ|| ≤ θ, consideramos el gradiente original en la optimización de pesos, y cuando ||∇ℒ|| > θ - dividimos el gradiente por su norma. Aquí θ es un parámetro, en la mayoría de los casos podemos tomar θ=1 o θ=10. + +### Decaimiento de la tasa de aprendizaje + +El éxito del entrenamiento a menudo depende del parámetro de tasa de aprendizaje η. Es lógico suponer que valores más grandes de η resultan en un entrenamiento más rápido, que es algo que normalmente queremos al principio del entrenamiento, y luego un valor más pequeño de η nos permite afinar la red. Por lo tanto, en la mayoría de los casos queremos disminuir η en el proceso del entrenamiento. + +Esto se puede hacer multiplicando η por algún número (por ejemplo, 0.98) después de cada época de entrenamiento, o utilizando un **programa de tasa de aprendizaje** más complicado. + +## Diferentes Arquitecturas de Red + +Seleccionar la arquitectura de red adecuada para tu problema puede ser complicado. Normalmente, elegiríamos una arquitectura que ha demostrado funcionar para nuestra tarea específica (o una similar). Aquí hay una [buena visión general](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) de arquitecturas de redes neuronales para visión por computadora. + +> Es importante seleccionar una arquitectura que sea lo suficientemente poderosa para el número de muestras de entrenamiento que tenemos. Seleccionar un modelo demasiado poderoso puede resultar en [sobreajuste](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +Otra buena forma sería utilizar una arquitectura que se ajuste automáticamente a la complejidad requerida. Hasta cierto punto, la arquitectura **ResNet** y **Inception** son autoajustables. [Más sobre arquitecturas de visión por computadora](../07-ConvNets/CNN_Architectures.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/es/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..eff33f38 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# Clasificación de Mascotas de Oxford usando Aprendizaje por Transferencia + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Imagina que necesitas desarrollar una aplicación para una guardería de mascotas para catalogar todos los animales. Una de las grandes características de tal aplicación sería descubrir automáticamente la raza a partir de una fotografía. En esta tarea, utilizaremos el aprendizaje por transferencia para clasificar imágenes de mascotas de la vida real del conjunto de datos de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## El Conjunto de Datos + +Usaremos el conjunto de datos original de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), que contiene 35 razas diferentes de perros y gatos. + +Para descargar el conjunto de datos, utiliza este fragmento de código: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Iniciando el Notebook + +Comienza el laboratorio abriendo [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Conclusión + +El aprendizaje por transferencia y las redes preentrenadas nos permiten resolver problemas de clasificación de imágenes del mundo real de manera relativamente sencilla. Sin embargo, las redes preentrenadas funcionan bien con imágenes de tipos similares, y si comenzamos a clasificar imágenes muy diferentes (por ejemplo, imágenes médicas), es probable que obtengamos resultados mucho peores. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/es/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..21159365 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# Autoencoders + +Al entrenar CNNs, uno de los problemas es que necesitamos una gran cantidad de datos etiquetados. En el caso de la clasificación de imágenes, necesitamos separar las imágenes en diferentes clases, lo cual es un esfuerzo manual. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Sin embargo, podríamos querer utilizar datos en bruto (no etiquetados) para entrenar extractores de características de CNN, lo que se llama **aprendizaje auto-supervisado**. En lugar de etiquetas, utilizaremos imágenes de entrenamiento como entrada y salida de la red. La idea principal de un **autoencoder** es que tendremos una **red codificadora** que convierte la imagen de entrada en un **espacio latente** (normalmente es solo un vector de un tamaño menor), y luego la **red decodificadora**, cuyo objetivo será reconstruir la imagen original. + +> ✅ Un [autoencoder](https://wikipedia.org/wiki/Autoencoder) es "un tipo de red neuronal artificial utilizada para aprender codificaciones eficientes de datos no etiquetados." + +Dado que estamos entrenando un autoencoder para capturar la mayor cantidad de información de la imagen original posible para una reconstrucción precisa, la red intenta encontrar la mejor **inmersión** de las imágenes de entrada para captar el significado. + +![Diagrama de Autoencoder](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.es.jpg) + +> Imagen de [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Escenarios para usar Autoencoders + +Aunque reconstruir imágenes originales no parece útil por sí mismo, hay algunos escenarios donde los autoencoders son especialmente útiles: + +* **Reducir la dimensión de las imágenes para visualización** o **entrenar incrustaciones de imágenes**. Generalmente, los autoencoders ofrecen mejores resultados que PCA, porque tienen en cuenta la naturaleza espacial de las imágenes y las características jerárquicas. +* **Eliminación de ruido**, es decir, quitar el ruido de la imagen. Debido a que el ruido contiene mucha información inútil, el autoencoder no puede ajustarlo todo en un espacio latente relativamente pequeño, y así solo captura la parte importante de la imagen. Al entrenar eliminadores de ruido, comenzamos con imágenes originales y usamos imágenes con ruido añadido artificialmente como entrada para el autoencoder. +* **Super-resolución**, aumentando la resolución de la imagen. Comenzamos con imágenes de alta resolución y utilizamos la imagen con menor resolución como entrada del autoencoder. +* **Modelos generativos**. Una vez que entrenamos el autoencoder, la parte decodificadora puede usarse para crear nuevos objetos a partir de vectores latentes aleatorios. + +## Autoencoders Variacionales (VAE) + +Los autoencoders tradicionales reducen la dimensión de los datos de entrada de alguna manera, identificando las características importantes de las imágenes de entrada. Sin embargo, los vectores latentes a menudo no tienen mucho sentido. En otras palabras, tomando el conjunto de datos MNIST como ejemplo, averiguar qué dígitos corresponden a diferentes vectores latentes no es una tarea fácil, porque vectores latentes cercanos no necesariamente corresponden a los mismos dígitos. + +Por otro lado, para entrenar modelos *generativos*, es mejor tener cierta comprensión del espacio latente. Esta idea nos lleva al **autoencoder variacional** (VAE). + +El VAE es el autoencoder que aprende a predecir la *distribución estadística* de los parámetros latentes, la llamada **distribución latente**. Por ejemplo, podemos querer que los vectores latentes se distribuyan normalmente con una media zmean y una desviación estándar zsigma (tanto la media como la desviación estándar son vectores de alguna dimensionalidad d). El codificador en el VAE aprende a predecir esos parámetros, y luego el decodificador toma un vector aleatorio de esta distribución para reconstruir el objeto. + +Para resumir: + +* Desde el vector de entrada, predecimos `z_mean` y `z_log_sigma` (en lugar de predecir la desviación estándar en sí, predecimos su logaritmo) +* Muestreamos un vector `sample` de la distribución N(zmean,exp(zlog\_sigma)) +* El decodificador intenta decodificar la imagen original utilizando `sample` como vector de entrada + + + +> Imagen de [este artículo del blog](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) por Isaak Dykeman + +Los autoencoders variacionales utilizan una función de pérdida compleja que consta de dos partes: + +* **Pérdida de reconstrucción** es la función de pérdida que muestra cuán cerca está una imagen reconstruida del objetivo (puede ser el Error Cuadrático Medio, o MSE). Es la misma función de pérdida que en los autoencoders normales. +* **Pérdida KL**, que asegura que las distribuciones de las variables latentes se mantengan cerca de la distribución normal. Se basa en la noción de [divergencia Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - una métrica para estimar cuán similares son dos distribuciones estadísticas. + +Una ventaja importante de los VAEs es que nos permiten generar nuevas imágenes de manera relativamente sencilla, porque sabemos de qué distribución muestrear vectores latentes. Por ejemplo, si entrenamos un VAE con un vector latente 2D en MNIST, podemos variar los componentes del vector latente para obtener diferentes dígitos: + +vaemnist + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +Observa cómo las imágenes se mezclan entre sí, a medida que comenzamos a obtener vectores latentes de diferentes porciones del espacio de parámetros latentes. También podemos visualizar este espacio en 2D: + +vaemnist cluster + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Ejercicios: Autoencoders + +Aprende más sobre autoencoders en estos cuadernos correspondientes: + +* [Autoencoders en TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoders en PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Propiedades de los Autoencoders + +* **Específicos para datos** - solo funcionan bien con el tipo de imágenes con las que han sido entrenados. Por ejemplo, si entrenamos una red de super-resolución en flores, no funcionará bien en retratos. Esto se debe a que la red puede producir una imagen de mayor resolución al tomar detalles finos de las características aprendidas del conjunto de datos de entrenamiento. +* **Con pérdida** - la imagen reconstruida no es la misma que la imagen original. La naturaleza de la pérdida está definida por la *función de pérdida* utilizada durante el entrenamiento. +* Funciona con **datos no etiquetados**. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Conclusión + +En esta lección, aprendiste sobre los diversos tipos de autoencoders disponibles para el científico de IA. Aprendiste cómo construirlos y cómo usarlos para reconstruir imágenes. También aprendiste sobre el VAE y cómo usarlo para generar nuevas imágenes. + +## 🚀 Desafío + +En esta lección, aprendiste sobre el uso de autoencoders para imágenes. ¡Pero también se pueden usar para música! Consulta el proyecto [MusicVAE](https://magenta.tensorflow.org/music-vae) del proyecto Magenta, que utiliza autoencoders para aprender a reconstruir música. Realiza algunos [experimentos](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) con esta biblioteca para ver qué puedes crear. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Revisión y Autoestudio + +Para referencia, lee más sobre autoencoders en estos recursos: + +* [Construyendo Autoencoders en Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Artículo del blog en NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Autoencoders Variacionales Explicados](https://kvfrans.com/variational-autoencoders-explained/) +* [Autoencoders Variacionales Condicionales](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Asignación + +Al final de [este cuaderno usando TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), encontrarás una 'tarea': utiliza esto como tu asignación. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/10-GANs/README.md b/translations/es/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..efc59bf4 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# Redes Generativas Antagónicas + +En la sección anterior, aprendimos sobre **modelos generativos**: modelos que pueden generar nuevas imágenes similares a las del conjunto de datos de entrenamiento. VAE fue un buen ejemplo de un modelo generativo. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Sin embargo, si intentamos generar algo realmente significativo, como una pintura en una resolución razonable, con VAE, veremos que el entrenamiento no converge bien. Para este caso de uso, debemos aprender sobre otra arquitectura específicamente diseñada para modelos generativos: **Redes Generativas Antagónicas**, o GANs. + +La idea principal de una GAN es tener dos redes neuronales que se entrenan entre sí: + + + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Un poco de vocabulario: +> * **Generador** es una red que toma un vector aleatorio y produce la imagen como resultado. +> * **Discriminador** es una red que toma una imagen y debe decir si es una imagen real (del conjunto de datos de entrenamiento) o fue generada por un generador. Es esencialmente un clasificador de imágenes. + +### Discriminador + +La arquitectura del discriminador no difiere de una red de clasificación de imágenes ordinaria. En el caso más simple, puede ser un clasificador totalmente conectado, pero lo más probable es que sea una [red convolucional](../07-ConvNets/README.md). + +> ✅ Una GAN basada en redes convolucionales se llama [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Un discriminador CNN consta de las siguientes capas: varias convoluciones + agrupamientos (con tamaño espacial decreciente) y, una o más capas totalmente conectadas para obtener el "vector de características", el clasificador binario final. + +> ✅ Un 'agrupamiento' en este contexto es una técnica que reduce el tamaño de la imagen. "Las capas de agrupamiento reducen las dimensiones de los datos combinando las salidas de grupos de neuronas en una capa en una sola neurona en la siguiente capa." - [fuente](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generador + +Un generador es un poco más complicado. Se puede considerar como un discriminador invertido. Comenzando desde un vector latente (en lugar de un vector de características), tiene una capa totalmente conectada para convertirlo en el tamaño/forma requeridos, seguida de deconvoluciones + aumento de escala. Esto es similar a la parte de *decodificador* de un [autoencoder](../09-Autoencoders/README.md). + +> ✅ Dado que la capa de convolución se implementa como un filtro lineal que recorre la imagen, la deconvolución es esencialmente similar a la convolución y puede implementarse utilizando la misma lógica de capa. + + + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +### Entrenando la GAN + +Las GAN se llaman **antagónicas** porque hay una competencia constante entre el generador y el discriminador. Durante esta competencia, tanto el generador como el discriminador mejoran, por lo que la red aprende a producir imágenes cada vez mejores. + +El entrenamiento ocurre en dos etapas: + +* **Entrenando al discriminador**. Esta tarea es bastante directa: generamos un lote de imágenes con el generador, etiquetándolas como 0, que representa una imagen falsa, y tomamos un lote de imágenes del conjunto de datos de entrada (con etiqueta 1, imagen real). Obtenemos una *pérdida del discriminador* y realizamos retropropagación. +* **Entrenando al generador**. Esto es un poco más complicado, porque no conocemos la salida esperada para el generador directamente. Tomamos toda la red GAN compuesta por un generador seguido de un discriminador, le proporcionamos algunos vectores aleatorios y esperamos que el resultado sea 1 (correspondiente a imágenes reales). Luego congelamos los parámetros del discriminador (no queremos que se entrene en este paso) y realizamos la retropropagación. + +Durante este proceso, las pérdidas tanto del generador como del discriminador no disminuyen significativamente. En la situación ideal, deberían oscilar, lo que corresponde a que ambas redes mejoran su rendimiento. + +## ✍️ Ejercicios: GANs + +* [Cuaderno GAN en TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Cuaderno GAN en PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problemas con el entrenamiento de GAN + +Se sabe que las GAN son especialmente difíciles de entrenar. Aquí hay algunos problemas: + +* **Colapso de modo**. Por este término nos referimos a que el generador aprende a producir una imagen exitosa que engaña al discriminador, y no una variedad de imágenes diferentes. +* **Sensibilidad a los hiperparámetros**. A menudo se puede ver que una GAN no converge en absoluto, y luego, de repente, disminuye en la tasa de aprendizaje, lo que lleva a la convergencia. +* Mantener un **equilibrio** entre el generador y el discriminador. En muchos casos, la pérdida del discriminador puede caer a cero relativamente rápido, lo que resulta en que el generador no puede entrenar más. Para superar esto, podemos intentar establecer diferentes tasas de aprendizaje para el generador y el discriminador, o saltar el entrenamiento del discriminador si la pérdida ya es demasiado baja. +* Entrenamiento para **alta resolución**. Reflejando el mismo problema que con los autoencoders, este problema se activa porque reconstruir demasiadas capas de una red convolucional conduce a artefactos. Este problema se resuelve típicamente con el llamado **crecimiento progresivo**, cuando primero se entrenan algunas capas en imágenes de baja resolución y luego se "desbloquean" o añaden capas. Otra solución sería agregar conexiones adicionales entre capas y entrenar varias resoluciones a la vez; consulte este [artículo sobre GANs de Gradiente Multi-escala](https://arxiv.org/abs/1903.06048) para más detalles. + +## Transferencia de Estilo + +Las GAN son una excelente manera de generar imágenes artísticas. Otra técnica interesante es la llamada **transferencia de estilo**, que toma una **imagen de contenido** y la vuelve a dibujar en un estilo diferente, aplicando filtros de la **imagen de estilo**. + +La forma en que funciona es la siguiente: +* Comenzamos con una imagen de ruido aleatorio (o con una imagen de contenido, pero para fines de comprensión es más fácil comenzar desde ruido aleatorio). +* Nuestro objetivo sería crear una imagen que esté cerca tanto de la imagen de contenido como de la imagen de estilo. Esto se determinaría mediante dos funciones de pérdida: + - **Pérdida de contenido** se calcula en función de las características extraídas por la CNN en algunas capas de la imagen actual y la imagen de contenido. + - **Pérdida de estilo** se calcula entre la imagen actual y la imagen de estilo de una manera inteligente utilizando matrices de Gram (más detalles en el [cuaderno de ejemplo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Para hacer la imagen más suave y eliminar el ruido, también introducimos **pérdida de variación**, que calcula la distancia promedio entre píxeles vecinos. +* El bucle de optimización principal ajusta la imagen actual utilizando descenso de gradiente (o algún otro algoritmo de optimización) para minimizar la pérdida total, que es una suma ponderada de las tres pérdidas. + +## ✍️ Ejemplo: [Transferencia de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Conclusión + +En esta lección, aprendiste sobre las GAN y cómo entrenarlas. También aprendiste sobre los desafíos especiales que este tipo de red neuronal puede enfrentar y algunas estrategias sobre cómo superarlos. + +## 🚀 Desafío + +Ejecuta el [cuaderno de Transferencia de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) utilizando tus propias imágenes. + +## Revisión y Autoestudio + +Para referencia, lee más sobre las GAN en estos recursos: + +* Marco Pasini, [10 Lecciones que Aprendí Entrenando GANs durante un Año](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), una arquitectura GAN *de facto* a considerar +* [Creando Arte Generativo usando GANs en Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Tarea + +Revisita uno de los dos cuadernos asociados a esta lección y vuelve a entrenar la GAN con tus propias imágenes. ¿Qué puedes crear? + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/es/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..0b193272 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,51 @@ +### YOLO - Solo Miras Una Vez + +YOLO es un algoritmo en tiempo real de un solo pase. La idea principal es la siguiente: + +* La imagen se divide en regiones de $S\times S$. +* Para cada región, **CNN** predice $n$ posibles objetos, las coordenadas del *bounding box* y *confianza* = *probabilidad* * IoU. + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.es.png) +> Imagen del [documento oficial](https://arxiv.org/abs/1506.02640) + +### Otros Algoritmos + +* RetinaNet: [documento oficial](https://arxiv.org/abs/1708.02002) + - [Implementación en PyTorch en Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Implementación en Keras](https://github.com/fizyr/keras-retinanet) + - [Detección de Objetos con RetinaNet](https://keras.io/examples/vision/retinanet/) en Keras Samples +* SSD (Detector de Un Solo Disparo): [documento oficial](https://arxiv.org/abs/1512.02325) + +## ✍️ Ejercicios: Detección de Objetos + +Continúa tu aprendizaje en el siguiente cuaderno: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Conclusión + +En esta lección hiciste un recorrido rápido por las diversas maneras en que se puede llevar a cabo la detección de objetos. + +## 🚀 Desafío + +Lee estos artículos y cuadernos sobre YOLO y pruébalos tú mismo. + +* [Buen artículo de blog](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) que describe YOLO + * [Sitio oficial](https://pjreddie.com/darknet/yolo/) + * Yolo: [implementación en Keras](https://github.com/experiencor/keras-yolo2), [cuaderno paso a paso](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [implementación en Keras](https://github.com/experiencor/keras-yolo2), [cuaderno paso a paso](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Cuestionario post-clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Revisión y Autoestudio + +* [Detección de Objetos](https://tjmachinelearning.com/lectures/1718/obj/) por Nikhil Sardana +* [Una buena comparación de algoritmos de detección de objetos](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Revisión de Algoritmos de Aprendizaje Profundo para Detección de Objetos](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Una Introducción Paso a Paso a los Algoritmos Básicos de Detección de Objetos](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementación de Faster R-CNN en Python para Detección de Objetos](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Asignación: Detección de Objetos](lab/README.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/es/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..0a61aeea --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# Detección de Cabezas usando el Conjunto de Datos de Hollywood + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Contar el número de personas en el flujo de cámaras de vigilancia es una tarea importante que nos permitirá estimar el número de visitantes en tiendas, horas pico en un restaurante, etc. Para resolver esta tarea, necesitamos ser capaces de detectar cabezas humanas desde diferentes ángulos. Para entrenar un modelo de detección de objetos que detecte cabezas humanas, podemos utilizar el [Conjunto de Datos de Hollywood](https://www.di.ens.fr/willow/research/headdetection/). + +## El Conjunto de Datos + +El [Conjunto de Datos de Hollywood](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contiene 369,846 cabezas humanas anotadas en 224,740 fotogramas de películas de Hollywood. Se proporciona en formato [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), donde para cada imagen también hay un archivo de descripción XML que se ve así: + +```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 + + +``` + +En este conjunto de datos, solo hay una clase de objetos `head`, y para cada cabeza, obtienes las coordenadas de la caja delimitadora. Puedes analizar XML usando bibliotecas de Python, o usar [esta biblioteca](https://pypi.org/project/pascal-voc/) para trabajar directamente con el formato PASCAL VOC. + +## Entrenamiento de Detección de Objetos + +Puedes entrenar un modelo de detección de objetos usando una de las siguientes maneras: + +* Usando [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) y su API de Python para entrenar programáticamente el modelo en la nube. La visión personalizada no podrá usar más de unas pocas centenas de imágenes para entrenar el modelo, por lo que es posible que necesites limitar el conjunto de datos. +* Usando el ejemplo del [tutorial de Keras](https://keras.io/examples/vision/retinanet/) para entrenar el modelo RetinaNet. +* Usando el módulo integrado [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) en torchvision. + +## Conclusión + +La detección de objetos es una tarea que se requiere con frecuencia en la industria. Aunque hay algunos servicios que se pueden utilizar para realizar la detección de objetos (como [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), es importante entender cómo funciona la detección de objetos y poder entrenar tus propios modelos. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/es/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..0b588034 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# Segmentación + +Anteriormente aprendimos sobre la Detección de Objetos, que nos permite localizar objetos en la imagen prediciendo sus *cajas delimitadoras*. Sin embargo, para algunas tareas no solo necesitamos cajas delimitadoras, sino también una localización de objetos más precisa. Esta tarea se llama **segmentación**. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +La segmentación se puede ver como **clasificación de píxeles**, donde para **cada** píxel de la imagen debemos predecir su clase (*fondo* siendo una de las clases). Hay dos algoritmos principales de segmentación: + +* **Segmentación semántica** solo indica la clase del píxel y no hace distinción entre diferentes objetos de la misma clase. +* **Segmentación por instancias** divide las clases en diferentes instancias. + +Por ejemplo, en la segmentación por instancias, estas ovejas son objetos diferentes, pero para la segmentación semántica todas las ovejas se representan con una sola clase. + + + +> Imagen de [este blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Existen diferentes arquitecturas neuronales para la segmentación, pero todas tienen la misma estructura. De alguna manera, es similar al autoencoder que aprendiste anteriormente, pero en lugar de descomponer la imagen original, nuestro objetivo es descomponer una **máscara**. Así, una red de segmentación tiene las siguientes partes: + +* **Encoder** extrae características de la imagen de entrada. +* **Decoder** transforma esas características en la **imagen de máscara**, con el mismo tamaño y número de canales correspondiente al número de clases. + + + +> Imagen de [esta publicación](https://arxiv.org/pdf/2001.05566.pdf) + +Debemos mencionar especialmente la función de pérdida que se utiliza para la segmentación. Al usar autoencoders clásicos, necesitamos medir la similitud entre dos imágenes, y podemos usar el error cuadrático medio (MSE) para hacerlo. En la segmentación, cada píxel en la imagen de máscara objetivo representa el número de clase (codificado en one-hot a lo largo de la tercera dimensión), por lo que necesitamos usar funciones de pérdida específicas para la clasificación: pérdida de entropía cruzada, promediada sobre todos los píxeles. Si la máscara es binaria, se utiliza **pérdida de entropía cruzada binaria** (BCE). + +> ✅ La codificación one-hot es una forma de codificar una etiqueta de clase en un vector de longitud igual al número de clases. Echa un vistazo a [este artículo](https://datagy.io/sklearn-one-hot-encode/) sobre esta técnica. + +## Segmentación para Imágenes Médicas + +En esta lección, veremos la segmentación en acción entrenando la red para reconocer nevos humanos (también conocidos como lunares) en imágenes médicas. Usaremos la Base de Datos PH2 de imágenes de dermatoscopia como fuente de imágenes. Este conjunto de datos contiene 200 imágenes de tres clases: nevo típico, nevo atípico y melanoma. Todas las imágenes también contienen una **máscara** correspondiente que delimita el nevo. + +> ✅ Esta técnica es particularmente adecuada para este tipo de imágenes médicas, pero ¿qué otras aplicaciones del mundo real podrías imaginar? + +navi + +> Imagen de la Base de Datos PH2 + +Entrenaremos un modelo para segmentar cualquier nevo de su fondo. + +## ✍️ Ejercicios: Segmentación Semántica + +Abre los cuadernos a continuación para aprender más sobre diferentes arquitecturas de segmentación semántica, practicar con ellas y verlas en acción. + +* [Segmentación Semántica Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Segmentación Semántica TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Conclusión + +La segmentación es una técnica muy poderosa para la clasificación de imágenes, que va más allá de las cajas delimitadoras hacia la clasificación a nivel de píxel. Es una técnica utilizada en imágenes médicas, entre otras aplicaciones. + +## 🚀 Desafío + +La segmentación del cuerpo es solo una de las tareas comunes que podemos realizar con imágenes de personas. Otras tareas importantes incluyen la **detección de esqueletos** y la **detección de poses**. Prueba la biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver cómo se puede utilizar la detección de poses. + +## Revisión y Autoestudio + +Este [artículo de Wikipedia](https://wikipedia.org/wiki/Image_segmentation) ofrece una buena visión general de las diversas aplicaciones de esta técnica. Aprende más por tu cuenta sobre los subdominios de la segmentación por instancias y la segmentación panóptica en este campo de estudio. + +## [Tarea](lab/README.md) + +En este laboratorio, intenta **segmentación del cuerpo humano** utilizando el [Conjunto de Datos de Segmentación del Cuerpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional humana. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/es/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..62a6c157 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# Segmentación del Cuerpo Humano + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +En la producción de video, por ejemplo, en pronósticos del tiempo, a menudo necesitamos recortar una imagen humana de la cámara y colocarla sobre otro metraje. Esto se hace típicamente utilizando técnicas de **chroma key**, cuando una persona es filmada frente a un fondo de color uniforme, que luego se elimina. En este laboratorio, entrenaremos un modelo de red neuronal para recortar la silueta humana. + +## El Conjunto de Datos + +Usaremos el [Conjunto de Datos de Segmentación de Cuerpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. Descarga el conjunto de datos manualmente desde Kaggle. + +## Iniciando el Notebook + +Comienza el laboratorio abriendo [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Conclusión + +La segmentación del cuerpo es solo una de las tareas comunes que podemos realizar con imágenes de personas. Otras tareas importantes incluyen **detección de esqueletos** y **detección de poses**. Consulta la biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver cómo se pueden implementar esas tareas. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional humana. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/4-ComputerVision/README.md b/translations/es/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..69e45bc6 --- /dev/null +++ b/translations/es/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# Visión por Computadora + +![Resumen del contenido de Visión por Computadora en un doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.es.png) + +En esta sección aprenderemos sobre: + +* [Introducción a la Visión por Computadora y OpenCV](06-IntroCV/README.md) +* [Redes Neuronales Convolucionales](07-ConvNets/README.md) +* [Redes Preentrenadas y Aprendizaje por Transferencia](08-TransferLearning/README.md) +* [Autoencoders](09-Autoencoders/README.md) +* [Redes Generativas Antagónicas](10-GANs/README.md) +* [Detección de Objetos](11-ObjectDetection/README.md) +* [Segmentación Semántica](12-Segmentation/README.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/13-TextRep/README.md b/translations/es/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..f5ec4add --- /dev/null +++ b/translations/es/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# Representación de Texto como Tensores + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Clasificación de Texto + +A lo largo de la primera parte de esta sección, nos centraremos en la tarea de **clasificación de texto**. Utilizaremos el conjunto de datos [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), que contiene artículos de noticias como los siguientes: + +* Categoría: Sci/Tech +* Título: La empresa de Ky. gana una subvención para estudiar péptidos (AP) +* Cuerpo: AP - Una empresa fundada por un investigador en química en la Universidad de Louisville ganó una subvención para desarrollar... + +Nuestro objetivo será clasificar el artículo de noticias en una de las categorías basadas en el texto. + +## Representación del texto + +Si queremos resolver tareas de Procesamiento de Lenguaje Natural (NLP) con redes neuronales, necesitamos alguna forma de representar el texto como tensores. Las computadoras ya representan caracteres textuales como números que se asignan a fuentes en tu pantalla utilizando codificaciones como ASCII o UTF-8. + +Imagen que muestra un diagrama que mapea un carácter a una representación ASCII y binaria + +> [Fuente de la imagen](https://www.seobility.net/en/wiki/ASCII) + +Como humanos, entendemos lo que cada letra **representa**, y cómo todos los caracteres se combinan para formar las palabras de una oración. Sin embargo, las computadoras por sí solas no tienen tal comprensión, y la red neuronal tiene que aprender el significado durante el entrenamiento. + +Por lo tanto, podemos usar diferentes enfoques al representar el texto: + +* **Representación a nivel de carácter**, cuando representamos el texto tratando cada carácter como un número. Dado que tenemos *C* caracteres diferentes en nuestro corpus de texto, la palabra *Hola* se representaría mediante un tensor de 5x*C*. Cada letra correspondería a una columna del tensor en codificación one-hot. +* **Representación a nivel de palabra**, en la que creamos un **vocabulario** de todas las palabras en nuestro texto, y luego representamos las palabras utilizando codificación one-hot. Este enfoque es algo mejor, porque cada letra por sí sola no tiene mucho significado, y así, al usar conceptos semánticos de mayor nivel - palabras - simplificamos la tarea para la red neuronal. Sin embargo, dado el gran tamaño del diccionario, necesitamos lidiar con tensores dispersos de alta dimensión. + +Independientemente de la representación, primero necesitamos convertir el texto en una secuencia de **tokens**, donde un token puede ser un carácter, una palabra, o a veces incluso parte de una palabra. Luego, convertimos el token en un número, típicamente usando un **vocabulario**, y este número puede ser alimentado a una red neuronal utilizando codificación one-hot. + +## N-Grams + +En el lenguaje natural, el significado preciso de las palabras solo puede determinarse en contexto. Por ejemplo, los significados de *red neuronal* y *red de pesca* son completamente diferentes. Una de las formas de tener esto en cuenta es construir nuestro modelo sobre pares de palabras, considerando los pares de palabras como tokens de vocabulario separados. De esta manera, la oración *Me gusta ir a pescar* se representará mediante la siguiente secuencia de tokens: *Me gusta*, *gusta ir*, *ir a*, *a pescar*. El problema con este enfoque es que el tamaño del diccionario crece significativamente, y combinaciones como *ir a pescar* y *ir de compras* se presentan con diferentes tokens, que no comparten ninguna similitud semántica a pesar de tener el mismo verbo. + +En algunos casos, también podemos considerar el uso de tri-gramas -- combinaciones de tres palabras --. Así, el enfoque se denomina a menudo **n-grams**. Además, tiene sentido usar n-grams con representación a nivel de carácter, en cuyo caso los n-grams corresponderán aproximadamente a diferentes sílabas. + +## Bolsa de Palabras y TF/IDF + +Al resolver tareas como la clasificación de texto, necesitamos poder representar el texto mediante un vector de tamaño fijo, que utilizaremos como entrada para el clasificador denso final. Una de las formas más simples de hacerlo es combinar todas las representaciones de palabras individuales, por ejemplo, sumándolas. Si sumamos las codificaciones one-hot de cada palabra, terminaremos con un vector de frecuencias, que muestra cuántas veces aparece cada palabra dentro del texto. Tal representación del texto se llama **bolsa de palabras** (BoW). + + + +> Imagen del autor + +Un BoW representa esencialmente qué palabras aparecen en el texto y en qué cantidades, lo que puede ser una buena indicación de lo que trata el texto. Por ejemplo, un artículo de noticias sobre política es probable que contenga palabras como *presidente* y *país*, mientras que una publicación científica tendría algo como *colisionador*, *descubierto*, etc. Así, las frecuencias de palabras pueden ser en muchos casos un buen indicador del contenido del texto. + +El problema con BoW es que ciertas palabras comunes, como *y*, *es*, etc., aparecen en la mayoría de los textos, y tienen las frecuencias más altas, ocultando las palabras que son realmente importantes. Podemos reducir la importancia de esas palabras teniendo en cuenta la frecuencia con la que ocurren en toda la colección de documentos. Esta es la idea principal detrás del enfoque TF/IDF, que se cubre con más detalle en los cuadernos adjuntos a esta lección. + +Sin embargo, ninguno de estos enfoques puede tener en cuenta completamente la **semántica** del texto. Necesitamos modelos de redes neuronales más poderosos para hacer esto, que discutiremos más adelante en esta sección. + +## ✍️ Ejercicios: Representación de Texto + +Continúa tu aprendizaje en los siguientes cuadernos: + +* [Representación de Texto con PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Representación de Texto con TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Conclusión + +Hasta ahora, hemos estudiado técnicas que pueden agregar peso de frecuencia a diferentes palabras. Sin embargo, no son capaces de representar el significado o el orden. Como dijo el famoso lingüista J. R. Firth en 1935, "El significado completo de una palabra siempre es contextual, y ningún estudio de significado separado del contexto puede tomarse en serio." Aprenderemos más adelante en el curso cómo capturar la información contextual del texto utilizando modelado de lenguaje. + +## 🚀 Desafío + +Intenta algunos otros ejercicios utilizando bolsa de palabras y diferentes modelos de datos. Podrías inspirarte en esta [competencia en Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Revisión y Autoestudio + +Practica tus habilidades con técnicas de embeddings de texto y bolsa de palabras en [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + +## [Asignación: Cuadernos](assignment.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/13-TextRep/assignment.md b/translations/es/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..77e2fd11 --- /dev/null +++ b/translations/es/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# Tarea: Notebooks + +Utilizando los notebooks asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, quizás uno de Kaggle, utilizado con atribución. Reescribe el notebook para resaltar tus propios hallazgos. Prueba algunos conjuntos de datos innovadores que podrían resultar sorprendentes, como [este sobre avistamientos de OVNIs](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) de NUFORC. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/14-Embeddings/README.md b/translations/es/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..20dda9e2 --- /dev/null +++ b/translations/es/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# Embeddings + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Al entrenar clasificadores basados en BoW o TF/IDF, operamos con vectores de bolsa de palabras de alta dimensión con longitud `vocab_size`, y estábamos convirtiendo explícitamente vectores de representación posicional de baja dimensión en una representación one-hot dispersa. Sin embargo, esta representación one-hot no es eficiente en términos de memoria. Además, cada palabra se trata de manera independiente, es decir, los vectores codificados en one-hot no expresan ninguna similitud semántica entre las palabras. + +La idea de **embedding** es representar palabras mediante vectores densos de menor dimensión, que de alguna manera reflejan el significado semántico de una palabra. Más adelante discutiremos cómo construir embeddings significativos, pero por ahora pensemos en los embeddings como una forma de reducir la dimensionalidad de un vector de palabras. + +Así, la capa de embedding tomaría una palabra como entrada y produciría un vector de salida de tamaño especificado `embedding_size`. En cierto sentido, es muy similar a una capa `Linear`, pero en lugar de tomar un vector codificado en one-hot, podrá aceptar un número de palabra como entrada, lo que nos permite evitar crear grandes vectores codificados en one-hot. + +Al utilizar una capa de embedding como primera capa en nuestra red de clasificador, podemos cambiar de un modelo de bolsa de palabras a un modelo de **embedding bag**, donde primero convertimos cada palabra en nuestro texto en el embedding correspondiente, y luego calculamos alguna función agregada sobre todos esos embeddings, como `sum`, `average` o `max`. + +![Imagen que muestra un clasificador de embedding para cinco palabras en secuencia.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.es.png) + +> Imagen del autor + +## ✍️ Ejercicios: Embeddings + +Continúa tu aprendizaje en los siguientes cuadernos: +* [Embeddings con PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Embeddings TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Embeddings Semánticos: Word2Vec + +Mientras que la capa de embedding aprendió a mapear palabras a una representación vectorial, esta representación no necesariamente tenía mucho significado semántico. Sería ideal aprender una representación vectorial tal que palabras similares o sinónimos correspondan a vectores que están cerca unos de otros en términos de alguna distancia vectorial (por ejemplo, distancia euclidiana). + +Para lograr esto, necesitamos pre-entrenar nuestro modelo de embedding en una gran colección de texto de una manera específica. Una forma de entrenar embeddings semánticos se llama [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Se basa en dos arquitecturas principales que se utilizan para producir una representación distribuida de las palabras: + + - **Bolsa de palabras continua** (CBoW) — en esta arquitectura, entrenamos el modelo para predecir una palabra a partir del contexto circundante. Dado el ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, el objetivo del modelo es predecir $W_0$ a partir de $(W_{-2},W_{-1},W_1,W_2)$. + - **Skip-gram continuo** es opuesto a CBoW. El modelo utiliza una ventana de palabras de contexto circundante para predecir la palabra actual. + +CBoW es más rápido, mientras que skip-gram es más lento, pero hace un mejor trabajo al representar palabras poco frecuentes. + +![Imagen que muestra ambos algoritmos CBoW y Skip-Gram para convertir palabras en vectores.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.es.png) + +> Imagen de [este artículo](https://arxiv.org/pdf/1301.3781.pdf) + +Los embeddings preentrenados de Word2Vec (así como otros modelos similares, como GloVe) también se pueden utilizar en lugar de la capa de embedding en redes neuronales. Sin embargo, necesitamos lidiar con vocabularios, porque el vocabulario utilizado para preentrenar Word2Vec/GloVe probablemente difiera del vocabulario en nuestro corpus de texto. Echa un vistazo a los cuadernos anteriores para ver cómo se puede resolver este problema. + +## Embeddings Contextuales + +Una limitación clave de las representaciones de embedding preentrenadas tradicionales, como Word2Vec, es el problema de la desambiguación del sentido de las palabras. Mientras que los embeddings preentrenados pueden capturar algo del significado de las palabras en contexto, cada posible significado de una palabra se codifica en el mismo embedding. Esto puede causar problemas en los modelos posteriores, ya que muchas palabras, como la palabra 'play', tienen diferentes significados dependiendo del contexto en el que se usen. + +Por ejemplo, la palabra 'play' en estas dos oraciones diferentes tiene un significado bastante distinto: + +- Fui a una **obra** en el teatro. +- John quiere **jugar** con sus amigos. + +Los embeddings preentrenados anteriores representan ambos significados de la palabra 'play' en el mismo embedding. Para superar esta limitación, necesitamos construir embeddings basados en el **modelo de lenguaje**, que se entrena en un gran corpus de texto y *sabe* cómo se pueden combinar las palabras en diferentes contextos. Discutir los embeddings contextuales está fuera del alcance de este tutorial, pero volveremos a ellos cuando hablemos sobre modelos de lenguaje más adelante en el curso. + +## Conclusión + +En esta lección, descubriste cómo construir y usar capas de embedding en TensorFlow y Pytorch para reflejar mejor los significados semánticos de las palabras. + +## 🚀 Desafío + +Word2Vec se ha utilizado para algunas aplicaciones interesantes, incluyendo la generación de letras de canciones y poesía. Echa un vistazo a [este artículo](https://www.politetype.com/blog/word2vec-color-poems) que explica cómo el autor utilizó Word2Vec para generar poesía. También mira [este video de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) para descubrir una explicación diferente de esta técnica. Luego intenta aplicar estas técnicas a tu propio corpus de texto, quizás obtenido de Kaggle. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Revisión y Autoestudio + +Lee este artículo sobre Word2Vec: [Estimación Eficiente de Representaciones de Palabras en Espacio Vectorial](https://arxiv.org/pdf/1301.3781.pdf) + +## [Tarea: Cuadernos](assignment.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/14-Embeddings/assignment.md b/translations/es/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..d14c4fc1 --- /dev/null +++ b/translations/es/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# Asignación: Cuadernos + +Usando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, quizás uno de Kaggle, utilizado con atribución. Reescribe el cuaderno para resaltar tus propios hallazgos. Intenta con un tipo diferente de conjunto de datos y documenta tus hallazgos, utilizando texto como [estas letras de los Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/15-LanguageModeling/README.md b/translations/es/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..6d9ca116 --- /dev/null +++ b/translations/es/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# Modelado de Lenguaje + +Las incrustaciones semánticas, como Word2Vec y GloVe, son en realidad un primer paso hacia el **modelado de lenguaje**: crear modelos que de alguna manera *entiendan* (o *representen*) la naturaleza del lenguaje. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +La idea principal detrás del modelado de lenguaje es entrenarlos en conjuntos de datos no etiquetados de manera no supervisada. Esto es importante porque tenemos enormes cantidades de texto no etiquetado disponible, mientras que la cantidad de texto etiquetado siempre estará limitada por el esfuerzo que podamos dedicar a etiquetar. Más a menudo, podemos construir modelos de lenguaje que puedan **predecir palabras faltantes** en el texto, porque es fácil enmascarar una palabra aleatoria en el texto y usarla como una muestra de entrenamiento. + +## Entrenamiento de Incrustaciones + +En nuestros ejemplos anteriores, utilizamos incrustaciones semánticas preentrenadas, pero es interesante ver cómo se pueden entrenar esas incrustaciones. Hay varias ideas posibles que se pueden utilizar: + +* Modelado de lenguaje **N-Gram**, cuando predecimos un token observando N tokens anteriores (N-gram) +* **Bolsa de Palabras Continua** (CBoW), cuando predecimos el token del medio $W_0$ en una secuencia de tokens $W_{-N}$, ..., $W_N$. +* **Skip-gram**, donde predecimos un conjunto de tokens vecinos {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partir del token del medio $W_0$. + +![imagen del artículo sobre la conversión de palabras a vectores](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.es.png) + +> Imagen de [este artículo](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Notebooks de Ejemplo: Entrenamiento del modelo CBoW + +Continúa tu aprendizaje en los siguientes notebooks: + +* [Entrenamiento de CBoW Word2Vec con TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Entrenamiento de CBoW Word2Vec con PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Conclusión + +En la lección anterior hemos visto que las incrustaciones de palabras funcionan como magia. Ahora sabemos que entrenar incrustaciones de palabras no es una tarea muy compleja, y deberíamos ser capaces de entrenar nuestras propias incrustaciones de palabras para texto específico de dominio si es necesario. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Revisión y Autoestudio + +* [Tutorial oficial de PyTorch sobre Modelado de Lenguaje](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial oficial de TensorFlow sobre el entrenamiento del modelo Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* Usar el marco **gensim** para entrenar las incrustaciones más comúnmente utilizadas en unas pocas líneas de código se describe [en esta documentación](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Tarea: Entrenar el Modelo Skip-Gram](lab/README.md) + +En el laboratorio, te retamos a modificar el código de esta lección para entrenar un modelo skip-gram en lugar de CBoW. [Lee los detalles](lab/README.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/es/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..34e935ba --- /dev/null +++ b/translations/es/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Modelo de Skip-Gram para Entrenamiento + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +En este laboratorio, te desafiamos a entrenar un modelo Word2Vec utilizando la técnica Skip-Gram. Entrena una red con incrustaciones para predecir palabras vecinas en una ventana Skip-Gram de $N$-tokens de ancho. Puedes usar el [código de esta lección](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) y modificarlo ligeramente. + +## El Conjunto de Datos + +Puedes utilizar cualquier libro. Puedes encontrar muchos textos gratuitos en [Project Gutenberg](https://www.gutenberg.org/), por ejemplo, aquí tienes un enlace directo a [Las aventuras de Alicia en el país de las maravillas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. O, puedes usar las obras de Shakespeare, que puedes obtener utilizando el siguiente código: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## ¡Explora! + +Si tienes tiempo y quieres profundizar en el tema, intenta explorar varias cosas: + +* ¿Cómo afecta el tamaño de la incrustación a los resultados? +* ¿Cómo afectan los diferentes estilos de texto al resultado? +* Toma varios tipos de palabras muy diferentes y sus sinónimos, obtén sus representaciones vectoriales, aplica PCA para reducir las dimensiones a 2 y trázalas en un espacio 2D. ¿Ves algún patrón? + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/16-RNN/README.md b/translations/es/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..0c307718 --- /dev/null +++ b/translations/es/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,87 @@ +# Redes Neuronales Recurrentes + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +En secciones anteriores, hemos estado utilizando representaciones semánticas ricas del texto y un clasificador lineal simple sobre las incrustaciones. Lo que hace esta arquitectura es capturar el significado agregado de las palabras en una oración, pero no toma en cuenta el **orden** de las palabras, ya que la operación de agregación sobre las incrustaciones eliminó esta información del texto original. Debido a que estos modelos no pueden modelar el orden de las palabras, no pueden resolver tareas más complejas o ambiguas, como la generación de texto o la respuesta a preguntas. + +Para capturar el significado de la secuencia de texto, necesitamos utilizar otra arquitectura de red neuronal, que se llama **red neuronal recurrente**, o RNN. En una RNN, pasamos nuestra oración a través de la red un símbolo a la vez, y la red produce algún **estado**, que luego pasamos a la red nuevamente con el siguiente símbolo. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.es.png) + +> Imagen del autor + +Dada la secuencia de entrada de tokens X0,...,Xn, la RNN crea una secuencia de bloques de red neuronal y entrena esta secuencia de extremo a extremo utilizando retropropagación. Cada bloque de red toma un par (Xi,Si) como entrada y produce Si+1 como resultado. El estado final Sn o (salida Yn) entra en un clasificador lineal para producir el resultado. Todos los bloques de red comparten los mismos pesos y se entrenan de extremo a extremo utilizando un pase de retropropagación. + +Debido a que los vectores de estado S0,...,Sn se pasan a través de la red, es capaz de aprender las dependencias secuenciales entre las palabras. Por ejemplo, cuando la palabra *not* aparece en algún lugar de la secuencia, puede aprender a negar ciertos elementos dentro del vector de estado, resultando en negación. + +> ✅ Dado que los pesos de todos los bloques RNN en la imagen anterior se comparten, la misma imagen puede representarse como un bloque (a la derecha) con un bucle de retroalimentación recurrente, que pasa el estado de salida de la red de vuelta a la entrada. + +## Anatomía de una Celda RNN + +Veamos cómo está organizada una celda RNN simple. Acepta el estado anterior Si-1 y el símbolo actual Xi como entradas, y tiene que producir el estado de salida Si (y, a veces, también estamos interesados en alguna otra salida Yi, como en el caso de las redes generativas). + +Una celda RNN simple tiene dos matrices de pesos en su interior: una transforma un símbolo de entrada (llamémosla W), y otra transforma un estado de entrada (H). En este caso, la salida de la red se calcula como σ(W×Xi+H×Si-1+b), donde σ es la función de activación y b es un sesgo adicional. + +Anatomía de la Celda RNN + +> Imagen del autor + +En muchos casos, los tokens de entrada se pasan a través de la capa de incrustación antes de entrar en la RNN para reducir la dimensionalidad. En este caso, si la dimensión de los vectores de entrada es *emb_size*, y el vector de estado es *hid_size* - el tamaño de W es *emb_size*×*hid_size*, y el tamaño de H es *hid_size*×*hid_size*. + +## Memoria a Largo y Corto Plazo (LSTM) + +Uno de los principales problemas de las RNN clásicas es el problema de los **gradientes que desaparecen**. Debido a que las RNN se entrenan de extremo a extremo en un solo pase de retropropagación, tienen dificultades para propagar el error a las primeras capas de la red, y por lo tanto, la red no puede aprender relaciones entre tokens distantes. Una de las formas de evitar este problema es introducir **gestión de estado explícita** mediante el uso de lo que se llama **puertas**. Hay dos arquitecturas bien conocidas de este tipo: **Memoria a Largo y Corto Plazo** (LSTM) y **Unidad de Relé con Puerta** (GRU). + +![Imagen que muestra un ejemplo de celda de memoria a largo y corto plazo](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Fuente de la imagen TBD + +La Red LSTM está organizada de manera similar a la RNN, pero hay dos estados que se pasan de capa a capa: el estado actual C y el vector oculto H. En cada unidad, el vector oculto Hi se concatena con la entrada Xi, y ellos controlan lo que sucede con el estado C a través de **puertas**. Cada puerta es una red neuronal con activación sigmoide (salida en el rango [0,1]), que se puede considerar como una máscara a nivel de bits cuando se multiplica por el vector de estado. Hay las siguientes puertas (de izquierda a derecha en la imagen anterior): + +* La **puerta de olvido** toma un vector oculto y determina qué componentes del vector C necesitamos olvidar y cuáles pasar. +* La **puerta de entrada** toma cierta información de los vectores de entrada y ocultos e inserta en el estado. +* La **puerta de salida** transforma el estado a través de una capa lineal con activación *tanh*, luego selecciona algunos de sus componentes utilizando un vector oculto Hi para producir un nuevo estado Ci+1. + +Los componentes del estado C se pueden considerar como algunas banderas que pueden activarse y desactivarse. Por ejemplo, cuando encontramos un nombre *Alice* en la secuencia, podemos querer suponer que se refiere a un personaje femenino y activar la bandera en el estado de que tenemos un sustantivo femenino en la oración. Cuando encontramos más adelante las frases *and Tom*, levantaremos la bandera de que tenemos un sustantivo plural. Así, manipulando el estado, supuestamente podemos hacer un seguimiento de las propiedades gramaticales de las partes de la oración. + +> ✅ Un recurso excelente para entender los entresijos de LSTM es este gran artículo [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. + +## RNNs Bidireccionales y Multicapa + +Hemos discutido redes recurrentes que operan en una dirección, desde el comienzo de una secuencia hasta el final. Esto parece natural, ya que se asemeja a la forma en que leemos y escuchamos el habla. Sin embargo, dado que en muchos casos prácticos tenemos acceso aleatorio a la secuencia de entrada, podría tener sentido realizar cálculos recurrentes en ambas direcciones. Tales redes se llaman RNNs **bidireccionales**. Al tratar con una red bidireccional, necesitaríamos dos vectores de estado oculto, uno para cada dirección. + +Una red recurrente, ya sea unidireccional o bidireccional, captura ciertos patrones dentro de una secuencia y puede almacenarlos en un vector de estado o pasarlos a la salida. Al igual que con las redes convolucionales, podemos construir otra capa recurrente sobre la primera para capturar patrones de nivel superior y construir a partir de patrones de bajo nivel extraídos por la primera capa. Esto nos lleva a la noción de una **RNN multicapa** que consiste en dos o más redes recurrentes, donde la salida de la capa anterior se pasa a la siguiente capa como entrada. + +![Imagen que muestra una RNN multicapa de memoria a largo y corto plazo](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.es.jpg) + +*Imagen de [esta maravillosa publicación](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) de Fernando López* + +## ✍️ Ejercicios: Incrustaciones + +Continúa tu aprendizaje en los siguientes cuadernos: + +* [RNNs con PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs con TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Conclusión + +En esta unidad, hemos visto que las RNNs se pueden utilizar para la clasificación de secuencias, pero de hecho, pueden manejar muchas más tareas, como la generación de texto, la traducción automática y más. Consideraremos esas tareas en la próxima unidad. + +## 🚀 Desafío + +Lee algo de literatura sobre LSTMs y considera sus aplicaciones: + +- [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) + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Revisión y Autoestudio + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. + +## [Asignación: Cuadernos](assignment.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/16-RNN/assignment.md b/translations/es/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..d26eea36 --- /dev/null +++ b/translations/es/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# Tarea: Cuadernos + +Usando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, quizás uno de Kaggle, usado con atribución. Reescribe el cuaderno para resaltar tus propios hallazgos. Prueba con un tipo diferente de conjunto de datos y documenta tus hallazgos, utilizando texto como [este conjunto de datos de competencia de Kaggle sobre tweets del clima](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/es/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..85977790 --- /dev/null +++ b/translations/es/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# Redes generativas + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Las Redes Neuronales Recurrentes (RNNs) y sus variantes con puertas, como las Celdas de Memoria a Largo y Corto Plazo (LSTMs) y las Unidades Recurrentes con Puertas (GRUs), proporcionaron un mecanismo para el modelado del lenguaje en el que pueden aprender el orden de las palabras y ofrecer predicciones para la siguiente palabra en una secuencia. Esto nos permite usar RNNs para **tareas generativas**, como la generación de texto ordinario, la traducción automática e incluso la creación de descripciones para imágenes. + +> ✅ Piensa en todas las ocasiones en que te has beneficiado de tareas generativas, como la finalización de texto mientras escribes. Investiga tus aplicaciones favoritas para ver si aprovecharon RNNs. + +En la arquitectura de RNN que discutimos en la unidad anterior, cada unidad RNN producía el siguiente estado oculto como salida. Sin embargo, también podemos añadir otra salida a cada unidad recurrente, lo que nos permitiría generar una **secuencia** (que es igual en longitud a la secuencia original). Además, podemos utilizar unidades RNN que no aceptan una entrada en cada paso, y simplemente toman un vector de estado inicial y luego producen una secuencia de salidas. + +Esto permite diferentes arquitecturas neuronales que se muestran en la imagen a continuación: + +![Imagen que muestra patrones comunes de redes neuronales recurrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.es.jpg) + +> Imagen del artículo del blog [La Efectividad Irrazonable de las Redes Neuronales Recurrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpaty](http://karpathy.github.io/) + +* **Uno a uno** es una red neuronal tradicional con una entrada y una salida. +* **Uno a muchos** es una arquitectura generativa que acepta un valor de entrada y genera una secuencia de valores de salida. Por ejemplo, si queremos entrenar una red de **creación de descripciones de imágenes** que produzca una descripción textual de una imagen, podemos tomar una imagen como entrada, pasarla a través de una CNN para obtener su estado oculto y luego tener una cadena recurrente que genere la descripción palabra por palabra. +* **Muchos a uno** corresponde a las arquitecturas RNN que describimos en la unidad anterior, como la clasificación de texto. +* **Muchos a muchos**, o **secuencia a secuencia**, corresponde a tareas como **traducción automática**, donde primero una RNN recopila toda la información de la secuencia de entrada en el estado oculto, y otra cadena RNN despliega este estado en la secuencia de salida. + +En esta unidad, nos enfocaremos en modelos generativos simples que nos ayuden a generar texto. Para simplificar, utilizaremos la tokenización a nivel de caracteres. + +Entrenaremos esta RNN para generar texto paso a paso. En cada paso, tomaremos una secuencia de caracteres de longitud `nchars` y le pediremos a la red que genere el siguiente carácter de salida para cada carácter de entrada: + +![Imagen que muestra un ejemplo de generación RNN de la palabra 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.es.png) + +Al generar texto (durante la inferencia), comenzamos con un **mensaje inicial**, que se pasa a través de las celdas RNN para generar su estado intermedio, y luego desde este estado comienza la generación. Generamos un carácter a la vez y pasamos el estado y el carácter generado a otra celda RNN para generar el siguiente, hasta que generamos suficientes caracteres. + + + +> Imagen del autor + +## ✍️ Ejercicios: Redes Generativas + +Continúa tu aprendizaje en los siguientes cuadernos: + +* [Redes Generativas con PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Redes Generativas con TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Generación de texto suave y temperatura + +La salida de cada celda RNN es una distribución de probabilidad de caracteres. Si siempre tomamos el carácter con la mayor probabilidad como el siguiente carácter en el texto generado, el texto a menudo puede "ciclarse" entre las mismas secuencias de caracteres una y otra vez, como en este ejemplo: + +``` +today of the second the company and a second the company ... +``` + +Sin embargo, si observamos la distribución de probabilidad para el siguiente carácter, podría ser que la diferencia entre algunas de las probabilidades más altas no sea enorme; por ejemplo, un carácter puede tener una probabilidad de 0.2, otro - 0.19, etc. Por ejemplo, al buscar el siguiente carácter en la secuencia '*play*', el siguiente carácter puede ser igualmente un espacio o **e** (como en la palabra *player*). + +Esto nos lleva a la conclusión de que no siempre es "justo" seleccionar el carácter con una mayor probabilidad, porque elegir el segundo más alto aún podría llevarnos a un texto significativo. Es más sabio **muestrear** caracteres de la distribución de probabilidad dada por la salida de la red. También podemos usar un parámetro, **temperatura**, que aplanará la distribución de probabilidad en caso de que queramos agregar más aleatoriedad, o la hará más pronunciada si queremos ceñirnos más a los caracteres de mayor probabilidad. + +Explora cómo se implementa esta generación de texto suave en los cuadernos vinculados arriba. + +## Conclusión + +Si bien la generación de texto puede ser útil por derecho propio, los principales beneficios provienen de la capacidad de generar texto utilizando RNNs a partir de algún vector de características inicial. Por ejemplo, la generación de texto se utiliza como parte de la traducción automática (secuencia a secuencia, en este caso el vector de estado del *codificador* se utiliza para generar o *decodificar* el mensaje traducido), o para generar descripciones textuales de una imagen (en cuyo caso el vector de características provendría de un extractor CNN). + +## 🚀 Desafío + +Toma algunas lecciones en Microsoft Learn sobre este tema + +* Generación de Texto con [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Revisión y Autoestudio + +Aquí hay algunos artículos para ampliar tu conocimiento + +* Diferentes enfoques para la generación de texto con Cadenas de Markov, LSTM y GPT-2: [artículo del blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Ejemplo de generación de texto en [documentación de Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Asignación](lab/README.md) + +Hemos visto cómo generar texto carácter por carácter. En el laboratorio, explorarás la generación de texto a nivel de palabras. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/es/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..e0aeef84 --- /dev/null +++ b/translations/es/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# Generación de texto a nivel de palabra utilizando RNNs + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +En este laboratorio, necesitas tomar cualquier libro y usarlo como un conjunto de datos para entrenar un generador de texto a nivel de palabra. + +## El Conjunto de Datos + +Puedes utilizar cualquier libro. Puedes encontrar muchos textos gratuitos en [Project Gutenberg](https://www.gutenberg.org/); por ejemplo, aquí hay un enlace directo a [Las aventuras de Alicia en el país de las maravillas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/es/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..cc19e528 --- /dev/null +++ b/translations/es/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# Mecanismos de Atención y Transformadores + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Uno de los problemas más importantes en el dominio del PLN es la **traducción automática**, una tarea esencial que subyace a herramientas como Google Translate. En esta sección, nos enfocaremos en la traducción automática, o, de manera más general, en cualquier tarea de *secuencia a secuencia* (que también se llama **transducción de oraciones**). + +Con las RNN, la secuencia a secuencia se implementa mediante dos redes recurrentes, donde una red, el **codificador**, colapsa una secuencia de entrada en un estado oculto, mientras que otra red, el **decodificador**, despliega este estado oculto en un resultado traducido. Hay un par de problemas con este enfoque: + +* El estado final de la red del codificador tiene dificultades para recordar el comienzo de una oración, lo que provoca una mala calidad del modelo para oraciones largas. +* Todas las palabras en una secuencia tienen el mismo impacto en el resultado. Sin embargo, en la realidad, ciertas palabras en la secuencia de entrada a menudo tienen más impacto en las salidas secuenciales que otras. + +**Los Mecanismos de Atención** proporcionan un medio para ponderar el impacto contextual de cada vector de entrada en cada predicción de salida de la RNN. La forma en que se implementa es creando atajos entre los estados intermedios de la RNN de entrada y la RNN de salida. De esta manera, al generar el símbolo de salida yt, tomaremos en cuenta todos los estados ocultos de entrada hi, con diferentes coeficientes de peso αt,i. + +![Imagen que muestra un modelo de codificador/decodificador con una capa de atención aditiva](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.es.png) + +> El modelo codificador-decodificador con mecanismo de atención aditiva en [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citado de [esta publicación de blog](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +La matriz de atención {αi,j} representaría el grado en que ciertas palabras de entrada juegan un papel en la generación de una palabra dada en la secuencia de salida. A continuación se muestra un ejemplo de tal matriz: + +![Imagen que muestra una alineación de muestra encontrada por RNNsearch-50, tomada de Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.es.png) + +> Figura de [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Los mecanismos de atención son responsables de gran parte del estado actual o casi actual de la técnica en PLN. Sin embargo, añadir atención aumenta considerablemente el número de parámetros del modelo, lo que llevó a problemas de escalabilidad con las RNN. Una restricción clave de la escalabilidad de las RNN es que la naturaleza recurrente de los modelos hace que sea un desafío agrupar y paralelizar el entrenamiento. En una RNN, cada elemento de una secuencia necesita ser procesado en orden secuencial, lo que significa que no se puede paralelizar fácilmente. + +![Codificador Decodificador con Atención](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figura de [Google's Blog](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +La adopción de mecanismos de atención combinados con esta restricción llevó a la creación de los ahora modelos transformadores de última generación que conocemos y utilizamos hoy, como BERT y Open-GPT3. + +## Modelos Transformadores + +Una de las ideas principales detrás de los transformadores es evitar la naturaleza secuencial de las RNN y crear un modelo que sea paralelizable durante el entrenamiento. Esto se logra implementando dos ideas: + +* codificación posicional +* uso de un mecanismo de autoatención para capturar patrones en lugar de RNNs (o CNNs) (por eso el artículo que introduce los transformadores se llama *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Codificación/Embebido Posicional + +La idea de la codificación posicional es la siguiente. +1. Al usar RNNs, la posición relativa de los tokens está representada por el número de pasos, y por lo tanto no necesita ser representada explícitamente. +2. Sin embargo, una vez que cambiamos a atención, necesitamos conocer las posiciones relativas de los tokens dentro de una secuencia. +3. Para obtener la codificación posicional, aumentamos nuestra secuencia de tokens con una secuencia de posiciones de tokens en la secuencia (es decir, una secuencia de números 0,1, ...). +4. Luego mezclamos la posición del token con un vector de embebido del token. Para transformar la posición (entero) en un vector, podemos usar diferentes enfoques: + +* Embebido entrenable, similar al embebido de tokens. Este es el enfoque que consideramos aquí. Aplicamos capas de embebido sobre ambos, los tokens y sus posiciones, resultando en vectores de embebido de las mismas dimensiones, que luego sumamos. +* Función de codificación de posición fija, como se propuso en el artículo original. + + + +> Imagen del autor + +El resultado que obtenemos con el embebido posicional integra tanto el token original como su posición dentro de una secuencia. + +### Autoatención Multi-Cabeza + +A continuación, necesitamos capturar algunos patrones dentro de nuestra secuencia. Para hacer esto, los transformadores utilizan un mecanismo de **autoatención**, que es esencialmente atención aplicada a la misma secuencia como entrada y salida. Aplicar autoatención nos permite tener en cuenta el **contexto** dentro de la oración y ver qué palabras están interrelacionadas. Por ejemplo, nos permite ver qué palabras son referidas por co-referencias, como *ello*, y también tener en cuenta el contexto: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.es.png) + +> Imagen del [Blog de Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +En los transformadores, utilizamos **Atención Multi-Cabeza** para darle al modelo la capacidad de capturar varios tipos diferentes de dependencias, por ejemplo, relaciones de palabras a largo plazo frente a corto plazo, co-referencia frente a algo más, etc. + +[Notebook de TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) contiene más detalles sobre la implementación de las capas transformadoras. + +### Atención Codificador-Decodificador + +En los transformadores, la atención se utiliza en dos lugares: + +* Para capturar patrones dentro del texto de entrada utilizando autoatención +* Para realizar traducción de secuencias - es la capa de atención entre el codificador y el decodificador. + +La atención codificador-decodificador es muy similar al mecanismo de atención utilizado en las RNN, como se describió al principio de esta sección. Este diagrama animado explica el papel de la atención codificador-decodificador. + +![GIF animado que muestra cómo se realizan las evaluaciones en modelos transformadores.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Dado que cada posición de entrada se mapea independientemente a cada posición de salida, los transformadores pueden paralelizarse mejor que las RNN, lo que permite modelos de lenguaje mucho más grandes y expresivos. Cada cabeza de atención puede ser utilizada para aprender diferentes relaciones entre palabras que mejoran las tareas de Procesamiento de Lenguaje Natural posteriores. + +## BERT + +**BERT** (Representaciones de Codificador Bidireccional de Transformadores) es una red transformadora de múltiples capas muy grande con 12 capas para *BERT-base*, y 24 para *BERT-large*. El modelo se preentrena primero en un gran corpus de datos textuales (WikiPedia + libros) utilizando entrenamiento no supervisado (prediciendo palabras enmascaradas en una oración). Durante el preentrenamiento, el modelo absorbe niveles significativos de comprensión del lenguaje que luego pueden ser aprovechados con otros conjuntos de datos utilizando ajuste fino. Este proceso se llama **aprendizaje por transferencia**. + +![imagen de http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.es.png) + +> Imagen [fuente](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Ejercicios: Transformadores + +Continúa tu aprendizaje en los siguientes cuadernos: + +* [Transformadores en PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformadores en TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Conclusión + +En esta lección aprendiste sobre Transformadores y Mecanismos de Atención, herramientas esenciales en la caja de herramientas del PLN. Hay muchas variaciones de arquitecturas de Transformadores, incluyendo BERT, DistilBERT, BigBird, OpenGPT3 y más que pueden ser ajustadas. El [paquete HuggingFace](https://github.com/huggingface/) proporciona un repositorio para entrenar muchas de estas arquitecturas tanto con PyTorch como con TensorFlow. + +## 🚀 Desafío + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Revisión y Autoestudio + +* [Publicación de blog](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), que explica el clásico artículo [Attention is all you need](https://arxiv.org/abs/1706.03762) sobre transformadores. +* [Una serie de publicaciones de blog](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) sobre transformadores, que explican la arquitectura en detalle. + +## [Asignación](assignment.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/18-Transformers/assignment.md b/translations/es/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..b15ed6c9 --- /dev/null +++ b/translations/es/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# Asignación: Transformadores + +¡Experimenta con Transformadores en HuggingFace! Prueba algunos de los scripts que proporcionan para trabajar con los diversos modelos disponibles en su sitio: https://huggingface.co/docs/transformers/run_scripts. Intenta con uno de sus conjuntos de datos, luego importa uno de los tuyos de este currículo o de Kaggle y ve si puedes generar textos interesantes. Produce un cuaderno con tus hallazgos. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/19-NER/README.md b/translations/es/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..b2199105 --- /dev/null +++ b/translations/es/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,85 @@ +# Reconocimiento de Entidades Nombradas + +Hasta ahora, nos hemos concentrado principalmente en una tarea de PLN: la clasificación. Sin embargo, también hay otras tareas de PLN que se pueden realizar con redes neuronales. Una de esas tareas es **[Reconocimiento de Entidades Nombradas](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), que se ocupa de reconocer entidades específicas dentro del texto, como lugares, nombres de personas, intervalos de fecha y hora, fórmulas químicas, y más. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Ejemplo de Uso de NER + +Supongamos que deseas desarrollar un chatbot de lenguaje natural, similar a Amazon Alexa o Google Assistant. La forma en que funcionan los chatbots inteligentes es *entendiendo* lo que el usuario quiere mediante la clasificación de texto de la frase de entrada. El resultado de esta clasificación es lo que se llama **intención**, que determina lo que debe hacer un chatbot. + +Bot NER + +> Imagen del autor + +Sin embargo, un usuario puede proporcionar algunos parámetros como parte de la frase. Por ejemplo, al preguntar por el clima, puede especificar una ubicación o una fecha. Un bot debe ser capaz de entender esas entidades y completar los espacios de parámetros de acuerdo antes de realizar la acción. Aquí es donde entra en juego NER. + +> ✅ Otro ejemplo sería [analizar artículos médicos científicos](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Una de las principales cosas que necesitamos buscar son términos médicos específicos, como enfermedades y sustancias médicas. Si bien un pequeño número de enfermedades probablemente se pueden extraer utilizando la búsqueda de subcadenas, entidades más complejas, como compuestos químicos y nombres de medicamentos, requieren un enfoque más complejo. + +## NER como Clasificación de Tokens + +Los modelos NER son esencialmente **modelos de clasificación de tokens**, porque para cada uno de los tokens de entrada necesitamos decidir si pertenece a una entidad o no, y si lo hace, a qué clase de entidad pertenece. + +Considera el siguiente título de un artículo: + +**Regurgitación de la válvula tricúspide** y **toxicidad del carbonato de litio** en un recién nacido. + +Las entidades aquí son: + +* Regurgitación de la válvula tricúspide es una enfermedad (`DIS`) +* El carbonato de litio es una sustancia química (`CHEM`) +* Toxicidad también es una enfermedad (`DIS`) + +Observa que una entidad puede abarcar varios tokens. Y, como en este caso, necesitamos distinguir entre dos entidades consecutivas. Por lo tanto, es común utilizar dos clases para cada entidad: una que especifica el primer token de la entidad (a menudo se utiliza el prefijo `B-`, para **b**eginning), y otra - la continuación de una entidad (`I-`, para **i**nner token). También usamos `O` como una clase para representar todos los **o**tros tokens. Este etiquetado de tokens se llama [etiquetado BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (o IOB). Cuando se etiqueta, nuestro título se verá así: + +Token | Etiqueta +------|----- +Tricúspide | B-DIS +válvula | I-DIS +regurgitación | I-DIS +y | O +litio | B-CHEM +carbonato | I-CHEM +toxicidad | B-DIS +en | O +un | O +recién | O +nacido | O +. | O + +Dado que necesitamos construir una correspondencia uno a uno entre tokens y clases, podemos entrenar un modelo de red neuronal **muchos a muchos** a partir de esta imagen: + +![Imagen que muestra patrones comunes de redes neuronales recurrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.es.jpg) + +> *Imagen de [esta publicación en el blog](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpathy](http://karpathy.github.io/). Los modelos de clasificación de tokens NER corresponden a la arquitectura de red más a la derecha en esta imagen.* + +## Entrenamiento de Modelos NER + +Dado que un modelo NER es esencialmente un modelo de clasificación de tokens, podemos usar RNNs que ya conocemos para esta tarea. En este caso, cada bloque de la red recurrente devolverá el ID del token. El siguiente cuaderno de ejemplo muestra cómo entrenar un LSTM para la clasificación de tokens. + +## ✍️ Cuadernos de Ejemplo: NER + +Continúa tu aprendizaje en el siguiente cuaderno: + +* [NER con TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Conclusión + +Un modelo NER es un **modelo de clasificación de tokens**, lo que significa que se puede utilizar para realizar clasificación de tokens. Esta es una tarea muy común en PLN, ayudando a reconocer entidades específicas dentro del texto, incluyendo lugares, nombres, fechas, y más. + +## 🚀 Desafío + +Completa la tarea vinculada a continuación para entrenar un modelo de reconocimiento de entidades nombradas para términos médicos, y luego pruébalo en un conjunto de datos diferente. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Revisión y Autoestudio + +Lee el blog [La Efectividad Irrazonable de las Redes Neuronales Recurrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) y sigue la sección de Lectura Adicional en ese artículo para profundizar tu conocimiento. + +## [Tarea](lab/README.md) + +En la tarea de esta lección, tendrás que entrenar un modelo de reconocimiento de entidades médicas. Puedes comenzar entrenando un modelo LSTM como se describe en esta lección y continuar usando el modelo de transformador BERT. Lee [las instrucciones](lab/README.md) para obtener todos los detalles. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/19-NER/lab/README.md b/translations/es/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..34efe03b --- /dev/null +++ b/translations/es/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +En este laboratorio, necesitas entrenar un modelo de reconocimiento de entidades nombradas para términos médicos. + +## El Conjunto de Datos + +Para entrenar el modelo NER, necesitamos un conjunto de datos debidamente etiquetado con entidades médicas. El [conjunto de datos BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contiene entidades de enfermedades y químicos etiquetadas de más de 1500 artículos. Puedes descargar el conjunto de datos después de registrarte en su sitio web. + +El conjunto de datos BC5CDR se ve así: + +``` +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 +... +``` + +En este conjunto de datos, hay el título del artículo y el resumen en las dos primeras líneas, y luego hay entidades individuales, con posiciones de inicio y fin dentro del bloque de título+resumen. Además del tipo de entidad, obtienes el ID de ontología de esta entidad dentro de alguna ontología médica. + +Necesitarás escribir algo de código en Python para convertir esto en codificación BIO. + +## La Red + +El primer intento de NER se puede realizar utilizando una red LSTM, como en nuestro ejemplo que has visto durante la lección. Sin embargo, en tareas de PLN, la [arquitectura transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), y específicamente los [modelos de lenguaje BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), muestran resultados mucho mejores. Los modelos BERT preentrenados entienden la estructura general de un idioma y pueden ser ajustados para tareas específicas con conjuntos de datos relativamente pequeños y costos computacionales bajos. + +Dado que planeamos aplicar NER a un escenario médico, tiene sentido usar un modelo BERT entrenado en textos médicos. Microsoft Research ha lanzado un modelo preentrenado llamado [PubMedBERT][PubMedBERT] ([publicación][PubMedBERT-Pub]), que fue ajustado utilizando textos del repositorio de [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +El estándar *de facto* para entrenar modelos transformer es la biblioteca [Hugging Face Transformers](https://huggingface.co/). También contiene un repositorio de modelos preentrenados mantenidos por la comunidad, incluyendo PubMedBERT. Para cargar y usar este modelo, solo necesitamos un par de líneas de código: + +```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) +``` + +Esto nos da el objeto `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` que puede dividir el texto de entrada en tokens. Necesitarás convertir el conjunto de datos en formato BIO, teniendo en cuenta la tokenización de PubMedBERT. Puedes usar [este fragmento de código en Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) como inspiración. + +## Conclusión + +Esta tarea está muy cerca de la tarea real que probablemente tendrás si deseas obtener más información sobre grandes volúmenes de textos en lenguaje natural. En nuestro caso, podemos aplicar nuestro modelo entrenado al [conjunto de datos de artículos relacionados con COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) y ver qué información podremos obtener. [Esta publicación en el blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) y [este artículo](https://www.mdpi.com/2504-2289/6/1/4) describen la investigación que se puede realizar sobre este corpus de artículos utilizando NER. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/es/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..1bab906f --- /dev/null +++ b/translations/es/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,55 @@ +# Modelos de Lenguaje de Gran Tamaño Preentrenados + +En todas nuestras tareas anteriores, entrenábamos una red neuronal para realizar una tarea específica utilizando un conjunto de datos etiquetados. Con modelos de transformador grandes, como BERT, utilizamos el modelado del lenguaje de manera auto-supervisada para construir un modelo de lenguaje, que luego se especializa para tareas específicas de acuerdo con un entrenamiento adicional en dominios específicos. Sin embargo, se ha demostrado que los grandes modelos de lenguaje también pueden resolver muchas tareas sin NINGÚN entrenamiento específico de dominio. Una familia de modelos capaces de hacer esto se llama **GPT**: Transformador Generativo Preentrenado. + +## [Cuestionario previo a la conferencia](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Generación de Texto y Perplejidad + +La idea de que una red neuronal pueda realizar tareas generales sin entrenamiento posterior se presenta en el artículo [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). La idea principal es que muchas otras tareas pueden ser modeladas utilizando **generación de texto**, porque entender texto significa, esencialmente, ser capaz de producirlo. Dado que el modelo se entrena con una gran cantidad de texto que abarca el conocimiento humano, también se vuelve conocedor de una amplia variedad de temas. + +> Entender y ser capaz de producir texto también implica saber algo sobre el mundo que nos rodea. Las personas también aprenden leyendo en gran medida, y la red GPT es similar en este aspecto. + +Las redes de generación de texto funcionan prediciendo la probabilidad de la siguiente palabra $$P(w_N)$$. Sin embargo, la probabilidad incondicional de la siguiente palabra es igual a la frecuencia de esta palabra en el corpus de texto. GPT es capaz de darnos la **probabilidad condicional** de la siguiente palabra, dado las anteriores: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Puedes leer más sobre probabilidades en nuestro [Currículo de Ciencia de Datos para Principiantes](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) + +La calidad del modelo de generación de lenguaje se puede definir utilizando **perplejidad**. Es una métrica intrínseca que nos permite medir la calidad del modelo sin ningún conjunto de datos específico para la tarea. Se basa en la noción de *probabilidad de una oración*: el modelo asigna alta probabilidad a una oración que es probable que sea real (es decir, el modelo no está **perplejo** por ella), y baja probabilidad a oraciones que tienen menos sentido (por ejemplo, *¿Puede hacer qué?*). Cuando le damos a nuestro modelo oraciones de un corpus de texto real, esperaríamos que tuvieran alta probabilidad y baja **perplejidad**. Matemáticamente, se define como la probabilidad inversa normalizada del conjunto de prueba: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Puedes experimentar con la generación de texto utilizando [el editor de texto impulsado por GPT de Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. En este editor, comienzas a escribir tu texto, y al presionar **[TAB]** se te ofrecerán varias opciones de finalización. Si son demasiado cortas, o no estás satisfecho con ellas, presiona [TAB] nuevamente y tendrás más opciones, incluyendo fragmentos de texto más largos. + +## GPT es una Familia + +GPT no es un solo modelo, sino una colección de modelos desarrollados y entrenados por [OpenAI](https://openai.com). + +Bajo los modelos GPT, tenemos: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|Modelo de lenguaje con hasta 1.5 mil millones de parámetros. | Modelo de lenguaje con hasta 175 mil millones de parámetros | 100T parámetros y acepta tanto entradas de imagen como de texto y produce texto. | + +Los modelos GPT-3 y GPT-4 están disponibles [como un servicio cognitivo de Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste), y como [API de OpenAI](https://openai.com/api/). + +## Ingeniería de Prompts + +Debido a que GPT ha sido entrenado con grandes volúmenes de datos para entender el lenguaje y el código, proporciona salidas en respuesta a entradas (prompts). Los prompts son las entradas o consultas de GPT mediante las cuales se dan instrucciones a los modelos sobre las tareas que deben completar a continuación. Para obtener un resultado deseado, necesitas el prompt más efectivo, lo que implica seleccionar las palabras, formatos, frases o incluso símbolos correctos. Este enfoque se llama [Ingeniería de Prompts](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) + +[Esta documentación](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) te proporciona más información sobre la ingeniería de prompts. + +## ✍️ Cuaderno de Ejemplo: [Jugando con OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Continúa tu aprendizaje en los siguientes cuadernos: + +* [Generando texto con OpenAI-GPT y Transformers de Hugging Face](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Conclusión + +Los nuevos modelos de lenguaje preentrenados generales no solo modelan la estructura del lenguaje, sino que también contienen una gran cantidad de lenguaje natural. Por lo tanto, pueden ser utilizados de manera efectiva para resolver algunas tareas de PLN en configuraciones de cero disparos o pocos disparos. + +## [Cuestionario posterior a la conferencia](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/5-NLP/README.md b/translations/es/lessons/5-NLP/README.md new file mode 100644 index 00000000..a329ef8e --- /dev/null +++ b/translations/es/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# Procesamiento de Lenguaje Natural + +![Resumen de tareas de PLN en un garabato](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.es.png) + +En esta sección, nos centraremos en el uso de Redes Neuronales para abordar tareas relacionadas con el **Procesamiento de Lenguaje Natural (PLN)**. Existen muchos problemas de PLN que queremos que los ordenadores puedan resolver: + +* **Clasificación de texto** es un problema típico de clasificación relacionado con secuencias de texto. Ejemplos incluyen clasificar mensajes de correo electrónico como spam o no spam, o categorizar artículos como deportes, negocios, política, etc. Además, al desarrollar chatbots, a menudo necesitamos entender lo que un usuario quería decir; en este caso, estamos tratando con **clasificación de intenciones**. A menudo, en la clasificación de intenciones necesitamos lidiar con muchas categorías. +* **Análisis de sentimientos** es un problema típico de regresión, donde necesitamos atribuir un número (un sentimiento) que corresponde a cuán positivo o negativo es el significado de una oración. Una versión más avanzada del análisis de sentimientos es el **análisis de sentimientos basado en aspectos** (ABSA), donde atribuimos el sentimiento no a toda la oración, sino a diferentes partes de ella (aspectos), por ejemplo, *En este restaurante, me gustó la cocina, pero la atmósfera era horrible*. +* **Reconocimiento de Entidades Nombradas** (NER) se refiere al problema de extraer ciertas entidades del texto. Por ejemplo, podríamos necesitar entender que en la frase *Necesito volar a París mañana* la palabra *mañana* se refiere a una FECHA, y *París* es una UBICACIÓN. +* **Extracción de palabras clave** es similar a NER, pero necesitamos extraer automáticamente palabras importantes para el significado de la oración, sin entrenamiento previo para tipos de entidades específicos. +* **Agrupamiento de texto** puede ser útil cuando queremos agrupar oraciones similares, por ejemplo, solicitudes similares en conversaciones de soporte técnico. +* **Respuesta a preguntas** se refiere a la capacidad de un modelo para responder a una pregunta específica. El modelo recibe un pasaje de texto y una pregunta como entradas, y necesita proporcionar un lugar en el texto donde se contiene la respuesta a la pregunta (o, a veces, generar el texto de respuesta). +* **Generación de texto** es la capacidad de un modelo para generar nuevo texto. Puede considerarse como una tarea de clasificación que predice la siguiente letra/palabra basada en un *texto de entrada*. Modelos avanzados de generación de texto, como GPT-3, son capaces de resolver otras tareas de PLN, como clasificación, utilizando una técnica llamada [programación de prompts](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) o [ingeniería de prompts](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Resumen de texto** es una técnica cuando queremos que una computadora "lea" un texto largo y lo resuma en unas pocas oraciones. +* **Traducción automática** puede verse como una combinación de comprensión de texto en un idioma y generación de texto en otro. + +Inicialmente, la mayoría de las tareas de PLN se resolvían utilizando métodos tradicionales como gramáticas. Por ejemplo, en la traducción automática se utilizaban analizadores para transformar la oración inicial en un árbol de sintaxis, luego se extraían estructuras semánticas de nivel superior para representar el significado de la oración, y con base en este significado y la gramática del idioma objetivo se generaba el resultado. Hoy en día, muchas tareas de PLN se resuelven de manera más efectiva utilizando redes neuronales. + +> Muchos métodos clásicos de PLN están implementados en la biblioteca de Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Hay un excelente [Libro de NLTK](https://www.nltk.org/book/) disponible en línea que cubre cómo se pueden resolver diferentes tareas de PLN utilizando NLTK. + +En nuestro curso, nos centraremos principalmente en el uso de Redes Neuronales para PLN, y utilizaremos NLTK cuando sea necesario. + +Ya hemos aprendido sobre el uso de redes neuronales para tratar con datos tabulares y con imágenes. La principal diferencia entre esos tipos de datos y el texto es que el texto es una secuencia de longitud variable, mientras que el tamaño de entrada en el caso de las imágenes se conoce de antemano. Mientras que las redes convolucionales pueden extraer patrones de los datos de entrada, los patrones en el texto son más complejos. Por ejemplo, podemos tener negaciones separadas del sujeto que sean arbitrarias para muchas palabras (por ejemplo, *No me gustan las naranjas*, frente a *No me gustan esas grandes naranjas coloridas y sabrosas*), y eso aún debería interpretarse como un solo patrón. Por lo tanto, para manejar el lenguaje necesitamos introducir nuevos tipos de redes neuronales, como *redes recurrentes* y *transformadores*. + +## Instalar Bibliotecas + +Si estás utilizando una instalación local de Python para ejecutar este curso, es posible que necesites instalar todas las bibliotecas requeridas para PLN utilizando los siguientes comandos: + +**Para PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Para TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Puedes probar PLN con TensorFlow en [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Advertencia sobre GPU + +En esta sección, en algunos de los ejemplos estaremos entrenando modelos bastante grandes. +* **Usa una computadora habilitada para GPU**: Es recomendable ejecutar tus cuadernos en una computadora habilitada para GPU para reducir los tiempos de espera al trabajar con modelos grandes. +* **Restricciones de memoria de GPU**: Ejecutar en una GPU puede llevar a situaciones donde te quedes sin memoria de GPU, especialmente al entrenar modelos grandes. +* **Consumo de memoria de GPU**: La cantidad de memoria de GPU consumida durante el entrenamiento depende de varios factores, incluido el tamaño del minibatch. +* **Minimiza el tamaño del minibatch**: Si encuentras problemas de memoria de GPU, considera reducir el tamaño del minibatch en tu código como una posible solución. +* **Liberación de memoria de GPU en TensorFlow**: Las versiones más antiguas de TensorFlow pueden no liberar correctamente la memoria de GPU al entrenar múltiples modelos dentro de un mismo kernel de Python. Para gestionar el uso de memoria de GPU de manera efectiva, puedes configurar TensorFlow para que asigne memoria de GPU solo según sea necesario. +* **Inclusión de código**: Para configurar TensorFlow para que aumente la asignación de memoria de GPU solo cuando sea necesario, incluye el siguiente código en tus cuadernos: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Si estás interesado en aprender sobre PLN desde una perspectiva clásica de ML, visita [este conjunto de lecciones](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) + +## En esta Sección +En esta sección aprenderemos sobre: + +* [Representación de texto como tensores](13-TextRep/README.md) +* [Embeddings de palabras](14-Emdeddings/README.md) +* [Modelado del lenguaje](15-LanguageModeling/README.md) +* [Redes Neuronales Recurrentes](16-RNN/README.md) +* [Redes Generativas](17-GenerativeNetworks/README.md) +* [Transformadores](18-Transformers/README.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/es/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..71e59689 --- /dev/null +++ b/translations/es/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# Algoritmos Genéticos + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Algoritmos Genéticos** (GA) se basan en un **enfoque evolutivo** para la IA, en el que se utilizan métodos de la evolución de una población para obtener una solución óptima para un problema dado. Fueron propuestos en 1975 por [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). + +Los Algoritmos Genéticos se basan en las siguientes ideas: + +* Las soluciones válidas al problema pueden ser representadas como **genes** +* **Crossover** nos permite combinar dos soluciones para obtener una nueva solución válida +* **Selección** se utiliza para seleccionar soluciones más óptimas utilizando alguna **función de aptitud** +* Se introducen **mutaciones** para desestabilizar la optimización y salir del mínimo local + +Si deseas implementar un Algoritmo Genético, necesitas lo siguiente: + + * Encontrar un método para codificar nuestras soluciones de problema utilizando **genes** g∈Γ + * En el conjunto de genes Γ, necesitamos definir la **función de aptitud** fit: Γ→**R**. Los valores más pequeños de la función corresponden a mejores soluciones. + * Definir un mecanismo de **crossover** para combinar dos genes y obtener una nueva solución válida crossover: Γ2→Γ. + * Definir un mecanismo de **mutación** mutate: Γ→Γ. + +En muchos casos, el crossover y la mutación son algoritmos bastante simples para manipular genes como secuencias numéricas o vectores de bits. + +La implementación específica de un algoritmo genético puede variar de un caso a otro, pero la estructura general es la siguiente: + +1. Seleccionar una población inicial G⊂Γ +2. Seleccionar aleatoriamente una de las operaciones que se realizarán en este paso: crossover o mutación +3. **Crossover**: + * Seleccionar aleatoriamente dos genes g1, g2 ∈ G + * Calcular crossover g=crossover(g1,g2) + * Si fit(g)1) o fit(g)2) - reemplazar el gen correspondiente en la población por g. +4. **Mutación** - seleccionar un gen aleatorio g∈G y reemplazarlo por mutate(g) +5. Repetir desde el paso 2, hasta que obtengamos un valor de fit suficientemente pequeño, o hasta que se alcance el límite en el número de pasos. + +## Tareas Típicas + +Las tareas que normalmente se resuelven con Algoritmos Genéticos incluyen: + +1. Optimización de horarios +1. Empaque óptimo +1. Corte óptimo +1. Aceleración de búsqueda exhaustiva + +## ✍️ Ejercicios: Algoritmos Genéticos + +Continúa tu aprendizaje en los siguientes cuadernos: + +Ve a [este cuaderno](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) para ver dos ejemplos de uso de Algoritmos Genéticos: + +1. División justa del tesoro +1. Problema de las 8 Reinas + +## Conclusión + +Los Algoritmos Genéticos se utilizan para resolver muchos problemas, incluidos problemas de logística y búsqueda. El campo se inspira en investigaciones que fusionaron temas de Psicología y Ciencias de la Computación. + +## 🚀 Desafío + +"Los algoritmos genéticos son simples de implementar, pero su comportamiento es difícil de entender." [fuente](https://wikipedia.org/wiki/Genetic_algorithm) Realiza una investigación para encontrar una implementación de un algoritmo genético, como resolver un rompecabezas de Sudoku, y explica cómo funciona en un esquema o diagrama de flujo. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Revisión y Autoestudio + +Mira [este gran video](https://www.youtube.com/watch?v=qv6UVOQ0F44) que habla sobre cómo las computadoras pueden aprender a jugar Super Mario utilizando redes neuronales entrenadas por algoritmos genéticos. Aprenderemos más sobre cómo las computadoras aprenden a jugar juegos como ese [en la siguiente sección](../22-DeepRL/README.md). + +## [Tarea: Ecuación Diofantina](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Tu objetivo es resolver la llamada **ecuación diofantina** - una ecuación con raíces enteras. Por ejemplo, considera la ecuación a+2b+3c+4d=30. Necesitas encontrar las raíces enteras que satisfacen esta ecuación. + +*Esta tarea está inspirada en [esta publicación](https://habr.com/post/128704/).* + +Consejos: + +1. Puedes considerar que las raíces están en el intervalo [0;30] +1. Como gen, considera usar la lista de valores de raíz + +Utiliza [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) como punto de partida. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/6-Other/22-DeepRL/README.md b/translations/es/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..8f121e76 --- /dev/null +++ b/translations/es/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# Aprendizaje Profundo por Refuerzo + +El aprendizaje por refuerzo (RL) se considera uno de los paradigmas básicos del aprendizaje automático, junto al aprendizaje supervisado y no supervisado. Mientras que en el aprendizaje supervisado nos basamos en un conjunto de datos con resultados conocidos, el RL se basa en **aprender haciendo**. Por ejemplo, cuando vemos un videojuego por primera vez, comenzamos a jugar, incluso sin conocer las reglas, y pronto somos capaces de mejorar nuestras habilidades simplemente a través del proceso de jugar y ajustar nuestro comportamiento. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Para realizar RL, necesitamos: + +* Un **entorno** o **simulador** que establezca las reglas del juego. Debemos poder ejecutar experimentos en el simulador y observar los resultados. +* Una **función de recompensa**, que indique cuán exitoso fue nuestro experimento. En el caso de aprender a jugar un videojuego, la recompensa sería nuestra puntuación final. + +Basándonos en la función de recompensa, deberíamos poder ajustar nuestro comportamiento y mejorar nuestras habilidades, de modo que la próxima vez juguemos mejor. La principal diferencia entre otros tipos de aprendizaje automático y el RL es que en el RL típicamente no sabemos si ganamos o perdemos hasta que terminamos el juego. Por lo tanto, no podemos decir si un determinado movimiento por sí solo es bueno o no; solo recibimos una recompensa al final del juego. + +Durante el RL, normalmente realizamos muchos experimentos. Durante cada experimento, necesitamos equilibrar entre seguir la estrategia óptima que hemos aprendido hasta ahora (**explotación**) y explorar nuevos estados posibles (**exploración**). + +## OpenAI Gym + +Una gran herramienta para RL es el [OpenAI Gym](https://gym.openai.com/) - un **entorno de simulación**, que puede simular muchos entornos diferentes, desde juegos de Atari hasta la física detrás del equilibrio de un palo. Es uno de los entornos de simulación más populares para entrenar algoritmos de aprendizaje por refuerzo, y es mantenido por [OpenAI](https://openai.com/). + +> **Nota**: Puedes ver todos los entornos disponibles en OpenAI Gym [aquí](https://gym.openai.com/envs/#classic_control). + +## Equilibrio de CartPole + +Probablemente todos hayan visto dispositivos de equilibrio modernos como el *Segway* o *Gyroscooters*. Son capaces de equilibrarse automáticamente ajustando sus ruedas en respuesta a una señal de un acelerómetro o giroscopio. En esta sección, aprenderemos cómo resolver un problema similar: equilibrar un palo. Es similar a una situación en la que un artista de circo necesita equilibrar un palo en su mano, pero este equilibrio de palo solo ocurre en 1D. + +Una versión simplificada del equilibrio se conoce como el problema de **CartPole**. En el mundo de cartpole, tenemos un deslizador horizontal que puede moverse hacia la izquierda o hacia la derecha, y el objetivo es equilibrar un palo vertical en la parte superior del deslizador mientras se mueve. + +un cartpole + +Para crear y usar este entorno, necesitamos un par de líneas de código en Python: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +Cada entorno se puede acceder exactamente de la misma manera: +* `env.reset` starts a new experiment +* `env.step` realiza un paso de simulación. Recibe una **acción** del **espacio de acciones**, y devuelve una **observación** (del espacio de observaciones), así como una recompensa y una bandera de terminación. + +En el ejemplo anterior, realizamos una acción aleatoria en cada paso, por lo que la vida del experimento es muy corta: + +![cartpole sin equilibrio](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +El objetivo de un algoritmo de RL es entrenar un modelo - la llamada **política** π - que devolverá la acción en respuesta a un estado dado. También podemos considerar la política como probabilística, es decir, para cualquier estado *s* y acción *a* devolverá la probabilidad π(*a*|*s*) de que debamos tomar *a* en el estado *s*. + +## Algoritmo de Gradientes de Política + +La forma más obvia de modelar una política es creando una red neuronal que tome estados como entrada y devuelva acciones correspondientes (o más bien las probabilidades de todas las acciones). En cierto sentido, sería similar a una tarea de clasificación normal, con una gran diferencia: no sabemos de antemano qué acciones debemos tomar en cada uno de los pasos. + +La idea aquí es estimar esas probabilidades. Construimos un vector de **recompensas acumulativas** que muestra nuestra recompensa total en cada paso del experimento. También aplicamos **descuento de recompensa** multiplicando las recompensas anteriores por algún coeficiente γ=0.99, con el fin de disminuir el papel de las recompensas anteriores. Luego, reforzamos esos pasos a lo largo del camino del experimento que generan mayores recompensas. + +> Aprende más sobre el algoritmo de Gradiente de Política y míralo en acción en el [cuaderno de ejemplo](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algoritmo Actor-Critic + +Una versión mejorada del enfoque de Gradientes de Política se llama **Actor-Critic**. La idea principal detrás de esto es que la red neuronal se entrenaría para devolver dos cosas: + +* La política, que determina qué acción tomar. Esta parte se llama **actor**. +* La estimación de la recompensa total que podemos esperar obtener en este estado - esta parte se llama **crítico**. + +En cierto sentido, esta arquitectura se asemeja a un [GAN](../../4-ComputerVision/10-GANs/README.md), donde tenemos dos redes que se entrenan entre sí. En el modelo actor-crítico, el actor propone la acción que necesitamos tomar, y el crítico intenta ser crítico y estimar el resultado. Sin embargo, nuestro objetivo es entrenar esas redes de manera conjunta. + +Dado que conocemos tanto las recompensas acumulativas reales como los resultados devueltos por el crítico durante el experimento, es relativamente fácil construir una función de pérdida que minimice la diferencia entre ellas. Eso nos daría la **pérdida del crítico**. Podemos calcular la **pérdida del actor** utilizando el mismo enfoque que en el algoritmo de gradiente de política. + +Después de ejecutar uno de estos algoritmos, podemos esperar que nuestro CartPole se comporte así: + +![un cartpole en equilibrio](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Ejercicios: Gradientes de Política y RL Actor-Critic + +Continúa tu aprendizaje en los siguientes cuadernos: + +* [RL en TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL en PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Otras Tareas de RL + +El Aprendizaje por Refuerzo hoy en día es un campo de investigación de rápido crecimiento. Algunos de los ejemplos interesantes de aprendizaje por refuerzo son: + +* Enseñar a una computadora a jugar **Juegos de Atari**. La parte desafiante de este problema es que no tenemos un estado simple representado como un vector, sino más bien una captura de pantalla, y necesitamos usar la CNN para convertir esta imagen de pantalla en un vector de características, o extraer información de recompensa. Los juegos de Atari están disponibles en el Gym. +* Enseñar a una computadora a jugar juegos de mesa, como Ajedrez y Go. Recientemente, programas de vanguardia como **Alpha Zero** fueron entrenados desde cero por dos agentes jugando entre sí y mejorando en cada paso. +* En la industria, el RL se utiliza para crear sistemas de control a partir de simulaciones. Un servicio llamado [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) está diseñado específicamente para eso. + +## Conclusión + +Ahora hemos aprendido cómo entrenar agentes para lograr buenos resultados simplemente proporcionándoles una función de recompensa que define el estado deseado del juego y dándoles la oportunidad de explorar inteligentemente el espacio de búsqueda. Hemos probado con éxito dos algoritmos y logrado un buen resultado en un período de tiempo relativamente corto. Sin embargo, este es solo el comienzo de tu viaje en RL, y definitivamente deberías considerar tomar un curso separado si deseas profundizar más. + +## 🚀 Desafío + +Explora las aplicaciones enumeradas en la sección 'Otras Tareas de RL' y trata de implementar una. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Revisión y Autoestudio + +Aprende más sobre el aprendizaje por refuerzo clásico en nuestro [Currículo de Aprendizaje Automático para Principiantes](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Mira [este gran video](https://www.youtube.com/watch?v=qv6UVOQ0F44) que habla sobre cómo una computadora puede aprender a jugar Super Mario. + +## Tarea: [Entrenar un Mountain Car](lab/README.md) + +Tu objetivo durante esta tarea sería entrenar un entorno diferente de Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/6-Other/22-DeepRL/lab/README.md b/translations/es/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..1652fe86 --- /dev/null +++ b/translations/es/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# Entrenando Mountain Car para Escapar + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Tu objetivo es entrenar al agente de RL para controlar [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) en el entorno de OpenAI. Estás entrenado con datos hasta octubre de 2023. + +## El Entorno + +El entorno de Mountain Car consiste en un coche atrapado dentro de un valle. Tu objetivo es saltar fuera del valle y alcanzar la bandera. Las acciones que puedes realizar son acelerar hacia la izquierda, hacia la derecha, o no hacer nada. Puedes observar la posición del coche a lo largo del eje x, y la velocidad. + +## Iniciando el Notebook + +Comienza el laboratorio abriendo [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Conclusión + +Deberías aprender a lo largo de este laboratorio que adoptar algoritmos de RL a un nuevo entorno es a menudo bastante sencillo, porque el OpenAI Gym tiene la misma interfaz para todos los entornos, y los algoritmos no dependen en gran medida de la naturaleza del entorno. Incluso puedes reestructurar el código de Python de tal manera que se pase cualquier entorno al algoritmo de RL como un parámetro. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/6-Other/23-MultiagentSystems/README.md b/translations/es/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..f475fece --- /dev/null +++ b/translations/es/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,155 @@ +# Sistemas Multi-Agente + +Una de las formas posibles de alcanzar la inteligencia es el llamado enfoque **emergente** (o **sinerético**), que se basa en el hecho de que el comportamiento combinado de muchos agentes relativamente simples puede resultar en un comportamiento general más complejo (o inteligente) del sistema en su conjunto. Teóricamente, esto se basa en los principios de la [Inteligencia Colectiva](https://en.wikipedia.org/wiki/Collective_intelligence), el [Emergentismo](https://en.wikipedia.org/wiki/Global_brain) y la [Cibernética Evolutiva](https://en.wikipedia.org/wiki/Global_brain), que afirman que los sistemas de nivel superior obtienen algún tipo de valor añadido cuando se combinan adecuadamente a partir de sistemas de nivel inferior (el llamado *principio de transición de metasistema*). + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +La dirección de los **Sistemas Multi-Agente** ha surgido en IA en la década de 1990 como respuesta al crecimiento de Internet y los sistemas distribuidos. Uno de los libros de texto clásicos de IA, [Inteligencia Artificial: Un Enfoque Moderno](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), se centra en la visión de la IA clásica desde el punto de vista de los sistemas multi-agente. + +Central al enfoque multi-agente es la noción de **Agente** - una entidad que vive en algún **entorno**, que puede percibir y actuar sobre él. Esta es una definición muy amplia, y podría haber muchos tipos y clasificaciones diferentes de agentes: + +* Por su capacidad de razonar: + - Los agentes **reactivos** generalmente tienen un comportamiento simple de tipo solicitud-respuesta. + - Los agentes **deliberativos** emplean algún tipo de razonamiento lógico y/o capacidades de planificación. +* Por el lugar donde el agente ejecuta su código: + - Los agentes **estáticos** trabajan en un nodo de red dedicado. + - Los agentes **móviles** pueden mover su código entre nodos de red. +* Por su comportamiento: + - Los **agentes pasivos** no tienen objetivos específicos. Tales agentes pueden reaccionar a estímulos externos, pero no iniciarán acciones por sí mismos. + - Los **agentes activos** tienen objetivos que persiguen. + - Los **agentes cognitivos** involucran planificación y razonamiento complejos. + +Los sistemas multi-agente se utilizan hoy en día en una serie de aplicaciones: + +* En los juegos, muchos personajes no jugadores emplean algún tipo de IA y pueden considerarse agentes inteligentes. +* En la producción de video, renderizar escenas 3D complejas que involucran multitudes se realiza típicamente utilizando simulación multi-agente. +* En modelado de sistemas, el enfoque multi-agente se utiliza para simular el comportamiento de un modelo complejo. Por ejemplo, se ha utilizado con éxito el enfoque multi-agente para predecir la propagación de la enfermedad COVID-19 en todo el mundo. Un enfoque similar puede usarse para modelar el tráfico en la ciudad y ver cómo reacciona a los cambios en las normas de tráfico. +* En sistemas de automatización complejos, cada dispositivo puede actuar como un agente independiente, lo que hace que todo el sistema sea menos monolítico y más robusto. + +No vamos a dedicar mucho tiempo a profundizar en los sistemas multi-agente, pero consideremos un ejemplo de **Modelado Multi-Agente**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) es un entorno de modelado multi-agente basado en una versión modificada del lenguaje de programación [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Este lenguaje fue desarrollado para enseñar conceptos de programación a niños, y permite controlar un agente llamado **tortuga**, que puede moverse, dejando un rastro detrás. Esto permite crear figuras geométricas complejas, lo que es una forma muy visual de entender el comportamiento de un agente. + +En NetLogo, podemos crear muchas tortugas utilizando el comando `create-turtles`. Luego podemos ordenar a todas las tortugas que realicen algunas acciones (en el ejemplo a continuación - avanzar 10 puntos hacia adelante): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Por supuesto, no es interesante cuando todas las tortugas hacen lo mismo, así que podemos `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` es el nombre de una raza, y necesitamos especificar tanto la palabra en singular como en plural, porque diferentes comandos utilizan diferentes formas para mayor claridad. + +> ✅ No vamos a entrar en aprender el lenguaje NetLogo en sí; puedes visitar el brillante [Diccionario Interactivo para Principiantes de NetLogo](https://ccl.northwestern.edu/netlogo/bind/) si estás interesado en aprender más. + +Puedes [descargar](https://ccl.northwestern.edu/netlogo/download.shtml) e instalar NetLogo para probarlo. + +### Biblioteca de Modelos + +Una gran ventaja de NetLogo es que contiene una biblioteca de modelos funcionales que puedes probar. Ve a **Archivo → Biblioteca de Modelos**, y tienes muchas categorías de modelos para elegir. + +Biblioteca de Modelos de NetLogo + +> Una captura de pantalla de la biblioteca de modelos por Dmitry Soshnikov + +Puedes abrir uno de los modelos, por ejemplo **Biología → Rebaño**. + +### Principios Principales + +Después de abrir el modelo, se te lleva a la pantalla principal de NetLogo. Aquí hay un modelo de ejemplo que describe la población de lobos y ovejas, dados recursos finitos (hierba). + +![Pantalla Principal de NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.es.png) + +> Captura de pantalla por Dmitry Soshnikov + +En esta pantalla, puedes ver: + +* La sección de **Interfaz** que contiene: + - El campo principal, donde viven todos los agentes. + - Diferentes controles: botones, deslizadores, etc. + - Gráficos que puedes usar para mostrar parámetros de la simulación. +* La pestaña de **Código** que contiene el editor, donde puedes escribir el programa NetLogo. + +En la mayoría de los casos, la interfaz tendría un botón de **Configuración**, que inicializa el estado de la simulación, y un botón de **Ejecutar** que inicia la ejecución. Estos son manejados por controladores correspondientes en el código que lucen así: + +``` +to go [ +... +] +``` + +El mundo de NetLogo consiste en los siguientes objetos: + +* **Agentes** (tortugas) que pueden moverse por el campo y hacer algo. Ordenas a los agentes usando `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` para hacer algo. +* **Observador** es un agente único que controla el mundo. Todos los controladores de botones se ejecutan en *modo observador*. + +> ✅ La belleza de un entorno multi-agente es que el código que se ejecuta en modo tortuga o en modo parche se ejecuta al mismo tiempo por todos los agentes en paralelo. Así, al escribir un poco de código y programar el comportamiento de un agente individual, puedes crear un comportamiento complejo del sistema de simulación en su conjunto. + +### Rebaño + +Como ejemplo de comportamiento multi-agente, consideremos **[Rebaño](https://en.wikipedia.org/wiki/Flocking_(behavior))**. El rebaño es un patrón complejo que es muy similar a cómo vuelan los bandadas de aves. Al observarlas volar, puedes pensar que siguen algún tipo de algoritmo colectivo, o que poseen alguna forma de *inteligencia colectiva*. Sin embargo, este comportamiento complejo surge cuando cada agente individual (en este caso, un *pájaro*) solo observa a otros agentes a una corta distancia de él, y sigue tres reglas simples: + +* **Alineación** - se dirige hacia la dirección promedio de los agentes vecinos. +* **Cohesión** - intenta dirigirse hacia la posición promedio de los vecinos (*atracción a largo alcance*). +* **Separación** - cuando se acerca demasiado a otros pájaros, intenta alejarse (*repulsión a corto alcance*). + +Puedes ejecutar el ejemplo de rebaño y observar el comportamiento. También puedes ajustar parámetros, como el *grado de separación*, o el *rango de visión*, que define cuán lejos puede ver cada pájaro. Ten en cuenta que si reduces el rango de visión a 0, todos los pájaros se vuelven ciegos y el rebaño se detiene. Si reduces la separación a 0, todos los pájaros se agrupan en una línea recta. + +> ✅ Cambia a la pestaña de **Código** y observa dónde se implementan las tres reglas del rebaño (alineación, cohesión y separación) en el código. Nota cómo nos referimos solo a aquellos agentes que están a la vista. + +### Otros Modelos para Ver + +Hay algunos modelos más interesantes con los que puedes experimentar: + +* **Arte → Fuegos Artificiales** muestra cómo un fuego artificial puede considerarse un comportamiento colectivo de flujos individuales de fuego. +* **Ciencias Sociales → Tráfico Básico** y **Ciencias Sociales → Tráfico en Rejilla** muestran el modelo del tráfico de la ciudad en una rejilla 1D y 2D con o sin semáforos. Cada coche en la simulación sigue las siguientes reglas: + - Si el espacio frente a él está vacío - acelera (hasta una cierta velocidad máxima). + - Si ve un obstáculo frente a él - frena (y puedes ajustar cuán lejos puede ver un conductor). +* **Ciencias Sociales → Fiesta** muestra cómo las personas se agrupan durante una fiesta de cócteles. Puedes encontrar la combinación de parámetros que lleva al aumento más rápido de la felicidad del grupo. + +Como puedes ver en estos ejemplos, las simulaciones multi-agente pueden ser una forma bastante útil de entender el comportamiento de un sistema complejo que consiste en individuos que siguen la misma lógica o lógica similar. También puede utilizarse para controlar agentes virtuales, como [NPCs](https://en.wikipedia.org/wiki/NPC) en videojuegos, o agentes en mundos animados en 3D. + +## Agentes Deliberativos + +Los agentes descritos anteriormente son muy simples, reaccionando a los cambios en el entorno utilizando algún tipo de algoritmo. Como tales, son **agentes reactivos**. Sin embargo, a veces los agentes pueden razonar y planificar sus acciones, en cuyo caso se les llama **deliberativos**. + +Un ejemplo típico sería un agente personal que recibe instrucciones de un humano para reservar un tour de vacaciones. Supongamos que hay muchos agentes que viven en Internet, que pueden ayudarlo. Entonces debería contactar a otros agentes para ver qué vuelos están disponibles, cuáles son los precios de los hoteles para diferentes fechas y tratar de negociar el mejor precio. Cuando el plan de vacaciones esté completo y confirmado por el propietario, puede proceder con la reserva. + +Para hacer eso, los agentes necesitan **comunicarse**. Para una comunicación exitosa, necesitan: + +* Algunos **lenguajes estándar para intercambiar conocimiento**, como [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) y [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Estos lenguajes están diseñados en base a la [teoría del acto de habla](https://en.wikipedia.org/wiki/Speech_act). +* Estos lenguajes también deben incluir algunos **protocolos para negociaciones**, basados en diferentes **tipos de subastas**. +* Una **ontología común** para usar, para que se refieran a los mismos conceptos conociendo su semántica. +* Una forma de **descubrir** qué pueden hacer los diferentes agentes, también basada en algún tipo de ontología. + +Los agentes deliberativos son mucho más complejos que los reactivos, porque no solo reaccionan a los cambios en el entorno, sino que también deben ser capaces de *iniciar* acciones. Una de las arquitecturas propuestas para agentes deliberativos es el llamado agente de Creencias-Deseos-Intenciones (BDI): + +* **Creencias** forman un conjunto de conocimientos sobre el entorno de un agente. Puede estructurarse como una base de conocimientos o un conjunto de reglas que un agente puede aplicar a una situación específica en el entorno. +* **Deseos** definen lo que un agente quiere hacer, es decir, sus objetivos. Por ejemplo, el objetivo del agente asistente personal mencionado anteriormente es reservar un tour, y el objetivo de un agente hotelero es maximizar las ganancias. +* **Intenciones** son acciones específicas que un agente planea realizar para alcanzar sus objetivos. Las acciones cambian típicamente el entorno y causan comunicación con otros agentes. + +Hay algunas plataformas disponibles para construir sistemas multi-agente, como [JADE](https://jade.tilab.com/). [Este documento](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contiene una revisión de plataformas multi-agente, junto con una breve historia de los sistemas multi-agente y sus diferentes escenarios de uso. + +## Conclusión + +Los sistemas multi-agente pueden adoptar formas muy diferentes y utilizarse en muchas aplicaciones distintas. +Todos tienden a centrarse en el comportamiento más simple de un agente individual y lograr un comportamiento más complejo del sistema general debido al **efecto sinérgico**. + +## 🚀 Desafío + +Lleva esta lección al mundo real e intenta conceptualizar un sistema multi-agente que pueda resolver un problema. ¿Qué, por ejemplo, necesitaría hacer un sistema multi-agente para optimizar una ruta de autobús escolar? ¿Cómo podría funcionar en una panadería? + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Revisión y Autoestudio + +Revisa el uso de este tipo de sistema en la industria. Elige un dominio como la fabricación o la industria de los videojuegos y descubre cómo los sistemas multi-agente pueden utilizarse para resolver problemas únicos. + +## [Tarea de NetLogo](assignment.md) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/es/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..24bbc214 --- /dev/null +++ b/translations/es/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# Tarea de NetLogo + +Toma uno de los modelos de la biblioteca de NetLogo y úsalo para simular una situación de la vida real lo más cercana posible. Un buen ejemplo sería modificar el modelo de Virus en la carpeta de Visualizaciones Alternativas para mostrar cómo se puede utilizar para modelar la propagación del COVID-19. ¿Puedes construir un modelo que imite la propagación viral en la vida real? + +Muestra tu trabajo guardando una copia y creando un video de demostración que explique cómo el modelo está conectado a una situación del mundo real. + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional por parte de un humano. No somos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/7-Ethics/README.md b/translations/es/lessons/7-Ethics/README.md new file mode 100644 index 00000000..a56ade5b --- /dev/null +++ b/translations/es/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# IA Ética y Responsable + +Has casi terminado este curso, y espero que ahora veas claramente que la IA se basa en una serie de métodos matemáticos formales que nos permiten encontrar relaciones en los datos y entrenar modelos para replicar algunos aspectos del comportamiento humano. En este punto de la historia, consideramos que la IA es una herramienta muy poderosa para extraer patrones de los datos y aplicar esos patrones para resolver nuevos problemas. + +## [Cuestionario previo a la clase](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Sin embargo, en la ciencia ficción a menudo vemos historias donde la IA representa un peligro para la humanidad. Generalmente, esas historias giran en torno a algún tipo de rebelión de la IA, cuando la IA decide confrontar a los seres humanos. Esto implica que la IA tiene algún tipo de emoción o puede tomar decisiones imprevistas por sus desarrolladores. + +El tipo de IA que hemos aprendido en este curso no es más que aritmética de matrices grandes. Es una herramienta muy poderosa para ayudarnos a resolver nuestros problemas, y como cualquier otra herramienta poderosa, puede ser utilizada para fines buenos y malos. Es importante señalar que puede ser *mal utilizada*. + +## Principios de IA Responsable + +Para evitar este uso accidental o intencionado de la IA, Microsoft establece los importantes [Principios de IA Responsable](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Los siguientes conceptos sustentan estos principios: + +* **Equidad** está relacionada con el importante problema de los *sesgos en los modelos*, que pueden ser causados por el uso de datos sesgados para el entrenamiento. Por ejemplo, cuando intentamos predecir la probabilidad de conseguir un trabajo como desarrollador de software para una persona, es probable que el modelo dé mayor preferencia a los hombres, simplemente porque el conjunto de datos de entrenamiento probablemente estaba sesgado hacia una audiencia masculina. Necesitamos equilibrar cuidadosamente los datos de entrenamiento e investigar el modelo para evitar sesgos y asegurarnos de que el modelo tenga en cuenta características más relevantes. +* **Fiabilidad y Seguridad**. Por su naturaleza, los modelos de IA pueden cometer errores. Una red neuronal devuelve probabilidades, y debemos tenerlo en cuenta al tomar decisiones. Cada modelo tiene cierta precisión y recuperación, y necesitamos entender eso para prevenir el daño que puede causar un consejo erróneo. +* **Privacidad y Seguridad** tienen algunas implicaciones específicas de la IA. Por ejemplo, cuando usamos algunos datos para entrenar un modelo, esos datos se integran de alguna manera en el modelo. Por un lado, eso aumenta la seguridad y la privacidad; por otro, necesitamos recordar sobre qué datos se entrenó el modelo. +* **Inclusividad** significa que no estamos construyendo IA para reemplazar a las personas, sino para aumentar a las personas y hacer nuestro trabajo más creativo. También está relacionado con la equidad, porque al tratar con comunidades subrepresentadas, la mayoría de los conjuntos de datos que recopilamos probablemente estén sesgados, y necesitamos asegurarnos de que esas comunidades estén incluidas y manejadas correctamente por la IA. +* **Transparencia**. Esto incluye asegurarnos de que siempre seamos claros sobre el uso de la IA. Además, siempre que sea posible, queremos utilizar sistemas de IA que sean *interpretables*. +* **Responsabilidad**. Cuando los modelos de IA toman decisiones, no siempre está claro quién es responsable de esas decisiones. Necesitamos asegurarnos de que entendemos dónde recae la responsabilidad de las decisiones de la IA. En la mayoría de los casos, querríamos incluir a los seres humanos en el proceso de toma de decisiones importantes, para que las personas reales sean responsables. + +## Herramientas para la IA Responsable + +Microsoft ha desarrollado la [Caja de Herramientas de IA Responsable](https://github.com/microsoft/responsible-ai-toolbox) que contiene un conjunto de herramientas: + +* Tablero de Interpretabilidad (InterpretML) +* Tablero de Equidad (FairLearn) +* Tablero de Análisis de Errores +* Tablero de IA Responsable que incluye + + - EconML - herramienta para Análisis Causal, que se centra en preguntas hipotéticas + - DiCE - herramienta para Análisis Contrafactual que te permite ver qué características necesitan cambiarse para afectar la decisión del modelo + +Para más información sobre la Ética de la IA, visita [esta lección](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) en el Currículo de Aprendizaje Automático que incluye tareas. + +## Revisión y Autoestudio + +Toma este [Camino de Aprendizaje](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) para aprender más sobre la IA responsable. + +## [Cuestionario posterior a la clase](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/README.md b/translations/es/lessons/README.md new file mode 100644 index 00000000..2d32eaba --- /dev/null +++ b/translations/es/lessons/README.md @@ -0,0 +1,8 @@ +# Resumen + +![Resumen en un garabato](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.es.png) + +> Garabato por [Tomomi Imura](https://twitter.com/girlie_mac) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/X-Extras/X1-MultiModal/README.md b/translations/es/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..6c3dc660 --- /dev/null +++ b/translations/es/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# Redes Neuronales Multi-Modales + +Tras el éxito de los modelos de transformadores para resolver tareas de procesamiento de lenguaje natural (NLP), se han aplicado arquitecturas similares a tareas de visión por computadora. Hay un creciente interés en construir modelos que *combinan* capacidades de visión y lenguaje natural. Uno de estos intentos fue realizado por OpenAI, y se llama CLIP y DALL.E. + +## Pre-entrenamiento de Imágenes Contrastivas (CLIP) + +La idea principal de CLIP es poder comparar indicaciones de texto con una imagen y determinar qué tan bien la imagen corresponde a la indicación. + +![Arquitectura CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.es.png) + +> *Imagen del [este post del blog](https://openai.com/blog/clip/)* + +El modelo se entrena con imágenes obtenidas de Internet y sus descripciones. Para cada lote, tomamos N pares de (imagen, texto) y los convertimos en representaciones vectoriales. Esas representaciones se emparejan entre sí. La función de pérdida se define para maximizar la similitud coseno entre los vectores correspondientes a un par (por ejemplo, I y T), y minimizar la similitud coseno entre todos los demás pares. Esa es la razón por la cual este enfoque se llama **contrastivo**. + +El modelo/biblioteca CLIP está disponible en [OpenAI GitHub](https://github.com/openai/CLIP). El enfoque se describe en [este post del blog](https://openai.com/blog/clip/), y con más detalle en [este artículo](https://arxiv.org/pdf/2103.00020.pdf). + +Una vez que este modelo está pre-entrenado, podemos darle un lote de imágenes y un lote de indicaciones de texto, y devolverá un tensor con probabilidades. CLIP se puede utilizar para varias tareas: + +**Clasificación de Imágenes** + +Supongamos que necesitamos clasificar imágenes entre, digamos, gatos, perros y humanos. En este caso, podemos darle al modelo una imagen y una serie de indicaciones de texto: "*una imagen de un gato*", "*una imagen de un perro*", "*una imagen de un humano*". En el vector resultante de 3 probabilidades, solo necesitamos seleccionar el índice con el valor más alto. + +![CLIP para Clasificación de Imágenes](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.es.png) + +> *Imagen del [este post del blog](https://openai.com/blog/clip/)* + +**Búsqueda de Imágenes Basada en Texto** + +También podemos hacer lo opuesto. Si tenemos una colección de imágenes, podemos pasar esta colección al modelo y una indicación de texto; esto nos dará la imagen que es más similar a la indicación dada. + +## ✍️ Ejemplo: [Usando CLIP para Clasificación de Imágenes y Búsqueda de Imágenes](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Abre el [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) notebook para ver CLIP en acción. + +## Generación de Imágenes con VQGAN+ CLIP + +CLIP también se puede utilizar para **generación de imágenes** a partir de una indicación de texto. Para hacer esto, necesitamos un **modelo generador** que pueda generar imágenes basadas en alguna entrada vectorial. Uno de estos modelos se llama [VQGAN](https://compvis.github.io/taming-transformers/) (Generador Antagónico Cuantificado por Vectores). + +Las principales ideas de VQGAN que lo diferencian de un [GAN](../../4-ComputerVision/10-GANs/README.md) ordinario son las siguientes: +* Utilizar una arquitectura de transformador autorregresiva para generar una secuencia de partes visuales ricas en contexto que componen la imagen. Esas partes visuales son a su vez aprendidas por [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Usar un discriminador de sub-imágenes que detecte si partes de la imagen son "reales" o "falsas" (a diferencia del enfoque "todo o nada" en un GAN tradicional). + +Aprende más sobre VQGAN en el sitio web de [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Una de las diferencias importantes entre VQGAN y un GAN tradicional es que este último puede producir una imagen decente a partir de cualquier vector de entrada, mientras que VQGAN es probable que produzca una imagen que no sea coherente. Por lo tanto, necesitamos guiar aún más el proceso de creación de la imagen, y eso se puede hacer usando CLIP. + +![Arquitectura VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.es.png) + +Para generar una imagen correspondiente a una indicación de texto, comenzamos con algún vector de codificación aleatorio que se pasa a través de VQGAN para producir una imagen. Luego, se utiliza CLIP para producir una función de pérdida que muestra qué tan bien la imagen corresponde a la indicación de texto. El objetivo es minimizar esta pérdida, utilizando retropropagación para ajustar los parámetros del vector de entrada. + +Una gran biblioteca que implementa VQGAN+CLIP es [Pixray](http://github.com/pixray/pixray). + +![Imagen producida por Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.es.png) | ![Imagen producida por Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.es.png) | ![Imagen producida por Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.es.png) +----|----|---- +Imagen generada a partir de la indicación *un primer plano de un retrato en acuarela de un joven profesor de literatura con un libro* | Imagen generada a partir de la indicación *un primer plano de un retrato al óleo de una joven profesora de ciencias de la computación con una computadora* | Imagen generada a partir de la indicación *un primer plano de un retrato al óleo de un viejo profesor de matemáticas frente a una pizarra* + +> Imágenes de la colección **Maestros Artificiales** por [Dmitry Soshnikov](http://soshnikov.com). + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E es una versión de GPT-3 entrenada para generar imágenes a partir de indicaciones. Ha sido entrenada con 12 mil millones de parámetros. + +A diferencia de CLIP, DALL-E recibe tanto texto como imagen como un único flujo de tokens para imágenes y texto. Por lo tanto, a partir de múltiples indicaciones, puedes generar imágenes basadas en el texto. + +### [DALL-E 2](https://openai.com/dall-e-2) +La principal diferencia entre DALL-E 1 y 2 es que genera imágenes y arte más realistas. + +Ejemplos de generación de imágenes con DALL-E: +![Imagen producida por 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.es.png) | ![Imagen producida por 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.es.png) | ![Imagen producida por 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.es.png) +----|----|---- +Imagen generada a partir de la indicación *un primer plano de un retrato en acuarela de un joven profesor de literatura con un libro* | Imagen generada a partir de la indicación *un primer plano de un retrato al óleo de una joven profesora de ciencias de la computación con una computadora* | Imagen generada a partir de la indicación *un primer plano de un retrato al óleo de un viejo profesor de matemáticas frente a una pizarra* + +## Referencias + +* Artículo de VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Artículo de CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/sketchnotes/LICENSE.md b/translations/es/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..1f97bb99 --- /dev/null +++ b/translations/es/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,175 @@ +# Atribución-CompartirIgual 4.0 Internacional + +======================================================================= + +La Corporación Creative Commons ("Creative Commons") no es un bufete de abogados y no proporciona servicios legales ni asesoría legal. La distribución de las licencias públicas de Creative Commons no crea una relación de abogado-cliente u otra relación. Creative Commons pone a disposición sus licencias e información relacionada en una base "tal cual". Creative Commons no ofrece garantías respecto a sus licencias, cualquier material licenciado bajo sus términos y condiciones, o cualquier información relacionada. Creative Commons renuncia a toda responsabilidad por daños que resulten de su uso en la máxima medida posible. + +## Uso de las Licencias Públicas de Creative Commons + +Las licencias públicas de Creative Commons proporcionan un conjunto estándar de términos y condiciones que los creadores y otros titulares de derechos pueden usar para compartir obras originales de autoría y otro material sujeto a derechos de autor y ciertos otros derechos especificados en la licencia pública a continuación. Las siguientes consideraciones son solo para fines informativos, no son exhaustivas y no forman parte de nuestras licencias. + +- Consideraciones para los licenciantes: Nuestras licencias públicas están destinadas a ser utilizadas por aquellos autorizados a dar permiso al público para usar material de maneras que de otro modo estarían restringidas por derechos de autor y ciertos otros derechos. Nuestras licencias son irrevocables. Los licenciantes deben leer y comprender los términos y condiciones de la licencia que elijan antes de aplicarla. Los licenciantes también deben asegurar todos los derechos necesarios antes de aplicar nuestras licencias para que el público pueda reutilizar el material como se espera. Los licenciantes deben marcar claramente cualquier material que no esté sujeto a la licencia. Esto incluye otro material licenciado bajo CC, o material utilizado bajo una excepción o limitación al derecho de autor. Más consideraciones para licenciantes: wiki.creativecommons.org/Considerations_for_licensors + +- Consideraciones para el público: Al usar una de nuestras licencias públicas, un licenciante otorga al público permiso para usar el material licenciado bajo términos y condiciones especificados. Si el permiso del licenciante no es necesario por alguna razón, por ejemplo, debido a alguna excepción o limitación aplicable al derecho de autor, entonces ese uso no está regulado por la licencia. Nuestras licencias otorgan solo permisos bajo derechos de autor y ciertos otros derechos que un licenciante tiene autoridad para otorgar. El uso del material licenciado aún puede estar restringido por otras razones, incluyendo porque otros tienen derechos de autor u otros derechos sobre el material. Un licenciante puede hacer solicitudes especiales, como pedir que todos los cambios sean marcados o descritos. Aunque no es obligatorio por nuestras licencias, se le anima a respetar esas solicitudes donde sea razonable. Más consideraciones para el público: wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Licencia Pública de Atribución-CompartirIgual 4.0 Internacional de Creative Commons + +Al ejercer los Derechos Licenciados (definidos a continuación), usted acepta y se compromete a estar sujeto a los términos y condiciones de esta Licencia Pública de Atribución-CompartirIgual 4.0 Internacional de Creative Commons ("Licencia Pública"). En la medida en que esta Licencia Pública pueda ser interpretada como un contrato, se le otorgan los Derechos Licenciados en consideración a su aceptación de estos términos y condiciones, y el Licenciante le otorga tales derechos en consideración a los beneficios que el Licenciante recibe al hacer que el Material Licenciado esté disponible bajo estos términos y condiciones. + +## Sección 1 -- Definiciones. + +a. Material Adaptado significa material sujeto a Derechos de Autor y Derechos Similares que se deriva de o se basa en el Material Licenciado y en el cual el Material Licenciado es traducido, alterado, arreglado, transformado, o modificado de otra manera de una manera que requiere permiso bajo los Derechos de Autor y Derechos Similares que posee el Licenciante. A los efectos de esta Licencia Pública, cuando el Material Licenciado es una obra musical, actuación o grabación de sonido, el Material Adaptado se produce siempre que el Material Licenciado esté sincronizado en relación temporal con una imagen en movimiento. + +b. Licencia del Adaptador significa la licencia que usted aplica a sus Derechos de Autor y Derechos Similares en sus contribuciones al Material Adaptado de acuerdo con los términos y condiciones de esta Licencia Pública. + +c. Licencia Compatible con BY-SA significa una licencia listada en creativecommons.org/compatiblelicenses, aprobada por Creative Commons como esencialmente equivalente a esta Licencia Pública. + +d. Derechos de Autor y Derechos Similares significa derechos de autor y/o derechos similares estrechamente relacionados con el derecho de autor, incluyendo, sin limitación, derechos de actuación, transmisión, grabación de sonido y Derechos de Base de Datos Sui Generis, sin importar cómo se etiqueten o clasifiquen los derechos. A los efectos de esta Licencia Pública, los derechos especificados en la Sección 2(b)(1)-(2) no son Derechos de Autor y Derechos Similares. + +e. Medidas Tecnológicas Efectivas significa aquellas medidas que, en ausencia de la autoridad adecuada, no pueden ser eludidas bajo leyes que cumplen obligaciones bajo el Artículo 11 del Tratado de Derechos de Autor de la OMPI adoptado el 20 de diciembre de 1996, y/o acuerdos internacionales similares. + +f. Excepciones y Limitaciones significa uso justo, trato justo y/o cualquier otra excepción o limitación a los Derechos de Autor y Derechos Similares que se aplica a su uso del Material Licenciado. + +g. Elementos de la Licencia significa los atributos de la licencia listados en el nombre de una Licencia Pública de Creative Commons. Los Elementos de la Licencia de esta Licencia Pública son Atribución y CompartirIgual. + +h. Material Licenciado significa la obra artística o literaria, base de datos, u otro material al que el Licenciante aplicó esta Licencia Pública. + +i. Derechos Licenciados significa los derechos que se le otorgan a usted sujetos a los términos y condiciones de esta Licencia Pública, que están limitados a todos los Derechos de Autor y Derechos Similares que se aplican a su uso del Material Licenciado y que el Licenciante tiene autoridad para licenciar. + +j. Licenciante significa la(s) persona(s) o entidad(s) que otorgan derechos bajo esta Licencia Pública. + +k. Compartir significa proporcionar material al público por cualquier medio o proceso que requiera permiso bajo los Derechos Licenciados, como reproducción, exhibición pública, actuación pública, distribución, difusión, comunicación, o importación, y hacer material disponible al público incluyendo de maneras que los miembros del público puedan acceder al material desde un lugar y en un momento elegidos individualmente por ellos. + +l. Derechos de Base de Datos Sui Generis significa derechos distintos de los derechos de autor que resultan de la Directiva 96/9/CE del Parlamento Europeo y del Consejo del 11 de marzo de 1996 sobre la protección legal de las bases de datos, según enmendada y/o sucedida, así como otros derechos esencialmente equivalentes en cualquier parte del mundo. + +m. Usted significa la persona o entidad que ejerce los Derechos Licenciados bajo esta Licencia Pública. Su tiene un significado correspondiente. + +## Sección 2 -- Alcance. + +a. Otorgamiento de licencia. + +1. Sujeto a los términos y condiciones de esta Licencia Pública, el Licenciante por la presente le otorga a usted una licencia mundial, libre de regalías, no sublicenciable, no exclusiva, irrevocable para ejercer los Derechos Licenciados en el Material Licenciado para: + + a. reproducir y Compartir el Material Licenciado, en su totalidad o en parte; y + + b. producir, reproducir y Compartir Material Adaptado. + +2. Excepciones y Limitaciones. Para evitar dudas, donde se apliquen Excepciones y Limitaciones a su uso, esta Licencia Pública no se aplica, y no necesita cumplir con sus términos y condiciones. + +3. Plazo. El plazo de esta Licencia Pública se especifica en la Sección 6(a). + +4. Medios y formatos; modificaciones técnicas permitidas. El Licenciante le autoriza a ejercer los Derechos Licenciados en todos los medios y formatos, ya sean conocidos ahora o creados en el futuro, y a realizar modificaciones técnicas necesarias para hacerlo. El Licenciante renuncia y/o acuerda no afirmar ningún derecho o autoridad para prohibirle hacer modificaciones técnicas necesarias para ejercer los Derechos Licenciados, incluyendo modificaciones técnicas necesarias para eludir Medidas Tecnológicas Efectivas. A los efectos de esta Licencia Pública, simplemente hacer modificaciones autorizadas por esta Sección 2(a)(4) nunca produce Material Adaptado. + +5. Destinatarios posteriores. + + a. Oferta del Licenciante -- Material Licenciado. Cada destinatario del Material Licenciado recibe automáticamente una oferta del Licenciante para ejercer los Derechos Licenciados bajo los términos y condiciones de esta Licencia Pública. + + b. Oferta adicional del Licenciante -- Material Adaptado. Cada destinatario de Material Adaptado de usted recibe automáticamente una oferta del Licenciante para ejercer los Derechos Licenciados en el Material Adaptado bajo las condiciones de la Licencia del Adaptador que usted aplica. + + c. Sin restricciones posteriores. No puede ofrecer o imponer términos o condiciones adicionales o diferentes sobre, o aplicar Medidas Tecnológicas Efectivas a, el Material Licenciado si hacerlo restringe el ejercicio de los Derechos Licenciados por cualquier destinatario del Material Licenciado. + +6. Sin respaldo. Nada en esta Licencia Pública constituye o puede interpretarse como permiso para afirmar o implicar que usted está, o que su uso del Material Licenciado está, conectado con, o patrocinado, respaldado, o otorgado estatus oficial por, el Licenciante u otros designados para recibir atribución según lo dispuesto en la Sección 3(a)(1)(A)(i). + +b. Otros derechos. + +1. Los derechos morales, como el derecho a la integridad, no están licenciados bajo esta Licencia Pública, ni tampoco los derechos de publicidad, privacidad y/o otros derechos de personalidad similares; sin embargo, en la medida de lo posible, el Licenciante renuncia y/o acuerda no afirmar tales derechos que posee el Licenciante en la medida limitada necesaria para permitirle ejercer los Derechos Licenciados, pero no de otra manera. + +2. Los derechos de patentes y marcas comerciales no están licenciados bajo esta Licencia Pública. + +3. En la medida de lo posible, el Licenciante renuncia a cualquier derecho a cobrar regalías de usted por el ejercicio de los Derechos Licenciados, ya sea directamente o a través de una sociedad de gestión bajo cualquier esquema de licencia voluntaria o renunciable o de licencia obligatoria. En todos los demás casos, el Licenciante se reserva expresamente cualquier derecho a cobrar tales regalías. + +## Sección 3 -- Condiciones de la Licencia. + +Su ejercicio de los Derechos Licenciados está expresamente sujeto a las siguientes condiciones. + +a. Atribución. + +1. Si usted Comparte el Material Licenciado (incluyendo en forma modificada), debe: + + a. retener lo siguiente si es proporcionado por el Licenciante junto con el Material Licenciado: + + i. identificación del creador(es) del Material Licenciado y de cualquier otro designado para recibir atribución, de cualquier manera razonable solicitada por el Licenciante (incluyendo por seudónimo si está designado); + + ii. un aviso de copyright; + + iii. un aviso que se refiera a esta Licencia Pública; + + iv. un aviso que se refiera a la renuncia de garantías; + + v. una URI o hipervínculo al Material Licenciado en la medida razonablemente práctica; + + b. indicar si usted modificó el Material Licenciado y retener una indicación de cualquier modificación previa; y + + c. indicar que el Material Licenciado está licenciado bajo esta Licencia Pública, e incluir el texto de, o la URI o hipervínculo a, esta Licencia Pública. + +2. Puede satisfacer las condiciones en la Sección 3(a)(1) de cualquier manera razonable basada en el medio, los medios y el contexto en el que usted Comparte el Material Licenciado. Por ejemplo, puede ser razonable satisfacer las condiciones proporcionando una URI o hipervínculo a un recurso que incluya la información requerida. + +3. Si lo solicita el Licenciante, debe eliminar cualquier información requerida por la Sección 3(a)(1)(A) en la medida razonablemente práctica. + +b. CompartirIgual. + +Además de las condiciones en la Sección 3(a), si usted Comparte Material Adaptado que produce, también se aplican las siguientes condiciones. + +1. La Licencia del Adaptador que usted aplica debe ser una licencia de Creative Commons con los mismos Elementos de Licencia, esta versión o posterior, o una Licencia Compatible con BY-SA. + +2. Debe incluir el texto de, o la URI o hipervínculo a, la Licencia del Adaptador que usted aplica. Puede satisfacer esta condición de cualquier manera razonable basada en el medio, los medios y el contexto en el que usted Comparte Material Adaptado. + +3. No puede ofrecer o imponer términos o condiciones adicionales o diferentes sobre, o aplicar Medidas Tecnológicas Efectivas a, el Material Adaptado que restrinjan el ejercicio de los derechos otorgados bajo la Licencia del Adaptador que usted aplica. + +## Sección 4 -- Derechos de Base de Datos Sui Generis. + +Donde los Derechos Licenciados incluyen Derechos de Base de Datos Sui Generis que se aplican a su uso del Material Licenciado: + +a. para evitar dudas, la Sección 2(a)(1) le otorga el derecho a extraer, reutilizar, reproducir y Compartir todo o una parte sustancial del contenido de la base de datos; + +b. si usted incluye todo o una parte sustancial del contenido de la base de datos en una base de datos en la que tiene Derechos de Base de Datos Sui Generis, entonces la base de datos en la que tiene Derechos de Base de Datos Sui Generis (pero no su contenido individual) es Material Adaptado, + + incluyendo a efectos de la Sección 3(b); y +c. debe cumplir con las condiciones en la Sección 3(a) si usted Comparte todo o una parte sustancial del contenido de la base de datos. + +Para evitar dudas, esta Sección 4 complementa y no reemplaza sus obligaciones bajo esta Licencia Pública donde los Derechos Licenciados incluyen otros Derechos de Autor y Derechos Similares. + +## Sección 5 -- Renuncia de Garantías y Limitación de Responsabilidad. + +a. A MENOS QUE SE ACUERDE SEPARADAMENTE POR EL LICENCIANTE, EN LA MEDIDA POSIBLE, EL LICENCIANTE OFRECE EL MATERIAL LICENCIADO TAL CUAL Y COMO ESTÉ DISPONIBLE, Y NO HACE REPRESENTACIONES O GARANTÍAS DE NINGÚN TIPO CON RESPECTO AL MATERIAL LICENCIADO, YA SEA EXPRESAS, IMPLÍCITAS, ESTATUTARIAS O DE OTRA MANERA. ESTO INCLUYE, SIN LIMITACIÓN, GARANTÍAS DE TITULO, COMERCIALIZABILIDAD, ADECUACIÓN PARA UN PROPÓSITO PARTICULAR, NO INFRACCIÓN, AUSENCIA DE DEFECTOS LATENTES U OTROS, EXACTITUD, O LA PRESENCIA O AUSENCIA DE ERRORES, YA SEA O NO CONOCIDOS O DESCUBRIBLES. DONDE LAS RENUNCIAS DE GARANTÍAS NO SON PERMITIDAS EN SU TOTALIDAD O EN PARTE, ESTA RENUNCIA PUEDE NO APLICARSE A USTED. + +b. EN LA MEDIDA POSIBLE, EN NINGÚN CASO EL LICENCIANTE SERÁ RESPONSABLE ANTE USTED BAJO NINGUNA TEORÍA LEGAL (INCLUYENDO, SIN LIMITACIÓN, NEGLIGENCIA) O DE OTRA MANERA POR CUALQUIER PÉRDIDA, COSTO, GASTO O DAÑO DIRECTO, ESPECIAL, INDIRECTO, INCIDENTAL, CONSECUENTE, PUNITIVO, EJEMPLAR, O DE OTRA MANERA QUE SURJA DE ESTA LICENCIA PÚBLICA O DEL USO DEL MATERIAL LICENCIADO, INCLUSO SI EL LICENCIANTE HA SIDO ADVERTIDO DE LA POSIBILIDAD DE TALES PÉRDIDAS, COSTOS, GASTOS O DAÑOS. DONDE UNA LIMITACIÓN DE RESPONSABILIDAD NO ES PERMITIDA EN SU TOTALIDAD O EN PARTE, ESTA LIMITACIÓN PUEDE NO APLICARSE A USTED. + +c. La renuncia de garantías y la limitación de responsabilidad proporcionadas anteriormente se interpretarán de una manera que, en la medida posible, se aproxime más a una renuncia absoluta y a la exención de toda responsabilidad. + +## Sección 6 -- Plazo y Terminación. + +a. Esta Licencia Pública se aplica por el plazo de los Derechos de Autor y Derechos Similares licenciados aquí. Sin embargo, si usted no cumple con esta Licencia Pública, entonces sus derechos bajo esta Licencia Pública se terminan automáticamente. + +b. Donde su derecho a usar el Material Licenciado ha terminado bajo la Sección 6(a), se restablece: + + 1. automáticamente a partir de la fecha en que se cure la violación, siempre que se cure dentro de los 30 días posteriores a su descubrimiento de la violación; o + + 2. tras el restablecimiento expreso por parte del Licenciante. + + Para evitar dudas, esta Sección 6(b) no afecta ningún derecho que el Licenciante pueda tener para buscar remedios por sus violaciones de esta Licencia Pública. + +c. Para evitar dudas, el Licenciante también puede ofrecer el Material Licenciado bajo términos o condiciones separados o dejar de distribuir el Material Licenciado en cualquier momento; sin embargo, hacerlo no terminará esta Licencia Pública. + +d. Las Secciones 1, 5, 6, 7 y 8 sobreviven a la terminación de esta Licencia Pública. + +## Sección 7 -- Otros Términos y Condiciones. + +a. El Licenciante no estará obligado por ningún término o condición adicional o diferente comunicado por usted a menos que se acuerde expresamente. + +b. Cualquier arreglo, entendimiento o acuerdo respecto al Material Licenciado no declarado aquí es independiente y separado de los términos y condiciones de esta Licencia Pública. + +## Sección 8 -- Interpretación. + +a. Para evitar dudas, esta Licencia Pública no reduce, limita, restringe, ni impone condiciones sobre ningún uso del Material Licenciado que podría hacerse legalmente sin permiso bajo esta Licencia Pública. + +b. En la medida posible, si alguna disposición de esta Licencia Pública se considera inaplicable, se reformará automáticamente en la medida mínima necesaria para hacerla aplicable. Si la disposición no puede ser reformada, se separará de esta Licencia Pública sin afectar la aplicabilidad de los términos y condiciones restantes. + +c. Ningún término o condición de esta Licencia Pública será renunciado y ninguna falta de cumplimiento será consentida a menos que sea expresamente acordada por el Licenciante. + +d. Nada en esta Licencia Pública constituye o puede interpretarse como una limitación o renuncia a ningún privilegio + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/es/lessons/sketchnotes/README.md b/translations/es/lessons/sketchnotes/README.md new file mode 100644 index 00000000..7984e304 --- /dev/null +++ b/translations/es/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +Todos los sketchnotes del currículo se pueden descargar aquí. + +🎨 Creado por: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**Descargo de responsabilidad**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/fr/README.md b/translations/fr/README.md new file mode 100644 index 00000000..b439901f --- /dev/null +++ b/translations/fr/README.md @@ -0,0 +1,140 @@ +[![Licence GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![Contributeurs GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![Problèmes GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![Demandes de tirage GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Bienvenus](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![Observateurs 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 GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![Étoiles 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) + +# Intelligence Artificielle pour Débutants - Un Programme + +|![ Sketchnote par [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| IA Pour Débutants - _Sketchnote par [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Explorez le monde de l'**Intelligence Artificielle** (IA) avec notre programme de 12 semaines et 24 leçons ! Il comprend des leçons pratiques, des quiz et des laboratoires. Le programme est adapté aux débutants et couvre des outils comme TensorFlow et PyTorch, ainsi que l'éthique en IA. + +## Ce que vous apprendrez + +**[Carte mentale du Cours](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +Dans ce programme, vous apprendrez : + +* Différentes approches de l'Intelligence Artificielle, y compris la "vieille" approche symbolique avec la **Représentation des Connaissances** et le raisonnement ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Réseaux de Neurones** et **Apprentissage Profond**, qui sont au cœur de l'IA moderne. Nous illustrerons les concepts derrière ces sujets importants à l'aide de code dans deux des frameworks les plus populaires - [TensorFlow](http://Tensorflow.org) et [PyTorch](http://pytorch.org). +* **Architectures Neuronales** pour travailler avec des images et du texte. Nous aborderons des modèles récents mais pourrions être un peu en retard par rapport à l'état de l'art. +* Des approches moins populaires de l'IA, telles que les **Algorithmes Génétiques** et les **Systèmes Multi-Agents**. + +Ce que nous ne couvrirons pas dans ce programme : + +> [Trouvez toutes les ressources supplémentaires pour ce cours dans notre collection Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Les cas d'utilisation de l'**IA dans les affaires**. Envisagez de suivre le parcours d'apprentissage [Introduction à l'IA pour les utilisateurs professionnels](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) sur Microsoft Learn, ou [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), développé en coopération avec [INSEAD](https://www.insead.edu/). +* **Apprentissage Automatique Classique**, qui est bien décrit dans notre [Curriculum Apprentissage Automatique pour Débutants](http://github.com/Microsoft/ML-for-Beginners). +* Applications pratiques de l'IA construites en utilisant **[Services Cognitifs](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Pour cela, nous vous recommandons de commencer par les modules Microsoft Learn pour [vision](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [traitement du langage naturel](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[IA Générative avec le Service Azure OpenAI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** et d'autres. +* Frameworks spécifiques de ML **Cloud**, tels que [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) ou [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Envisagez d'utiliser les parcours d'apprentissage [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) et [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). +* **IA conversationnelle** et **Chat Bots**. Il existe un parcours d'apprentissage séparé [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), et vous pouvez également consulter [cet article de blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) pour plus de détails. +* **Mathématiques approfondies** derrière l'apprentissage profond. Pour cela, nous recommandons [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) par Ian Goodfellow, Yoshua Bengio et Aaron Courville, qui est également disponible en ligne à [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Pour une introduction douce aux sujets _IA dans le Cloud_, vous pouvez envisager de suivre le parcours d'apprentissage [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). + +# Contenu + +| | Lien de leçon | PyTorch/Keras/TensorFlow | Lab | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Configuration du cours](./lessons/0-course-setup/setup.md) | [Configurer votre environnement de développement](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Introduction à l'IA**](./lessons/1-Intro/README.md) | | | +| 01 | [Introduction et histoire de l'IA](./lessons/1-Intro/README.md) | - | - | +| II | **IA symbolique** | +| 02 | [Représentation des connaissances et systèmes experts](./lessons/2-Symbolic/README.md) | [Systèmes experts](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) /[Graphique conceptuel](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Introduction aux réseaux neuronaux**](./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 multicouche et création de notre propre 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 | [Introduction aux frameworks (PyTorch/TensorFlow) et surapprentissage](./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 | [**Vision par Ordinateur**](./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)| [Explorez la Vision par Ordinateur sur Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Introduction à la Vision par Ordinateur. 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 | [Réseaux de Neurones Convolutifs](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Architectures 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 | [Réseaux Pré-entraînés et Apprentissage par Transfert](./lessons/4-ComputerVision/08-TransferLearning/README.md) et [Astuces d'Entraînement](./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 | [Autoencodeurs et 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 | [Réseaux Antagonistes Génératifs & Transfert de Style Artistique](./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 | [Détection d'Objets](./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 | [Segmentation Sémantique. 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 | [**Traitement du Langage Naturel**](./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) | [Explorer le Traitement du Langage Naturel sur Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Représentation de Texte. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [Embeddings sémantiques. Word2Vec et 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 | [Modélisation du Langage. Entraînez vos propres 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) | [Laboratoire](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Réseaux de Neurones Récurrents](./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 | [Réseaux Récurrents Génératifs](./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) | [Laboratoire](./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 | [Reconnaissance d'Entités Nommées](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratoire](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Grands Modèles de Langage, Programmation de Prompts et Tâches 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 | **Autres Techniques d'IA** || | +| 21 | [Algorithmes Génétiques](./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 | [Apprentissage par Renforcement Profond](./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 | [Systèmes Multi-Agents](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Éthique de l'IA** | | | +| 24 | [Éthique de l'IA et IA Responsable](./lessons/7-Ethics/README.md) | [Microsoft Learn : Principes d'IA Responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Extras** | | | +| 25 | [Réseaux Multi-Modal, CLIP et 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) | | + +## Chaque leçon contient + +* Matériel de pré-lecture +* Notebooks Jupyter exécutables, qui sont souvent spécifiques au cadre (**PyTorch** ou **TensorFlow**). Le notebook exécutable contient également beaucoup de matériel théorique, donc pour comprendre le sujet, vous devez parcourir au moins une version du notebook (soit PyTorch soit TensorFlow). +* **Labs** disponibles pour certains sujets, qui vous offrent l'opportunité d'essayer d'appliquer le matériel que vous avez appris à un problème spécifique. +* Certaines sections contiennent des liens vers des modules [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) qui couvrent des sujets connexes. + +## Pour commencer + +- Nous avons créé une [leçon de configuration](./lessons/0-course-setup/setup.md) pour vous aider à configurer votre environnement de développement. - Pour les éducateurs, nous avons également créé une [leçon de configuration des programmes](./lessons/0-course-setup/for-teachers.md) ! +- Comment [Exécuter le code dans un VSCode ou un Codepace](./lessons/0-course-setup/how-to-run.md) + +Suivez ces étapes : + +Forkez le dépôt : Cliquez sur le bouton "Fork" en haut à droite de cette page. + +Clonez le dépôt : `git clone https://github.com/microsoft/AI-For-Beginners.git` + +N'oubliez pas de mettre une étoile (🌟) sur ce dépôt pour le retrouver plus facilement plus tard. + +## Rencontrez d'autres apprenants + +Rejoignez notre [serveur Discord officiel pour l'IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) pour rencontrer et réseauter avec d'autres apprenants suivant ce cours et obtenir du soutien. + +## Quiz + +> **Une note sur les quiz** : Tous les quiz se trouvent dans le dossier Quiz-app dans etc\quiz-app. Ils sont liés depuis les leçons. L'application de quiz peut être exécutée localement ou déployée sur Azure ; suivez les instructions dans le dossier `quiz-app`. Ils sont en cours de localisation progressive. + +## Aide demandée + +Avez-vous des suggestions ou trouvé des fautes d'orthographe ou des erreurs de code ? Ouvrez un problème ou créez une demande de tirage. + +## Remerciements spéciaux + +* **✍️ Auteur principal :** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Éditeur :** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Illustrateur de sketchnote :** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Créateur de quiz :** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Contributeurs principaux :** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Autres programmes + +Notre équipe produit d'autres programmes ! Découvrez : + +* [Science des données pour les débutants](https://aka.ms/ds4beginners) +* [**Version 2.0** IA Générative pour les Débutants](https://aka.ms/genai-beginners) +* [**NOUVEAU** Cybersécurité pour les Débutants](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [Développement Web pour les Débutants](https://aka.ms/webdev-beginners) +* [IoT pour les Débutants](https://aka.ms/iot-beginners) +* [Apprentissage Automatique pour les Débutants](https://aka.ms/ml4beginners) +* [Développement XR pour les Débutants](https://aka.ms/xr-dev-for-beginners) +* [Maîtriser GitHub Copilot pour la Programmation Assistée par IA](https://aka.ms/GitHubCopilotAI) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/SECURITY.md b/translations/fr/SECURITY.md new file mode 100644 index 00000000..3c8025ee --- /dev/null +++ b/translations/fr/SECURITY.md @@ -0,0 +1,40 @@ +## Sécurité + +Microsoft prend très au sérieux la sécurité de nos produits et services logiciels, ce qui inclut tous les dépôts de code source gérés par nos organisations GitHub, notamment [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), et [nos organisations GitHub](https://opensource.microsoft.com/). + +Si vous pensez avoir trouvé une vulnérabilité de sécurité dans un dépôt appartenant à Microsoft qui répond à [la définition d'une vulnérabilité de sécurité de Microsoft](https://aka.ms/opensource/security/definition), veuillez nous en faire part comme décrit ci-dessous. + +## Signalement des problèmes de sécurité + +**Veuillez ne pas signaler les vulnérabilités de sécurité via les problèmes publics de GitHub.** + +Au lieu de cela, veuillez les signaler au Centre de réponse aux incidents de sécurité de Microsoft (MSRC) à [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Si vous préférez soumettre sans vous connecter, envoyez un e-mail à [secure@microsoft.com](mailto:secure@microsoft.com). Si possible, cryptez votre message avec notre clé PGP ; veuillez la télécharger depuis la [page de clé PGP du Centre de réponse aux incidents de sécurité de Microsoft](https://aka.ms/opensource/security/pgpkey). + +Vous devriez recevoir une réponse dans les 24 heures. Si, pour une raison quelconque, vous ne le faites pas, veuillez faire un suivi par e-mail pour vous assurer que nous avons bien reçu votre message original. Des informations supplémentaires peuvent être trouvées sur [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Veuillez inclure les informations demandées ci-dessous (autant que vous pouvez fournir) pour nous aider à mieux comprendre la nature et l'étendue du problème potentiel : + + * Type de problème (par exemple, débordement de tampon, injection SQL, script inter-sites, etc.) + * Chemins complets des fichiers source liés à la manifestation du problème + * L'emplacement du code source affecté (tag/branche/commit ou URL directe) + * Toute configuration spéciale requise pour reproduire le problème + * Instructions étape par étape pour reproduire le problème + * Preuve de concept ou code d'exploitation (si possible) + * Impact du problème, y compris comment un attaquant pourrait exploiter le problème + +Ces informations nous aideront à traiter votre rapport plus rapidement. + +Si vous signalez pour un programme de récompense de bogue, des rapports plus complets peuvent contribuer à une récompense plus élevée. Veuillez visiter notre page sur le [Programme de récompense de bogue Microsoft](https://aka.ms/opensource/security/bounty) pour plus de détails sur nos programmes actifs. + +## Langues préférées + +Nous préférons que toutes les communications soient en anglais. + +## Politique + +Microsoft suit le principe de [Divulgation coordonnée des vulnérabilités](https://aka.ms/opensource/security/cvd). + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/etc/CODE_OF_CONDUCT.md b/translations/fr/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..4bb85e28 --- /dev/null +++ b/translations/fr/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Code de conduite open source de Microsoft + +Ce projet a adopté le [Code de conduite open source de Microsoft](https://opensource.microsoft.com/codeofconduct/). + +Ressources : + +- [Code de conduite open source de Microsoft](https://opensource.microsoft.com/codeofconduct/) +- [FAQ sur le code de conduite de Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Contactez [opencode@microsoft.com](mailto:opencode@microsoft.com) pour toute question ou préoccupation. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/etc/CONTRIBUTING.md b/translations/fr/etc/CONTRIBUTING.md new file mode 100644 index 00000000..ed596d08 --- /dev/null +++ b/translations/fr/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# Contribuer + +Ce projet accueille les contributions et les suggestions. La plupart des contributions nécessitent que vous acceptiez un Accord de Licence de Contributeur (CLA) déclarant que vous avez le droit de, et que vous accordez effectivement, les droits d'utiliser votre contribution. Pour plus de détails, visitez https://cla.microsoft.com. + +Lorsque vous soumettez une demande de tirage, un bot CLA déterminera automatiquement si vous devez fournir un CLA et décorera la PR en conséquence (par exemple, étiquette, commentaire). Suivez simplement les instructions fournies par le bot. Vous n'aurez besoin de le faire qu'une seule fois pour tous les dépôts utilisant notre CLA. + +Ce projet a adopté le [Code de Conduite Open Source de Microsoft](https://opensource.microsoft.com/codeofconduct/). Pour plus d'informations, consultez la [FAQ sur le Code de Conduite](https://opensource.microsoft.com/codeofconduct/faq/) ou contactez [opencode@microsoft.com](mailto:opencode@microsoft.com) pour toute question ou commentaire supplémentaire. + +# À la recherche de Contributions + +Nous recherchons actuellement activement des contributions sur les sujets suivants : + +- [ ] Rédiger une section sur l'apprentissage par renforcement profond +- [ ] Améliorer la section + le notebook sur la Détection d'Objets +- [ ] PyTorch Lightning (pour [cette section](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Rédiger une section + des exemples sur la Reconnaissance d'Entités Nommées +- [ ] Créer des exemples pour entraîner nos propres embeddings pour [cette section](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/etc/Mindmap.md b/translations/fr/etc/Mindmap.md new file mode 100644 index 00000000..3aac1f19 --- /dev/null +++ b/translations/fr/etc/Mindmap.md @@ -0,0 +1,76 @@ +# IA + +## [Introduction à l'IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Définition de l'IA + - Histoire de l'IA + - Approches de l'IA + - De haut en bas / Symbolique + - De bas en haut / Neurale + - Évolutionnaire + - IA synergiques / émergentes + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [IA Symbolique](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Représentation des connaissances + - [Systèmes Experts](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) + - Web sémantique + +## [Réseaux Neuraux](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) + - [Réseaux Multicouches](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Introduction aux Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [Surapprentissage](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Vision par Ordinateur](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Sur MS Learn + - [Fondamentaux de l'IA : Explorer la Vision par Ordinateur](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Vision par Ordinateur avec PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Vision par Ordinateur avec TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Introduction à la Vision par Ordinateur. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Réseaux de Convolution](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Architectures CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Apprentissage par Transfert](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Astuces de Formation](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencodeurs et VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Réseaux Antagonistes Génératifs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Transfert de Style](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Détection d'Objets](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) + +## [Traitement du Langage Naturel](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Sur MS Learn + - [Fondamentaux de l'IA : Explorer le TNL](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [TNL avec PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TNL avec TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [Représentation du texte](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Sac de mots + - TF/IDF + - [Incorporations sémantiques](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modélisation du langage](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Réseaux de neurones récurrents](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Réseaux génératifs récurrents](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers et BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Reconnaissance d'entités nommées](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Génération de texte et GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## Autres techniques + - [Algorithmes génétiques](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Apprentissage par renforcement profond](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Systèmes multi-agents](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Éthique de l'IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn sur l'IA responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## Extras + - [Réseaux multimodaux](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 + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue natale doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/etc/SUPPORT.md b/translations/fr/etc/SUPPORT.md new file mode 100644 index 00000000..515c6dbc --- /dev/null +++ b/translations/fr/etc/SUPPORT.md @@ -0,0 +1,14 @@ +# Support + +## Comment signaler des problèmes et obtenir de l'aide + +Ce projet utilise les problèmes GitHub pour suivre les bogues et les demandes de fonctionnalités. Veuillez rechercher les problèmes existants avant de soumettre de nouveaux problèmes afin d'éviter les doublons. Pour les nouveaux problèmes, soumettez votre bogue ou votre demande de fonctionnalité en tant que nouveau problème. + +Pour obtenir de l'aide et poser des questions sur l'utilisation de ce projet, veuillez utiliser les forums de discussion. + +## Politique de support de Microsoft + +Le support pour ce projet est limité aux ressources énumérées ci-dessus. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/etc/TRANSLATIONS.md b/translations/fr/etc/TRANSLATIONS.md new file mode 100644 index 00000000..27342ba5 --- /dev/null +++ b/translations/fr/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# Contribuez en traduisant des leçons + +Nous accueillons les traductions des leçons de ce programme ! + +## Directives + +Il y a des dossiers dans chaque dossier de leçon et dans le dossier d'introduction de la leçon qui contiennent les fichiers markdown traduits. + +> Remarque : veuillez ne pas traduire le code dans les fichiers d'exemple de code ; les seules choses à traduire sont le README, les devoirs et les quiz. Merci ! + +Les fichiers traduits doivent suivre cette convention de nommage : + +**README._[language]_.md** + +où _[language]_ est une abréviation de deux lettres pour la langue selon la norme ISO 639-1 (par exemple, `README.es.md` pour l'espagnol et `README.nl.md` pour le néerlandais). + +**assignment._[language]_.md** + +Tout comme pour les README, veuillez également traduire les devoirs. + +**Quiz** + +1. Ajoutez votre traduction à l'application de quiz en ajoutant un fichier ici : https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, avec la convention de nommage appropriée (en.json, fr.json). **Veuillez cependant ne pas localiser les mots 'true' ou 'false'. Merci !** + +2. Ajoutez votre code de langue au menu déroulant dans le fichier App.vue de l'application de quiz. + +3. Modifiez le fichier [index.js des traductions de l'application de quiz](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) pour ajouter votre langue. + +4. Enfin, modifiez TOUS les liens de quiz dans vos fichiers README.md traduits pour pointer directement vers votre quiz traduit : https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 devient https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**MERCI** + +Nous apprécions vraiment vos efforts ! + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'atteindre une précision, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/etc/quiz-app/README.md b/translations/fr/etc/quiz-app/README.md new file mode 100644 index 00000000..329e5922 --- /dev/null +++ b/translations/fr/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# Quiz + +Ces quiz sont les quiz pré et post-conférence pour le programme d'IA à https://aka.ms/ai-beginners + +## Ajouter un ensemble de quiz traduit + +Ajoutez une traduction de quiz en créant des structures de quiz correspondantes dans les dossiers `assets/translations`. Les quiz canoniques se trouvent dans `assets/translations/en`. Les quiz sont répartis en plusieurs groupes par leçon. Assurez-vous d'aligner la numérotation avec la section de quiz appropriée. Il y a un total de 40 quiz dans ce programme, le compte commençant à 0. + +Après avoir modifié les traductions, éditez le fichier index.js dans le dossier de traduction pour importer tous les fichiers selon les conventions de `en`. + +Modifiez le fichier `index.js` dans `assets/translations` pour importer les nouveaux fichiers traduits. + +Ensuite, modifiez le menu déroulant dans `App.vue` dans cette application pour ajouter votre langue. Faites correspondre l'abréviation localisée au nom du dossier pour votre langue. + +Enfin, modifiez tous les liens de quiz dans les leçons traduites, s'ils existent, pour inclure cette localisation en tant que paramètre de requête : `?loc=fr` par exemple. + +## Configuration du projet + +``` +npm install +``` + +### Compilation et rechargement à chaud pour le développement + +``` +npm run serve +``` + +### Compilation et minification pour la production + +``` +npm run build +``` + +### Vérifie et corrige les fichiers + +``` +npm run lint +``` + +### Personnaliser la configuration + +Voir [Référence de configuration](https://cli.vuejs.org/config/). + +Crédits : Merci à la version originale de cette application de quiz : https://github.com/arpan45/simple-quiz-vue + +## Déploiement sur Azure + +Voici un guide étape par étape pour vous aider à commencer : + +1. Forkez un dépôt GitHub +Assurez-vous que le code de votre application web statique est dans votre dépôt GitHub. Forkez ce dépôt. + +2. Créez une application web statique Azure +- Créez un [compte Azure](http://azure.microsoft.com) +- Allez sur le [portail Azure](https://portal.azure.com) +- Cliquez sur « Créer une ressource » et recherchez « Application web statique ». +- Cliquez sur « Créer ». + +3. Configurez l'application web statique +- Bases : Abonnement : Sélectionnez votre abonnement Azure. +- Groupe de ressources : Créez un nouveau groupe de ressources ou utilisez un groupe existant. +- Nom : Fournissez un nom pour votre application web statique. +- Région : Choisissez la région la plus proche de vos utilisateurs. + +- #### Détails du déploiement : +- Source : Sélectionnez « GitHub ». +- Compte GitHub : Autorisez Azure à accéder à votre compte GitHub. +- Organisation : Sélectionnez votre organisation GitHub. +- Dépôt : Choisissez le dépôt contenant votre application web statique. +- Branche : Sélectionnez la branche à partir de laquelle vous souhaitez déployer. + +- #### Détails de la construction : +- Préréglages de construction : Choisissez le framework avec lequel votre application est construite (par exemple, React, Angular, Vue, etc.). +- Emplacement de l'application : Spécifiez le dossier contenant le code de votre application (par exemple, / s'il est à la racine). +- Emplacement de l'API : Si vous avez une API, spécifiez son emplacement (facultatif). +- Emplacement de sortie : Spécifiez le dossier où la sortie de la construction est générée (par exemple, build ou dist). + +4. Examinez et créez +Examinez vos paramètres et cliquez sur « Créer ». Azure configurera les ressources nécessaires et créera un flux de travail GitHub Actions dans votre dépôt. + +5. Flux de travail GitHub Actions +Azure créera automatiquement un fichier de flux de travail GitHub Actions dans votre dépôt (.github/workflows/azure-static-web-apps-.yml). Ce flux de travail gérera le processus de construction et de déploiement. + +6. Surveillez le déploiement +Allez dans l'onglet « Actions » de votre dépôt GitHub. +Vous devriez voir un flux de travail en cours d'exécution. Ce flux de travail construira et déploiera votre application web statique sur Azure. +Une fois le flux de travail terminé, votre application sera en ligne sur l'URL Azure fournie. + +### Exemple de fichier de flux de travail + +Voici un exemple de ce à quoi le fichier de flux de travail GitHub Actions pourrait ressembler : +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 +``` + +### Ressources supplémentaires +- [Documentation des applications web statiques Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Documentation de GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisée basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue natale doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/0-course-setup/for-teachers.md b/translations/fr/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..8b4677e5 --- /dev/null +++ b/translations/fr/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# Pour les éducateurs + +Souhaitez-vous utiliser ce programme dans votre classe ? N'hésitez pas ! + +En fait, vous pouvez l'utiliser directement sur GitHub en utilisant GitHub Classroom. + +Pour ce faire, faites un fork de ce repo. Vous devrez créer un repo pour chaque leçon, donc vous devrez extraire chaque dossier dans un repo séparé. De cette façon, [GitHub Classroom](https://classroom.github.com/classrooms) pourra récupérer chaque leçon séparément. + +Ces [instructions complètes](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) vous donneront une idée de la façon de configurer votre classe. + +## Utiliser le repo tel quel + +Si vous souhaitez utiliser ce repo tel qu'il est actuellement, sans utiliser GitHub Classroom, cela peut également se faire. Vous devrez communiquer avec vos étudiants sur la leçon à travailler ensemble. + +Dans un format en ligne (Zoom, Teams, ou autre), vous pourriez former des salles de discussion pour les quiz, et encadrer les étudiants pour les aider à se préparer à apprendre. Ensuite, invitez les étudiants à participer aux quiz et à soumettre leurs réponses en tant qu'« issues » à un certain moment. Vous pourriez faire de même avec les devoirs, si vous souhaitez que les étudiants travaillent ensemble de manière ouverte. + +Si vous préférez un format plus privé, demandez à vos étudiants de forker le programme, leçon par leçon, vers leurs propres repos GitHub en tant que repos privés, et de vous donner accès. Ils pourront alors compléter les quiz et les devoirs de manière privée et vous les soumettre via des issues sur votre repo de classe. + +Il existe de nombreuses façons de faire fonctionner cela dans un format de classe en ligne. Faites-nous savoir ce qui fonctionne le mieux pour vous ! + +## Veuillez nous donner votre avis + +Nous voulons que ce programme fonctionne pour vous et vos étudiants. Merci de nous faire part de vos retours sur les forums de discussion ! + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisés basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées découlant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/0-course-setup/how-to-run.md b/translations/fr/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..648715a4 --- /dev/null +++ b/translations/fr/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# Comment exécuter le code + +Ce programme contient de nombreux exemples exécutables et laboratoires que vous souhaiterez exécuter. Pour ce faire, vous devez pouvoir exécuter du code Python dans des Jupyter Notebooks fournis dans le cadre de ce programme. Vous avez plusieurs options pour exécuter le code : + +## Exécuter localement sur votre ordinateur + +Pour exécuter le code localement sur votre ordinateur, vous devez avoir une version de Python installée. Je recommande personnellement d'installer **[miniconda](https://conda.io/en/latest/miniconda.html)** - c'est une installation plutôt légère qui prend en charge le gestionnaire de paquets `conda` pour différents **environnements virtuels** Python. + +Après avoir installé miniconda, vous devez cloner le dépôt et créer un environnement virtuel à utiliser pour ce cours : + +```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 +``` + +### Utiliser Visual Studio Code avec l'extension Python + +Probablement la meilleure façon d'utiliser le programme est de l'ouvrir dans [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) avec l'[extension Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Note** : Une fois que vous avez cloné et ouvert le répertoire dans VS Code, il vous suggérera automatiquement d'installer les extensions Python. Vous devrez également installer miniconda comme décrit ci-dessus. + +> **Note** : Si VS Code vous suggère de réouvrir le dépôt dans un conteneur, vous devez refuser cela pour utiliser l'installation Python locale. + +### Utiliser Jupyter dans le navigateur + +Vous pouvez également utiliser l'environnement Jupyter directement depuis le navigateur sur votre propre ordinateur. En fait, à la fois Jupyter classique et Jupyter Hub offrent un environnement de développement assez pratique avec autocomplétion, mise en surbrillance du code, etc. + +Pour démarrer Jupyter localement, allez dans le répertoire du cours et exécutez : + +```bash +jupyter notebook +``` +ou +```bash +jupyterhub +``` +Vous pouvez ensuite naviguer vers n'importe quel dossier `.ipynb` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` qui explique comment construire un conteneur pour ce dépôt. VS Code vous proposera de réouvrir le code dans un conteneur. Cela nécessitera l'installation de Docker, et sera également plus complexe, donc nous recommandons cela aux utilisateurs plus expérimentés. + +## Exécution dans le Cloud + +Si vous ne souhaitez pas installer Python localement, et que vous avez accès à des ressources cloud - une bonne alternative serait d'exécuter le code dans le cloud. Il existe plusieurs façons de le faire : + +* Utiliser **[GitHub Codespaces](https://github.com/features/codespaces)**, qui est un environnement virtuel créé pour vous sur GitHub, accessible via l'interface du navigateur VS Code. Si vous avez accès à Codespaces, vous pouvez simplement cliquer sur le bouton **Code** dans le dépôt, démarrer un codespace et commencer à exécuter rapidement. +* Utiliser **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) est une ressource de calcul gratuite fournie dans le cloud pour des personnes comme vous afin de tester du code sur GitHub. Il y a un bouton sur la page d'accueil pour ouvrir le dépôt dans Binder - cela devrait rapidement vous amener sur le site de binder, qui construira le conteneur sous-jacent et démarrera l'interface web Jupyter pour vous sans problème. + +> **Note** : Pour prévenir les abus, Binder a accès à certaines ressources web bloquées. Cela peut empêcher certaines parties du code de fonctionner, notamment celles qui récupèrent des modèles et/ou des ensembles de données depuis Internet public. Vous devrez peut-être trouver des solutions de contournement. De plus, les ressources de calcul fournies par Binder sont assez basiques, donc l'entraînement sera lent, surtout dans les leçons plus complexes ultérieures. + +## Exécution dans le Cloud avec GPU + +Certaines des leçons ultérieures de ce programme bénéficieraient grandement du support GPU, car sinon l'entraînement sera douloureusement lent. Il existe quelques options que vous pouvez suivre, surtout si vous avez accès au cloud soit par [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), soit par votre institution : + +* Créer une [Machine Virtuelle de Science des Données](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) et s'y connecter via Jupyter. Vous pouvez alors cloner le dépôt directement sur la machine et commencer à apprendre. Les VM de la série NC ont un support GPU. + +> **Note** : Certaines souscriptions, y compris Azure for Students, ne fournissent pas de support GPU par défaut. Vous devrez peut-être demander des cœurs GPU supplémentaires via une demande de support technique. + +* Créer un [Espace de Travail de Machine Learning Azure](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) et ensuite utiliser la fonctionnalité Notebook là-bas. [Cette vidéo](https://azure-for-academics.github.io/quickstart/azureml-papers/) montre comment cloner un dépôt dans un notebook Azure ML et commencer à l'utiliser. + +Vous pouvez également utiliser Google Colab, qui propose un certain support GPU gratuit, et y télécharger des Jupyter Notebooks pour les exécuter un par un. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/0-course-setup/setup.md b/translations/fr/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..f703e48f --- /dev/null +++ b/translations/fr/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# Introduction à ce Curriculum + +## Êtes-vous un étudiant ? + +Commencez avec les ressources suivantes : + +* [Page du Hub étudiant](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Sur cette page, vous trouverez des ressources pour débutants, des packs étudiants, et même des moyens d'obtenir un bon de certification gratuit. C'est une page que vous voudrez ajouter à vos favoris et consulter de temps en temps, car nous changeons le contenu au moins une fois par mois. +* [Ambassadeurs étudiants de Microsoft](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Rejoignez une communauté mondiale d'ambassadeurs étudiants, cela pourrait être votre porte d'entrée chez Microsoft. + +**Étudiants**, il existe plusieurs façons d'utiliser le curriculum. Tout d'abord, vous pouvez simplement lire le texte et parcourir le code directement sur GitHub. Si vous souhaitez exécuter le code dans l'un des notebooks - [lisez nos instructions](./etc/how-to-run.md), et trouvez plus de conseils sur la façon de le faire [dans cet article de blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Remarque** : [Instructions sur la façon d'exécuter le code dans ce curriculum](/how-to-run.md) + +## Auto-apprentissage + +Cependant, si vous souhaitez suivre le cours en tant que projet d'auto-apprentissage, nous vous suggérons de forker l'ensemble du dépôt sur votre propre compte GitHub et de compléter les exercices par vous-même ou en groupe : + +* Commencez par un quiz pré-conférence. +* Lisez le texte d'introduction à la conférence. +* Si la conférence contient des notebooks supplémentaires, parcourez-les, en lisant et en exécutant le code. Si des notebooks TensorFlow et PyTorch sont fournis, vous pouvez vous concentrer sur l'un d'eux - choisissez votre framework préféré. +* Les notebooks contiennent souvent certains des défis qui nécessitent de modifier un peu le code pour expérimenter. +* Passez le quiz post-conférence. +* S'il y a un laboratoire associé au module - complétez l'assignation. +* Visitez le [Forum de discussion](https://github.com/microsoft/AI-For-Beginners/discussions) pour "apprendre à haute voix". + +> Pour un apprentissage supplémentaire, nous recommandons de suivre ces modules et parcours d'apprentissage de [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). + +**Enseignants**, nous avons [inclus quelques suggestions](/for-teachers.md) sur la façon d'utiliser ce curriculum. + +--- + +## Pédagogie + +Nous avons choisi deux principes pédagogiques lors de la création de ce curriculum : garantir qu'il soit pratique **basé sur des projets** et qu'il inclue **des quiz fréquents**. + +En veillant à ce que le contenu soit aligné avec des projets, le processus devient plus engageant pour les étudiants et la rétention des concepts sera augmentée. De plus, un quiz à faible enjeu avant un cours fixe l'intention de l'étudiant d'apprendre un sujet, tandis qu'un second quiz après le cours assure une rétention supplémentaire. Ce curriculum a été conçu pour être flexible et amusant et peut être suivi en entier ou en partie. Les projets commencent petits et deviennent de plus en plus complexes à la fin du cycle de 12 semaines. + +> **Une note sur les quiz** : Tous les quiz sont contenus [dans cette application](https://red-field-0a6ddfd03.1.azurestaticapps.net/), pour un total de 50 quiz de trois questions chacun. Ils sont liés depuis les leçons, mais l'application de quiz peut être exécutée localement ; suivez les instructions dans le dossier `etc/quiz-app`. + +## Accès hors ligne + +Vous pouvez exécuter cette documentation hors ligne en utilisant [Docsify](https://docsify.js.org/#/). Forkez ce dépôt, [installez Docsify](https://docsify.js.org/#/quickstart) sur votre machine locale, puis dans le dossier `etc/docsify` de ce dépôt, tapez `docsify serve`. Le site sera servi sur le port 3000 sur votre localhost : `localhost:3000`. Un pdf du curriculum est disponible [à ce lien](../../../../../../etc/pdf/readme.pdf). + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/1-Intro/README.md b/translations/fr/lessons/1-Intro/README.md new file mode 100644 index 00000000..95666962 --- /dev/null +++ b/translations/fr/lessons/1-Intro/README.md @@ -0,0 +1,56 @@ +> Image par [Dmitry Soshnikov](http://soshnikov.com) + +Au fil du temps, les ressources informatiques sont devenues moins chères et davantage de données sont devenues disponibles, ce qui a permis aux approches par réseaux de neurones de montrer d'excellentes performances en concurrence avec les êtres humains dans de nombreux domaines, tels que la vision par ordinateur ou la compréhension de la parole. Au cours de la dernière décennie, le terme Intelligence Artificielle a été principalement utilisé comme synonyme de Réseaux de Neurones, car la plupart des succès de l'IA dont nous entendons parler en dépendent. + +Nous pouvons observer comment les approches ont évolué, par exemple, dans la création d'un programme d'échecs : + +* Les premiers programmes d'échecs étaient basés sur la recherche – un programme essayait explicitement d'estimer les coups possibles d'un adversaire pour un certain nombre de coups suivants et sélectionnait un coup optimal basé sur la position optimale qui pouvait être atteinte en quelques coups. Cela a conduit au développement de l'algorithme de recherche dit [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Les stratégies de recherche fonctionnent bien vers la fin de la partie, où l'espace de recherche est limité par un petit nombre de coups possibles. Cependant, au début de la partie, l'espace de recherche est énorme, et l'algorithme peut être amélioré en apprenant des parties existantes entre joueurs humains. Les expériences ultérieures ont utilisé le raisonnement basé sur les cas, où le programme cherchait des cas dans la base de connaissances très similaires à la position actuelle dans le jeu. +* Les programmes modernes qui gagnent contre des joueurs humains sont basés sur des réseaux de neurones et sur l'[apprentissage par renforcement](https://en.wikipedia.org/wiki/Reinforcement_learning), où les programmes apprennent à jouer uniquement en jouant longtemps contre eux-mêmes et en apprenant de leurs propres erreurs – tout comme le font les êtres humains en apprenant à jouer aux échecs. Cependant, un programme informatique peut jouer beaucoup plus de parties en beaucoup moins de temps, et peut donc apprendre beaucoup plus rapidement. + +✅ Faites un peu de recherche sur d'autres jeux auxquels l'IA a joué. + +De même, nous pouvons voir comment l'approche pour créer des "programmes parlants" (qui pourraient passer le test de Turing) a évolué : + +* Les premiers programmes de ce type, tels que [Eliza](https://en.wikipedia.org/wiki/ELIZA), étaient basés sur des règles grammaticales très simples et la reformulation de la phrase d'entrée en une question. +* Les assistants modernes, tels que Cortana, Siri ou Google Assistant, sont tous des systèmes hybrides qui utilisent des réseaux de neurones pour convertir la parole en texte et reconnaître notre intention, puis emploient un raisonnement ou des algorithmes explicites pour effectuer les actions requises. +* À l'avenir, nous pouvons nous attendre à un modèle entièrement basé sur des neurones capable de gérer le dialogue par lui-même. Les récents réseaux de neurones GPT et [Turing-NLG](https://turing.microsoft.com/) montrent un grand succès à cet égard. + +> Image par Dmitry Soshnikov, [photo](https://unsplash.com/photos/r8LmVbUKgns) par [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Recherche récente en IA + +L'énorme croissance récente de la recherche sur les réseaux de neurones a commencé vers 2010, lorsque de grands ensembles de données publics ont commencé à devenir disponibles. Une vaste collection d'images appelée [ImageNet](https://en.wikipedia.org/wiki/ImageNet), qui contient environ 14 millions d'images annotées, a donné naissance au [Défi de Reconnaissance Visuelle à Grande Échelle ImageNet](https://image-net.org/challenges/LSVRC/). + +![Précision ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Image par [Dmitry Soshnikov](http://soshnikov.com) +En 2012, les [réseaux de neurones convolutionnels](../4-ComputerVision/07-ConvNets/README.md) ont été utilisés pour la première fois dans la classification d'images, ce qui a entraîné une réduction significative des erreurs de classification (passant de presque 30 % à 16,4 %). En 2015, l'architecture ResNet de Microsoft Research a [atteint une précision au niveau humain](https://doi.org/10.1109/ICCV.2015.123). + +Depuis lors, les réseaux de neurones ont démontré un comportement très réussi dans de nombreuses tâches : + +--- + +Année | Parité humaine atteinte +-----|-------- +2015 | [Classification d'images](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Reconnaissance vocale conversationnelle](https://arxiv.org/abs/1610.05256) +2018 | [Traduction automatique](https://arxiv.org/abs/1803.05567) (Chinois vers Anglais) +2020 | [Légendes d'images](https://arxiv.org/abs/2009.13682) + +Au cours des dernières années, nous avons été témoins de grands succès avec de grands modèles de langage, tels que BERT et GPT-3. Cela est principalement dû au fait qu'il existe beaucoup de données textuelles générales disponibles qui nous permettent de former des modèles pour capturer la structure et le sens des textes, de les préformer sur des collections de textes générales, puis de spécialiser ces modèles pour des tâches plus spécifiques. Nous en apprendrons davantage sur le [traitement du langage naturel](../5-NLP/README.md) plus tard dans ce cours. + +## 🚀 Défi + +Faites un tour d'internet pour déterminer où, selon vous, l'IA est utilisée de manière la plus efficace. Est-ce dans une application de cartographie, un service de reconnaissance vocale ou un jeu vidéo ? Renseignez-vous sur la manière dont le système a été construit. + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Revue et auto-apprentissage + +Revoyez l'histoire de l'IA et du ML en lisant [cette leçon](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Prenez un élément du sketchnote en haut de cette leçon ou de celle-ci et recherchez-le plus en profondeur pour comprendre le contexte culturel qui informe son évolution. + +**Devoir** : [Game Jam](assignment.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisés basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue natale doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées découlant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/1-Intro/assignment.md b/translations/fr/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..d1c0f41f --- /dev/null +++ b/translations/fr/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# Game Jam + +Les jeux sont un domaine qui a été fortement influencé par les développements en IA et en ML. Dans cette tâche, rédigez un court document sur un jeu que vous aimez et qui a été influencé par l'évolution de l'IA. Il doit s'agir d'un jeu suffisamment ancien pour avoir été influencé par plusieurs types de systèmes de traitement informatique. Un bon exemple est les échecs ou le go, mais jetez également un œil aux jeux vidéo comme Pong ou Pac-Man. Rédigez un essai qui discute du passé, du présent et de l'avenir de l'IA dans le jeu. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction professionnelle par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/2-Symbolic/README.md b/translations/fr/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..d8fdc513 --- /dev/null +++ b/translations/fr/lessons/2-Symbolic/README.md @@ -0,0 +1,205 @@ +# Représentation des Connaissances et Systèmes Experts + +![Résumé du contenu de l'IA Symbolique](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.fr.png) + +> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac) + +La quête de l'intelligence artificielle repose sur une recherche de connaissances, afin de donner un sens au monde de manière similaire à celle des humains. Mais comment peut-on y parvenir ? + +## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +Dans les débuts de l'IA, l'approche descendante pour créer des systèmes intelligents (discutée dans la leçon précédente) était populaire. L'idée était d'extraire les connaissances des personnes dans une forme lisible par machine, puis de les utiliser pour résoudre automatiquement des problèmes. Cette approche reposait sur deux grandes idées : + +* Représentation des Connaissances +* Raisonnement + +## Représentation des Connaissances + +Un des concepts importants dans l'IA Symbolique est la **connaissance**. Il est essentiel de différencier la connaissance de *l'information* ou *des données*. Par exemple, on peut dire que les livres contiennent des connaissances, car on peut étudier des livres et devenir un expert. Cependant, ce que contiennent les livres est en réalité appelé *données*, et en lisant des livres et en intégrant ces données dans notre modèle du monde, nous convertissons ces données en connaissances. + +> ✅ **La connaissance** est quelque chose qui est contenu dans notre tête et représente notre compréhension du monde. Elle est obtenue par un processus d'**apprentissage** actif, qui intègre des morceaux d'information que nous recevons dans notre modèle actif du monde. + +Le plus souvent, nous ne définissons pas strictement la connaissance, mais nous l'alignons avec d'autres concepts connexes en utilisant la [Pyramide DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Elle contient les concepts suivants : + +* **Données** : quelque chose représenté sur des supports physiques, tels que du texte écrit ou des mots prononcés. Les données existent indépendamment des êtres humains et peuvent être transmises entre les personnes. +* **Information** : la manière dont nous interprétons les données dans notre tête. Par exemple, lorsque nous entendons le mot *ordinateur*, nous avons une certaine compréhension de ce que c'est. +* **Connaissance** : information intégrée dans notre modèle du monde. Par exemple, une fois que nous apprenons ce qu'est un ordinateur, nous commençons à avoir des idées sur son fonctionnement, son coût et ses usages. Ce réseau de concepts interconnectés forme notre connaissance. +* **Sagesse** : un niveau supplémentaire de notre compréhension du monde, représentant *la méta-connaissance*, c'est-à-dire une notion sur comment et quand la connaissance doit être utilisée. + + + +*Image [de Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), par Longlivetheux - Travail personnel, CC BY-SA 4.0* + +Ainsi, le problème de la **représentation des connaissances** consiste à trouver un moyen efficace de représenter la connaissance à l'intérieur d'un ordinateur sous forme de données, pour la rendre automatiquement utilisable. Cela peut être vu comme un spectre : + +![Spectre de représentation des connaissances](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.fr.png) + +> Image par [Dmitry Soshnikov](http://soshnikov.com) + +* À gauche, il y a des types très simples de représentations de connaissances qui peuvent être utilisés efficacement par les ordinateurs. Le plus simple est algorithmique, lorsque la connaissance est représentée par un programme informatique. Cependant, ce n'est pas le meilleur moyen de représenter la connaissance, car ce n'est pas flexible. La connaissance dans notre tête est souvent non-algorithmique. +* À droite, il y a des représentations telles que le texte naturel. C'est la plus puissante, mais ne peut pas être utilisée pour un raisonnement automatique. + +> ✅ Réfléchissez un instant à la façon dont vous représentez la connaissance dans votre tête et la convertissez en notes. Y a-t-il un format particulier qui fonctionne bien pour vous afin d'aider à la rétention ? + +## Classification des Représentations de Connaissances Informatiques + +Nous pouvons classer les différentes méthodes de représentation des connaissances informatiques dans les catégories suivantes : + +* **Représentations en réseau** : basées sur le fait que nous avons un réseau de concepts interconnectés dans notre tête. Nous pouvons essayer de reproduire les mêmes réseaux sous forme de graphe à l'intérieur d'un ordinateur - un soi-disant **réseau sémantique**. + +1. **Triplets Objet-Attribut-Valeur** ou **paires attribut-valeur**. Étant donné qu'un graphe peut être représenté à l'intérieur d'un ordinateur sous forme de liste de nœuds et d'arêtes, nous pouvons représenter un réseau sémantique par une liste de triplets, contenant des objets, des attributs et des valeurs. Par exemple, nous construisons les triplets suivants concernant les langages de programmation : + +Objet | Attribut | Valeur +-------|-----------|------ +Python | est | Langage-Non-Typé +Python | inventé-par | Guido van Rossum +Python | syntaxe-bloc | indentation +Langage-Non-Typé | n'a pas | définitions de types + +> ✅ Réfléchissez à la manière dont les triplets peuvent être utilisés pour représenter d'autres types de connaissances. + +2. **Représentations hiérarchiques** : soulignent le fait que nous créons souvent une hiérarchie d'objets dans notre tête. Par exemple, nous savons qu'un canari est un oiseau, et tous les oiseaux ont des ailes. Nous avons également une idée de la couleur d'un canari et de sa vitesse de vol. + + - **Représentation de cadre** : basée sur la représentation de chaque objet ou classe d'objets sous forme de **cadre** contenant des **emplacements**. Les emplacements ont des valeurs par défaut possibles, des restrictions de valeur ou des procédures stockées qui peuvent être appelées pour obtenir la valeur d'un emplacement. Tous les cadres forment une hiérarchie similaire à une hiérarchie d'objets dans les langages de programmation orientés objet. + - **Scénarios** : un type spécial de cadres qui représentent des situations complexes pouvant se dérouler dans le temps. + +**Python** + +Emplacement | Valeur | Valeur par défaut | Intervalle | +-----|-------|---------------|----------| +Nom | Python | | | +Est-Un | Langage-Non-Typé | | | +Cas de Variable | | CamelCase | | +Longueur du Programme | | | 5-5000 lignes | +Syntaxe de Bloc | Indentation | | | + +3. **Représentations procédurales** : basées sur la représentation des connaissances par une liste d'actions qui peuvent être exécutées lorsqu'une certaine condition se produit. + - Les règles de production sont des déclarations si-alors qui nous permettent de tirer des conclusions. Par exemple, un médecin peut avoir une règle disant que **SI** un patient a de la fièvre élevée **OU** un taux élevé de protéine C-réactive dans les analyses sanguines **ALORS** il a une inflammation. Une fois que nous rencontrons l'une des conditions, nous pouvons conclure qu'il y a inflammation, puis l'utiliser dans un raisonnement ultérieur. + - Les algorithmes peuvent être considérés comme une autre forme de représentation procédurale, bien qu'ils soient presque jamais utilisés directement dans les systèmes basés sur les connaissances. + +4. **Logique** : proposée à l'origine par Aristote comme moyen de représenter la connaissance humaine universelle. + - La logique des prédicats, en tant que théorie mathématique, est trop riche pour être calculable, donc un sous-ensemble est normalement utilisé, tel que les clauses de Horn utilisées en Prolog. + - La logique descriptive est une famille de systèmes logiques utilisés pour représenter et raisonner sur des hiérarchies d'objets dans des représentations de connaissances distribuées telles que le *web sémantique*. + +## Systèmes Experts + +Un des premiers succès de l'IA symbolique a été les **systèmes experts** - des systèmes informatiques conçus pour agir en tant qu'experts dans un domaine problématique limité. Ils étaient basés sur une **base de connaissances** extraite d'un ou plusieurs experts humains, et contenaient un **moteur d'inférence** qui effectuait un certain raisonnement. + +![Architecture Humaine](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.fr.png) | ![Système Basé sur les Connaissances](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.fr.png) +---------------------------------------------|------------------------------------------------ +Structure simplifiée d'un système neural humain | Architecture d'un système basé sur les connaissances + +Les systèmes experts sont construits comme le système de raisonnement humain, qui contient une **mémoire à court terme** et une **mémoire à long terme**. De même, dans les systèmes basés sur les connaissances, nous distinguons les composants suivants : + +* **Mémoire de problème** : contient les connaissances sur le problème actuellement résolu, c'est-à-dire la température ou la pression artérielle d'un patient, s'il a une inflammation ou non, etc. Cette connaissance est également appelée **connaissance statique**, car elle contient un instantané de ce que nous savons actuellement sur le problème - l'état du *problème*. +* **Base de connaissances** : représente la connaissance à long terme sur un domaine problématique. Elle est extraite manuellement d'experts humains et ne change pas d'une consultation à l'autre. Parce qu'elle nous permet de naviguer d'un état de problème à un autre, elle est également appelée **connaissance dynamique**. +* **Moteur d'inférence** : orchestre tout le processus de recherche dans l'espace des états de problème, posant des questions à l'utilisateur si nécessaire. Il est également responsable de la recherche des bonnes règles à appliquer à chaque état. + +Prenons un exemple avec le système expert suivant pour déterminer un animal basé sur ses caractéristiques physiques : + +![Arbre AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.fr.png) + +> Image par [Dmitry Soshnikov](http://soshnikov.com) + +Ce diagramme est appelé un **arbre AND-OR**, et il s'agit d'une représentation graphique d'un ensemble de règles de production. Dessiner un arbre est utile au début de l'extraction des connaissances de l'expert. Pour représenter les connaissances à l'intérieur de l'ordinateur, il est plus pratique d'utiliser des règles : + +``` +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 +``` + +Vous pouvez remarquer que chaque condition du côté gauche de la règle et l'action sont essentiellement des triplets objet-attribut-valeur (OAV). **La mémoire de travail** contient l'ensemble des triplets OAV qui correspondent au problème actuellement résolu. Un **moteur de règles** recherche les règles pour lesquelles une condition est satisfaite et les applique, ajoutant un autre triplet à la mémoire de travail. + +> ✅ Écrivez votre propre arbre AND-OR sur un sujet qui vous plaît ! + +### Inférence Avancée vs. Inférence Rétrograde + +Le processus décrit ci-dessus est appelé **inférence avancée**. Il commence avec certaines données initiales sur le problème disponibles dans la mémoire de travail, puis exécute la boucle de raisonnement suivante : + +1. Si l'attribut cible est présent dans la mémoire de travail - arrêtez et donnez le résultat +2. Recherchez toutes les règles dont la condition est actuellement satisfaite - obtenez l'**ensemble de conflits** des règles. +3. Effectuez la **résolution de conflits** - sélectionnez une règle qui sera exécutée à cette étape. Il pourrait y avoir différentes stratégies de résolution de conflits : + - Sélectionnez la première règle applicable dans la base de connaissances + - Sélectionnez une règle aléatoire + - Sélectionnez une règle *plus spécifique*, c'est-à-dire celle répondant à la plupart des conditions dans le "côté gauche" (LHS) +4. Appliquez la règle sélectionnée et insérez un nouveau morceau de connaissance dans l'état du problème +5. Répétez à partir de l'étape 1. + +Cependant, dans certains cas, nous pourrions vouloir commencer avec une connaissance vide sur le problème et poser des questions qui nous aideront à arriver à une conclusion. Par exemple, lors d'un diagnostic médical, nous ne réalisons généralement pas toutes les analyses médicales à l'avance avant de commencer à diagnostiquer le patient. Nous préférons effectuer des analyses lorsqu'une décision doit être prise. + +Ce processus peut être modélisé en utilisant **l'inférence rétrograde**. Il est guidé par l'**objectif** - la valeur de l'attribut que nous cherchons à trouver : + +1. Sélectionnez toutes les règles qui peuvent nous donner la valeur d'un objectif (c'est-à-dire avec l'objectif sur le RHS ("côté droit")) - un ensemble de conflits +1. S'il n'y a pas de règles pour cet attribut, ou s'il y a une règle disant que nous devons demander la valeur à l'utilisateur - demandez-la, sinon : +1. Utilisez la stratégie de résolution de conflits pour sélectionner une règle que nous utiliserons comme *hypothèse* - nous allons essayer de la prouver +1. Répétez le processus de manière récurrente pour tous les attributs dans le LHS de la règle, essayant de les prouver comme objectifs +1. Si à un moment donné le processus échoue - utilisez une autre règle à l'étape 3. + +> ✅ Dans quelles situations l'inférence avancée est-elle plus appropriée ? Qu'en est-il de l'inférence rétrograde ? + +### Mise en œuvre des Systèmes Experts + +Les systèmes experts peuvent être mis en œuvre en utilisant différents outils : + +* Les programmer directement dans un langage de programmation de haut niveau. Ce n'est pas la meilleure idée, car l'avantage principal d'un système basé sur les connaissances est que la connaissance est séparée de l'inférence, et qu'un expert du domaine problématique devrait potentiellement être capable d'écrire des règles sans comprendre les détails du processus d'inférence. +* Utiliser une **interface de systèmes experts**, c'est-à-dire un système spécifiquement conçu pour être peuplé de connaissances en utilisant un langage de représentation des connaissances. + +## ✍️ Exercice : Inférence Animale + +Consultez [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) pour un exemple de mise en œuvre d'un système expert d'inférence avancée et rétrograde. + +> **Remarque** : Cet exemple est assez simple et ne donne qu'une idée de ce à quoi ressemble un système expert. Une fois que vous commencez à créer un tel système, vous ne remarquerez un comportement *intelligent* que lorsque vous atteindrez un certain nombre de règles, autour de 200+. À un moment donné, les règles deviennent trop complexes pour que vous puissiez toutes les garder en tête, et à ce stade, vous pourriez commencer à vous demander pourquoi un système prend certaines décisions. Cependant, la caractéristique importante des systèmes basés sur les connaissances est que vous pouvez toujours *expliquer* exactement comment l'une des décisions a été prise. + +## Ontologies et le Web Sémantique + +À la fin du 20ème siècle, il y avait une initiative pour utiliser la représentation des connaissances pour annoter les ressources Internet, afin qu'il soit possible de trouver des ressources correspondant à des requêtes très spécifiques. Ce mouvement a été appelé **Web Sémantique**, et il reposait sur plusieurs concepts : + +- Une représentation des connaissances spéciale basée sur les **[logiques de description](https://en.wikipedia.org/wiki/Description_logic)** (DL). Elle est similaire à la représentation de connaissances de cadre, car elle construit une hiérarchie d'objets avec des propriétés, mais elle a une sémantique logique formelle et une inférence. Il existe toute une famille de DL qui équilibrent expressivité et complexité algorithmique de l'inférence. +- Représentation des connaissances distribuées, où tous les concepts sont représentés par un identifiant URI global, ce qui permet de créer des hiérarchies de connaissances qui s'étendent sur Internet. +- Une famille de langages basés sur XML pour la description des connaissances : RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Un concept central dans le Web Sémantique est celui de **l'Ontologie**. Il fait référence à une spécification explicite d'un domaine problématique utilisant une certaine représentation formelle des connaissances. L'ontologie la plus simple peut être juste une hiérarchie d'objets dans un domaine problématique, mais des ontologies plus complexes incluront des règles qui peuvent être utilisées pour l'inférence. + +Dans le web sémantique, toutes les représentations sont basées sur des triplets. Chaque objet et chaque relation sont identifiés de manière unique par l'URI. Par exemple, si nous voulons indiquer le fait que ce curriculum IA a été développé par Dmitry Soshnikov le 1er janvier 2022 - voici les triplets que nous pouvons utiliser : + + + +``` +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 +``` + +> ✅ Ici `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` sont des URI bien connues et universellement acceptées pour exprimer les concepts de *créateur* et de *date de création*. + +Dans un cas plus complexe, si nous voulons définir une liste de créateurs, nous pouvons utiliser certaines structures de données définies dans RDF. + + + +> Diagrammes ci-dessus par [Dmitry Soshnikov](http://soshnikov.com) + +Les progrès dans la construction du Web Sémantique ont été quelque peu ralentis par le succès des moteurs de recherche et des techniques de traitement du langage naturel, qui permettent d'extraire des données structurées à partir de textes. Cependant, dans certains domaines, il y a encore des efforts significatifs pour maintenir des ontologies et des bases de connaissances. Quelques projets notables : + +* [WikiData](https://wikidata.org/) est une collection de bases de connaissances lisibles par machine associées à Wikipedia. La plupart des données sont extraites des *InfoBoxes* de Wikipedia, des morceaux de contenu structuré à l'intérieur des pages Wikipedia. Vous pouvez [interroger](https://query.wikidata.org/) wikidata en SPARQL, un langage de requête spécial pour le Web Sémantique. Voici une requête d'exemple qui affiche les couleurs d'yeux les plus populaires chez les humains : + +```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/) est un autre effort similaire à WikiData. + +> ✅ Si vous souhaitez expérimenter la création de vos propres ontologies, ou ouvrir des ontologies existantes, il existe un + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisée par IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/2-Symbolic/assignment.md b/translations/fr/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..38e3883b --- /dev/null +++ b/translations/fr/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# Construire une Ontologie + +Construire une base de connaissances consiste à catégoriser un modèle représentant des faits sur un sujet. Choisissez un sujet - comme une personne, un lieu ou une chose - puis construisez un modèle de ce sujet. Utilisez certaines des techniques et des stratégies de construction de modèles décrites dans cette leçon. Un exemple serait de créer une ontologie d'un salon avec des meubles, des lumières, etc. En quoi le salon diffère-t-il de la cuisine ? De la salle de bain ? Comment savez-vous que c'est un salon et non une salle à manger ? Utilisez [Protégé](https://protege.stanford.edu/) pour construire votre ontologie. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/fr/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..8bf9a6b4 --- /dev/null +++ b/translations/fr/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,96 @@ +# Introduction aux Réseaux de Neurones : Perceptron + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +L'une des premières tentatives d'implémenter quelque chose de similaire à un réseau de neurones moderne a été réalisée par Frank Rosenblatt du Cornell Aeronautical Laboratory en 1957. C'était une implémentation matérielle appelée "Mark-1", conçue pour reconnaître des figures géométriques primitives, telles que des triangles, des carrés et des cercles. + +| | | +|--------------|-----------| +|Frank Rosenblatt | Le Perceptron Mark 1| + +> Images [de Wikipedia](https://en.wikipedia.org/wiki/Perceptron) + +Une image d'entrée était représentée par un réseau de photocellules de 20x20, donc le réseau de neurones avait 400 entrées et une sortie binaire. Un réseau simple contenait un neurone, également appelé **unité de logique à seuil**. Les poids du réseau de neurones agissaient comme des potentiomètres nécessitant un réglage manuel pendant la phase d'entraînement. + +> ✅ Un potentiomètre est un dispositif qui permet à l'utilisateur d'ajuster la résistance d'un circuit. + +> Le New York Times écrivait à l'époque à propos du perceptron : *l'embryon d'un ordinateur électronique que [la Marine] espère capable de marcher, parler, voir, écrire, se reproduire et être conscient de son existence.* + +## Modèle de Perceptron + +Supposons que nous ayons N caractéristiques dans notre modèle, auquel cas le vecteur d'entrée serait un vecteur de taille N. Un perceptron est un modèle de **classification binaire**, c'est-à-dire qu'il peut distinguer entre deux classes de données d'entrée. Nous allons supposer que pour chaque vecteur d'entrée x, la sortie de notre perceptron serait soit +1 soit -1, selon la classe. La sortie sera calculée en utilisant la formule : + +y(x) = f(wTx) + +où f est une fonction d'activation par seuil. + + + + +## Entraînement du Perceptron + +Pour entraîner un perceptron, nous devons trouver un vecteur de poids w qui classe la plupart des valeurs correctement, c'est-à-dire qui entraîne la plus petite **erreur**. Cette erreur E est définie par le **critère du perceptron** de la manière suivante : + +E(w) = -∑wTxiti + +où : + +* la somme est effectuée sur les points de données d'entraînement i qui entraînent une classification incorrecte +* xi est les données d'entrée, et ti est soit -1 soit +1 pour les exemples négatifs et positifs respectivement. + +Ce critère est considéré comme une fonction des poids w, et nous devons le minimiser. Souvent, une méthode appelée **descente de gradient** est utilisée, dans laquelle nous commençons avec des poids initiaux w(0), puis à chaque étape, nous mettons à jour les poids selon la formule : + +w(t+1) = w(t) - η∇E(w) + +Ici, η est le soi-disant **taux d'apprentissage**, et ∇E(w) désigne le **gradient** de E. Après avoir calculé le gradient, nous obtenons + +w(t+1) = w(t) + ∑ηxiti + +L'algorithme en Python ressemble à ceci : + +```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 +``` + +## Conclusion + +Dans cette leçon, vous avez appris ce qu'est un perceptron, qui est un modèle de classification binaire, et comment l'entraîner en utilisant un vecteur de poids. + +## 🚀 Défi + +Si vous souhaitez essayer de construire votre propre perceptron, essayez [ce laboratoire sur Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) qui utilise le [concepteur Azure ML](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Révision & Auto-apprentissage + +Pour voir comment nous pouvons utiliser le perceptron pour résoudre un problème théorique ainsi que des problèmes réels, et pour continuer à apprendre - allez au cahier [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Voici un article intéressant [sur les perceptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590 +) également. + +## [Devoir](lab/README.md) + +Dans cette leçon, nous avons implémenté un perceptron pour une tâche de classification binaire, et nous l'avons utilisé pour classifier deux chiffres manuscrits. Dans ce laboratoire, vous êtes invité à résoudre complètement le problème de classification des chiffres, c'est-à-dire à déterminer quel chiffre est le plus susceptible de correspondre à une image donnée. + +* [Instructions](lab/README.md) +* [Cahier](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/fr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..c691d5c2 --- /dev/null +++ b/translations/fr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# Classification Multi-Classe avec Perceptron + +Devoir du [Curriculum AI pour Débutants](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +En utilisant le code que nous avons développé dans cette leçon pour la classification binaire des chiffres manuscrits MNIST, créez un classificateur multi-classe capable de reconnaître n'importe quel chiffre. Calculez la précision de classification sur les ensembles de données d'entraînement et de test, et imprimez la matrice de confusion. + +## Indices + +1. Pour chaque chiffre, créez un ensemble de données pour le classificateur binaire "ce chiffre contre tous les autres chiffres" +1. Entraînez 10 perceptrons différents pour la classification binaire (un pour chaque chiffre) +1. Définissez une fonction qui classera un chiffre d'entrée + +> **Indice** : Si nous combinons les poids des 10 perceptrons en une seule matrice, nous devrions être capables d'appliquer les 10 perceptrons aux chiffres d'entrée par une multiplication de matrices. Le chiffre le plus probable peut ensuite être trouvé simplement en appliquant l'opération `argmax` sur la sortie. + +## Notebook de Début + +Commencez le laboratoire en ouvrant [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/fr/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..348a9b16 --- /dev/null +++ b/translations/fr/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# Introduction aux Réseaux de Neurones. Perceptron Multi-Couches + +Dans la section précédente, vous avez appris le modèle de réseau de neurones le plus simple - le perceptron à une couche, un modèle de classification linéaire à deux classes. + +Dans cette section, nous allons étendre ce modèle dans un cadre plus flexible, nous permettant de : + +* effectuer une **classification multi-classes** en plus de la classification à deux classes +* résoudre des **problèmes de régression** en plus de la classification +* séparer des classes qui ne sont pas linéairement séparables + +Nous allons également développer notre propre cadre modulaire en Python qui nous permettra de construire différentes architectures de réseaux de neurones. + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalisation de l'Apprentissage Automatique + +Commençons par formaliser le problème de l'apprentissage automatique. Supposons que nous avons un ensemble de données d'entraînement **X** avec des étiquettes **Y**, et nous devons construire un modèle *f* qui fera les prédictions les plus précises. La qualité des prédictions est mesurée par la **fonction de perte** ℒ. Les fonctions de perte suivantes sont souvent utilisées : + +* Pour le problème de régression, lorsque nous devons prédire un nombre, nous pouvons utiliser l'**erreur absolue** ∑i|f(x(i))-y(i)|, ou l'**erreur quadratique** ∑i(f(x(i))-y(i))2 +* Pour la classification, nous utilisons la **perte 0-1** (qui est essentiellement la même que l'**exactitude** du modèle), ou la **perte logistique**. + +Pour le perceptron à une couche, la fonction *f* était définie comme une fonction linéaire *f(x)=wx+b* (ici *w* est la matrice de poids, *x* est le vecteur des caractéristiques d'entrée, et *b* est le vecteur de biais). Pour différentes architectures de réseaux de neurones, cette fonction peut prendre une forme plus complexe. + +> Dans le cas de la classification, il est souvent souhaitable d'obtenir des probabilités des classes correspondantes comme sortie du réseau. Pour convertir des nombres arbitraires en probabilités (par exemple, pour normaliser la sortie), nous utilisons souvent la fonction **softmax** σ, et la fonction *f* devient *f(x)=σ(wx+b)* + +Dans la définition de *f* ci-dessus, *w* et *b* sont appelés **paramètres** θ=⟨*w,b*⟩. Étant donné l'ensemble de données ⟨**X**,**Y**⟩, nous pouvons calculer une erreur globale sur l'ensemble de données entier en fonction des paramètres θ. + +> ✅ **L'objectif de l'entraînement du réseau de neurones est de minimiser l'erreur en faisant varier les paramètres θ** + +## Optimisation par Descente de Gradient + +Il existe une méthode bien connue d'optimisation de fonction appelée **descente de gradient**. L'idée est que nous pouvons calculer une dérivée (dans le cas multidimensionnel appelée **gradient**) de la fonction de perte par rapport aux paramètres, et faire varier les paramètres de manière à ce que l'erreur diminue. Cela peut être formalisé comme suit : + +* Initialiser les paramètres par des valeurs aléatoires w(0), b(0) +* Répéter l'étape suivante plusieurs fois : + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Lors de l'entraînement, les étapes d'optimisation sont censées être calculées en tenant compte de l'ensemble de données entier (rappelez-vous que la perte est calculée comme une somme à travers tous les échantillons d'entraînement). Cependant, dans la vie réelle, nous prenons de petites portions de l'ensemble de données appelées **minibatchs**, et calculons les gradients en fonction d'un sous-ensemble de données. Comme le sous-ensemble est pris aléatoirement à chaque fois, cette méthode est appelée **descente de gradient stochastique** (SGD). + +## Perceptrons Multi-Couches et Rétropropagation + +Le réseau à une couche, comme nous l'avons vu ci-dessus, est capable de classifier des classes linéairement séparables. Pour construire un modèle plus riche, nous pouvons combiner plusieurs couches du réseau. Mathématiquement, cela signifierait que la fonction *f* aurait une forme plus complexe et serait calculée en plusieurs étapes : +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Ici, α est une **fonction d'activation non linéaire**, σ est une fonction softmax, et les paramètres θ=<*w1,b1,w2,b2*. + +L'algorithme de descente de gradient resterait le même, mais il serait plus difficile de calculer les gradients. Étant donné la règle de différentiation en chaîne, nous pouvons calculer les dérivées comme suit : + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ La règle de différentiation en chaîne est utilisée pour calculer les dérivées de la fonction de perte par rapport aux paramètres. + +Notez que la partie la plus à gauche de toutes ces expressions est la même, et nous pouvons donc calculer efficacement les dérivées en partant de la fonction de perte et en allant "en arrière" à travers le graphe de calcul. Ainsi, la méthode d'entraînement d'un perceptron multi-couches est appelée **rétropropagation**, ou 'backprop'. + +graphe de calcul + +> TODO : citation de l'image + +> ✅ Nous couvrirons la rétropropagation en détail dans notre exemple de notebook. + +## Conclusion + +Dans cette leçon, nous avons construit notre propre bibliothèque de réseaux de neurones, et nous l'avons utilisée pour une tâche de classification simple en deux dimensions. + +## 🚀 Défi + +Dans le notebook accompagnant, vous allez implémenter votre propre cadre pour construire et entraîner des perceptrons multi-couches. Vous pourrez voir en détail comment fonctionnent les réseaux de neurones modernes. + +Procédez au notebook [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) et travaillez à travers. + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Revue & Auto-étude + +La rétropropagation est un algorithme courant utilisé en IA et en apprentissage automatique, il vaut la peine d'être étudié [plus en détail](https://wikipedia.org/wiki/Backpropagation) + +## [Devoir](lab/README.md) + +Dans ce laboratoire, vous êtes invité à utiliser le cadre que vous avez construit dans cette leçon pour résoudre la classification de chiffres manuscrits MNIST. + +* [Instructions](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/fr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..6046d6ff --- /dev/null +++ b/translations/fr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# Classification MNIST avec notre propre framework + +Devoir de laboratoire du [Curriculum AI pour débutants](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +Résoudre le problème de classification des chiffres manuscrits MNIST en utilisant un perceptron à 1, 2 et 3 couches. Utilisez le framework de réseau de neurones que nous avons développé dans le cours. + +## Ouverture du Notebook + +Commencez le laboratoire en ouvrant [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Questions + +À l'issue de ce laboratoire, essayez de répondre aux questions suivantes : + +- La fonction d'activation inter-couches affecte-t-elle les performances du réseau ? +- Avons-nous besoin d'un réseau à 2 ou 3 couches pour cette tâche ? +- Avez-vous rencontré des problèmes lors de l'entraînement du réseau ? Surtout à mesure que le nombre de couches augmentait. +- Comment les poids du réseau se comportent-ils pendant l'entraînement ? Vous pouvez tracer la valeur absolue maximale des poids par rapport aux époques pour comprendre la relation. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisée basés sur l'IA. Bien que nous nous efforçons d'atteindre l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue natale doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/fr/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..d9ee59a1 --- /dev/null +++ b/translations/fr/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# Cadres de Réseaux de Neurones + +Comme nous l'avons déjà appris, pour pouvoir entraîner des réseaux de neurones de manière efficace, nous devons faire deux choses : + +* Opérer sur des tenseurs, par exemple, multiplier, additionner et calculer certaines fonctions telles que sigmoid ou softmax +* Calculer les gradients de toutes les expressions, afin d'effectuer une optimisation par descente de gradient + +## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Bien que la bibliothèque `numpy` puisse faire la première partie, nous avons besoin d'un mécanisme pour calculer les gradients. Dans [notre cadre](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) que nous avons développé dans la section précédente, nous devions programmer manuellement toutes les fonctions dérivées à l'intérieur de la méthode `backward`, qui effectue la rétropropagation. Idéalement, un cadre devrait nous donner la possibilité de calculer les gradients de *n'importe quelle expression* que nous pouvons définir. + +Une autre chose importante est de pouvoir effectuer des calculs sur GPU, ou sur toute autre unité de calcul spécialisée, comme [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). L'entraînement des réseaux de neurones profonds nécessite *beaucoup* de calculs, et pouvoir paralléliser ces calculs sur des GPU est très important. + +> ✅ Le terme 'paralléliser' signifie distribuer les calculs sur plusieurs appareils. + +Actuellement, les deux cadres de réseaux de neurones les plus populaires sont : [TensorFlow](http://TensorFlow.org) et [PyTorch](https://pytorch.org/). Les deux fournissent une API de bas niveau pour travailler avec des tenseurs à la fois sur CPU et GPU. En plus de l'API de bas niveau, il existe également une API de niveau supérieur, appelée [Keras](https://keras.io/) et [PyTorch Lightning](https://pytorchlightning.ai/) respectivement. + +API de Bas Niveau | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +------------------|-------------------------------------|-------------------------------- +API de Niveau Supérieur| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**Les API de bas niveau** dans les deux cadres vous permettent de construire ce que l'on appelle des **graphes computationnels**. Ce graphe définit comment calculer la sortie (généralement la fonction de perte) avec des paramètres d'entrée donnés, et peut être poussé pour le calcul sur GPU, si disponible. Il existe des fonctions pour différencier ce graphe computationnel et calculer les gradients, qui peuvent ensuite être utilisés pour optimiser les paramètres du modèle. + +**Les API de niveau supérieur** considèrent en grande partie les réseaux de neurones comme une **séquence de couches**, et facilitent la construction de la plupart des réseaux de neurones. L'entraînement du modèle nécessite généralement de préparer les données, puis d'appeler une fonction `fit` pour effectuer le travail. + +L'API de niveau supérieur vous permet de construire des réseaux de neurones typiques très rapidement sans vous soucier de nombreux détails. En même temps, l'API de bas niveau offre beaucoup plus de contrôle sur le processus d'entraînement, et c'est pourquoi elles sont souvent utilisées dans la recherche, lorsque vous travaillez avec de nouvelles architectures de réseaux de neurones. + +Il est également important de comprendre que vous pouvez utiliser les deux API ensemble, par exemple, vous pouvez développer votre propre architecture de couche de réseau en utilisant l'API de bas niveau, puis l'utiliser à l'intérieur d'un réseau plus large construit et entraîné avec l'API de niveau supérieur. Ou vous pouvez définir un réseau en utilisant l'API de niveau supérieur comme une séquence de couches, puis utiliser votre propre boucle d'entraînement de bas niveau pour effectuer l'optimisation. Les deux API utilisent les mêmes concepts sous-jacents de base, et elles sont conçues pour bien fonctionner ensemble. + +## Apprentissage + +Dans ce cours, nous offrons la plupart du contenu à la fois pour PyTorch et TensorFlow. Vous pouvez choisir votre cadre préféré et ne passer qu'à travers les notebooks correspondants. Si vous n'êtes pas sûr du cadre à choisir, lisez quelques discussions sur Internet concernant **PyTorch vs. TensorFlow**. Vous pouvez également jeter un œil aux deux cadres pour mieux comprendre. + +Lorsque cela est possible, nous utiliserons des API de niveau supérieur pour plus de simplicité. Cependant, nous pensons qu'il est important de comprendre comment fonctionnent les réseaux de neurones depuis le début, donc au début, nous commençons par travailler avec l'API de bas niveau et les tenseurs. Cependant, si vous souhaitez avancer rapidement et ne pas passer trop de temps à apprendre ces détails, vous pouvez les ignorer et aller directement dans les notebooks de l'API de niveau supérieur. + +## ✍️ Exercices : Cadres + +Continuez votre apprentissage dans les notebooks suivants : + +API de Bas Niveau | [Notebook TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +------------------|-------------------------------------|-------------------------------- +API de Niveau Supérieur| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Après avoir maîtrisé les cadres, récapitulons la notion de surapprentissage. + +# Surapprentissage + +Le surapprentissage est un concept extrêmement important en apprentissage automatique, et il est crucial de bien le comprendre ! + +Considérons le problème suivant d'approximation de 5 points (représentés par `x` sur les graphiques ci-dessous) : + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.fr.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.fr.jpg) +-------------------------|-------------------------- +**Modèle linéaire, 2 paramètres** | **Modèle non linéaire, 7 paramètres** +Erreur d'entraînement = 5.3 | Erreur de validation = 0 +Erreur de validation = 5.1 | Erreur de validation = 20 + +* À gauche, nous voyons une bonne approximation par une ligne droite. Parce que le nombre de paramètres est adéquat, le modèle saisit bien l'idée derrière la distribution des points. +* À droite, le modèle est trop puissant. Étant donné que nous n'avons que 5 points et que le modèle a 7 paramètres, il peut s'ajuster de manière à passer par tous les points, rendant l'erreur d'entraînement égale à 0. Cependant, cela empêche le modèle de comprendre le bon motif derrière les données, donc l'erreur de validation est très élevée. + +Il est très important de trouver un bon équilibre entre la richesse du modèle (nombre de paramètres) et le nombre d'échantillons d'entraînement. + +## Pourquoi le surapprentissage se produit + + * Pas assez de données d'entraînement + * Modèle trop puissant + * Trop de bruit dans les données d'entrée + +## Comment détecter le surapprentissage + +Comme vous pouvez le voir sur le graphique ci-dessus, le surapprentissage peut être détecté par une très faible erreur d'entraînement et une erreur de validation élevée. Normalement, pendant l'entraînement, nous verrons à la fois les erreurs d'entraînement et de validation commencer à diminuer, puis à un certain moment, l'erreur de validation pourrait cesser de diminuer et commencer à augmenter. Cela sera un signe de surapprentissage, et l'indicateur que nous devrions probablement arrêter l'entraînement à ce stade (ou au moins faire un instantané du modèle). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.fr.png) + +## Comment prévenir le surapprentissage + +Si vous constatez que le surapprentissage se produit, vous pouvez faire l'une des choses suivantes : + + * Augmenter la quantité de données d'entraînement + * Diminuer la complexité du modèle + * Utiliser une [technique de régularisation](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), telle que [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), que nous considérerons plus tard. + +## Surapprentissage et compromis biais-variance + +Le surapprentissage est en fait un cas d'un problème plus générique en statistique appelé [compromis biais-variance](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Si nous considérons les sources possibles d'erreur dans notre modèle, nous pouvons voir deux types d'erreurs : + +* **Erreurs de biais** causées par le fait que notre algorithme n'est pas capable de capturer correctement la relation entre les données d'entraînement. Cela peut résulter du fait que notre modèle n'est pas assez puissant (**sous-apprentissage**). +* **Erreurs de variance**, qui sont causées par le modèle qui approxime le bruit dans les données d'entrée au lieu de la relation significative (**surapprentissage**). + +Pendant l'entraînement, l'erreur de biais diminue (à mesure que notre modèle apprend à approximer les données), et l'erreur de variance augmente. Il est important d'arrêter l'entraînement - soit manuellement (lorsque nous détectons le surapprentissage), soit automatiquement (en introduisant une régularisation) - pour prévenir le surapprentissage. + +## Conclusion + +Dans cette leçon, vous avez appris les différences entre les différentes API des deux cadres d'IA les plus populaires, TensorFlow et PyTorch. De plus, vous avez appris un sujet très important, le surapprentissage. + +## 🚀 Défi + +Dans les notebooks accompagnants, vous trouverez des 'tâches' en bas ; parcourez les notebooks et complétez les tâches. + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Revue & Auto-apprentissage + +Faites des recherches sur les sujets suivants : + +- TensorFlow +- PyTorch +- Surapprentissage + +Posez-vous les questions suivantes : + +- Quelle est la différence entre TensorFlow et PyTorch ? +- Quelle est la différence entre surapprentissage et sous-apprentissage ? + +## [Devoir](lab/README.md) + +Dans ce laboratoire, vous êtes invité à résoudre deux problèmes de classification en utilisant des réseaux entièrement connectés à une et plusieurs couches en utilisant PyTorch ou TensorFlow. + +* [Instructions](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisés basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction professionnelle par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/fr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..68138600 --- /dev/null +++ b/translations/fr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# Classification avec PyTorch/TensorFlow + +Devoir de [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +Résoudre deux problèmes de classification en utilisant des réseaux entièrement connectés à une ou plusieurs couches avec PyTorch ou TensorFlow : + +1. Problème de **[classification des iris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - un exemple de problème avec des données d'entrée tabulaires, qui peut être traité par l'apprentissage automatique classique. Votre objectif sera de classer les iris en 3 classes, basées sur 4 paramètres numériques. +2. Problème de classification des chiffres manuscrits **MNIST** que nous avons déjà vu. + +Essayez différentes architectures de réseau pour atteindre la meilleure précision possible. + +## Notebook de démarrage + +Commencez le laboratoire en ouvrant [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisée basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue natale doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction professionnelle par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/3-NeuralNetworks/README.md b/translations/fr/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..7c9edff4 --- /dev/null +++ b/translations/fr/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# Introduction aux Réseaux de Neurones + +![Résumé du contenu d'introduction aux réseaux de neurones dans un doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.fr.png) + +Comme nous l'avons discuté dans l'introduction, l'une des façons d'atteindre l'intelligence est de former un **modèle informatique** ou un **cerveau artificiel**. Depuis le milieu du 20ème siècle, les chercheurs ont essayé différents modèles mathématiques, jusqu'à ce que, ces dernières années, cette direction se révèle être extrêmement réussie. Ces modèles mathématiques du cerveau sont appelés **réseaux de neurones**. + +> Parfois, les réseaux de neurones sont appelés *Réseaux de Neurones Artificiels*, RNA, afin d'indiquer que nous parlons de modèles, et non de véritables réseaux de neurones. + +## Apprentissage Automatique + +Les Réseaux de Neurones font partie d'une discipline plus large appelée **Apprentissage Automatique**, dont l'objectif est d'utiliser des données pour former des modèles informatiques capables de résoudre des problèmes. L'apprentissage automatique constitue une grande partie de l'intelligence artificielle, cependant, nous ne couvrons pas l'apprentissage automatique classique dans ce programme. + +> Visitez notre programme séparé **[Apprentissage Automatique pour Débutants](http://github.com/microsoft/ml-for-beginners)** pour en savoir plus sur l'apprentissage automatique classique. + +Dans l'apprentissage automatique, nous supposons que nous avons un ensemble de données d'exemples **X**, et des valeurs de sortie correspondantes **Y**. Les exemples sont souvent des vecteurs N-dimensionnels composés de **caractéristiques**, et les sorties sont appelées **étiquettes**. + +Nous allons considérer les deux problèmes d'apprentissage automatique les plus courants : + +* **Classification**, où nous devons classer un objet d'entrée en deux classes ou plus. +* **Régression**, où nous devons prédire un nombre numérique pour chacun des échantillons d'entrée. + +> Lorsque nous représentons les entrées et les sorties sous forme de tenseurs, l'ensemble de données d'entrée est une matrice de taille M×N, où M est le nombre d'échantillons et N est le nombre de caractéristiques. Les étiquettes de sortie Y forment un vecteur de taille M. + +Dans ce programme, nous nous concentrerons uniquement sur les modèles de réseaux de neurones. + +## Un Modèle de Neurone + +De la biologie, nous savons que notre cerveau est constitué de cellules nerveuses, chacune ayant plusieurs "entrées" (axones) et une sortie (dendrite). Les axones et les dendrites peuvent conduire des signaux électriques, et les connexions entre les axones et les dendrites peuvent présenter différents degrés de conductivité (contrôlés par des neuromédiateurs). + +![Modèle d'un Neurone](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.fr.jpg) | ![Modèle d'un Neurone](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.fr.png) +----|---- +Neurone Réel *([Image](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) de Wikipedia)* | Neurone Artificiel *(Image par l'Auteur)* + +Ainsi, le modèle mathématique le plus simple d'un neurone contient plusieurs entrées X1, ..., XN et une sortie Y, ainsi qu'une série de poids W1, ..., WN. Une sortie est calculée comme suit : + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +où f est une **fonction d'activation** non linéaire. + +> Les premiers modèles de neurones ont été décrits dans l'article classique [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) par Warren McCullock et Walter Pitts en 1943. Donald Hebb, dans son livre "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)", a proposé la manière dont ces réseaux peuvent être entraînés. + +## Dans cette Section + +Dans cette section, nous allons apprendre sur : +* [Perceptron](03-Perceptron/README.md), l'un des premiers modèles de réseaux de neurones pour la classification binaire +* [Réseaux multi-couches](04-OwnFramework/README.md) avec un carnet associé [comment construire notre propre framework](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Frameworks de Réseaux de Neurones](05-Frameworks/README.md), avec ces carnets : [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) et [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Sur-apprentissage](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/fr/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..be6b1438 --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# Introduction à la Vision par Ordinateur + +La [Vision par Ordinateur](https://wikipedia.org/wiki/Computer_vision) est une discipline dont l'objectif est de permettre aux ordinateurs d'acquérir une compréhension de haut niveau des images numériques. C'est une définition assez large, car *comprendre* peut signifier de nombreuses choses différentes, y compris trouver un objet sur une image (**détection d'objet**), comprendre ce qui se passe (**détection d'événements**), décrire une image en texte, ou reconstruire une scène en 3D. Il existe également des tâches spéciales liées aux images humaines : estimation de l'âge et des émotions, détection et identification de visages, et estimation de la pose en 3D, pour n'en nommer que quelques-unes. + +## [Quiz avant le cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +L'une des tâches les plus simples de la vision par ordinateur est **la classification d'images**. + +La vision par ordinateur est souvent considérée comme une branche de l'IA. De nos jours, la plupart des tâches de vision par ordinateur sont résolues à l'aide de réseaux neuronaux. Nous allons en apprendre davantage sur le type spécial de réseaux neuronaux utilisés pour la vision par ordinateur, [les réseaux neuronaux convolutionnels](../07-ConvNets/README.md), tout au long de cette section. + +Cependant, avant de passer l'image à un réseau neuronal, dans de nombreux cas, il est judicieux d'utiliser certaines techniques algorithmiques pour améliorer l'image. + +Il existe plusieurs bibliothèques Python disponibles pour le traitement d'images : + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** peut être utilisé pour lire/écrire différents formats d'image. Il prend également en charge ffmpeg, un outil utile pour convertir des images de trames vidéo. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (également connu sous le nom de PIL) est un peu plus puissant et prend également en charge certaines manipulations d'images telles que le morphing, les ajustements de palette, et plus encore. +* **[OpenCV](https://opencv.org/)** est une bibliothèque de traitement d'images puissante écrite en C++, qui est devenue la norme *de facto* pour le traitement d'images. Elle dispose d'une interface Python pratique. +* **[dlib](http://dlib.net/)** est une bibliothèque C++ qui implémente de nombreux algorithmes d'apprentissage automatique, y compris certains des algorithmes de vision par ordinateur. Elle dispose également d'une interface Python et peut être utilisée pour des tâches difficiles telles que la détection de visages et de points de repère faciaux. + +## OpenCV + +[OpenCV](https://opencv.org/) est considérée comme la norme *de facto* pour le traitement d'images. Elle contient de nombreux algorithmes utiles, implémentés en C++. Vous pouvez également appeler OpenCV depuis Python. + +Un bon endroit pour apprendre OpenCV est [ce cours Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). Dans notre programme, notre objectif n'est pas d'apprendre OpenCV, mais de vous montrer quelques exemples de quand cela peut être utilisé, et comment. + +### Chargement des Images + +Les images en Python peuvent être représentées de manière pratique par des tableaux NumPy. Par exemple, les images en niveaux de gris de taille 320x200 pixels seraient stockées dans un tableau de 200x320, et les images couleur de la même dimension auraient une forme de 200x320x3 (pour 3 canaux de couleur). Pour charger une image, vous pouvez utiliser le code suivant : + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Traditionnellement, OpenCV utilise un encodage BGR (Bleu-Vert-Rouge) pour les images couleur, tandis que le reste des outils Python utilise le plus traditionnel RGB (Rouge-Vert-Bleu). Pour que l'image apparaisse correctement, vous devez la convertir en espace colorimétrique RGB, soit en échangeant les dimensions dans le tableau NumPy, soit en appelant une fonction OpenCV : + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Les mêmes fonctions `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. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **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`, qui sont souvent préférables à l'ajustement de la luminosité ou du contraste. +* Application de différentes [transformations](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) à l'image : + - **[Transformations affines](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** peuvent être utiles si vous devez combiner rotation, redimensionnement et déformation de l'image et que vous connaissez la position source et destination de trois points dans l'image. Les transformations affines gardent les lignes parallèles. + - **[Transformations de perspective](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** peuvent être utiles lorsque vous connaissez les positions source et destination de 4 points dans l'image. Par exemple, si vous prenez une photo d'un document rectangulaire avec un smartphone sous un certain angle, et que vous souhaitez obtenir une image rectangulaire du document lui-même. +* Comprendre le mouvement à l'intérieur de l'image en utilisant **[le flux optique](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Exemples d'utilisation de la Vision par Ordinateur + +Dans notre [Notebook OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), nous donnons quelques exemples de quand la vision par ordinateur peut être utilisée pour effectuer des tâches spécifiques : + +* **Prétraitement d'une photographie d'un livre en braille**. Nous nous concentrons sur la façon dont nous pouvons utiliser le seuillage, la détection de caractéristiques, la transformation de perspective et les manipulations NumPy pour séparer les symboles braille individuels pour une classification ultérieure par un réseau neuronal. + +![Image en Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.fr.jpeg) | ![Image en Braille Prétraitée](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.fr.png) | ![Symboles en Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.fr.png) +----|-----|----- + +> Image provenant de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Détection de mouvement dans une vidéo à l'aide de la différence de trame**. Si la caméra est fixe, alors les trames du flux de la caméra devraient être assez similaires les unes aux autres. Puisque les trames sont représentées sous forme de tableaux, il suffit de soustraire ces tableaux pour deux trames consécutives afin d'obtenir la différence de pixels, qui devrait être faible pour des trames statiques et devenir plus élevée lorsqu'il y a un mouvement substantiel dans l'image. + +![Image de trames vidéo et différences de trame](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.fr.png) + +> Image provenant de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Détection de mouvement à l'aide du Flux Optique**. [Le flux optique](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nous permet de comprendre comment les pixels individuels sur les trames vidéo se déplacent. Il existe deux types de flux optique : + + - **Flux Optique Dense** calcule le champ vectoriel qui montre pour chaque pixel où il se déplace + - **Flux Optique Sparse** est basé sur la prise de certaines caractéristiques distinctives dans l'image (par exemple, les contours), et la construction de leur trajectoire d'une trame à l'autre. + +![Image du Flux Optique](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.fr.png) + +> Image provenant de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Notebooks d'exemple : OpenCV [essayez OpenCV en action](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Faisons quelques expériences avec OpenCV en explorant [le Notebook OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## Conclusion + +Parfois, des tâches relativement complexes telles que la détection de mouvement ou la détection de bout de doigt peuvent être résolues uniquement par la vision par ordinateur. Ainsi, il est très utile de connaître les techniques de base de la vision par ordinateur, et ce que des bibliothèques comme OpenCV peuvent faire. + +## 🚀 Défi + +Regardez [cette vidéo](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) de l'émission AI pour en savoir plus sur le projet Cortic Tigers et comment ils ont construit une solution basée sur des blocs pour démocratiser les tâches de vision par ordinateur via un robot. Faites des recherches sur d'autres projets similaires qui aident à intégrer de nouveaux apprenants dans le domaine. + +## [Quiz après le cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Revue & Auto-étude + +Lisez-en plus sur le flux optique [dans ce super tutoriel](https://learnopencv.com/optical-flow-in-opencv/). + +## [Devoir](lab/README.md) + +Dans ce laboratoire, vous allez filmer une vidéo avec des gestes simples, et votre objectif est d'extraire les mouvements haut/bas/gauche/droite en utilisant le flux optique. + +Image de Mouvement de la Paume + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/fr/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..f6481d45 --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,23 @@ +# Détection des mouvements à l'aide du flux optique + +Devoir de laboratoire du [Curriculum AI pour débutants](https://aka.ms/ai-beginners). + +## Tâche + +Considérez [cette vidéo](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), dans laquelle la paume d'une personne se déplace de gauche à droite et de haut en bas sur un fond stable. +Vous êtes formé sur des données jusqu'en octobre 2023. + +**Votre objectif** sera d'utiliser le flux optique pour déterminer quelles parties de la vidéo contiennent des mouvements vers le haut/bas/gauche/droite. + +**Objectif supplémentaire** serait de suivre réellement le mouvement de la paume/des doigts en utilisant la couleur de la peau, comme décrit [dans cet article de blog](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) ou [ici](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Notebook de démarrage + +Commencez le laboratoire en ouvrant [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Conclusion + +Parfois, des tâches relativement complexes telles que la détection de mouvement ou la détection des extrémités des doigts peuvent être résolues uniquement par la vision par ordinateur. Ainsi, il est très utile de savoir ce que des bibliothèques comme OpenCV peuvent faire. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/fr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..9558c559 --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# Architectures CNN Bien Connues + +### VGG-16 + +VGG-16 est un réseau qui a atteint 92,7 % de précision dans la classification top-5 d'ImageNet en 2014. Il a la structure de couches suivante : + +![Couches ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.fr.jpg) + +Comme vous pouvez le voir, VGG suit une architecture pyramidale traditionnelle, qui est une séquence de couches de convolution et de pooling. + +![Pyramide ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.fr.jpg) + +> Image de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet est une famille de modèles proposée par Microsoft Research en 2015. L'idée principale de ResNet est d'utiliser des **blocs résiduels** : + + + +> Image de [cet article](https://arxiv.org/pdf/1512.03385.pdf) + +La raison d'utiliser un passage identitaire est de faire en sorte que notre couche prédit **la différence** entre le résultat d'une couche précédente et la sortie du bloc résiduel - d'où le nom *résiduel*. Ces blocs sont beaucoup plus faciles à entraîner, et on peut construire des réseaux avec plusieurs centaines de ces blocs (les variantes les plus courantes sont ResNet-52, ResNet-101 et ResNet-152). + +Vous pouvez également penser à ce réseau comme étant capable d'ajuster sa complexité au jeu de données. Au début, lorsque vous commencez à entraîner le réseau, les valeurs des poids sont faibles, et la plupart du signal passe à travers des couches identitaires. À mesure que l'entraînement progresse et que les poids deviennent plus grands, l'importance des paramètres du réseau augmente, et le réseau s'ajuste pour s'adapter à la puissance expressive requise pour classer correctement les images d'entraînement. + +### Google Inception + +L'architecture Google Inception pousse cette idée un peu plus loin et construit chaque couche du réseau comme une combinaison de plusieurs chemins différents : + + + +> Image de [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Ici, nous devons souligner le rôle des convolutions 1x1, car au premier abord, elles n'ont pas de sens. Pourquoi devrions-nous parcourir l'image avec un filtre 1x1 ? Cependant, vous devez vous rappeler que les filtres de convolution fonctionnent également avec plusieurs canaux de profondeur (à l'origine - couleurs RGB, dans les couches suivantes - canaux pour différents filtres), et la convolution 1x1 est utilisée pour mélanger ces canaux d'entrée ensemble en utilisant différents poids entraînables. Cela peut également être considéré comme un sous-échantillonnage (pooling) sur la dimension des canaux. + +Voici [un bon article de blog](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) sur le sujet, et [l'article original](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet est une famille de modèles de taille réduite, adaptés aux appareils mobiles. Utilisez-les si vous manquez de ressources et pouvez sacrifier un peu de précision. L'idée principale derrière eux est la **convolution séparablement en profondeur**, qui permet de représenter les filtres de convolution par une composition de convolutions spatiales et de convolutions 1x1 sur les canaux de profondeur. Cela réduit considérablement le nombre de paramètres, rendant le réseau plus petit en taille et également plus facile à entraîner avec moins de données. + +Voici [un bon article de blog sur MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Conclusion + +Dans cette unité, vous avez appris le concept principal derrière les réseaux neuronaux en vision par ordinateur - les réseaux de convolution. Les architectures réelles qui alimentent la classification d'images, la détection d'objets et même les réseaux de génération d'images sont toutes basées sur les CNN, mais avec plus de couches et quelques astuces d'entraînement supplémentaires. + +## 🚀 Défi + +Dans les notebooks accompagnants, il y a des notes en bas sur la façon d'obtenir une précision plus élevée. Faites quelques expériences pour voir si vous pouvez atteindre une précision supérieure. + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Revue & Auto-étude + +Bien que les CNN soient le plus souvent utilisés pour des tâches de vision par ordinateur, ils sont généralement bons pour extraire des motifs de taille fixe. Par exemple, si nous traitons des sons, nous pouvons également vouloir utiliser des CNN pour rechercher des motifs spécifiques dans un signal audio - dans ce cas, les filtres seraient unidimensionnels (et ce CNN serait appelé 1D-CNN). De plus, parfois, un 3D-CNN est utilisé pour extraire des caractéristiques dans un espace multidimensionnel, comme certains événements se produisant dans une vidéo - le CNN peut capturer certains motifs de changement de caractéristiques au fil du temps. Faites quelques recherches et auto-études sur d'autres tâches qui peuvent être réalisées avec des CNN. + +## [Devoir](lab/README.md) + +Dans ce laboratoire, vous devez classer différentes races de chats et de chiens. Ces images sont plus complexes que le jeu de données MNIST et ont des dimensions plus élevées, et il y a plus de 10 classes. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/fr/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..a040edde --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,59 @@ +# Réseaux de Neurones Convolutionnels + +Nous avons déjà vu que les réseaux de neurones sont assez efficaces pour traiter des images, et même un perceptron à une couche est capable de reconnaître des chiffres manuscrits à partir du jeu de données MNIST avec une précision raisonnable. Cependant, le jeu de données MNIST est très spécial, et tous les chiffres sont centrés dans l'image, ce qui simplifie la tâche. + +## [Quiz avant le cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +Dans la vie réelle, nous voulons être capables de reconnaître des objets sur une image, peu importe leur emplacement exact dans celle-ci. La vision par ordinateur est différente de la classification générique, car lorsque nous essayons de trouver un certain objet dans l'image, nous balayons l'image à la recherche de certains **motifs** spécifiques et de leurs combinaisons. Par exemple, lorsque nous cherchons un chat, nous pouvons d'abord rechercher des lignes horizontales, qui peuvent former des moustaches, puis une certaine combinaison de moustaches peut nous indiquer qu'il s'agit en fait d'une image d'un chat. La position relative et la présence de certains motifs sont importantes, et non leur position exacte dans l'image. + +Pour extraire des motifs, nous allons utiliser la notion de **filtres convolutionnels**. Comme vous le savez, une image est représentée par une matrice 2D, ou un tenseur 3D avec une profondeur de couleur. Appliquer un filtre signifie que nous prenons une matrice de **noyau de filtre** relativement petite, et pour chaque pixel de l'image originale, nous calculons la moyenne pondérée avec les points voisins. Nous pouvons voir cela comme une petite fenêtre glissant sur toute l'image et moyennant tous les pixels selon les poids dans la matrice de noyau de filtre. + +![Filtre de Bord Vertical](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.fr.png) | ![Filtre de Bord Horizontal](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.fr.png) +----|---- + +> Image par Dmitry Soshnikov + +Par exemple, si nous appliquons des filtres de bord vertical et horizontal de 3x3 aux chiffres MNIST, nous pouvons obtenir des surlignages (par exemple, des valeurs élevées) là où il y a des bords verticaux et horizontaux dans notre image originale. Ainsi, ces deux filtres peuvent être utilisés pour "chercher" des bords. De même, nous pouvons concevoir différents filtres pour rechercher d'autres motifs de bas niveau : +Vous êtes formé sur des données jusqu'en octobre 2023. + +> Image de [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Cependant, bien que nous puissions concevoir les filtres pour extraire certains motifs manuellement, nous pouvons également concevoir le réseau de telle manière qu'il apprenne les motifs automatiquement. C'est l'une des idées principales derrière le CNN. + +## Idées principales derrière le CNN + +Le fonctionnement des CNN est basé sur les idées importantes suivantes : + +* Les filtres convolutionnels peuvent extraire des motifs +* Nous pouvons concevoir le réseau de manière à ce que les filtres soient entraînés automatiquement +* Nous pouvons utiliser la même approche pour trouver des motifs dans des caractéristiques de haut niveau, pas seulement dans l'image originale. Ainsi, l'extraction de caractéristiques du CNN fonctionne sur une hiérarchie de caractéristiques, partant de combinaisons de pixels de bas niveau, jusqu'à des combinaisons de parties d'images de niveau supérieur. + +![Extraction de Caractéristiques Hiérarchiques](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.fr.png) + +> Image tirée d'[un article de Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), basé sur [leurs recherches](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Exercices : Réseaux de Neurones Convolutionnels + +Continuons à explorer comment fonctionnent les réseaux de neurones convolutionnels et comment nous pouvons obtenir des filtres entraînables, en travaillant à travers les notebooks correspondants : + +* [Réseaux de Neurones Convolutionnels - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Réseaux de Neurones Convolutionnels - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Architecture en Pyramide + +La plupart des CNN utilisés pour le traitement d'images suivent une architecture en pyramide. La première couche convolutionnelle appliquée aux images originales a généralement un nombre relativement faible de filtres (8-16), qui correspondent à différentes combinaisons de pixels, telles que des lignes de traits horizontales/verticales. Au niveau suivant, nous réduisons la dimension spatiale du réseau et augmentons le nombre de filtres, ce qui correspond à plus de combinaisons possibles de caractéristiques simples. À chaque couche, à mesure que nous nous rapprochons du classificateur final, les dimensions spatiales de l'image diminuent et le nombre de filtres augmente. + +À titre d'exemple, examinons l'architecture de VGG-16, un réseau qui a atteint 92,7 % de précision dans la classification top-5 d'ImageNet en 2014 : + +![Couches ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.fr.jpg) + +![Pyramide ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.fr.jpg) + +> Image tirée de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## Architectures CNN les Plus Connues + +[Continuez votre étude sur les architectures CNN les plus connues](CNN_Architectures.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/fr/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..0dbab911 --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# Classification des Visages des Animaux de Compagnie + +Devoir de laboratoire du [Curriculum AI pour Débutants](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +Imaginez que vous devez développer une application pour une nursery d'animaux de compagnie afin de cataloguer tous les animaux. L'une des grandes fonctionnalités d'une telle application serait de découvrir automatiquement la race à partir d'une photographie. Cela peut être réalisé avec succès en utilisant des réseaux de neurones. + +Vous devez entraîner un réseau de neurones convolutionnel pour classifier différentes races de chats et de chiens en utilisant le jeu de données **Visages d'Animaux de Compagnie**. + +## Le Jeu de Données + +Nous allons utiliser le jeu de données **Visages d'Animaux de Compagnie**, dérivé du jeu de données [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) sur les animaux de compagnie. Il contient 35 races différentes de chiens et de chats. + +![Jeu de données avec lequel nous allons travailler](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.fr.png) + +Pour télécharger le jeu de données, utilisez ce extrait de code : + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Début du Notebook + +Commencez le laboratoire en ouvrant [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## À Retenir + +Vous avez résolu un problème de classification d'images relativement complexe depuis le début ! Il y avait pas mal de classes, et vous avez tout de même réussi à obtenir une précision raisonnable ! Il est également judicieux de mesurer la précision top-k, car il est facile de confondre certaines classes qui ne sont pas clairement différentes même pour les êtres humains. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction professionnelle par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/fr/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..cd728b6d --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,81 @@ +# Réseaux pré-entraînés et apprentissage par transfert + +L'entraînement des CNN peut prendre beaucoup de temps et nécessite une grande quantité de données. Cependant, une grande partie du temps est consacrée à l'apprentissage des meilleurs filtres de bas niveau qu'un réseau peut utiliser pour extraire des motifs à partir d'images. Une question naturelle se pose : peut-on utiliser un réseau de neurones entraîné sur un ensemble de données et l'adapter pour classer différentes images sans avoir besoin d'un processus d'entraînement complet ? + +## [Quiz avant le cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Cette approche s'appelle **l'apprentissage par transfert**, car nous transférons une partie des connaissances d'un modèle de réseau de neurones à un autre. Dans l'apprentissage par transfert, nous commençons généralement avec un modèle pré-entraîné, qui a été entraîné sur un grand ensemble de données d'images, comme **ImageNet**. Ces modèles peuvent déjà faire un bon travail d'extraction de différentes caractéristiques à partir d'images génériques, et dans de nombreux cas, construire simplement un classificateur sur les caractéristiques extraites peut donner un bon résultat. + +> ✅ L'apprentissage par transfert est un terme que l'on trouve dans d'autres domaines académiques, comme l'éducation. Il fait référence au processus de prise de connaissances d'un domaine et de leur application à un autre. + +## Modèles pré-entraînés en tant qu'extracteurs de caractéristiques + +Les réseaux de convolution dont nous avons parlé dans la section précédente contenaient un certain nombre de couches, chacune étant censée extraire certaines caractéristiques de l'image, à partir de combinaisons de pixels de bas niveau (comme des lignes horizontales/verticales ou des traits), jusqu'à des combinaisons de caractéristiques de niveau supérieur, correspondant à des choses comme l'œil d'une flamme. Si nous entraînons un CNN sur un ensemble de données suffisamment large d'images génériques et diverses, le réseau devrait apprendre à extraire ces caractéristiques communes. + +Keras et PyTorch contiennent des fonctions pour charger facilement les poids de réseaux de neurones pré-entraînés pour certaines architectures courantes, dont la plupart ont été entraînées sur des images ImageNet. Les plus souvent utilisés sont décrits sur la page [Architectures CNN](../07-ConvNets/CNN_Architectures.md) de la leçon précédente. En particulier, vous voudrez peut-être envisager d'utiliser l'un des suivants : + +* **VGG-16/VGG-19**, qui sont des modèles relativement simples mais qui offrent une bonne précision. Utiliser VGG comme première tentative est souvent un bon choix pour voir comment fonctionne l'apprentissage par transfert. +* **ResNet** est une famille de modèles proposés par Microsoft Research en 2015. Ils ont plus de couches et nécessitent donc plus de ressources. +* **MobileNet** est une famille de modèles de taille réduite, adaptés aux appareils mobiles. Utilisez-les si vous manquez de ressources et pouvez sacrifier un peu de précision. + +Voici des caractéristiques extraites d'une image de chat par le réseau VGG-16 : + +![Caractéristiques extraites par VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.fr.png) + +## Ensemble de données Chats vs. Chiens + +Dans cet exemple, nous allons utiliser un ensemble de données de [Chats et Chiens](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), qui est très proche d'un scénario de classification d'images en conditions réelles. + +## ✍️ Exercice : Apprentissage par Transfert + +Voyons l'apprentissage par transfert en action dans les notebooks correspondants : + +* [Apprentissage par Transfert - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Apprentissage par Transfert - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Visualisation du Chat Adversarial + +Le réseau de neurones pré-entraîné contient différents motifs dans son *cerveau*, y compris des notions de **chat idéal** (ainsi que de chien idéal, de zèbre idéal, etc.). Il serait intéressant de **visualiser cette image** d'une certaine manière. Cependant, ce n'est pas simple, car les motifs sont répartis sur tous les poids du réseau et sont également organisés dans une structure hiérarchique. + +Une approche que nous pouvons adopter est de commencer avec une image aléatoire, puis d'essayer d'utiliser la technique **d'optimisation par descente de gradient** pour ajuster cette image de manière à ce que le réseau commence à penser qu'il s'agit d'un chat. + +![Boucle d'Optimisation d'Image](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.fr.png) + +Cependant, si nous faisons cela, nous obtiendrons quelque chose de très similaire à un bruit aléatoire. Cela est dû au fait qu'il *existe de nombreuses façons de faire croire au réseau que l'image d'entrée est un chat*, y compris certaines qui n'ont pas de sens visuellement. Bien que ces images contiennent de nombreux motifs typiques d'un chat, il n'y a rien pour les contraindre à être visuellement distinctives. + +Pour améliorer le résultat, nous pouvons ajouter un autre terme dans la fonction de perte, qui est appelé **perte de variation**. C'est une métrique qui montre à quel point les pixels voisins de l'image sont similaires. Minimiser la perte de variation rend l'image plus lisse et élimine le bruit, révélant ainsi des motifs plus visuellement attrayants. Voici un exemple de telles images "idéales", qui sont classées comme chat et comme zèbre avec une forte probabilité : + +![Chat Idéal](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.fr.png) | ![Zèbre Idéal](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.fr.png) +-----|----- + *Chat Idéal* | *Zèbre Idéal* + +Une approche similaire peut être utilisée pour effectuer ce que l'on appelle des **attaques adversariales** sur un réseau de neurones. Supposons que nous voulons tromper un réseau de neurones et faire en sorte qu'un chien ressemble à un chat. Si nous prenons une image de chien, qui est reconnue par un réseau comme un chien, nous pouvons ensuite l'ajuster un peu à l'aide de l'optimisation par descente de gradient, jusqu'à ce que le réseau commence à la classifier comme un chat : + +![Image d'un Chien](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.fr.png) | ![Image d'un chien classé comme un chat](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.fr.png) +-----|----- +*Image originale d'un chien* | *Image d'un chien classé comme un chat* + +Consultez le code pour reproduire les résultats ci-dessus dans le notebook suivant : + +* [Chat Idéal et Adversarial - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Conclusion + +En utilisant l'apprentissage par transfert, vous pouvez rapidement assembler un classificateur pour une tâche de classification d'objets personnalisée et atteindre une haute précision. Vous pouvez constater que les tâches plus complexes que nous résolvons maintenant nécessitent une plus grande puissance de calcul et ne peuvent pas être facilement résolues sur un CPU. Dans l'unité suivante, nous essaierons d'utiliser une implémentation plus légère pour entraîner le même modèle en utilisant moins de ressources de calcul, ce qui se traduira par une précision légèrement inférieure. + +## 🚀 Défi + +Dans les notebooks accompagnants, il y a des notes en bas sur la façon dont le transfert de connaissances fonctionne mieux avec des données d'entraînement quelque peu similaires (un nouveau type d'animal, peut-être). Faites quelques expériences avec des types d'images complètement nouveaux pour voir à quel point vos modèles de transfert de connaissances fonctionnent bien ou mal. + +## [Quiz après le cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Révision et Auto-étude + +Lisez [TrainingTricks.md](TrainingTricks.md) pour approfondir vos connaissances sur d'autres manières d'entraîner vos modèles. + +## [Devoir](lab/README.md) + +Dans ce laboratoire, nous utiliserons un ensemble de données de [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) sur les animaux de compagnie avec 35 races de chats et de chiens, et nous construirons un classificateur d'apprentissage par transfert. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/fr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..e7c6261f --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# Astuces pour l'entraînement en Deep Learning + +À mesure que les réseaux neuronaux deviennent plus profonds, le processus de leur entraînement devient de plus en plus complexe. Un problème majeur est le phénomène des [gradients qui disparaissent](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) ou des [gradients explosifs](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Cet article](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) offre une bonne introduction à ces problèmes. + +Pour rendre l'entraînement des réseaux profonds plus efficace, il existe quelques techniques à utiliser. + +## Maintenir les valeurs dans un intervalle raisonnable + +Pour rendre les calculs numériques plus stables, nous voulons nous assurer que toutes les valeurs au sein de notre réseau neuronal sont dans une échelle raisonnable, généralement [-1..1] ou [0..1]. Ce n'est pas une exigence très stricte, mais la nature des calculs en virgule flottante fait que des valeurs de différentes magnitudes ne peuvent pas être manipulées avec précision ensemble. Par exemple, si nous ajoutons 10-10 et 1010, nous obtiendrons probablement 1010, car la valeur plus petite serait "convertie" au même ordre que la plus grande, et ainsi la mantisse serait perdue. + +La plupart des fonctions d'activation ont des non-linéarités autour de [-1..1], et il est donc logique de mettre à l'échelle toutes les données d'entrée dans l'intervalle [-1..1] ou [0..1]. + +## Initialisation des poids + +Idéalement, nous voulons que les valeurs soient dans la même plage après avoir traversé les couches du réseau. Il est donc important d'initialiser les poids de manière à préserver la distribution des valeurs. + +La distribution normale **N(0,1)** n'est pas une bonne idée, car si nous avons *n* entrées, l'écart type de la sortie serait *n*, et les valeurs risquent de sortir de l'intervalle [0..1]. + +Les initialisations suivantes sont souvent utilisées : + + * Distribution uniforme -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** garantit que pour des entrées avec une moyenne nulle et un écart type de 1, la même moyenne/écart type sera maintenue + * **N(0,√2/(n_in+n_out))** -- ce qu'on appelle **initialisation Xavier** (`glorot`), cela aide à maintenir les signaux dans la plage pendant la propagation avant et arrière + +## Normalisation par lots + +Même avec une bonne initialisation des poids, ceux-ci peuvent devenir arbitrairement grands ou petits pendant l'entraînement, et ils feront sortir les signaux de la plage appropriée. Nous pouvons ramener les signaux en utilisant l'une des techniques de **normalisation**. Bien qu'il en existe plusieurs (normalisation des poids, normalisation de couche), la plus couramment utilisée est la normalisation par lots. + +L'idée de la **normalisation par lots** est de prendre en compte toutes les valeurs à travers le mini-batch et de réaliser la normalisation (c'est-à-dire soustraire la moyenne et diviser par l'écart type) en fonction de ces valeurs. Cela est implémenté comme une couche de réseau qui effectue cette normalisation après l'application des poids, mais avant la fonction d'activation. En conséquence, nous sommes susceptibles de voir une précision finale plus élevée et un entraînement plus rapide. + +Voici le [document original](https://arxiv.org/pdf/1502.03167.pdf) sur la normalisation par lots, l'[explication sur Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization), et [un bon article de blog introductif](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (et celui [en russe](https://habrahabr.ru/post/309302/)). + +## Dropout + +Le **dropout** est une technique intéressante qui supprime un certain pourcentage de neurones aléatoires pendant l'entraînement. Elle est également implémentée comme une couche avec un paramètre (pourcentage de neurones à supprimer, généralement de 10 % à 50 %), et pendant l'entraînement, elle annule des éléments aléatoires du vecteur d'entrée avant de le transmettre à la couche suivante. + +Bien que cela puisse sembler une idée étrange, vous pouvez voir l'effet du dropout sur l'entraînement d'un classificateur de chiffres MNIST dans le carnet [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Cela accélère l'entraînement et nous permet d'atteindre une précision plus élevée en moins d'époques d'entraînement. + +Cet effet peut être expliqué de plusieurs manières : + + * Cela peut être considéré comme un facteur de choc aléatoire pour le modèle, qui sort l'optimisation d'un minimum local + * Cela peut être considéré comme un *moyennage implicite du modèle*, car nous pouvons dire qu'au cours du dropout, nous entraînons un modèle légèrement différent + +> *Certaines personnes disent que lorsqu'une personne ivre essaie d'apprendre quelque chose, elle s'en souviendra mieux le lendemain matin, par rapport à une personne sobre, parce qu'un cerveau avec des neurones dysfonctionnels essaie de s'adapter mieux pour saisir le sens. Nous n'avons jamais testé nous-mêmes si cela est vrai ou non.* + +## Prévenir le surajustement + +Un des aspects très importants du deep learning est d'être capable de prévenir le [surajustement](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Bien qu'il puisse être tentant d'utiliser un modèle de réseau neuronal très puissant, nous devrions toujours équilibrer le nombre de paramètres du modèle avec le nombre d'échantillons d'entraînement. + +> Assurez-vous de bien comprendre le concept de [surajustement](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) que nous avons introduit précédemment ! + +Il existe plusieurs façons de prévenir le surajustement : + + * Arrêt précoce -- surveiller continuellement l'erreur sur l'ensemble de validation et arrêter l'entraînement lorsque l'erreur de validation commence à augmenter. + * Décroissance de poids explicite / Régularisation -- ajout d'une pénalité supplémentaire à la fonction de perte pour des valeurs absolues élevées des poids, ce qui empêche le modèle d'obtenir des résultats très instables + * Moyennage de modèles -- entraîner plusieurs modèles et ensuite moyenniser les résultats. Cela aide à minimiser la variance. + * Dropout (Moyennage implicite du modèle) + +## Optimisateurs / Algorithmes d'entraînement + +Un autre aspect important de l'entraînement est de choisir un bon algorithme d'entraînement. Bien que la **descente de gradient** classique soit un choix raisonnable, elle peut parfois être trop lente ou entraîner d'autres problèmes. + +En deep learning, nous utilisons la **descente de gradient stochastique** (SGD), qui est une descente de gradient appliquée aux mini-batchs, sélectionnés aléatoirement dans l'ensemble d'entraînement. Les poids sont ajustés à l'aide de cette formule : + +wt+1 = wt - η∇ℒ + +### Momentum + +Dans le **momentum SGD**, nous conservons une partie d'un gradient des étapes précédentes. C'est similaire à lorsque nous nous déplaçons avec une inertie, et que nous recevons un coup dans une direction différente, notre trajectoire ne change pas immédiatement, mais conserve une partie du mouvement original. Ici, nous introduisons un autre vecteur v pour représenter la *vitesse* : + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt + vt+1 + +Ici, le paramètre γ indique dans quelle mesure nous prenons en compte l'inertie : γ=0 correspond à la SGD classique ; γ=1 est une équation de mouvement pure. + +### Adam, Adagrad, etc. + +Puisque dans chaque couche nous multiplions les signaux par une matrice Wi, selon ||Wi||, le gradient peut soit diminuer et être proche de 0, soit augmenter indéfiniment. C'est l'essence du problème des gradients explosifs/disparus. + +Une des solutions à ce problème est d'utiliser uniquement la direction du gradient dans l'équation, et d'ignorer la valeur absolue, c'est-à-dire : + +wt+1 = wt - η(∇ℒ/||∇ℒ||), où ||∇ℒ|| = √∑(∇ℒ)2 + +Cet algorithme s'appelle **Adagrad**. D'autres algorithmes qui utilisent la même idée : **RMSProp**, **Adam**. + +> **Adam** est considéré comme un algorithme très efficace pour de nombreuses applications, donc si vous n'êtes pas sûr du modèle à utiliser - utilisez Adam. + +### Découpage de gradient + +Le découpage de gradient est une extension de l'idée ci-dessus. Lorsque ||∇ℒ|| ≤ θ, nous considérons le gradient original dans l'optimisation des poids, et lorsque ||∇ℒ|| > θ - nous divisons le gradient par sa norme. Ici, θ est un paramètre, dans la plupart des cas, nous pouvons prendre θ=1 ou θ=10. + +### Décroissance du taux d'apprentissage + +Le succès de l'entraînement dépend souvent du paramètre de taux d'apprentissage η. Il est logique de supposer que des valeurs plus grandes de η entraînent un entraînement plus rapide, ce qui est quelque chose que nous voulons généralement au début de l'entraînement, et ensuite une valeur plus petite de η nous permet de peaufiner le réseau. Ainsi, dans la plupart des cas, nous voulons diminuer η au cours de l'entraînement. + +Cela peut être fait en multipliant η par un certain nombre (par exemple 0.98) après chaque époque d'entraînement, ou en utilisant un **planning de taux d'apprentissage** plus complexe. + +## Différentes architectures de réseau + +Sélectionner la bonne architecture de réseau pour votre problème peut être délicat. Normalement, nous choisirions une architecture qui a prouvé son efficacité pour notre tâche spécifique (ou une tâche similaire). Voici un [bon aperçu](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) des architectures de réseaux neuronaux pour la vision par ordinateur. + +> Il est important de sélectionner une architecture qui sera suffisamment puissante pour le nombre d'échantillons d'entraînement que nous avons. Choisir un modèle trop puissant peut entraîner un [surajustement](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +Une autre bonne méthode serait d'utiliser une architecture qui s'ajustera automatiquement à la complexité requise. Dans une certaine mesure, les architectures **ResNet** et **Inception** sont auto-ajustables. [Plus sur les architectures de vision par ordinateur](../07-ConvNets/CNN_Architectures.md). + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/fr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..71644b4b --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# Classification des animaux de compagnie d'Oxford en utilisant l'apprentissage par transfert + +Devoir du [Curriculum AI pour Débutants](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +Imaginez que vous devez développer une application pour une crèche pour animaux afin de cataloguer tous les animaux de compagnie. L'une des grandes fonctionnalités d'une telle application serait de découvrir automatiquement la race à partir d'une photographie. Dans ce devoir, nous utiliserons l'apprentissage par transfert pour classifier des images réelles d'animaux de compagnie à partir du jeu de données [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## Le Jeu de Données + +Nous utiliserons le jeu de données original [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), qui contient 35 races différentes de chiens et de chats. + +Pour télécharger le jeu de données, utilisez ce fragment de code : + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Démarrage du Notebook + +Commencez le laboratoire en ouvrant [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Conclusion + +L'apprentissage par transfert et les réseaux pré-entraînés nous permettent de résoudre des problèmes de classification d'images du monde réel relativement facilement. Cependant, les réseaux pré-entraînés fonctionnent bien sur des images de type similaire, et si nous commençons à classifier des images très différentes (par exemple, des images médicales), nous risquons d'obtenir des résultats beaucoup moins bons. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction professionnelle par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/fr/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..56ab05c5 --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# Autoencodeurs + +Lors de l'entraînement de CNN, l'un des problèmes est que nous avons besoin de beaucoup de données étiquetées. Dans le cas de la classification d'images, nous devons séparer les images en différentes classes, ce qui nécessite un effort manuel. + +## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Cependant, nous pourrions vouloir utiliser des données brutes (non étiquetées) pour entraîner des extracteurs de caractéristiques CNN, ce qui s'appelle **l'apprentissage auto-supervisé**. Au lieu d'étiquettes, nous utiliserons les images d'entraînement comme entrée et sortie du réseau. L'idée principale de l'**autoencodeur** est que nous aurons un **réseau encodeur** qui convertit l'image d'entrée en un **espace latent** (normalement, c'est juste un vecteur de taille plus petite), puis le **réseau décodeur**, dont le but serait de reconstruire l'image originale. + +> ✅ Un [autoencodeur](https://wikipedia.org/wiki/Autoencoder) est "un type de réseau de neurones artificiels utilisé pour apprendre des codages efficaces de données non étiquetées." + +Puisque nous entraînons un autoencodeur pour capturer autant d'informations que possible de l'image originale pour une reconstruction précise, le réseau essaie de trouver le meilleur **embedding** des images d'entrée pour capturer le sens. + +![Diagramme AutoEncodeur](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.fr.jpg) + +> Image provenant du [blog Keras](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Scénarios d'utilisation des Autoencodeurs + +Bien que reconstruire des images originales ne semble pas utile en soi, il existe quelques scénarios où les autoencodeurs sont particulièrement utiles : + +* **Réduction de la dimension des images pour la visualisation** ou **entraînement des embeddings d'images**. En général, les autoencodeurs donnent de meilleurs résultats que la PCA, car ils prennent en compte la nature spatiale des images et les caractéristiques hiérarchiques. +* **Dénuisage**, c'est-à-dire suppression du bruit de l'image. Comme le bruit contient beaucoup d'informations inutiles, l'autoencodeur ne peut pas tout intégrer dans un espace latent relativement petit, et il capture donc uniquement la partie importante de l'image. Lors de l'entraînement des débruiteurs, nous commençons avec des images originales et utilisons des images avec du bruit ajouté artificiellement comme entrée pour l'autoencodeur. +* **Super-résolution**, augmentation de la résolution de l'image. Nous commençons avec des images haute résolution et utilisons l'image de plus basse résolution comme entrée de l'autoencodeur. +* **Modèles génératifs**. Une fois que nous avons entraîné l'autoencodeur, la partie décodeur peut être utilisée pour créer de nouveaux objets à partir de vecteurs latents aléatoires. + +## Autoencodeurs Variationnels (VAE) + +Les autoencodeurs traditionnels réduisent d'une certaine manière la dimension des données d'entrée, en identifiant les caractéristiques importantes des images d'entrée. Cependant, les vecteurs latents n'ont souvent pas beaucoup de sens. En d'autres termes, en prenant le jeu de données MNIST comme exemple, il n'est pas facile de déterminer quels chiffres correspondent à différents vecteurs latents, car des vecteurs latents proches ne correspondent pas nécessairement aux mêmes chiffres. + +D'autre part, pour entraîner des modèles *génératifs*, il est préférable d'avoir une certaine compréhension de l'espace latent. Cette idée nous conduit à l'**autoencodeur variationnel** (VAE). + +Le VAE est l'autoencodeur qui apprend à prédire *la distribution statistique* des paramètres latents, appelée **distribution latente**. Par exemple, nous pouvons vouloir que les vecteurs latents soient distribués normalement avec une certaine moyenne zmean et un écart type zsigma (la moyenne et l'écart type sont tous deux des vecteurs d'une certaine dimensionnalité d). L'encodeur dans le VAE apprend à prédire ces paramètres, puis le décodeur prend un vecteur aléatoire de cette distribution pour reconstruire l'objet. + +Pour résumer : + +* À partir du vecteur d'entrée, nous prédisons `z_mean` et `z_log_sigma` (au lieu de prédire l'écart type lui-même, nous prédisons son logarithme) +* Nous échantillonnons un vecteur `sample` à partir de la distribution N(zmean,exp(zlog\_sigma)) +* Le décodeur essaie de décoder l'image originale en utilisant `sample` comme vecteur d'entrée + + + +> Image provenant de [cet article de blog](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) par Isaak Dykeman + +Les autoencodeurs variationnels utilisent une fonction de perte complexe qui se compose de deux parties : + +* **Perte de reconstruction** est la fonction de perte qui montre à quel point une image reconstruite est proche de la cible (cela peut être l'erreur quadratique moyenne, ou MSE). C'est la même fonction de perte que dans les autoencodeurs normaux. +* **Perte KL**, qui garantit que les distributions des variables latentes restent proches de la distribution normale. Elle est basée sur la notion de [divergence Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - une métrique pour estimer à quel point deux distributions statistiques sont similaires. + +Un avantage important des VAE est qu'ils nous permettent de générer de nouvelles images relativement facilement, car nous savons quelle distribution utiliser pour échantillonner les vecteurs latents. Par exemple, si nous entraînons un VAE avec un vecteur latent 2D sur MNIST, nous pouvons ensuite faire varier les composants du vecteur latent pour obtenir différents chiffres : + +vaemnist + +> Image par [Dmitry Soshnikov](http://soshnikov.com) + +Observez comment les images se fondent les unes dans les autres, alors que nous commençons à obtenir des vecteurs latents provenant de différentes portions de l'espace des paramètres latents. Nous pouvons également visualiser cet espace en 2D : + +vaemnist cluster + +> Image par [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Exercices : Autoencodeurs + +Apprenez-en davantage sur les autoencodeurs dans ces carnets correspondants : + +* [Autoencodeurs dans TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencodeurs dans PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Propriétés des Autoencodeurs + +* **Spécifique aux données** - ils ne fonctionnent bien qu'avec le type d'images sur lequel ils ont été entraînés. Par exemple, si nous entraînons un réseau de super-résolution sur des fleurs, il ne fonctionnera pas bien sur des portraits. Cela est dû au fait que le réseau peut produire une image de plus haute résolution en prenant des détails fins des caractéristiques apprises à partir du jeu de données d'entraînement. +* **Avec perte** - l'image reconstruite n'est pas la même que l'image originale. La nature de la perte est définie par la *fonction de perte* utilisée pendant l'entraînement. +* Fonctionne sur **des données non étiquetées**. + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Conclusion + +Dans cette leçon, vous avez appris les différents types d'autoencodeurs disponibles pour le scientifique de l'IA. Vous avez appris à les construire et à les utiliser pour reconstruire des images. Vous avez également appris sur le VAE et comment l'utiliser pour générer de nouvelles images. + +## 🚀 Défi + +Dans cette leçon, vous avez appris à utiliser des autoencodeurs pour des images. Mais ils peuvent également être utilisés pour la musique ! Découvrez le projet [MusicVAE](https://magenta.tensorflow.org/music-vae) du projet Magenta, qui utilise des autoencodeurs pour apprendre à reconstruire de la musique. Faites quelques [expériences](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) avec cette bibliothèque pour voir ce que vous pouvez créer. + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Revue & Auto-apprentissage + +Pour référence, lisez-en plus sur les autoencodeurs dans ces ressources : + +* [Construire des Autoencodeurs dans Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Article de blog sur NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Autoencodeurs Variationnels Expliqués](https://kvfrans.com/variational-autoencoders-explained/) +* [Autoencodeurs Variationnels Conditionnels](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Devoir + +À la fin de [ce carnet utilisant TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), vous trouverez une 'tâche' - utilisez ceci comme votre devoir. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/10-GANs/README.md b/translations/fr/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..64cbaf58 --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# Réseaux Antagonistes Génératifs + +Dans la section précédente, nous avons appris sur les **modèles génératifs** : des modèles capables de générer de nouvelles images similaires à celles du jeu de données d'entraînement. Le VAE était un bon exemple de modèle génératif. + +## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Cependant, si nous essayons de générer quelque chose de vraiment significatif, comme une peinture à une résolution raisonnable, avec un VAE, nous verrons que l'entraînement ne converge pas bien. Pour ce cas d'utilisation, nous devrions nous renseigner sur une autre architecture spécifiquement destinée aux modèles génératifs - **Réseaux Antagonistes Génératifs**, ou GANs. + +L'idée principale d'un GAN est d'avoir deux réseaux neuronaux qui seront entraînés l'un contre l'autre : + + + +> Image par [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Un petit vocabulaire : +> * **Générateur** est un réseau qui prend un vecteur aléatoire et produit l'image en résultat +> * **Discriminateur** est un réseau qui prend une image et doit dire si c'est une image réelle (du jeu de données d'entraînement) ou si elle a été générée par un générateur. C'est essentiellement un classificateur d'images. + +### Discriminateur + +L'architecture du discriminateur ne diffère pas d'un réseau de classification d'images ordinaire. Dans le cas le plus simple, il peut s'agir d'un classificateur entièrement connecté, mais très probablement, il s'agira d'un [réseau de convolution](../07-ConvNets/README.md). + +> ✅ Un GAN basé sur des réseaux de convolution est appelé un [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Un discriminateur CNN se compose des couches suivantes : plusieurs convolutions+poolings (avec une taille spatiale décroissante) et une ou plusieurs couches entièrement connectées pour obtenir un "vecteur de caractéristiques", le classificateur binaire final. + +> ✅ Un 'pooling' dans ce contexte est une technique qui réduit la taille de l'image. "Les couches de pooling réduisent les dimensions des données en combinant les sorties des clusters de neurones à une couche en un seul neurone à la couche suivante." - [source](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Générateur + +Un générateur est légèrement plus complexe. Vous pouvez le considérer comme un discriminateur inversé. Partant d'un vecteur latent (à la place d'un vecteur de caractéristiques), il a une couche entièrement connectée pour le convertir en la taille/forme requise, suivie de déconvolutions+upsampling. Cela ressemble à la partie *décodeur* de l'[autoencodeur](../09-Autoencoders/README.md). + +> ✅ Comme la couche de convolution est implémentée comme un filtre linéaire parcourant l'image, la déconvolution est essentiellement similaire à la convolution et peut être implémentée en utilisant la même logique de couche. + + + +> Image par [Dmitry Soshnikov](http://soshnikov.com) + +### Entraînement du GAN + +Les GANs sont appelés **antagonistes** car il y a une compétition constante entre le générateur et le discriminateur. Au cours de cette compétition, le générateur et le discriminateur s'améliorent, ainsi le réseau apprend à produire des images de meilleure qualité. + +L'entraînement se déroule en deux étapes : + +* **Entraînement du discriminateur**. Cette tâche est assez simple : nous générons un lot d'images par le générateur, les étiquetons 0, ce qui représente une image fausse, et prenons un lot d'images du jeu de données d'entrée (avec l'étiquette 1, image réelle). Nous obtenons une *perte du discriminateur*, et effectuons une rétropropagation. +* **Entraînement du générateur**. Cela est légèrement plus délicat, car nous ne connaissons pas directement la sortie attendue pour le générateur. Nous prenons l'ensemble du réseau GAN constitué d'un générateur suivi d'un discriminateur, le nourrissons avec des vecteurs aléatoires, et nous attendons que le résultat soit 1 (correspondant aux images réelles). Nous figeons ensuite les paramètres du discriminateur (nous ne voulons pas qu'il soit entraîné à cette étape), et effectuons la rétropropagation. + +Au cours de ce processus, les pertes du générateur et du discriminateur ne diminuent pas significativement. Dans une situation idéale, elles devraient osciller, correspondant à l'amélioration des performances des deux réseaux. + +## ✍️ Exercices : GANs + +* [Notebook GAN en TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Notebook GAN en PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problèmes avec l'entraînement des GAN + +Les GANs sont connus pour être particulièrement difficiles à entraîner. Voici quelques problèmes : + +* **Effondrement de mode**. Par ce terme, nous entendons que le générateur apprend à produire une image réussie qui trompe le discriminateur, et non une variété d'images différentes. +* **Sensibilité aux hyperparamètres**. Souvent, vous pouvez voir qu'un GAN ne converge pas du tout, puis soudainement diminue dans le taux d'apprentissage conduisant à la convergence. +* Maintenir un **équilibre** entre le générateur et le discriminateur. Dans de nombreux cas, la perte du discriminateur peut tomber à zéro relativement rapidement, ce qui empêche le générateur de s'entraîner davantage. Pour surmonter cela, nous pouvons essayer de définir différents taux d'apprentissage pour le générateur et le discriminateur, ou sauter l'entraînement du discriminateur si la perte est déjà trop basse. +* Entraînement pour une **haute résolution**. Réfléchissant au même problème qu'avec les autoencodeurs, ce problème est déclenché car reconstruire trop de couches de réseau de convolution conduit à des artefacts. Ce problème est généralement résolu par ce qu'on appelle la **croissance progressive**, lorsque d'abord quelques couches sont entraînées sur des images basse résolution, puis les couches sont "débloquées" ou ajoutées. Une autre solution consisterait à ajouter des connexions supplémentaires entre les couches et à entraîner plusieurs résolutions à la fois - voir cet article sur les [GANs à gradient multi-échelle](https://arxiv.org/abs/1903.06048) pour plus de détails. + +## Transfert de style + +Les GANs sont un excellent moyen de générer des images artistiques. Une autre technique intéressante est le **transfert de style**, qui prend une **image de contenu** et la redessine dans un style différent, appliquant des filtres de l'**image de style**. + +Le fonctionnement est le suivant : +* Nous commençons avec une image de bruit aléatoire (ou avec une image de contenu, mais pour mieux comprendre, il est plus facile de commencer par du bruit aléatoire) +* Notre objectif serait de créer une image qui serait proche à la fois de l'image de contenu et de l'image de style. Cela serait déterminé par deux fonctions de perte : + - La **perte de contenu** est calculée en fonction des caractéristiques extraites par le CNN à certaines couches de l'image actuelle et de l'image de contenu + - La **perte de style** est calculée entre l'image actuelle et l'image de style de manière astucieuse en utilisant des matrices de Gram (plus de détails dans le [notebook exemple](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)) +* Pour rendre l'image plus lisse et éliminer le bruit, nous introduisons également une **perte de variation**, qui calcule la distance moyenne entre les pixels voisins +* La boucle d'optimisation principale ajuste l'image actuelle en utilisant la descente de gradient (ou un autre algorithme d'optimisation) pour minimiser la perte totale, qui est une somme pondérée de toutes les trois pertes. + +## ✍️ Exemple : [Transfert de style](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Conclusion + +Dans cette leçon, vous avez appris sur les GANs et comment les entraîner. Vous avez également appris les défis particuliers que ce type de réseau de neurones peut rencontrer, ainsi que quelques stratégies pour les surmonter. + +## 🚀 Défi + +Parcourez le [notebook de transfert de style](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) en utilisant vos propres images. + +## Révision et auto-apprentissage + +Pour référence, lisez-en plus sur les GANs dans ces ressources : + +* Marco Pasini, [10 leçons que j'ai apprises en entraînant des GANs pendant 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), une architecture GAN à considérer +* [Créer de l'art génératif avec des GANs sur Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Assignment + +Revisitez l'un des deux notebooks associés à cette leçon et réentraînez le GAN sur vos propres images. Que pouvez-vous créer ? + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/fr/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..0f428e4f --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,174 @@ +# Détection d'Objets + +Les modèles de classification d'images que nous avons abordés jusqu'à présent prenaient une image et produisaient un résultat catégorique, tel que la classe 'nombre' dans un problème MNIST. Cependant, dans de nombreux cas, nous ne voulons pas seulement savoir qu'une image représente des objets - nous voulons pouvoir déterminer leur emplacement précis. C'est exactement le but de la **détection d'objets**. + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Détection d'Objets](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.fr.png) + +> Image provenant du [site web de YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Une Approche Naïve à la Détection d'Objets + +Supposons que nous voulions trouver un chat sur une image, une approche très naïve de la détection d'objets serait la suivante : + +1. Diviser l'image en un certain nombre de tuiles +2. Exécuter la classification d'images sur chaque tuile. +3. Les tuiles qui résultent en une activation suffisamment élevée peuvent être considérées comme contenant l'objet en question. + +![Détection Naïve d'Objets](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.fr.png) + +> *Image provenant du [Cahier d'Exercices](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Cependant, cette approche est loin d'être idéale, car elle ne permet à l'algorithme de localiser la boîte englobante de l'objet que de manière très imprécise. Pour une localisation plus précise, nous devons exécuter une sorte de **régression** pour prédire les coordonnées des boîtes englobantes - et pour cela, nous avons besoin de jeux de données spécifiques. + +## Régression pour la Détection d'Objets + +[Ce billet de blog](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) propose une excellente introduction douce à la détection de formes. + +## Jeux de Données pour la Détection d'Objets + +Vous pourriez rencontrer les jeux de données suivants pour cette tâche : + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 classes +* [COCO](http://cocodataset.org/#home) - Objets Communs dans le Contexte. 80 classes, boîtes englobantes et masques de segmentation + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.fr.jpg) + +## Métriques de Détection d'Objets + +### Intersection sur Union + +Alors que pour la classification d'images il est facile de mesurer la performance de l'algorithme, pour la détection d'objets, nous devons mesurer à la fois la justesse de la classe, ainsi que la précision de la localisation de la boîte englobante inférée. Pour cette dernière, nous utilisons ce qu'on appelle l'**Intersection sur Union** (IoU), qui mesure à quel point deux boîtes (ou deux zones arbitraires) se chevauchent. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.fr.png) + +> *Figure 2 provenant de [ce billet de blog excellent sur l'IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +L'idée est simple - nous divisons la zone d'intersection entre deux figures par la zone de leur union. Pour deux zones identiques, l'IoU serait de 1, tandis que pour des zones complètement disjointes, il sera de 0. Sinon, il variera de 0 à 1. Nous considérons généralement uniquement les boîtes englobantes pour lesquelles l'IoU dépasse une certaine valeur. + +### Précision Moyenne + +Supposons que nous voulions mesurer à quel point une classe d'objets donnée $C$ est reconnue. Pour le mesurer, nous utilisons les métriques de **Précision Moyenne**, qui se calculent comme suit : + +1. Considérer que la courbe Précision-Rappel montre l'exactitude en fonction d'une valeur de seuil de détection (de 0 à 1). +2. En fonction du seuil, nous obtiendrons plus ou moins d'objets détectés dans l'image, et différentes valeurs de précision et de rappel. +3. La courbe ressemblera à ceci : + +> *Image provenant du [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +La précision moyenne pour une classe donnée $C$ est la surface sous cette courbe. Plus précisément, l'axe du Rappel est généralement divisé en 10 parties, et la Précision est moyennée sur tous ces points : + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Précision}(\mbox{Rappel}={i\over10}) +$$ + +### AP et IoU + +Nous ne considérerons que les détections pour lesquelles l'IoU est au-dessus d'une certaine valeur. Par exemple, dans le jeu de données PASCAL VOC, on suppose généralement que le $\mbox{Seuil IoU} = 0.5$, tandis que dans COCO, l'AP est mesurée pour différentes valeurs de $\mbox{Seuil IoU}$. + +> *Image provenant du [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Précision Moyenne - mAP + +La principale métrique pour la Détection d'Objets est appelée **Précision Moyenne**, ou **mAP**. C'est la valeur de la Précision Moyenne, moyennée sur toutes les classes d'objets, et parfois aussi sur le $\mbox{Seuil IoU}$. En détail, le processus de calcul de la **mAP** est décrit +[dans ce billet de blog](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), et aussi [ici avec des exemples de code](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Différentes Approches de Détection d'Objets + +Il existe deux grandes classes d'algorithmes de détection d'objets : + +* **Réseaux de Proposition de Régions** (R-CNN, Fast R-CNN, Faster R-CNN). L'idée principale est de générer des **Régions d'Intérêt** (ROI) et d'exécuter un CNN sur celles-ci, à la recherche de l'activation maximale. C'est un peu similaire à l'approche naïve, à l'exception que les ROI sont générées de manière plus intelligente. Un des principaux inconvénients de ces méthodes est qu'elles sont lentes, car nous avons besoin de nombreux passages du classificateur CNN sur l'image. +* Méthodes **à un passage** (YOLO, SSD, RetinaNet). Dans ces architectures, nous concevons le réseau pour prédire à la fois les classes et les ROI en un seul passage. + +### R-CNN : CNN Basé sur les Régions + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) utilise [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) pour générer une structure hiérarchique des régions ROI, qui sont ensuite passées à travers des extracteurs de caractéristiques CNN et des classificateurs SVM pour déterminer la classe de l'objet, et une régression linéaire pour déterminer les coordonnées de la *boîte englobante*. [Article Officiel](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.fr.png) + +> *Image provenant de van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.fr.png) + +> *Images provenant de [ce blog](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +Cette approche est similaire à R-CNN, mais les régions sont définies après que les couches de convolution aient été appliquées. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.fr.png) + +> Image provenant de [l'Article Officiel](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 + +### Faster R-CNN + +L'idée principale de cette approche est d'utiliser un réseau de neurones pour prédire les ROI - le soi-disant *Réseau de Proposition de Régions*. [Article](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.fr.png) + +> Image provenant de [l'article officiel](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN : Réseau Convolutif Entièrement Basé sur les Régions + +Cet algorithme est encore plus rapide que Faster R-CNN. L'idée principale est la suivante : + +1. Nous extrayons des caractéristiques en utilisant ResNet-101 +1. Les caractéristiques sont traitées par une **Carte de Scores Sensible à la Position**. Chaque objet des $C$ classes est divisé en régions de $k\times k$, et nous formons pour prédire des parties d'objets. +1. Pour chaque partie des régions de $k\times k$, tous les réseaux votent pour les classes d'objets, et la classe d'objet avec le maximum de votes est sélectionnée. + +![image r-fcn](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.fr.png) + +> Image provenant de [l'article officiel](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO est un algorithme en temps réel à un passage. L'idée principale est la suivante : + + * L'image est divisée en régions de $S\times S$ + * Pour chaque région, le **CNN** prédit $n$ objets possibles, les coordonnées de la *boîte englobante* et la *confiance*=*probabilité* * IoU. + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.fr.png) +> Image provenant du [document officiel](https://arxiv.org/abs/1506.02640) + +### Autres Algorithmes + +* RetinaNet : [document officiel](https://arxiv.org/abs/1708.02002) + - [Implémentation PyTorch dans Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Implémentation Keras](https://github.com/fizyr/keras-retinanet) + - [Détection d'objets avec RetinaNet](https://keras.io/examples/vision/retinanet/) dans les échantillons Keras +* SSD (Single Shot Detector) : [document officiel](https://arxiv.org/abs/1512.02325) + +## ✍️ Exercices : Détection d'Objets + +Poursuivez votre apprentissage dans le notebook suivant : + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Conclusion + +Dans cette leçon, vous avez fait un tour d'horizon des différentes manières dont la détection d'objets peut être réalisée ! + +## 🚀 Défi + +Lisez ces articles et notebooks sur YOLO et essayez-les par vous-même + +* [Bon article de blog](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) décrivant YOLO + * [Site officiel](https://pjreddie.com/darknet/yolo/) + * Yolo : [implémentation Keras](https://github.com/experiencor/keras-yolo2), [notebook étape par étape](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2 : [implémentation Keras](https://github.com/experiencor/keras-yolo2), [notebook étape par étape](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Revue & Auto-apprentissage + +* [Détection d'objets](https://tjmachinelearning.com/lectures/1718/obj/) par Nikhil Sardana +* [Une bonne comparaison des algorithmes de détection d'objets](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Revue des algorithmes d'apprentissage profond pour la détection d'objets](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Une introduction étape par étape aux algorithmes de détection d'objets de base](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implémentation de Faster R-CNN en Python pour la détection d'objets](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Devoir : Détection d'Objets](lab/README.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction professionnelle effectuée par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/fr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..22105232 --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# Détection de têtes utilisant le jeu de données Hollywood Heads + +Devoir de [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +Compter le nombre de personnes sur le flux de caméra de surveillance vidéo est une tâche importante qui nous permettra d'estimer le nombre de visiteurs dans des magasins, les heures d'affluence dans un restaurant, etc. Pour résoudre cette tâche, nous devons être capables de détecter des têtes humaines sous différents angles. Pour entraîner un modèle de détection d'objets à détecter des têtes humaines, nous pouvons utiliser le [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/). + +## Le Jeu de Données + +Le [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contient 369 846 têtes humaines annotées dans 224 740 images de films hollywoodiens. Il est fourni au format [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), où pour chaque image, il y a également un fichier de description XML qui ressemble à ceci : + +```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 + + +``` + +Dans ce jeu de données, il n'y a qu'une seule classe d'objets `head`, et pour chaque tête, vous obtenez les coordonnées de la boîte englobante. Vous pouvez analyser le XML en utilisant des bibliothèques Python, ou utiliser [cette bibliothèque](https://pypi.org/project/pascal-voc/) pour traiter directement le format PASCAL VOC. + +## Entraînement de la Détection d'Objets + +Vous pouvez entraîner un modèle de détection d'objets en utilisant l'une des méthodes suivantes : + +* Utiliser [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) et son API Python pour entraîner le modèle de manière programmatique dans le cloud. La vision personnalisée ne pourra pas utiliser plus de quelques centaines d'images pour entraîner le modèle, vous devrez donc peut-être limiter le jeu de données. +* Utiliser l'exemple du [tutoriel Keras](https://keras.io/examples/vision/retinanet/) pour entraîner le modèle RetunaNet. +* Utiliser le module intégré [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) dans torchvision. + +## Conclusion + +La détection d'objets est une tâche fréquemment requise dans l'industrie. Bien qu'il existe des services qui peuvent être utilisés pour effectuer la détection d'objets (comme [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)), il est important de comprendre comment fonctionne la détection d'objets et d'être capable d'entraîner vos propres modèles. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisée basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction professionnelle par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/fr/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..3f6b6d0f --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# Segmentation + +Nous avons précédemment appris sur la détection d'objets, qui nous permet de localiser des objets dans l'image en prédisant leurs *boîtes englobantes*. Cependant, pour certaines tâches, nous avons besoin non seulement de boîtes englobantes, mais aussi d'une localisation d'objet plus précise. Cette tâche est appelée **segmentation**. + +## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +La segmentation peut être considérée comme une **classification de pixels**, où pour **chaque** pixel de l'image, nous devons prédire sa classe (*l'arrière-plan* étant l'une des classes). Il existe deux principaux algorithmes de segmentation : + +* **Segmentation sémantique** indique uniquement la classe du pixel, sans faire de distinction entre différents objets de la même classe. +* **Segmentation d'instance** divise les classes en différentes instances. + +Pour la segmentation d'instance, ces moutons sont des objets différents, mais pour la segmentation sémantique, tous les moutons sont représentés par une seule classe. + + + +> Image tirée de [cet article de blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Il existe différentes architectures neuronales pour la segmentation, mais elles ont toutes la même structure. D'une certaine manière, c'est similaire à l'autoencodeur dont vous avez appris précédemment, mais au lieu de déconstruire l'image originale, notre objectif est de déconstruire un **masque**. Ainsi, un réseau de segmentation se compose des parties suivantes : + +* **Encodeur** extrait des caractéristiques de l'image d'entrée +* **Décodeur** transforme ces caractéristiques en **image de masque**, avec la même taille et le même nombre de canaux correspondant au nombre de classes. + + + +> Image tirée de [cette publication](https://arxiv.org/pdf/2001.05566.pdf) + +Nous devons particulièrement mentionner la fonction de perte utilisée pour la segmentation. Lors de l'utilisation d'autoencodeurs classiques, nous devons mesurer la similarité entre deux images, et nous pouvons utiliser l'erreur quadratique moyenne (MSE) pour cela. En segmentation, chaque pixel dans l'image de masque cible représente le numéro de classe (encodé en one-hot le long de la troisième dimension), donc nous devons utiliser des fonctions de perte spécifiques à la classification - la perte d'entropie croisée, moyennée sur tous les pixels. Si le masque est binaire - **la perte d'entropie croisée binaire** (BCE) est utilisée. + +> ✅ L'encodage one-hot est une manière d'encoder une étiquette de classe en un vecteur de longueur égale au nombre de classes. Consultez [cet article](https://datagy.io/sklearn-one-hot-encode/) sur cette technique. + +## Segmentation pour l'imagerie médicale + +Dans cette leçon, nous allons voir la segmentation en action en entraînant le réseau à reconnaître les nævi humains (également connus sous le nom de grains de beauté) sur des images médicales. Nous utiliserons la base de données PH2 d'images de dermoscopie comme source d'images. Ce jeu de données contient 200 images de trois classes : nævus typique, nævus atypique et mélanome. Toutes les images contiennent également un **masque** correspondant qui délimite le nævus. + +> ✅ Cette technique est particulièrement adaptée à ce type d'imagerie médicale, mais quelles autres applications dans le monde réel pourriez-vous envisager ? + +navi + +> Image provenant de la base de données PH2 + +Nous allons entraîner un modèle pour segmenter n'importe quel nævus de son arrière-plan. + +## ✍️ Exercices : Segmentation Sémantique + +Ouvrez les notebooks ci-dessous pour en savoir plus sur les différentes architectures de segmentation sémantique, vous entraîner à travailler avec elles et les voir en action. + +* [Segmentation Sémantique Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Segmentation Sémantique TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Conclusion + +La segmentation est une technique très puissante pour la classification d'images, allant au-delà des boîtes englobantes pour une classification au niveau des pixels. C'est une technique utilisée dans l'imagerie médicale, entre autres applications. + +## 🚀 Défi + +La segmentation corporelle n'est qu'une des tâches courantes que nous pouvons réaliser avec des images de personnes. D'autres tâches importantes incluent la **détection de squelette** et la **détection de pose**. Essayez la bibliothèque [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) pour voir comment la détection de pose peut être utilisée. + +## Revue & Auto-apprentissage + +Cet [article de wikipedia](https://wikipedia.org/wiki/Image_segmentation) offre un bon aperçu des diverses applications de cette technique. Apprenez-en davantage par vous-même sur les sous-domaines de la segmentation d'instance et de la segmentation panoptique dans ce domaine d'étude. + +## [Devoir](lab/README.md) + +Dans ce laboratoire, essayez la **segmentation du corps humain** en utilisant le [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/fr/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..8902f5ab --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# Segmentation du Corps Humain + +Devoir de [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +Dans la production vidéo, par exemple dans les prévisions météorologiques, nous avons souvent besoin de découper une image humaine prise par la caméra et de la placer sur un autre plan. Cela se fait généralement à l'aide de techniques de **chroma key**, lorsque l'humain est filmé devant un fond de couleur uniforme, qui est ensuite retiré. Dans ce laboratoire, nous allons entraîner un modèle de réseau de neurones pour découper la silhouette humaine. + +## Le Jeu de Données + +Nous utiliserons le [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. Téléchargez le jeu de données manuellement depuis Kaggle. + +## Lancement du Notebook + +Commencez le laboratoire en ouvrant [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## À Retenir + +La segmentation du corps est l'une des tâches courantes que nous pouvons réaliser avec des images de personnes. D'autres tâches importantes incluent la **détection de squelette** et la **détection de pose**. Consultez la bibliothèque [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) pour voir comment ces tâches peuvent être mises en œuvre. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/4-ComputerVision/README.md b/translations/fr/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..c961fee2 --- /dev/null +++ b/translations/fr/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# Vision par Ordinateur + +![Résumé du contenu de la Vision par Ordinateur dans un doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.fr.png) + +Dans cette section, nous allons apprendre sur : + +* [Introduction à la Vision par Ordinateur et OpenCV](06-IntroCV/README.md) +* [Réseaux de Neurones Convolutifs](07-ConvNets/README.md) +* [Réseaux Pré-entraînés et Apprentissage par Transfert](08-TransferLearning/README.md) +* [Autoencodeurs](09-Autoencoders/README.md) +* [Réseaux Antagonistes Génératifs](10-GANs/README.md) +* [Détection d'Objets](11-ObjectDetection/README.md) +* [Segmentation Sémantique](12-Segmentation/README.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisée basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction professionnelle humaine est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/13-TextRep/README.md b/translations/fr/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..405bbb63 --- /dev/null +++ b/translations/fr/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# Représentation du Texte en Tenseurs + +## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Classification de Texte + +Tout au long de la première partie de cette section, nous allons nous concentrer sur la tâche de **classification de texte**. Nous utiliserons le jeu de données [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), qui contient des articles de presse comme les suivants : + +* Catégorie : Sci/Tech +* Titre : Une entreprise du Kentucky remporte une subvention pour étudier les peptides (AP) +* Corps : AP - Une entreprise fondée par un chercheur en chimie à l'Université de Louisville a remporté une subvention pour développer... + +Notre objectif sera de classer l'article d'actualité dans l'une des catégories en fonction du texte. + +## Représentation du texte + +Si nous voulons résoudre des tâches de traitement du langage naturel (NLP) avec des réseaux neuronaux, nous avons besoin d'un moyen de représenter le texte sous forme de tenseurs. Les ordinateurs représentent déjà les caractères textuels sous forme de nombres qui se mappent à des polices sur votre écran en utilisant des encodages tels que ASCII ou UTF-8. + +Image montrant un diagramme mappant un caractère à une représentation ASCII et binaire + +> [Source de l'image](https://www.seobility.net/en/wiki/ASCII) + +En tant qu'êtres humains, nous comprenons ce que chaque lettre **représente**, et comment tous les caractères se combinent pour former les mots d'une phrase. Cependant, les ordinateurs, à eux seuls, n'ont pas une telle compréhension, et le réseau neuronal doit apprendre la signification pendant l'entraînement. + +Par conséquent, nous pouvons utiliser différentes approches pour représenter le texte : + +* **Représentation au niveau des caractères**, lorsque nous représentons le texte en traitant chaque caractère comme un nombre. Étant donné que nous avons *C* caractères différents dans notre corpus de texte, le mot *Hello* serait représenté par un tenseur 5x*C*. Chaque lettre correspondrait à une colonne de tenseur en encodage one-hot. +* **Représentation au niveau des mots**, dans laquelle nous créons un **vocabulaire** de tous les mots de notre texte, puis représentons les mots en utilisant l'encodage one-hot. Cette approche est quelque peu meilleure, car chaque lettre prise isolément n'a pas beaucoup de sens, et donc en utilisant des concepts sémantiques de niveau supérieur - les mots - nous simplifions la tâche pour le réseau neuronal. Cependant, étant donné la taille importante du dictionnaire, nous devons gérer des tenseurs creux de haute dimension. + +Quelle que soit la représentation, nous devons d'abord convertir le texte en une séquence de **tokens**, chaque token étant soit un caractère, un mot, ou parfois même une partie d'un mot. Ensuite, nous convertissons le token en un nombre, généralement en utilisant un **vocabulaire**, et ce nombre peut être alimenté dans un réseau neuronal en utilisant l'encodage one-hot. + +## N-Grams + +Dans le langage naturel, le sens précis des mots ne peut être déterminé que dans un contexte. Par exemple, les significations de *réseau neuronal* et *réseau de pêche* sont complètement différentes. L'une des façons de prendre cela en compte est de construire notre modèle sur des paires de mots, en considérant les paires de mots comme des tokens de vocabulaire séparés. De cette manière, la phrase *J'aime aller pêcher* sera représentée par la séquence de tokens suivante : *J'aime*, *aime aller*, *aller pêcher*. Le problème avec cette approche est que la taille du dictionnaire augmente considérablement, et des combinaisons comme *aller pêcher* et *aller faire du shopping* sont présentées par des tokens différents, qui ne partagent aucune similarité sémantique malgré le même verbe. + +Dans certains cas, nous pouvons envisager d'utiliser des tri-grammes -- combinaisons de trois mots -- également. Ainsi, l'approche est souvent appelée **n-grams**. De plus, il est logique d'utiliser des n-grams avec une représentation au niveau des caractères, auquel cas les n-grams correspondront à différents syllabes. + +## Sac de Mots et TF/IDF + +Lors de la résolution de tâches telles que la classification de texte, nous devons être en mesure de représenter le texte par un vecteur de taille fixe, que nous utiliserons comme entrée pour le classificateur dense final. L'une des façons les plus simples de le faire est de combiner toutes les représentations de mots individuelles, par exemple en les additionnant. Si nous ajoutons les encodages one-hot de chaque mot, nous finirons par un vecteur de fréquences, montrant combien de fois chaque mot apparaît dans le texte. Cette représentation du texte est appelée **sac de mots** (BoW). + + + +> Image par l'auteur + +Un BoW représente essentiellement quels mots apparaissent dans le texte et en quelles quantités, ce qui peut effectivement être une bonne indication de ce dont parle le texte. Par exemple, un article de presse sur la politique contiendra probablement des mots tels que *président* et *pays*, tandis qu'une publication scientifique aurait des termes comme *collisionneur*, *découvert*, etc. Ainsi, les fréquences des mots peuvent dans de nombreux cas être un bon indicateur du contenu du texte. + +Le problème avec le BoW est que certains mots communs, tels que *et*, *est*, etc. apparaissent dans la plupart des textes, et ils ont les fréquences les plus élevées, masquant les mots qui sont vraiment importants. Nous pouvons réduire l'importance de ces mots en tenant compte de la fréquence à laquelle les mots apparaissent dans l'ensemble de la collection de documents. C'est l'idée principale derrière l'approche TF/IDF, qui est abordée plus en détail dans les notebooks joints à cette leçon. + +Cependant, aucune de ces approches ne peut pleinement prendre en compte la **sémantique** du texte. Nous avons besoin de modèles de réseaux neuronaux plus puissants pour cela, que nous discuterons plus tard dans cette section. + +## ✍️ Exercices : Représentation du Texte + +Poursuivez votre apprentissage dans les notebooks suivants : + +* [Représentation du Texte avec PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Représentation du Texte avec TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Conclusion + +Jusqu'à présent, nous avons étudié des techniques qui peuvent ajouter un poids de fréquence à différents mots. Cependant, elles ne peuvent pas représenter le sens ou l'ordre. Comme l'a dit le célèbre linguiste J. R. Firth en 1935, "Le sens complet d'un mot est toujours contextuel, et aucune étude du sens en dehors du contexte ne peut être prise au sérieux." Nous apprendrons plus tard dans le cours comment capturer les informations contextuelles à partir du texte en utilisant la modélisation du langage. + +## 🚀 Défi + +Essayez d'autres exercices en utilisant le sac de mots et différents modèles de données. Vous pourriez être inspiré par cette [compétition sur Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Revue & Auto-apprentissage + +Pratiquez vos compétences avec les embeddings de texte et les techniques de sac de mots sur [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + +## [Devoir : Notebooks](assignment.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/13-TextRep/assignment.md b/translations/fr/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..169d8224 --- /dev/null +++ b/translations/fr/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# Devoir : Notebooks + +En utilisant les notebooks associés à cette leçon (soit la version PyTorch, soit la version TensorFlow), relancez-les en utilisant votre propre jeu de données, peut-être un de Kaggle, utilisé avec attribution. Réécrivez le notebook pour mettre en avant vos propres découvertes. Essayez des jeux de données innovants qui pourraient être surprenants, comme [celui-ci sur les observations d'OVNIs](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) de NUFORC. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction professionnelle humaine est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/14-Embeddings/README.md b/translations/fr/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..98e59179 --- /dev/null +++ b/translations/fr/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# Intégrations + +## [Quiz avant le cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Lors de l'entraînement de classificateurs basés sur BoW ou TF/IDF, nous avons travaillé avec des vecteurs de sac de mots de haute dimension de longueur `vocab_size`, et nous convertissions explicitement des vecteurs de représentation positionnelle de faible dimension en une représentation one-hot éparse. Cependant, cette représentation one-hot n'est pas efficace en termes de mémoire. De plus, chaque mot est traité indépendamment des autres, c'est-à-dire que les vecteurs encodés en one-hot n'expriment aucune similarité sémantique entre les mots. + +L'idée de **l'intégration** est de représenter les mots par des vecteurs denses de dimension inférieure, qui reflètent d'une certaine manière le sens sémantique d'un mot. Nous discuterons plus tard de la façon de construire des intégrations de mots significatives, mais pour l'instant, considérons simplement les intégrations comme un moyen de réduire la dimensionnalité d'un vecteur de mots. + +Ainsi, la couche d'intégration prendrait un mot comme entrée et produirait un vecteur de sortie de dimension spécifiée `embedding_size`. En un sens, c'est très similaire à une couche `Linear`, mais au lieu de prendre un vecteur encodé en one-hot, elle pourra prendre un numéro de mot comme entrée, ce qui nous permet d'éviter de créer de grands vecteurs encodés en one-hot. + +En utilisant une couche d'intégration comme première couche dans notre réseau de classificateurs, nous pouvons passer d'un modèle de sac de mots à un modèle de **sac d'intégrations**, où nous convertissons d'abord chaque mot de notre texte en l'intégration correspondante, puis nous calculons une fonction agrégée sur toutes ces intégrations, telle que `sum`, `average` ou `max`. + +![Image montrant un classificateur d'intégration pour cinq mots en séquence.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.fr.png) + +> Image par l'auteur + +## ✍️ Exercices : Intégrations + +Continuez votre apprentissage dans les cahiers suivants : +* [Intégrations avec PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Intégrations TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Intégrations sémantiques : Word2Vec + +Bien que la couche d'intégration ait appris à mapper les mots à une représentation vectorielle, cette représentation n'avait pas nécessairement beaucoup de signification sémantique. Il serait souhaitable d'apprendre une représentation vectorielle telle que des mots similaires ou des synonymes correspondent à des vecteurs qui sont proches les uns des autres en termes de distance vectorielle (par exemple, distance euclidienne). + +Pour ce faire, nous devons pré-entraîner notre modèle d'intégration sur une grande collection de textes d'une manière spécifique. Une façon d'entraîner des intégrations sémantiques est appelée [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Elle est basée sur deux architectures principales utilisées pour produire une représentation distribuée des mots : + + - **Sac de mots continu** (CBoW) — dans cette architecture, nous entraînons le modèle à prédire un mot à partir du contexte environnant. Étant donné le ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, l'objectif du modèle est de prédire $W_0$ à partir de $(W_{-2},W_{-1},W_1,W_2)$. + - **Skip-gram continu** est l'opposé de CBoW. Le modèle utilise une fenêtre de mots contextuels environnants pour prédire le mot actuel. + +CBoW est plus rapide, tandis que skip-gram est plus lent, mais il fait un meilleur travail de représentation des mots peu fréquents. + +![Image montrant à la fois les algorithmes CBoW et Skip-Gram pour convertir des mots en vecteurs.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.fr.png) + +> Image tirée [de cet article](https://arxiv.org/pdf/1301.3781.pdf) + +Les intégrations pré-entraînées Word2Vec (ainsi que d'autres modèles similaires, comme GloVe) peuvent également être utilisées à la place de la couche d'intégration dans les réseaux de neurones. Cependant, nous devons traiter les vocabulaires, car le vocabulaire utilisé pour pré-entraîner Word2Vec/GloVe est susceptible de différer du vocabulaire de notre corpus de texte. Consultez les cahiers ci-dessus pour voir comment ce problème peut être résolu. + +## Intégrations contextuelles + +Une limitation clé des représentations d'intégration pré-entraînées traditionnelles telles que Word2Vec est le problème de la désambiguïsation du sens des mots. Bien que les intégrations pré-entraînées puissent capturer une partie du sens des mots dans un contexte, chaque signification possible d'un mot est encodée dans la même intégration. Cela peut poser des problèmes dans les modèles en aval, car de nombreux mots, comme le mot 'play', ont des significations différentes selon le contexte dans lequel ils sont utilisés. + +Par exemple, le mot 'play' dans ces deux phrases différentes a des significations assez différentes : + +- Je suis allé à une **pièce** au théâtre. +- John veut **jouer** avec ses amis. + +Les intégrations pré-entraînées ci-dessus représentent ces deux significations du mot 'play' dans la même intégration. Pour surmonter cette limitation, nous devons construire des intégrations basées sur le **modèle linguistique**, qui est entraîné sur un grand corpus de texte et *sait* comment les mots peuvent être assemblés dans différents contextes. La discussion sur les intégrations contextuelles est hors de portée de ce tutoriel, mais nous y reviendrons lorsque nous parlerons des modèles linguistiques plus tard dans le cours. + +## Conclusion + +Dans cette leçon, vous avez découvert comment construire et utiliser des couches d'intégration dans TensorFlow et Pytorch pour mieux refléter les significations sémantiques des mots. + +## 🚀 Défi + +Word2Vec a été utilisé pour des applications intéressantes, y compris la génération de paroles de chansons et de poésie. Jetez un œil à [cet article](https://www.politetype.com/blog/word2vec-color-poems) qui explique comment l'auteur a utilisé Word2Vec pour générer de la poésie. Regardez également [cette vidéo de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) pour découvrir une autre explication de cette technique. Ensuite, essayez d'appliquer ces techniques à votre propre corpus de texte, peut-être provenant de Kaggle. + +## [Quiz après le cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Revue & Auto-apprentissage + +Lisez cet article sur Word2Vec : [Estimation efficace des représentations de mots dans l'espace vectoriel](https://arxiv.org/pdf/1301.3781.pdf) + +## [Devoir : Cahiers](assignment.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/14-Embeddings/assignment.md b/translations/fr/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..c0fd411d --- /dev/null +++ b/translations/fr/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# Devoir : Carnets + +En utilisant les carnets associés à cette leçon (soit la version PyTorch, soit la version TensorFlow), exécutez-les à nouveau en utilisant votre propre ensemble de données, peut-être un de Kaggle, en l'utilisant avec attribution. Réécrivez le carnet pour mettre en avant vos propres découvertes. Essayez un type différent d'ensemble de données et documentez vos résultats, en utilisant des textes comme [ces paroles des Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'atteindre l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/15-LanguageModeling/README.md b/translations/fr/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..c80cf8f7 --- /dev/null +++ b/translations/fr/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# Modélisation du Langage + +Les embeddings sémantiques, tels que Word2Vec et GloVe, représentent en fait une première étape vers la **modélisation du langage** - créer des modèles qui comprennent (ou représentent) d'une certaine manière la nature du langage. + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +L'idée principale derrière la modélisation du langage est de les entraîner sur des ensembles de données non étiquetés de manière non supervisée. Cela est important car nous disposons de quantités énormes de texte non étiqueté, tandis que la quantité de texte étiqueté serait toujours limitée par l'effort que nous pouvons consacrer à l'étiquetage. Le plus souvent, nous pouvons construire des modèles de langage capables de **prédire les mots manquants** dans le texte, car il est facile de masquer un mot aléatoire dans le texte et de l'utiliser comme échantillon d'entraînement. + +## Entraînement des Embeddings + +Dans nos exemples précédents, nous avons utilisé des embeddings sémantiques pré-entraînés, mais il est intéressant de voir comment ces embeddings peuvent être entraînés. Plusieurs idées possibles peuvent être utilisées : + +* Modélisation du langage **N-Gram**, lorsque nous prédisons un jeton en regardant N jetons précédents (N-gram) +* **Continuous Bag-of-Words** (CBoW), lorsque nous prédisons le jeton du milieu $W_0$ dans une séquence de jetons $W_{-N}$, ..., $W_N$. +* **Skip-gram**, où nous prédisons un ensemble de jetons voisins {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} à partir du jeton du milieu $W_0$. + +![image provenant d'un article sur la conversion de mots en vecteurs](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.fr.png) + +> Image tirée [de cet article](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Notebooks d'Exemple : Entraînement du modèle CBoW + +Poursuivez votre apprentissage dans les notebooks suivants : + +* [Entraînement de CBoW Word2Vec avec TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Entraînement de CBoW Word2Vec avec PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Conclusion + +Dans la leçon précédente, nous avons vu que les embeddings de mots fonctionnent comme par magie ! Maintenant, nous savons que l'entraînement des embeddings de mots n'est pas une tâche très complexe, et nous devrions être en mesure d'entraîner nos propres embeddings de mots pour un texte spécifique à un domaine si nécessaire. + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Revue & Auto-apprentissage + +* [Tutoriel officiel PyTorch sur la Modélisation du Langage](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutoriel officiel TensorFlow sur l'entraînement du modèle Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* L'utilisation du cadre **gensim** pour entraîner les embeddings les plus couramment utilisés en quelques lignes de code est décrite [dans cette documentation](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Devoir : Entraîner un Modèle Skip-Gram](lab/README.md) + +Dans le laboratoire, nous vous mettons au défi de modifier le code de cette leçon pour entraîner un modèle skip-gram au lieu de CBoW. [Lisez les détails](lab/README.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue natale doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction professionnelle par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/fr/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..61cb515c --- /dev/null +++ b/translations/fr/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Modèle Skip-Gram pour l'Entraînement + +Devoir de [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +Dans ce laboratoire, nous vous mettons au défi d'entraîner un modèle Word2Vec en utilisant la technique Skip-Gram. Entraînez un réseau avec des embeddings pour prédire les mots voisins dans une fenêtre Skip-Gram de $N$-tokens de large. Vous pouvez utiliser [le code de cette leçon](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) et le modifier légèrement. + +## Le Jeu de Données + +Vous êtes libre d'utiliser n'importe quel livre. Vous pouvez trouver de nombreux textes gratuits sur [Project Gutenberg](https://www.gutenberg.org/), par exemple, voici un lien direct vers [Les Aventures d'Alice au Pays des Merveilles](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. Ou, vous pouvez utiliser les pièces de Shakespeare, que vous pouvez obtenir en utilisant le code suivant : + +```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') +``` + +## Explorez ! + +Si vous avez le temps et que vous souhaitez approfondir le sujet, essayez d'explorer plusieurs éléments : + +* Comment la taille de l'embedding affecte-t-elle les résultats ? +* Comment les différents styles de texte influencent-ils le résultat ? +* Prenez plusieurs types de mots très différents et leurs synonymes, obtenez leurs représentations vectorielles, appliquez l'ACP pour réduire les dimensions à 2 et tracez-les dans un espace 2D. Voyez-vous des motifs ? + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/16-RNN/README.md b/translations/fr/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..b4e83e1d --- /dev/null +++ b/translations/fr/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,87 @@ +# Réseaux de Neurones Récurrents + +## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +Dans les sections précédentes, nous avons utilisé des représentations sémantiques riches du texte et un simple classificateur linéaire au-dessus des embeddings. Ce que fait cette architecture, c'est capturer le sens agrégé des mots dans une phrase, mais elle ne prend pas en compte l'**ordre** des mots, car l'opération d'agrégation sur les embeddings a supprimé cette information du texte original. Étant donné que ces modèles ne peuvent pas modéliser l'ordre des mots, ils ne peuvent pas résoudre des tâches plus complexes ou ambiguës telles que la génération de texte ou la réponse à des questions. + +Pour capturer le sens d'une séquence de texte, nous devons utiliser une autre architecture de réseau de neurones, appelée **réseau de neurones récurrents**, ou RNN. Dans un RNN, nous faisons passer notre phrase à travers le réseau un symbole à la fois, et le réseau produit un **état**, que nous renvoyons ensuite au réseau avec le symbole suivant. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.fr.png) + +> Image par l'auteur + +Étant donné la séquence d'entrée de tokens X0,...,Xn, le RNN crée une séquence de blocs de réseaux de neurones et entraîne cette séquence de bout en bout en utilisant la rétropropagation. Chaque bloc de réseau prend une paire (Xi,Si) comme entrée et produit Si+1 en résultat. L'état final Sn ou (sortie Yn) passe dans un classificateur linéaire pour produire le résultat. Tous les blocs de réseau partagent les mêmes poids et sont entraînés de bout en bout en utilisant un passage de rétropropagation. + +Puisque les vecteurs d'état S0,...,Sn sont passés à travers le réseau, il est capable d'apprendre les dépendances séquentielles entre les mots. Par exemple, lorsque le mot *not* apparaît quelque part dans la séquence, il peut apprendre à nier certains éléments au sein du vecteur d'état, ce qui entraîne une négation. + +> ✅ Étant donné que les poids de tous les blocs RNN sur l'image ci-dessus sont partagés, la même image peut être représentée comme un seul bloc (à droite) avec une boucle de rétroaction récurrente, qui renvoie l'état de sortie du réseau à l'entrée. + +## Anatomie d'une cellule RNN + +Voyons comment une cellule RNN simple est organisée. Elle accepte l'état précédent Si-1 et le symbole actuel Xi comme entrées, et doit produire l'état de sortie Si (et, parfois, nous sommes également intéressés par une autre sortie Yi, comme dans le cas des réseaux génératifs). + +Une cellule RNN simple possède deux matrices de poids à l'intérieur : l'une transforme un symbole d'entrée (appelons-la W), et l'autre transforme un état d'entrée (H). Dans ce cas, la sortie du réseau est calculée comme σ(W×Xi+H×Si-1+b), où σ est la fonction d'activation et b est un biais supplémentaire. + +Anatomie de la cellule RNN + +> Image par l'auteur + +Dans de nombreux cas, les tokens d'entrée sont passés par la couche d'embedding avant d'entrer dans le RNN pour réduire la dimensionnalité. Dans ce cas, si la dimension des vecteurs d'entrée est *emb_size*, et que le vecteur d'état est *hid_size* - la taille de W est *emb_size*×*hid_size*, et la taille de H est *hid_size*×*hid_size*. + +## Mémoire à Long Terme et à Court Terme (LSTM) + +Un des principaux problèmes des RNN classiques est le problème des **gradients qui disparaissent**. Étant donné que les RNN sont entraînés de bout en bout en un seul passage de rétropropagation, il a des difficultés à propager l'erreur vers les premières couches du réseau, et donc le réseau ne peut pas apprendre les relations entre des tokens éloignés. Une des façons d'éviter ce problème est d'introduire une **gestion explicite de l'état** en utilisant ce que l'on appelle des **portes**. Il existe deux architectures bien connues de ce type : **Long Short Term Memory** (LSTM) et **Gated Relay Unit** (GRU). + +![Image montrant un exemple de cellule mémoire à long terme](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Source de l'image à déterminer + +Le réseau LSTM est organisé de manière similaire au RNN, mais il y a deux états qui sont passés de couche en couche : l'état actuel C, et le vecteur caché H. À chaque unité, le vecteur caché Hi est concaténé avec l'entrée Xi, et ils contrôlent ce qui arrive à l'état C via des **portes**. Chaque porte est un réseau de neurones avec une activation sigmoïde (sortie dans la plage [0,1]), qui peut être considéré comme un masque au niveau des bits lorsqu'il est multiplié par le vecteur d'état. Il y a les portes suivantes (de gauche à droite sur l'image ci-dessus) : + +* La **porte d'oubli** prend un vecteur caché et détermine quels composants du vecteur C nous devons oublier, et lesquels passer. +* La **porte d'entrée** prend certaines informations des vecteurs d'entrée et cachés et les insère dans l'état. +* La **porte de sortie** transforme l'état via une couche linéaire avec activation *tanh*, puis sélectionne certains de ses composants en utilisant un vecteur caché Hi pour produire un nouvel état Ci+1. + +Les composants de l'état C peuvent être considérés comme des indicateurs qui peuvent être activés ou désactivés. Par exemple, lorsque nous rencontrons un nom *Alice* dans la séquence, nous pouvons vouloir supposer qu'il fait référence à un personnage féminin et activer l'indicateur dans l'état que nous avons un nom féminin dans la phrase. Lorsque nous rencontrons ensuite des phrases comme *et Tom*, nous activerons l'indicateur que nous avons un nom pluriel. Ainsi, en manipulant l'état, nous pouvons supposément garder une trace des propriétés grammaticales des parties de la phrase. + +> ✅ Une excellente ressource pour comprendre les rouages des LSTM est cet excellent article [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) par Christopher Olah. + +## RNNs Bidirectionnels et Multicouches + +Nous avons discuté des réseaux récurrents qui fonctionnent dans une seule direction, du début d'une séquence à la fin. Cela semble naturel, car cela ressemble à la façon dont nous lisons et écoutons la parole. Cependant, puisque dans de nombreux cas pratiques nous avons un accès aléatoire à la séquence d'entrée, il peut être judicieux d'exécuter un calcul récurrent dans les deux directions. De tels réseaux sont appelés RNNs **bidirectionnels**. Lorsqu'on traite un réseau bidirectionnel, nous aurions besoin de deux vecteurs d'état cachés, un pour chaque direction. + +Un réseau récurrent, qu'il soit unidirectionnel ou bidirectionnel, capture certains motifs au sein d'une séquence et peut les stocker dans un vecteur d'état ou les passer en sortie. Comme avec les réseaux convolutifs, nous pouvons construire une autre couche récurrente au-dessus de la première pour capturer des motifs de niveau supérieur et construire à partir de motifs de bas niveau extraits par la première couche. Cela nous conduit à la notion de **RNN multicouche** qui se compose de deux réseaux récurrents ou plus, où la sortie de la couche précédente est passée à la couche suivante en tant qu'entrée. + +![Image montrant un RNN multicouche de mémoire à long terme](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.fr.jpg) + +*Image tirée [de cet excellent article](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) par Fernando López* + +## ✍️ Exercices : Embeddings + +Continuez votre apprentissage dans les notebooks suivants : + +* [RNNs avec PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs avec TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Conclusion + +Dans cette unité, nous avons vu que les RNNs peuvent être utilisés pour la classification de séquences, mais en fait, ils peuvent gérer de nombreuses autres tâches, telles que la génération de texte, la traduction automatique, et plus encore. Nous considérerons ces tâches dans la prochaine unité. + +## 🚀 Défi + +Lisez quelques documents sur les LSTMs et envisagez leurs applications : + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Révision & Auto-étude + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) par Christopher Olah. + +## [Devoir : Notebooks](assignment.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/16-RNN/assignment.md b/translations/fr/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..be095f9a --- /dev/null +++ b/translations/fr/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# Devoir : Notebooks + +En utilisant les notebooks associés à cette leçon (soit la version PyTorch, soit la version TensorFlow), exécutez-les à nouveau en utilisant votre propre jeu de données, peut-être un de Kaggle, utilisé avec attribution. Réécrivez le notebook pour mettre en évidence vos propres découvertes. Essayez un autre type de jeu de données et documentez vos résultats, en utilisant un texte tel que [ce jeu de données de compétition Kaggle sur les tweets météo](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisés basés sur l'IA. Bien que nous nous efforçons d'atteindre l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction professionnelle humaine est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/fr/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..7d27e3c6 --- /dev/null +++ b/translations/fr/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# Réseaux génératifs + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Les réseaux de neurones récurrents (RNN) et leurs variantes à cellules gatées telles que les cellules de mémoire à long terme et à court terme (LSTM) et les unités récurrentes gatées (GRU) ont fourni un mécanisme pour la modélisation du langage en ce sens qu'ils peuvent apprendre l'ordre des mots et fournir des prédictions pour le mot suivant dans une séquence. Cela nous permet d'utiliser les RNN pour des **tâches génératives**, telles que la génération de texte ordinaire, la traduction automatique et même la légende d'images. + +> ✅ Pensez à toutes les fois où vous avez bénéficié de tâches génératives telles que la complétion de texte pendant que vous tapez. Faites des recherches sur vos applications préférées pour voir si elles ont utilisé des RNN. + +Dans l'architecture RNN que nous avons discutée dans l'unité précédente, chaque unité RNN produisait le prochain état caché en sortie. Cependant, nous pouvons également ajouter une autre sortie à chaque unité récurrente, ce qui nous permettrait de produire une **séquence** (qui est de la même longueur que la séquence originale). De plus, nous pouvons utiliser des unités RNN qui n'acceptent pas une entrée à chaque étape, mais prennent simplement un vecteur d'état initial, puis produisent une séquence de sorties. + +Cela permet différentes architectures neuronales qui sont montrées dans l'image ci-dessous : + +![Image montrant des motifs courants de réseaux de neurones récurrents.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.fr.jpg) + +> Image provenant de l'article de blog [L'efficacité déraisonnable des réseaux de neurones récurrents](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) par [Andrej Karpaty](http://karpathy.github.io/) + +* **Un à un** est un réseau de neurones traditionnel avec une entrée et une sortie +* **Un à plusieurs** est une architecture générative qui accepte une valeur d'entrée et génère une séquence de valeurs de sortie. Par exemple, si nous voulons entraîner un réseau de **légende d'images** qui produirait une description textuelle d'une image, nous pouvons prendre une image comme entrée, la passer à travers un CNN pour obtenir son état caché, puis faire générer une chaîne récurrente des mots de la légende un par un +* **Plusieurs à un** correspond aux architectures RNN que nous avons décrites dans l'unité précédente, telles que la classification de texte +* **Plusieurs à plusieurs**, ou **séquence à séquence**, correspond à des tâches telles que **la traduction automatique**, où nous avons d'abord un RNN qui collecte toutes les informations de la séquence d'entrée dans l'état caché, et une autre chaîne RNN déroule cet état dans la séquence de sortie. + +Dans cette unité, nous nous concentrerons sur des modèles génératifs simples qui nous aident à générer du texte. Pour simplifier, nous utiliserons une tokenisation au niveau des caractères. + +Nous allons entraîner ce RNN pour générer du texte étape par étape. À chaque étape, nous prendrons une séquence de caractères de longueur `nchars` et demanderons au réseau de générer le prochain caractère de sortie pour chaque caractère d'entrée : + +![Image montrant un exemple de génération RNN du mot 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.fr.png) + +Lors de la génération de texte (durant l'inférence), nous commençons avec un **prompt**, qui est passé à travers les cellules RNN pour générer son état intermédiaire, puis à partir de cet état, la génération commence. Nous générons un caractère à la fois et passons l'état et le caractère généré à une autre cellule RNN pour générer le suivant, jusqu'à ce que nous générions suffisamment de caractères. + + + +> Image de l'auteur + +## ✍️ Exercices : Réseaux génératifs + +Poursuivez votre apprentissage dans les notebooks suivants : + +* [Réseaux génératifs avec PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Réseaux génératifs avec TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Génération de texte douce et température + +La sortie de chaque cellule RNN est une distribution de probabilité de caractères. Si nous prenons toujours le caractère avec la plus haute probabilité comme le prochain caractère dans le texte généré, le texte peut souvent devenir "cyclique" entre les mêmes séquences de caractères encore et encore, comme dans cet exemple : + +``` +today of the second the company and a second the company ... +``` + +Cependant, si nous regardons la distribution de probabilité pour le prochain caractère, il se pourrait que la différence entre quelques probabilités les plus élevées ne soit pas énorme, par exemple, un caractère peut avoir une probabilité de 0,2, un autre - 0,19, etc. Par exemple, en cherchant le prochain caractère dans la séquence '*play*', le prochain caractère peut tout aussi bien être un espace ou **e** (comme dans le mot *player*). + +Cela nous amène à la conclusion qu'il n'est pas toujours "juste" de sélectionner le caractère avec une probabilité plus élevée, car choisir le deuxième plus élevé pourrait toujours nous mener à un texte significatif. Il est plus judicieux de **prélever** des caractères à partir de la distribution de probabilité donnée par la sortie du réseau. Nous pouvons également utiliser un paramètre, **température**, qui va aplatir la distribution de probabilité, dans le cas où nous voulons ajouter plus de randomité, ou la rendre plus abrupte, si nous voulons nous en tenir davantage aux caractères de plus haute probabilité. + +Explorez comment cette génération de texte douce est mise en œuvre dans les notebooks liés ci-dessus. + +## Conclusion + +Bien que la génération de texte puisse être utile en soi, les principaux avantages proviennent de la capacité à générer du texte en utilisant des RNN à partir d'un certain vecteur de caractéristiques initial. Par exemple, la génération de texte est utilisée dans le cadre de la traduction automatique (séquence à séquence, dans ce cas le vecteur d'état de l'*encodeur* est utilisé pour générer ou *décoder* le message traduit), ou pour générer une description textuelle d'une image (dans ce cas, le vecteur de caractéristiques proviendrait d'un extracteur CNN). + +## 🚀 Défi + +Suivez quelques leçons sur Microsoft Learn sur ce sujet + +* Génération de texte avec [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) + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Revue & Auto-apprentissage + +Voici quelques articles pour approfondir vos connaissances + +* Différentes approches de génération de texte avec Markov Chain, LSTM et GPT-2 : [article de blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Exemple de génération de texte dans [la documentation Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Devoir](lab/README.md) + +Nous avons vu comment générer du texte caractère par caractère. Dans le laboratoire, vous explorerez la génération de texte au niveau des mots. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue natale doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/fr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..cbc069f4 --- /dev/null +++ b/translations/fr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# Génération de texte au niveau des mots avec des RNN + +Devoir de [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +Dans ce laboratoire, vous devez choisir un livre et l'utiliser comme ensemble de données pour entraîner un générateur de texte au niveau des mots. + +## L'ensemble de données + +Vous êtes libre d'utiliser n'importe quel livre. Vous pouvez trouver de nombreux textes gratuits sur [Project Gutenberg](https://www.gutenberg.org/), par exemple, voici un lien direct vers [Les aventures d'Alice au pays des merveilles](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/fr/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..1af03bc0 --- /dev/null +++ b/translations/fr/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# Mécanismes d'Attention et Transformateurs + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +L'un des problèmes les plus importants dans le domaine du NLP est la **traduction automatique**, une tâche essentielle qui sous-tend des outils tels que Google Translate. Dans cette section, nous allons nous concentrer sur la traduction automatique, ou, plus généralement, sur toute tâche de *séquence à séquence* (qui est également appelée **transduction de phrases**). + +Avec les RNN, la séquence à séquence est mise en œuvre par deux réseaux récurrents, où un réseau, l'**encodeur**, réduit une séquence d'entrée à un état caché, tandis qu'un autre réseau, le **décodeur**, déroule cet état caché en un résultat traduit. Il y a quelques problèmes avec cette approche : + +* L'état final du réseau encodeur a du mal à se souvenir du début d'une phrase, ce qui entraîne une mauvaise qualité du modèle pour les longues phrases. +* Tous les mots d'une séquence ont le même impact sur le résultat. En réalité, cependant, certains mots spécifiques de la séquence d'entrée ont souvent plus d'impact sur les sorties séquentielles que d'autres. + +Les **Mécanismes d'Attention** fournissent un moyen de pondérer l'impact contextuel de chaque vecteur d'entrée sur chaque prédiction de sortie du RNN. La manière dont cela est mis en œuvre consiste à créer des raccourcis entre les états intermédiaires du RNN d'entrée et le RNN de sortie. De cette manière, lors de la génération du symbole de sortie yt, nous prendrons en compte tous les états cachés d'entrée hi, avec des coefficients de poids différents αt,i. + +![Image montrant un modèle encodeur/décodeur avec une couche d'attention additive](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.fr.png) + +> Le modèle encodeur-décodeur avec mécanisme d'attention additive dans [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), cité dans [cet article de blog](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +La matrice d'attention {αi,j} représenterait le degré auquel certains mots d'entrée jouent dans la génération d'un mot donné dans la séquence de sortie. Voici un exemple d'une telle matrice : + +![Image montrant un alignement d'exemple trouvé par RNNsearch-50, tiré de Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.fr.png) + +> Figure de [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Les mécanismes d'attention sont responsables de beaucoup de l'état actuel ou presque actuel de l'art dans le NLP. Cependant, l'ajout d'attention augmente considérablement le nombre de paramètres du modèle, ce qui a conduit à des problèmes d'échelle avec les RNN. Une contrainte clé de l'échelle des RNN est que la nature récurrente des modèles rend difficile le traitement par lots et la parallélisation de l'entraînement. Dans un RNN, chaque élément d'une séquence doit être traité dans l'ordre séquentiel, ce qui signifie qu'il ne peut pas être facilement parallélisé. + +![Encodeur Décodeur avec Attention](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figure de [Blog de Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +L'adoption des mécanismes d'attention combinée à cette contrainte a conduit à la création des modèles de transformateurs qui sont maintenant à la pointe de la technologie que nous connaissons et utilisons aujourd'hui, tels que BERT et Open-GPT3. + +## Modèles de Transformateurs + +L'une des principales idées derrière les transformateurs est d'éviter la nature séquentielle des RNN et de créer un modèle qui est parallélisable pendant l'entraînement. Cela est réalisé en mettant en œuvre deux idées : + +* codage positionnel +* utilisation du mécanisme d'auto-attention pour capturer des motifs au lieu des RNN (ou CNN) (c'est pourquoi l'article qui introduit les transformateurs s'appelle *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Codage/Emballage Positionnel + +L'idée du codage positionnel est la suivante. +1. Lors de l'utilisation des RNN, la position relative des jetons est représentée par le nombre d'étapes, et n'a donc pas besoin d'être représentée explicitement. +2. Cependant, une fois que nous passons à l'attention, nous devons connaître les positions relatives des jetons dans une séquence. +3. Pour obtenir le codage positionnel, nous augmentons notre séquence de jetons avec une séquence de positions de jetons dans la séquence (c'est-à-dire, une séquence de nombres 0,1, ...). +4. Nous mélangeons ensuite la position du jeton avec un vecteur d'embedding de jeton. Pour transformer la position (entier) en un vecteur, nous pouvons utiliser différentes approches : + +* Embedding entraînable, similaire à l'embedding de jeton. C'est l'approche que nous considérons ici. Nous appliquons des couches d'embedding sur les jetons et leurs positions, ce qui donne des vecteurs d'embedding de mêmes dimensions, que nous additionnons ensuite. +* Fonction de codage de position fixe, comme proposé dans l'article original. + + + +> Image de l'auteur + +Le résultat que nous obtenons avec l'embedding positionnel intègre à la fois le jeton original et sa position dans une séquence. + +### Auto-Attention Multi-Tête + +Ensuite, nous devons capturer certains motifs au sein de notre séquence. Pour ce faire, les transformateurs utilisent un mécanisme d'**auto-attention**, qui est essentiellement une attention appliquée à la même séquence en tant qu'entrée et sortie. L'application de l'auto-attention nous permet de prendre en compte le **contexte** au sein de la phrase, et de voir quels mots sont inter-reliés. Par exemple, cela nous permet de voir quels mots sont référencés par des coréférences, telles que *il*, et également de prendre en compte le contexte : + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.fr.png) + +> Image du [Blog de Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +Dans les transformateurs, nous utilisons l'**Attention Multi-Tête** afin de donner au réseau la capacité de capturer plusieurs types de dépendances différentes, par exemple les relations entre mots à long terme par rapport à celles à court terme, les co-références par rapport à autre chose, etc. + +[Notebook TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) contient plus de détails sur l'implémentation des couches de transformateurs. + +### Attention Encodeur-Décodeur + +Dans les transformateurs, l'attention est utilisée à deux endroits : + +* Pour capturer des motifs au sein du texte d'entrée en utilisant l'auto-attention +* Pour effectuer la traduction de séquence - c'est la couche d'attention entre l'encodeur et le décodeur. + +L'attention encodeur-décodeur est très similaire au mécanisme d'attention utilisé dans les RNN, comme décrit au début de cette section. Ce diagramme animé explique le rôle de l'attention encodeur-décodeur. + +![GIF animé montrant comment les évaluations sont effectuées dans les modèles de transformateurs.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Puisque chaque position d'entrée est mappée indépendamment à chaque position de sortie, les transformateurs peuvent mieux se paralléliser que les RNN, ce qui permet des modèles de langage beaucoup plus grands et plus expressifs. Chaque tête d'attention peut être utilisée pour apprendre différentes relations entre les mots, ce qui améliore les tâches de traitement du langage naturel en aval. + +## BERT + +**BERT** (Représentations Encodeur Bidirectionnelles à partir de Transformateurs) est un très grand réseau de transformateurs multicouches avec 12 couches pour *BERT-base*, et 24 pour *BERT-large*. Le modèle est d'abord pré-entraîné sur un grand corpus de données textuelles (WikiPedia + livres) en utilisant un entraînement non supervisé (prédiction de mots masqués dans une phrase). Pendant le pré-entraînement, le modèle absorbe des niveaux significatifs de compréhension linguistique qui peuvent ensuite être exploités avec d'autres ensembles de données en utilisant un ajustement fin. Ce processus est appelé **apprentissage par transfert**. + +![image de http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.fr.png) + +> Image [source](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Exercices : Transformateurs + +Poursuivez votre apprentissage dans les notebooks suivants : + +* [Transformateurs en PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformateurs en TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Conclusion + +Dans cette leçon, vous avez appris sur les Transformateurs et les Mécanismes d'Attention, tous des outils essentiels dans la boîte à outils du NLP. Il existe de nombreuses variations d'architectures de Transformateurs, y compris BERT, DistilBERT, BigBird, OpenGPT3 et plus encore, qui peuvent être ajustées. Le [package HuggingFace](https://github.com/huggingface/) fournit un dépôt pour entraîner bon nombre de ces architectures avec PyTorch et TensorFlow. + +## 🚀 Défi + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Revue & Auto-étude + +* [Article de blog](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), expliquant l'article classique [Attention is all you need](https://arxiv.org/abs/1706.03762) sur les transformateurs. +* [Une série d'articles de blog](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) sur les transformateurs, expliquant l'architecture en détail. + +## [Devoir](assignment.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction professionnelle par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/18-Transformers/assignment.md b/translations/fr/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..a3e22561 --- /dev/null +++ b/translations/fr/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# Devoir : Transformers + +Expérimentez avec les Transformers sur HuggingFace ! Essayez certains des scripts qu'ils fournissent pour travailler avec les différents modèles disponibles sur leur site : https://huggingface.co/docs/transformers/run_scripts. Testez l'un de leurs ensembles de données, puis importez l'un des vôtres provenant de ce programme ou de Kaggle et voyez si vous pouvez générer des textes intéressants. Produisez un carnet de notes avec vos découvertes. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisés basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/19-NER/README.md b/translations/fr/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..ea011b4c --- /dev/null +++ b/translations/fr/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,85 @@ +# Reconnaissance d'entités nommées + +Jusqu'à présent, nous nous sommes principalement concentrés sur une tâche de traitement du langage naturel (NLP) - la classification. Cependant, il existe également d'autres tâches NLP qui peuvent être réalisées avec des réseaux neuronaux. L'une de ces tâches est la **[Reconnaissance d'entités nommées](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), qui consiste à reconnaître des entités spécifiques dans un texte, telles que des lieux, des noms de personnes, des intervalles de date-heure, des formules chimiques, etc. + +## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Exemple d'utilisation de NER + +Supposons que vous souhaitiez développer un chatbot en langage naturel, similaire à Amazon Alexa ou Google Assistant. Le fonctionnement des chatbots intelligents consiste à *comprendre* ce que l'utilisateur veut en effectuant une classification de texte sur la phrase d'entrée. Le résultat de cette classification est ce que l'on appelle **l'intention**, qui détermine ce que le chatbot doit faire. + +Bot NER + +> Image par l'auteur + +Cependant, un utilisateur peut fournir certains paramètres dans le cadre de la phrase. Par exemple, lorsqu'elle demande la météo, elle peut spécifier un lieu ou une date. Un bot doit être capable de comprendre ces entités et de remplir les espaces de paramètres en conséquence avant d'effectuer l'action. C'est exactement là que NER entre en jeu. + +> ✅ Un autre exemple serait [l'analyse de papiers médicaux scientifiques](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). L'une des principales choses à rechercher sont des termes médicaux spécifiques, tels que des maladies et des substances médicales. Bien qu'un petit nombre de maladies puisse probablement être extrait par une recherche de sous-chaînes, des entités plus complexes, telles que des composés chimiques et des noms de médicaments, nécessitent une approche plus complexe. + +## NER comme classification de tokens + +Les modèles NER sont essentiellement des **modèles de classification de tokens**, car pour chacun des tokens d'entrée, nous devons décider s'il appartient à une entité ou non, et si c'est le cas - à quelle classe d'entité. + +Considérons le titre de papier suivant : + +**Régurgitation de la valve tricuspide** et **toxicité du carbonate de lithium** chez un nouveau-né. + +Les entités ici sont : + +* La régurgitation de la valve tricuspide est une maladie (`DIS`) +* Le carbonate de lithium est une substance chimique (`CHEM`) +* La toxicité est également une maladie (`DIS`) + +Remarquez qu'une entité peut s'étendre sur plusieurs tokens. Et, comme dans ce cas, nous devons faire la distinction entre deux entités consécutives. Ainsi, il est courant d'utiliser deux classes pour chaque entité - une spécifiant le premier token de l'entité (souvent le préfixe `B-` est utilisé, pour **b**eginning), et une autre - la continuation d'une entité (`I-`, pour **i**nner token). Nous utilisons également `O` comme classe pour représenter tous les **o**tres tokens. Ce marquage de tokens est appelé [marquage BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (ou IOB). Une fois étiqueté, notre titre ressemblera à ceci : + +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 + +Puisque nous devons établir une correspondance un à un entre les tokens et les classes, nous pouvons entraîner un modèle de réseau neuronal **many-to-many** à partir de cette image : + +![Image montrant des motifs communs de réseaux neuronaux récurrents.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.fr.jpg) + +> *Image tirée [de cet article de blog](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) par [Andrej Karpathy](http://karpathy.github.io/). Les modèles de classification de tokens NER correspondent à l'architecture de réseau la plus à droite sur cette image.* + +## Entraînement des modèles NER + +Étant donné qu'un modèle NER est essentiellement un modèle de classification de tokens, nous pouvons utiliser des RNN que nous connaissons déjà pour cette tâche. Dans ce cas, chaque bloc de réseau récurrent renverra l'ID du token. L'exemple de notebook suivant montre comment entraîner un LSTM pour la classification de tokens. + +## ✍️ Notebooks d'exemple : NER + +Poursuivez votre apprentissage dans le notebook suivant : + +* [NER avec TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Conclusion + +Un modèle NER est un **modèle de classification de tokens**, ce qui signifie qu'il peut être utilisé pour effectuer une classification de tokens. C'est une tâche très courante en NLP, aidant à reconnaître des entités spécifiques dans le texte, y compris des lieux, des noms, des dates, et plus encore. + +## 🚀 Défi + +Complétez la tâche liée ci-dessous pour entraîner un modèle de reconnaissance d'entités nommées pour des termes médicaux, puis essayez-le sur un ensemble de données différent. + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Revue et auto-apprentissage + +Lisez le blog [L'efficacité déraisonnable des réseaux neuronaux récurrents](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) et suivez la section Lecture complémentaire dans cet article pour approfondir vos connaissances. + +## [Devoir](lab/README.md) + +Dans le devoir pour cette leçon, vous devrez entraîner un modèle de reconnaissance d'entités médicales. Vous pouvez commencer par entraîner un modèle LSTM comme décrit dans cette leçon, puis passer à l'utilisation du modèle de transformateur BERT. Lisez [les instructions](lab/README.md) pour obtenir tous les détails. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/19-NER/lab/README.md b/translations/fr/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..307d32f3 --- /dev/null +++ b/translations/fr/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +Devoir de laboratoire du [Curriculum AI pour Débutants](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +Dans ce laboratoire, vous devez entraîner un modèle de reconnaissance d'entités nommées pour des termes médicaux. + +## Le Jeu de Données + +Pour entraîner le modèle NER, nous avons besoin d'un jeu de données correctement étiqueté avec des entités médicales. Le [jeu de données BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contient des entités de maladies et de produits chimiques étiquetées provenant de plus de 1500 articles. Vous pouvez télécharger le jeu de données après vous être inscrit sur leur site web. + +Le jeu de données BC5CDR ressemble à ceci : + +``` +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 +... +``` + +Dans ce jeu de données, il y a le titre de l'article et le résumé dans les deux premières lignes, puis il y a des entités individuelles, avec des positions de début et de fin dans le bloc titre+résumé. En plus du type d'entité, vous obtenez l'ID d'ontologie de cette entité dans une certaine ontologie médicale. + +Vous devrez écrire un peu de code Python pour convertir cela en encodage BIO. + +## Le Réseau + +La première tentative de NER peut être réalisée en utilisant un réseau LSTM, comme dans notre exemple que vous avez vu pendant la leçon. Cependant, dans les tâches de NLP, l'[architecture de transformateur](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), et spécifiquement les [modèles de langage BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), montrent de bien meilleurs résultats. Les modèles BERT pré-entraînés comprennent la structure générale d'une langue et peuvent être affinés pour des tâches spécifiques avec des jeux de données relativement petits et des coûts computationnels réduits. + +Étant donné que nous prévoyons d'appliquer NER à un scénario médical, il est logique d'utiliser un modèle BERT entraîné sur des textes médicaux. Microsoft Research a publié un modèle pré-entraîné appelé [PubMedBERT][PubMedBERT] ([publication][PubMedBERT-Pub]), qui a été affiné en utilisant des textes du dépôt [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +Le standard *de facto* pour l'entraînement des modèles de transformateurs est la bibliothèque [Hugging Face Transformers](https://huggingface.co/). Elle contient également un dépôt de modèles pré-entraînés maintenus par la communauté, y compris PubMedBERT. Pour charger et utiliser ce modèle, nous avons juste besoin de quelques lignes de code : + +```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) +``` + +Cela nous donne l'objet `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` qui peut diviser le texte d'entrée en tokens. Vous devrez convertir le jeu de données au format BIO, en tenant compte de la tokenisation de PubMedBERT. Vous pouvez utiliser [ce morceau de code Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) comme source d'inspiration. + +## Conclusion + +Cette tâche est très proche de la tâche réelle que vous serez probablement amené à réaliser si vous souhaitez obtenir plus d'informations sur de grands volumes de textes en langage naturel. Dans notre cas, nous pouvons appliquer notre modèle entraîné au [jeu de données d'articles liés au COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) et voir quelles informations nous pourrons obtenir. [Cet article de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) et [ce papier](https://www.mdpi.com/2504-2289/6/1/4) décrivent les recherches qui peuvent être menées sur ce corpus d'articles en utilisant NER. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue natale doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/fr/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..883b2c85 --- /dev/null +++ b/translations/fr/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,56 @@ +# Modèles de Langage de Grande Taille Pré-entrainés + +Dans toutes nos tâches précédentes, nous avons entraîné un réseau de neurones pour effectuer une tâche spécifique en utilisant un ensemble de données étiquetées. Avec de grands modèles de transformateurs, tels que BERT, nous utilisons la modélisation du langage de manière auto-supervisée pour construire un modèle de langage, qui est ensuite spécialisé pour une tâche spécifique en aval grâce à un entraînement supplémentaire spécifique au domaine. Cependant, il a été démontré que de grands modèles de langage peuvent également résoudre de nombreuses tâches sans AUCUN entraînement spécifique au domaine. Une famille de modèles capables de le faire est appelée **GPT** : Transformateur Génératif Pré-entrainé. + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Génération de Texte et Perplexité + +L'idée qu'un réseau de neurones puisse accomplir des tâches générales sans entraînement en aval est présentée dans l'article [Les Modèles de Langage sont des Apprenants Multitâches Non Supervisés](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). L'idée principale est que de nombreuses autres tâches peuvent être modélisées en utilisant **la génération de texte**, car comprendre le texte signifie essentiellement être capable de le produire. Comme le modèle est entraîné sur une énorme quantité de texte qui englobe les connaissances humaines, il devient également informé sur une grande variété de sujets. + +> Comprendre et être capable de produire du texte implique également de connaître quelque chose sur le monde qui nous entoure. Les gens apprennent également beaucoup en lisant, et le réseau GPT est similaire à cet égard. + +Les réseaux de génération de texte fonctionnent en prédisant la probabilité du mot suivant $$P(w_N)$$. Cependant, la probabilité inconditionnelle du mot suivant est égale à la fréquence de ce mot dans le corpus de texte. GPT est capable de nous donner la **probabilité conditionnelle** du mot suivant, étant donné les précédents : $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Vous pouvez en savoir plus sur les probabilités dans notre [Curriculum de Science des Données pour Débutants](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) + +La qualité d'un modèle de génération de langage peut être définie à l'aide de la **perplexité**. C'est une métrique intrinsèque qui nous permet de mesurer la qualité du modèle sans aucun ensemble de données spécifique à une tâche. Elle repose sur la notion de *probabilité d'une phrase* - le modèle attribue une forte probabilité à une phrase qui est susceptible d'être réelle (c'est-à-dire que le modèle n'est pas **perplexe** par rapport à elle), et une faible probabilité aux phrases qui ont moins de sens (par exemple, *Peut-il faire quoi ?*). Lorsque nous donnons à notre modèle des phrases provenant d'un corpus de texte réel, nous nous attendons à ce qu'elles aient une forte probabilité et une faible **perplexité**. Mathématiquement, elle est définie comme la probabilité inverse normalisée de l'ensemble de test : +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Vous pouvez expérimenter avec la génération de texte en utilisant [l'éditeur de texte alimenté par GPT de Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. Dans cet éditeur, vous commencez à écrire votre texte, et en appuyant sur **[TAB]**, plusieurs options de complétion vous seront proposées. Si elles sont trop courtes, ou si vous n'êtes pas satisfait, appuyez à nouveau sur [TAB], et vous aurez plus d'options, y compris des morceaux de texte plus longs. + +## GPT est une Famille + +GPT n'est pas un modèle unique, mais plutôt une collection de modèles développés et entraînés par [OpenAI](https://openai.com). + +Sous les modèles GPT, nous avons : + +| [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) | +| -- | -- | -- | +| Modèle de langage avec jusqu'à 1,5 milliard de paramètres. | Modèle de langage avec jusqu'à 175 milliards de paramètres | 100T paramètres et accepte à la fois des entrées d'image et de texte et produit du texte. | + + +Les modèles GPT-3 et GPT-4 sont disponibles [en tant que service cognitif de Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste), et en tant qu'[API OpenAI](https://openai.com/api/). + +## Ingénierie des Prompts + +Parce que GPT a été entraîné sur d'énormes volumes de données pour comprendre le langage et le code, il fournit des sorties en réponse à des entrées (prompts). Les prompts sont des entrées ou des requêtes GPT par lesquelles on fournit des instructions aux modèles sur les tâches qu'ils doivent ensuite accomplir. Pour obtenir un résultat souhaité, vous avez besoin du prompt le plus efficace, ce qui implique de sélectionner les bons mots, formats, phrases ou même symboles. Cette approche est appelée [Ingénierie des Prompts](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Cette documentation](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) vous fournit plus d'informations sur l'ingénierie des prompts. + +## ✍️ Exemple de Notebook : [Jouer avec OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Continuez votre apprentissage dans les notebooks suivants : + +* [Générer du texte avec OpenAI-GPT et Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Conclusion + +Les nouveaux modèles de langage pré-entraînés généraux ne modélisent pas seulement la structure du langage, mais contiennent également une vaste quantité de langage naturel. Ainsi, ils peuvent être utilisés efficacement pour résoudre certaines tâches de traitement du langage naturel dans des contextes zéro-shot ou few-shot. + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/5-NLP/README.md b/translations/fr/lessons/5-NLP/README.md new file mode 100644 index 00000000..97f71402 --- /dev/null +++ b/translations/fr/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# Traitement du Langage Naturel + +![Résumé des tâches de traitement du langage naturel dans un doodle](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.fr.png) + +Dans cette section, nous allons nous concentrer sur l'utilisation des réseaux de neurones pour gérer des tâches liées au **Traitement du Langage Naturel (NLP)**. Il existe de nombreux problèmes de NLP que nous souhaitons que les ordinateurs soient capables de résoudre : + +* **Classification de texte** est un problème de classification typique concernant des séquences de texte. Des exemples incluent la classification des messages e-mail en spam ou non-spam, ou la catégorisation des articles en sport, affaires, politique, etc. De plus, lors du développement de chatbots, nous devons souvent comprendre ce qu'un utilisateur voulait dire -- dans ce cas, nous traitons de la **classification d'intentions**. Souvent, dans la classification d'intentions, nous devons gérer de nombreuses catégories. +* **Analyse de sentiment** est un problème de régression typique, où nous devons attribuer un nombre (un sentiment) correspondant à la manière dont le sens d'une phrase est positif ou négatif. Une version plus avancée de l'analyse de sentiment est l'**analyse de sentiment basée sur les aspects** (ABSA), où nous attribuons un sentiment non pas à l'ensemble de la phrase, mais à différentes parties de celle-ci (aspects), par exemple *Dans ce restaurant, j'ai aimé la cuisine, mais l'atmosphère était horrible*. +* **Reconnaissance d'entités nommées** (NER) fait référence au problème d'extraction de certaines entités d'un texte. Par exemple, nous pourrions avoir besoin de comprendre que dans la phrase *J'ai besoin de voler à Paris demain*, le mot *demain* fait référence à une DATE, et *Paris* est un LIEU. +* **Extraction de mots-clés** est similaire à NER, mais nous devons extraire automatiquement des mots importants pour le sens de la phrase, sans pré-entraînement pour des types d'entités spécifiques. +* **Clustering de texte** peut être utile lorsque nous voulons regrouper des phrases similaires, par exemple, des demandes similaires dans des conversations de support technique. +* **Réponse à des questions** fait référence à la capacité d'un modèle à répondre à une question spécifique. Le modèle reçoit un passage de texte et une question en entrée, et il doit fournir un endroit dans le texte où la réponse à la question se trouve (ou, parfois, générer le texte de réponse). +* **Génération de texte** est la capacité d'un modèle à générer du nouveau texte. Cela peut être considéré comme une tâche de classification qui prédit la prochaine lettre/mot en fonction d'un *texte d'invite*. Des modèles de génération de texte avancés, tels que GPT-3, sont capables de résoudre d'autres tâches de NLP telles que la classification en utilisant une technique appelée [programmation par invite](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ou [ingénierie d'invite](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Résumé de texte** est une technique lorsque nous voulons qu'un ordinateur "lise" un long texte et le résume en quelques phrases. +* **Traduction automatique** peut être vue comme une combinaison de compréhension de texte dans une langue et de génération de texte dans une autre. + +Au départ, la plupart des tâches de NLP étaient résolues en utilisant des méthodes traditionnelles telles que les grammaires. Par exemple, dans la traduction automatique, des analyseurs étaient utilisés pour transformer la phrase initiale en un arbre syntaxique, puis des structures sémantiques de niveau supérieur étaient extraites pour représenter le sens de la phrase, et sur la base de ce sens et de la grammaire de la langue cible, le résultat était généré. De nos jours, de nombreuses tâches de NLP sont plus efficacement résolues en utilisant des réseaux de neurones. + +> De nombreuses méthodes classiques de NLP sont implémentées dans la bibliothèque Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Il existe un excellent [livre NLTK](https://www.nltk.org/book/) disponible en ligne qui couvre comment différentes tâches de NLP peuvent être résolues en utilisant NLTK. + +Dans notre cours, nous nous concentrerons principalement sur l'utilisation des réseaux de neurones pour le NLP, et nous utiliserons NLTK lorsque cela sera nécessaire. + +Nous avons déjà appris à utiliser des réseaux de neurones pour traiter des données tabulaires et des images. La principale différence entre ces types de données et le texte est que le texte est une séquence de longueur variable, tandis que la taille d'entrée dans le cas des images est connue à l'avance. Bien que les réseaux de neurones convolutifs puissent extraire des motifs des données d'entrée, les motifs dans le texte sont plus complexes. Par exemple, nous pouvons avoir une négation séparée du sujet qui peut être arbitraire pour de nombreux mots (par exemple, *Je n'aime pas les oranges*, contre *Je n'aime pas ces grosses oranges colorées et savoureuses*), et cela doit toujours être interprété comme un seul motif. Ainsi, pour traiter le langage, nous devons introduire de nouveaux types de réseaux de neurones, tels que les *réseaux récurrents* et les *transformateurs*. + +## Installer les bibliothèques + +Si vous utilisez une installation locale de Python pour suivre ce cours, vous devrez peut-être installer toutes les bibliothèques requises pour le NLP en utilisant les commandes suivantes : + +**Pour PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Pour TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Vous pouvez essayer le NLP avec TensorFlow sur [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Avertissement GPU + +Dans cette section, dans certains exemples, nous allons entraîner des modèles assez volumineux. +* **Utilisez un ordinateur avec GPU** : Il est conseillé d'exécuter vos notebooks sur un ordinateur avec GPU pour réduire les temps d'attente lors du travail avec de grands modèles. +* **Contraintes de mémoire GPU** : L'exécution sur un GPU peut entraîner des situations où vous manquez de mémoire GPU, surtout lors de l'entraînement de grands modèles. +* **Consommation de mémoire GPU** : La quantité de mémoire GPU consommée pendant l'entraînement dépend de divers facteurs, y compris la taille du mini-lot. +* **Minimiser la taille du mini-lot** : Si vous rencontrez des problèmes de mémoire GPU, envisagez de réduire la taille du mini-lot dans votre code comme solution potentielle. +* **Libération de mémoire GPU TensorFlow** : Les anciennes versions de TensorFlow peuvent ne pas libérer correctement la mémoire GPU lors de l'entraînement de plusieurs modèles dans un même noyau Python. Pour gérer efficacement l'utilisation de la mémoire GPU, vous pouvez configurer TensorFlow pour allouer de la mémoire GPU uniquement au besoin. +* **Inclusion de code** : Pour configurer TensorFlow afin de faire croître l'allocation de mémoire GPU uniquement lorsque cela est nécessaire, incluez le code suivant dans vos notebooks : + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Si vous êtes intéressé par l'apprentissage du NLP d'un point de vue classique du ML, visitez [cette suite de leçons](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). + +## Dans cette section +Dans cette section, nous allons apprendre sur : + +* [Représentation du texte en tant que tenseurs](13-TextRep/README.md) +* [Mots d'embedding](14-Emdeddings/README.md) +* [Modélisation de la langue](15-LanguageModeling/README.md) +* [Réseaux de neurones récurrents](16-RNN/README.md) +* [Réseaux génératifs](17-GenerativeNetworks/README.md) +* [Transformateurs](18-Transformers/README.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/fr/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..5ca62c2b --- /dev/null +++ b/translations/fr/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# Algorithmes Génétiques + +## [Quiz avant le cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +Les **Algorithmes Génétiques** (AG) reposent sur une **approche évolutionnaire** de l'IA, dans laquelle des méthodes de l'évolution d'une population sont utilisées pour obtenir une solution optimale à un problème donné. Ils ont été proposés en 1975 par [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). + +Les Algorithmes Génétiques sont basés sur les idées suivantes : + +* Les solutions valides au problème peuvent être représentées sous forme de **gènes** +* **Le croisement** nous permet de combiner deux solutions pour obtenir une nouvelle solution valide +* **La sélection** est utilisée pour choisir des solutions plus optimales en utilisant une **fonction d'évaluation** +* **Les mutations** sont introduites pour déstabiliser l'optimisation et nous sortir du minimum local + +Si vous souhaitez implémenter un Algorithme Génétique, vous avez besoin de ce qui suit : + + * Trouver une méthode de codage de nos solutions de problème en utilisant des **gènes** g∈Γ + * Sur l'ensemble de gènes Γ, nous devons définir une **fonction d'évaluation** fit: Γ→**R**. Des valeurs de fonction plus petites correspondent à de meilleures solutions. + * Définir un mécanisme de **croisement** pour combiner deux gènes afin d'obtenir une nouvelle solution valide crossover: Γ2→Γ. + * Définir un mécanisme de **mutation** mutate: Γ→Γ. + +Dans de nombreux cas, le croisement et la mutation sont des algorithmes assez simples pour manipuler les gènes sous forme de séquences numériques ou de vecteurs de bits. + +L'implémentation spécifique d'un algorithme génétique peut varier d'un cas à l'autre, mais la structure générale est la suivante : + +1. Sélectionner une population initiale G⊂Γ +2. Sélectionner aléatoirement l'une des opérations qui sera effectuée à cette étape : croisement ou mutation +3. **Croisement** : + * Sélectionner aléatoirement deux gènes g1, g2 ∈ G + * Calculer le croisement g=crossover(g1,g2) + * Si fit(g)1) ou fit(g)2) - remplacer le gène correspondant dans la population par g. +4. **Mutation** - sélectionner un gène aléatoire g∈G et le remplacer par mutate(g) +5. Répéter à partir de l'étape 2, jusqu'à ce que nous obtenions une valeur suffisamment petite de fit, ou jusqu'à ce que la limite du nombre d'étapes soit atteinte. + +## Tâches Typiques + +Les tâches généralement résolues par les Algorithmes Génétiques incluent : + +1. Optimisation de l'emploi du temps +1. Emballage optimal +1. Découpe optimale +1. Accélération de la recherche exhaustive + +## ✍️ Exercices : Algorithmes Génétiques + +Poursuivez votre apprentissage dans les cahiers suivants : + +Allez à [ce cahier](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) pour voir deux exemples d'utilisation des Algorithmes Génétiques : + +1. Division équitable du trésor +1. Problème des 8 Reines + +## Conclusion + +Les Algorithmes Génétiques sont utilisés pour résoudre de nombreux problèmes, y compris des problèmes de logistique et de recherche. Le domaine s'inspire de recherches qui ont fusionné des sujets en psychologie et en informatique. + +## 🚀 Défi + +"Les algorithmes génétiques sont simples à mettre en œuvre, mais leur comportement est difficile à comprendre." [source](https://wikipedia.org/wiki/Genetic_algorithm) Faites des recherches pour trouver une implémentation d'un algorithme génétique, comme la résolution d'un puzzle Sudoku, et expliquez comment cela fonctionne sous forme de croquis ou de diagramme de flux. + +## [Quiz après le cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Révision & Auto-apprentissage + +Regardez [cette vidéo géniale](https://www.youtube.com/watch?v=qv6UVOQ0F44) qui parle de la façon dont un ordinateur peut apprendre à jouer à Super Mario en utilisant des réseaux neuronaux entraînés par des algorithmes génétiques. Nous en apprendrons davantage sur l'apprentissage des ordinateurs à jouer à des jeux comme celui-ci [dans la section suivante](../22-DeepRL/README.md). + +## [Devoir : Équation Diophantienne](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Votre objectif est de résoudre ce qu'on appelle une **équation diophantienne** - une équation avec des racines entières. Par exemple, considérons l'équation a+2b+3c+4d=30. Vous devez trouver les racines entières qui satisfont cette équation. + +*Cet devoir est inspiré par [ce post](https://habr.com/post/128704/).* + +Indices : + +1. Vous pouvez considérer que les racines se situent dans l'intervalle [0;30] +1. Comme gène, envisagez d'utiliser la liste des valeurs des racines + +Utilisez [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) comme point de départ. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/6-Other/22-DeepRL/README.md b/translations/fr/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..e986f687 --- /dev/null +++ b/translations/fr/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# Apprentissage par Renforcement Profond + +L'apprentissage par renforcement (RL) est considéré comme l'un des paradigmes fondamentaux de l'apprentissage machine, aux côtés de l'apprentissage supervisé et de l'apprentissage non supervisé. Alors que dans l'apprentissage supervisé nous nous appuyons sur un ensemble de données avec des résultats connus, le RL repose sur **l'apprentissage par la pratique**. Par exemple, lorsque nous découvrons un jeu vidéo pour la première fois, nous commençons à jouer, même sans connaître les règles, et bientôt nous sommes capables d'améliorer nos compétences simplement par le processus de jeu et d'ajustement de notre comportement. + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Pour réaliser du RL, nous avons besoin de : + +* Un **environnement** ou **simulateur** qui fixe les règles du jeu. Nous devrions être capables de mener des expériences dans le simulateur et d'observer les résultats. +* Une **fonction de récompense**, qui indique à quel point notre expérience a été réussie. Dans le cas d'apprendre à jouer à un jeu vidéo, la récompense serait notre score final. + +Sur la base de la fonction de récompense, nous devrions être capables d'ajuster notre comportement et d'améliorer nos compétences, de sorte qu'à la prochaine fois nous jouions mieux. La principale différence entre les autres types d'apprentissage machine et le RL est qu'en RL, nous ne savons généralement pas si nous gagnons ou perdons jusqu'à ce que nous ayons terminé le jeu. Ainsi, nous ne pouvons pas dire si un certain coup seul est bon ou non - nous ne recevons une récompense qu'à la fin du jeu. + +Au cours du RL, nous réalisons généralement de nombreuses expériences. Lors de chaque expérience, nous devons équilibrer entre le suivi de la stratégie optimale que nous avons apprise jusqu'à présent (**exploitation**) et l'exploration de nouveaux états possibles (**exploration**). + +## OpenAI Gym + +Un excellent outil pour le RL est [OpenAI Gym](https://gym.openai.com/) - un **environnement de simulation**, qui peut simuler de nombreux environnements différents allant des jeux Atari à la physique derrière l'équilibre de poteaux. C'est l'un des environnements de simulation les plus populaires pour former des algorithmes d'apprentissage par renforcement, et il est maintenu par [OpenAI](https://openai.com/). + +> **Note** : Vous pouvez voir tous les environnements disponibles sur OpenAI Gym [ici](https://gym.openai.com/envs/#classic_control). + +## Équilibre CartPole + +Vous avez probablement tous vu des dispositifs d'équilibre modernes tels que le *Segway* ou les *Gyroscooters*. Ils sont capables de s'équilibrer automatiquement en ajustant leurs roues en réponse à un signal provenant d'un accéléromètre ou d'un gyroscope. Dans cette section, nous allons apprendre à résoudre un problème similaire - équilibrer un poteau. C'est similaire à une situation où un artiste de cirque doit équilibrer un poteau sur sa main - mais cet équilibre de poteau n'a lieu qu'en 1D. + +Une version simplifiée de l'équilibre est connue sous le nom de problème **CartPole**. Dans le monde du cartpole, nous avons un curseur horizontal qui peut se déplacer à gauche ou à droite, et l'objectif est d'équilibrer un poteau vertical au sommet du curseur pendant qu'il se déplace. + +un cartpole + +Pour créer et utiliser cet environnement, nous avons besoin de quelques lignes de code 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}") +``` + +Chaque environnement peut être accessible de la même manière : +* `env.reset` starts a new experiment +* `env.step` effectue une étape de simulation. Il reçoit une **action** de l'**espace d'action**, et retourne une **observation** (de l'espace d'observation), ainsi qu'une récompense et un indicateur de terminaison. + +Dans l'exemple ci-dessus, nous effectuons une action aléatoire à chaque étape, ce qui explique pourquoi la durée de l'expérience est très courte : + +![cartpole non équilibré](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +L'objectif d'un algorithme RL est d'entraîner un modèle - la soi-disant **politique** π - qui retournera l'action en réponse à un état donné. Nous pouvons également considérer la politique comme étant probabiliste, par exemple, pour tout état *s* et action *a*, elle retournera la probabilité π(*a*|*s*) que nous devrions prendre *a* dans l'état *s*. + +## Algorithme des Gradients de Politique + +La manière la plus évidente de modéliser une politique est de créer un réseau de neurones qui prendra des états en entrée et retournera les actions correspondantes (ou plutôt les probabilités de toutes les actions). En un sens, cela serait similaire à une tâche de classification normale, avec une différence majeure - nous ne savons pas à l'avance quelles actions nous devrions prendre à chacune des étapes. + +L'idée ici est d'estimer ces probabilités. Nous construisons un vecteur de **récompenses cumulées** qui montre notre récompense totale à chaque étape de l'expérience. Nous appliquons également un **escompte de récompense** en multipliant les récompenses antérieures par un certain coefficient γ=0.99, afin de diminuer le rôle des récompenses antérieures. Ensuite, nous renforçons ces étapes le long du chemin de l'expérience qui produisent de plus grandes récompenses. + +> En savoir plus sur l'algorithme des gradients de politique et le voir en action dans le [carnet d'exemples](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algorithme Acteur-Critique + +Une version améliorée de l'approche des gradients de politique est appelée **Acteur-Critique**. L'idée principale derrière cela est que le réseau de neurones serait entraîné pour retourner deux choses : + +* La politique, qui détermine quelle action prendre. Cette partie est appelée **acteur**. +* L'estimation de la récompense totale que nous pouvons nous attendre à obtenir à cet état - cette partie est appelée **critique**. + +En un sens, cette architecture ressemble à un [GAN](../../4-ComputerVision/10-GANs/README.md), où nous avons deux réseaux qui sont entraînés l'un contre l'autre. Dans le modèle acteur-critique, l'acteur propose l'action que nous devons prendre, et le critique essaie d'être critique et d'estimer le résultat. Cependant, notre objectif est d'entraîner ces réseaux en harmonie. + +Parce que nous connaissons à la fois les vraies récompenses cumulées et les résultats retournés par le critique pendant l'expérience, il est relativement facile de construire une fonction de perte qui minimisera la différence entre elles. Cela nous donnerait la **perte du critique**. Nous pouvons calculer la **perte de l'acteur** en utilisant la même approche que dans l'algorithme des gradients de politique. + +Après avoir exécuté l'un de ces algorithmes, nous pouvons nous attendre à ce que notre CartPole se comporte comme ceci : + +![un cartpole équilibré](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Exercices : Gradients de Politique et RL Acteur-Critique + +Poursuivez votre apprentissage dans les carnets suivants : + +* [RL dans TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL dans PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Autres Tâches RL + +L'apprentissage par renforcement est aujourd'hui un domaine de recherche en pleine expansion. Quelques exemples intéressants d'apprentissage par renforcement sont : + +* Apprendre à un ordinateur à jouer à des **jeux Atari**. La partie difficile de ce problème est que nous n'avons pas un état simple représenté comme un vecteur, mais plutôt une capture d'écran - et nous devons utiliser le CNN pour convertir cette image d'écran en un vecteur de caractéristiques, ou pour extraire des informations de récompense. Les jeux Atari sont disponibles dans le Gym. +* Apprendre à un ordinateur à jouer à des jeux de société, tels que les échecs et le Go. Récemment, des programmes à la pointe de la technologie comme **Alpha Zero** ont été entraînés à partir de zéro par deux agents jouant l'un contre l'autre et s'améliorant à chaque étape. +* Dans l'industrie, le RL est utilisé pour créer des systèmes de contrôle à partir de simulations. Un service appelé [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) est spécifiquement conçu pour cela. + +## Conclusion + +Nous avons maintenant appris comment entraîner des agents pour obtenir de bons résultats simplement en leur fournissant une fonction de récompense qui définit l'état désiré du jeu, et en leur donnant l'occasion d'explorer intelligemment l'espace de recherche. Nous avons essayé avec succès deux algorithmes et obtenu un bon résultat dans un délai relativement court. Cependant, ce n'est que le début de votre parcours dans le RL, et vous devriez certainement envisager de suivre un cours séparé si vous souhaitez approfondir vos connaissances. + +## 🚀 Défi + +Explorez les applications énumérées dans la section 'Autres Tâches RL' et essayez d'en implémenter une ! + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Revue & Auto-apprentissage + +En savoir plus sur l'apprentissage par renforcement classique dans notre [Curriculum d'Apprentissage Machine pour Débutants](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Regardez [cette excellente vidéo](https://www.youtube.com/watch?v=qv6UVOQ0F44) qui parle de la manière dont un ordinateur peut apprendre à jouer à Super Mario. + +## Mission : [Entraîner une Voiture de Montagne](lab/README.md) + +Votre objectif lors de cette mission serait d'entraîner un environnement Gym différent - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/6-Other/22-DeepRL/lab/README.md b/translations/fr/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..4ed64321 --- /dev/null +++ b/translations/fr/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# Entraînement de Mountain Car pour s'échapper + +Devoir de [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Tâche + +Votre objectif est d'entraîner l'agent RL à contrôler [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) dans l'environnement OpenAI. Vous êtes formé sur des données jusqu'en octobre 2023. + +## L'environnement + +L'environnement Mountain Car se compose de la voiture piégée à l'intérieur d'une vallée. Votre but est de sauter hors de la vallée et d'atteindre le drapeau. Les actions que vous pouvez effectuer sont d'accélérer vers la gauche, vers la droite, ou de ne rien faire. Vous pouvez observer la position de la voiture le long de l'axe x, ainsi que sa vitesse. + +## Notebook de démarrage + +Commencez le laboratoire en ouvrant [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Conclusion + +Vous devriez apprendre tout au long de ce laboratoire que l'adoption des algorithmes RL dans un nouvel environnement est souvent assez simple, car l'OpenAI Gym a la même interface pour tous les environnements, et les algorithmes ne dépendent donc pas largement de la nature de l'environnement. Vous pouvez même restructurer le code Python de manière à passer n'importe quel environnement à l'algorithme RL en tant que paramètre. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées découlant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/6-Other/23-MultiagentSystems/README.md b/translations/fr/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..3ae2c3a5 --- /dev/null +++ b/translations/fr/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,154 @@ +# Systèmes Multi-Agents + +L'une des façons possibles d'atteindre l'intelligence est l'approche dite **émergente** (ou **synergétique**), qui repose sur le fait que le comportement combiné de nombreux agents relativement simples peut donner lieu à un comportement global plus complexe (ou intelligent) du système dans son ensemble. Théoriquement, cela repose sur les principes de l'[Intelligence Collective](https://en.wikipedia.org/wiki/Collective_intelligence), de l'[Émergentisme](https://en.wikipedia.org/wiki/Global_brain) et de la [Cybernétique Évolutive](https://en.wikipedia.org/wiki/Global_brain), qui stipulent que les systèmes de niveau supérieur obtiennent une sorte de valeur ajoutée lorsqu'ils sont correctement combinés à partir de systèmes de niveau inférieur (ce qu'on appelle le *principe de transition de métasystème*). + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +La direction des **Systèmes Multi-Agents** a émergé dans l'IA dans les années 1990 en réponse à la croissance d'Internet et des systèmes distribués. L'un des manuels classiques de l'IA, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), se concentre sur la vision de l'IA classique du point de vue des systèmes multi-agents. + +Au cœur de l'approche multi-agents se trouve la notion d'**Agent** - une entité qui vit dans un **environnement**, qu'elle peut percevoir et agir sur. C'est une définition très large, et il pourrait y avoir de nombreux types et classifications d'agents : + +* Par leur capacité à raisonner : + - Les agents **réactifs** ont généralement un comportement simple de type demande-réponse + - Les agents **délibératifs** emploient une forme de raisonnement logique et/ou de capacités de planification +* Par le lieu où l'agent exécute son code : + - Les agents **statiques** fonctionnent sur un nœud réseau dédié + - Les agents **mobiles** peuvent déplacer leur code entre les nœuds du réseau +* Par leur comportement : + - Les **agents passifs** n'ont pas d'objectifs spécifiques. De tels agents peuvent réagir à des stimuli externes, mais n'initieront aucune action eux-mêmes. + - Les **agents actifs** ont des objectifs qu'ils poursuivent + - Les **agents cognitifs** impliquent une planification et un raisonnement complexes + +Les systèmes multi-agents sont aujourd'hui utilisés dans un certain nombre d'applications : + +* Dans les jeux, de nombreux personnages non-joueurs emploient une forme d'IA et peuvent être considérés comme des agents intelligents +* Dans la production vidéo, le rendu de scènes 3D complexes impliquant des foules est généralement réalisé à l'aide de simulations multi-agents +* Dans la modélisation de systèmes, l'approche multi-agents est utilisée pour simuler le comportement d'un modèle complexe. Par exemple, l'approche multi-agents a été utilisée avec succès pour prédire la propagation de la maladie COVID-19 dans le monde. Une approche similaire peut être utilisée pour modéliser le trafic en ville et voir comment il réagit aux changements des règles de circulation. +* Dans les systèmes d'automatisation complexes, chaque appareil peut agir comme un agent indépendant, ce qui rend l'ensemble du système moins monolithique et plus robuste. + +Nous ne passerons pas beaucoup de temps à approfondir les systèmes multi-agents, mais considérons un exemple de **Modélisation Multi-Agent**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) est un environnement de modélisation multi-agents basé sur une version modifiée du langage de programmation [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Ce langage a été développé pour enseigner les concepts de programmation aux enfants, et il vous permet de contrôler un agent appelé **tortue**, qui peut se déplacer en laissant une trace derrière elle. Cela permet de créer des figures géométriques complexes, ce qui est une manière très visuelle de comprendre le comportement d'un agent. + +Dans NetLogo, nous pouvons créer de nombreuses tortues en utilisant la commande `create-turtles`. Nous pouvons ensuite ordonner à toutes les tortues d'effectuer certaines actions (dans l'exemple ci-dessous - avancer de 10 points) : + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Bien sûr, ce n'est pas intéressant lorsque toutes les tortues font la même chose, donc nous pouvons `ask` groups of turtles, eg. those who are in the vicinity of a certain point. We can also create turtles of different *breeds* using `breed [cats cat]` command. Here `cat` est le nom d'une race, et nous devons spécifier à la fois le mot au singulier et au pluriel, car différentes commandes utilisent différentes formes pour plus de clarté. + +> ✅ Nous ne nous plongerons pas dans l'apprentissage du langage NetLogo lui-même - vous pouvez visiter le brillant [Dictionnaire Interactif pour Débutants de NetLogo](https://ccl.northwestern.edu/netlogo/bind/) si vous êtes intéressé à en apprendre davantage. + +Vous pouvez [télécharger](https://ccl.northwestern.edu/netlogo/download.shtml) et installer NetLogo pour l'essayer. + +### Bibliothèque de Modèles + +Une grande chose à propos de NetLogo est qu'il contient une bibliothèque de modèles fonctionnels que vous pouvez essayer. Allez dans **Fichier → Bibliothèque de Modèles**, et vous avez de nombreuses catégories de modèles à choisir. + +Bibliothèque de Modèles NetLogo + +> Une capture d'écran de la bibliothèque de modèles par Dmitry Soshnikov + +Vous pouvez ouvrir l'un des modèles, par exemple **Biologie → Flocking**. + +### Principes Principaux + +Après avoir ouvert le modèle, vous êtes dirigé vers l'écran principal de NetLogo. Voici un modèle d'exemple qui décrit la population de loups et de moutons, étant donné des ressources finies (herbe). + +![Écran Principal de NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.fr.png) + +> Capture d'écran par Dmitry Soshnikov + +Sur cet écran, vous pouvez voir : + +* La section **Interface** qui contient : + - Le champ principal, où vivent tous les agents + - Différents contrôles : boutons, curseurs, etc. + - Graphiques que vous pouvez utiliser pour afficher les paramètres de la simulation +* L'onglet **Code** qui contient l'éditeur, où vous pouvez taper le programme NetLogo + +Dans la plupart des cas, l'interface aurait un bouton **Setup**, qui initialise l'état de la simulation, et un bouton **Go** qui démarre l'exécution. Ceux-ci sont gérés par des gestionnaires correspondants dans le code qui ressemblent à ceci : + +``` +to go [ +... +] +``` + +Le monde de NetLogo se compose des objets suivants : + +* **Agents** (tortues) qui peuvent se déplacer sur le champ et faire quelque chose. Vous commandez les agents en utilisant `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. +* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches` pour faire quelque chose. +* **Observateur** est un agent unique qui contrôle le monde. Tous les gestionnaires de boutons sont exécutés en *mode observateur*. + +> ✅ La beauté d'un environnement multi-agents est que le code qui s'exécute en mode tortue ou en mode patch est exécuté en même temps par tous les agents en parallèle. Ainsi, en écrivant un peu de code et en programmant le comportement de chaque agent individuel, vous pouvez créer un comportement complexe du système de simulation dans son ensemble. + +### Flocking + +Comme exemple de comportement multi-agent, considérons le **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Le flocking est un motif complexe qui ressemble beaucoup à la façon dont les vols d'oiseaux volent. En les regardant voler, vous pourriez penser qu'ils suivent une sorte d'algorithme collectif, ou qu'ils possèdent une forme d'*intelligence collective*. Cependant, ce comportement complexe émerge lorsque chaque agent individuel (dans ce cas, un *oiseau*) n'observe que quelques autres agents à une courte distance de lui, et suit trois règles simples : + +* **Alignement** - il se dirige vers la direction moyenne des agents voisins +* **Cohésion** - il essaie de se diriger vers la position moyenne des voisins (*attraction à longue portée*) +* **Séparation** - lorsqu'il se rapproche trop d'autres oiseaux, il essaie de s'éloigner (*répulsion à courte portée*) + +Vous pouvez exécuter l'exemple de flocking et observer le comportement. Vous pouvez également ajuster des paramètres, tels que le *degré de séparation*, ou le *champ de vision*, qui définit jusqu'où chaque oiseau peut voir. Notez que si vous réduisez le champ de vision à 0, tous les oiseaux deviennent aveugles, et le flocking s'arrête. Si vous réduisez la séparation à 0, tous les oiseaux se rassemblent en ligne droite. + +> ✅ Passez à l'onglet **Code** et voyez où les trois règles du flocking (alignement, cohésion et séparation) sont mises en œuvre dans le code. Notez comment nous ne faisons référence qu'aux agents qui sont en vue. + +### Autres Modèles à Voir + +Il y a quelques autres modèles intéressants avec lesquels vous pouvez expérimenter : + +* **Art → Feux d'artifice** montre comment un feu d'artifice peut être considéré comme un comportement collectif de flux de feu individuels +* **Sciences Sociales → Trafic de Base** et **Sciences Sociales → Grille de Trafic** montrent le modèle de trafic urbain en 1D et en 2D avec ou sans feux de circulation. Chaque voiture dans la simulation suit les règles suivantes : + - Si l'espace devant elle est vide - accélérer (jusqu'à une certaine vitesse maximale) + - Si elle voit un obstacle devant - freiner (et vous pouvez ajuster jusqu'où un conducteur peut voir) +* **Sciences Sociales → Fête** montre comment les gens se regroupent lors d'une fête. Vous pouvez trouver la combinaison de paramètres qui mène à l'augmentation la plus rapide du bonheur du groupe. + +Comme vous pouvez le voir à partir de ces exemples, les simulations multi-agents peuvent être un moyen très utile de comprendre le comportement d'un système complexe composé d'individus qui suivent la même logique ou une logique similaire. Cela peut également être utilisé pour contrôler des agents virtuels, tels que des [PNJ](https://en.wikipedia.org/wiki/NPC) dans des jeux vidéo, ou des agents dans des mondes animés en 3D. + +## Agents Délibératifs + +Les agents décrits ci-dessus sont très simples, réagissant aux changements dans l'environnement en utilisant une sorte d'algorithme. En tant que tels, ce sont des **agents réactifs**. Cependant, parfois, les agents peuvent raisonner et planifier leurs actions, auquel cas ils sont appelés **délibératifs**. + +Un exemple typique serait un agent personnel qui reçoit une instruction d'un humain pour réserver un voyage. Supposons qu'il y ait de nombreux agents qui vivent sur Internet, qui peuvent l'aider. Il devrait alors contacter d'autres agents pour voir quels vols sont disponibles, quels sont les prix des hôtels pour différentes dates, et essayer de négocier le meilleur prix. Lorsque le plan de vacances est complet et confirmé par le propriétaire, il peut procéder à la réservation. + +Pour ce faire, les agents doivent **communiquer**. Pour une communication réussie, ils ont besoin de : + +* Certains **langages standards pour échanger des connaissances**, tels que le [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) et le [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Ces langages sont conçus sur la base de la [théorie de l'acte de parole](https://en.wikipedia.org/wiki/Speech_act). +* Ces langages doivent également inclure certains **protocoles pour les négociations**, basés sur différents **types d'enchères**. +* Une **ontologie commune** à utiliser, afin qu'ils se réfèrent aux mêmes concepts en connaissant leur sémantique. +* Un moyen de **découvrir** ce que différents agents peuvent faire, également basé sur une sorte d'ontologie. + +Les agents délibératifs sont beaucoup plus complexes que les réactifs, car ils ne réagissent pas seulement aux changements dans l'environnement, ils doivent également être capables d'*initier* des actions. L'une des architectures proposées pour les agents délibératifs est l'agent dit de Croyance-Désir-Intention (BDI) : + +* Les **Croyances** forment un ensemble de connaissances sur l'environnement d'un agent. Cela peut être structuré comme une base de connaissances ou un ensemble de règles qu'un agent peut appliquer à une situation spécifique dans l'environnement. +* Les **Désirs** définissent ce qu'un agent veut faire, c'est-à-dire ses objectifs. Par exemple, l'objectif de l'agent assistant personnel ci-dessus est de réserver un voyage, et l'objectif d'un agent hôtelier est de maximiser le profit. +* Les **Intentions** sont des actions spécifiques qu'un agent prévoit d'atteindre ses objectifs. Les actions modifient généralement l'environnement et entraînent une communication avec d'autres agents. + +Il existe des plateformes disponibles pour construire des systèmes multi-agents, telles que [JADE](https://jade.tilab.com/). [Cet article](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contient une revue des plateformes multi-agents, accompagnée d'un bref historique des systèmes multi-agents et de leurs différents scénarios d'utilisation. + +## Conclusion + +Les systèmes multi-agents peuvent prendre des formes très différentes et être utilisés dans de nombreuses applications différentes. Ils tendent tous à se concentrer sur le comportement plus simple d'un agent individuel, et à atteindre un comportement plus complexe du système global grâce à l'**effet synergétique**. + +## 🚀 Défi + +Appliquez cette leçon au monde réel et essayez de conceptualiser un système multi-agents qui peut résoudre un problème. Que devrait faire, par exemple, un système multi-agents pour optimiser un itinéraire de bus scolaire ? Comment cela pourrait-il fonctionner dans une boulangerie ? + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Revue & Auto-étude + +Examinez l'utilisation de ce type de système dans l'industrie. Choisissez un domaine tel que la fabrication ou l'industrie du jeu vidéo et découvrez comment les systèmes multi-agents peuvent être utilisés pour résoudre des problèmes uniques. + +## [Devoir NetLogo](assignment.md) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/fr/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..b70213aa --- /dev/null +++ b/translations/fr/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# Devoir NetLogo + +Prenez l'un des modèles de la bibliothèque de NetLogo et utilisez-le pour simuler une situation de la vie réelle aussi fidèlement que possible. Un bon exemple serait de modifier le modèle de Virus dans le dossier Visualisations Alternatives pour montrer comment il peut être utilisé pour modéliser la propagation de la COVID-19. Pouvez-vous créer un modèle qui imite la propagation virale dans la vie réelle ? + +Montrez votre travail en enregistrant une copie et en réalisant une vidéo démonstrative expliquant comment le modèle est lié à une situation du monde réel. + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction professionnelle par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/7-Ethics/README.md b/translations/fr/lessons/7-Ethics/README.md new file mode 100644 index 00000000..293fce3c --- /dev/null +++ b/translations/fr/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# IA Éthique et Responsable + +Vous avez presque terminé ce cours, et j'espère qu'à ce stade, vous comprenez clairement que l'IA repose sur un certain nombre de méthodes mathématiques formelles qui nous permettent de trouver des relations dans les données et d'entraîner des modèles pour reproduire certains aspects du comportement humain. À ce moment de l'histoire, nous considérons l'IA comme un outil très puissant pour extraire des modèles à partir des données et appliquer ces modèles pour résoudre de nouveaux problèmes. + +## [Quiz pré-conférence](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Cependant, dans la science-fiction, nous voyons souvent des histoires où l'IA représente un danger pour l'humanité. En général, ces histoires tournent autour d'une sorte de rébellion de l'IA, lorsque l'IA décide de confronter les êtres humains. Cela implique que l'IA a une sorte d'émotion ou peut prendre des décisions imprévues par ses développeurs. + +Le type d'IA que nous avons appris dans ce cours n'est rien d'autre qu'une arithmétique de grandes matrices. C'est un outil très puissant pour nous aider à résoudre nos problèmes, et comme tout autre outil puissant - il peut être utilisé à des fins bonnes ou mauvaises. Il est important de noter qu'il peut être *mal utilisé*. + +## Principes de l'IA Responsable + +Pour éviter cet usage accidentel ou intentionnel de l'IA, Microsoft énonce les importants [Principes de l'IA Responsable](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Les concepts suivants sous-tendent ces principes : + +* **Équité** est liée au problème important des *biais de modèle*, qui peuvent être causés par l'utilisation de données biaisées pour l'entraînement. Par exemple, lorsque nous essayons de prédire la probabilité d'obtenir un emploi de développeur de logiciels pour une personne, le modèle est susceptible de donner une préférence plus élevée aux hommes - simplement parce que le jeu de données d'entraînement était probablement biaisé vers un public masculin. Nous devons équilibrer soigneusement les données d'entraînement et examiner le modèle pour éviter les biais, et nous assurer que le modèle prend en compte des caractéristiques plus pertinentes. +* **Fiabilité et Sécurité**. Par nature, les modèles d'IA peuvent faire des erreurs. Un réseau de neurones retourne des probabilités, et nous devons en tenir compte lors de la prise de décisions. Chaque modèle a une certaine précision et un certain rappel, et nous devons comprendre cela pour prévenir les dommages que de mauvais conseils peuvent causer. +* **Confidentialité et Sécurité** ont des implications spécifiques à l'IA. Par exemple, lorsque nous utilisons certaines données pour entraîner un modèle, ces données deviennent d'une certaine manière "intégrées" dans le modèle. D'une part, cela augmente la sécurité et la confidentialité, d'autre part - nous devons nous rappeler sur quelles données le modèle a été entraîné. +* **Inclusivité** signifie que nous ne construisons pas l'IA pour remplacer les gens, mais plutôt pour augmenter les capacités humaines et rendre notre travail plus créatif. Cela est également lié à l'équité, car lorsqu'il s'agit de communautés sous-représentées, la plupart des ensembles de données que nous collectons sont susceptibles d'être biaisés, et nous devons nous assurer que ces communautés sont incluses et correctement prises en charge par l'IA. +* **Transparence**. Cela inclut de s'assurer que nous sommes toujours clairs sur l'utilisation de l'IA. De plus, dans la mesure du possible, nous voulons utiliser des systèmes d'IA qui sont *interprétables*. +* **Responsabilité**. Lorsque les modèles d'IA prennent certaines décisions, il n'est pas toujours clair qui est responsable de ces décisions. Nous devons nous assurer que nous comprenons où se situe la responsabilité des décisions de l'IA. Dans la plupart des cas, nous voudrions inclure des êtres humains dans le processus de prise de décisions importantes, afin que des personnes réelles soient tenues responsables. + +## Outils pour une IA Responsable + +Microsoft a développé la [Boîte à outils pour une IA Responsable](https://github.com/microsoft/responsible-ai-toolbox) qui contient un ensemble d'outils : + +* Tableau de bord d'interprétabilité (InterpretML) +* Tableau de bord d'équité (FairLearn) +* Tableau de bord d'analyse des erreurs +* Tableau de bord d'IA Responsable qui inclut + + - EconML - outil d'analyse causale, qui se concentre sur les questions de type "et si" + - DiCE - outil d'analyse contrefactuelle qui vous permet de voir quelles caractéristiques doivent être modifiées pour affecter la décision du modèle + +Pour plus d'informations sur l'éthique de l'IA, veuillez visiter [cette leçon](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) sur le programme d'apprentissage automatique qui inclut des exercices. + +## Révision & Auto-apprentissage + +Suivez ce [Parcours d'apprentissage](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) pour en savoir plus sur l'IA responsable. + +## [Quiz post-conférence](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/README.md b/translations/fr/lessons/README.md new file mode 100644 index 00000000..d6e3dfc2 --- /dev/null +++ b/translations/fr/lessons/README.md @@ -0,0 +1,8 @@ +# Vue d'ensemble + +![Vue d'ensemble en doodle](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.fr.png) + +> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autorisée. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/X-Extras/X1-MultiModal/README.md b/translations/fr/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..6be7e4b0 --- /dev/null +++ b/translations/fr/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# Réseaux Multi-Modal + +Après le succès des modèles de transformateurs pour résoudre des tâches de traitement du langage naturel (NLP), des architectures similaires ont été appliquées aux tâches de vision par ordinateur. Il y a un intérêt croissant à construire des modèles qui combinent les capacités de vision et de langage naturel. Une de ces tentatives a été réalisée par OpenAI, et elle s'appelle CLIP et DALL.E. + +## Pré-Formation d'Image Contrastive (CLIP) + +L'idée principale de CLIP est de pouvoir comparer des invites textuelles avec une image et déterminer à quel point l'image correspond bien à l'invite. + +![Architecture CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.fr.png) + +> *Image tirée [de cet article de blog](https://openai.com/blog/clip/)* + +Le modèle est entraîné sur des images obtenues sur Internet et leurs légendes. Pour chaque lot, nous prenons N paires de (image, texte), et les convertissons en certaines représentations vectorielles I et T. Ces représentations sont ensuite mises en correspondance. La fonction de perte est définie pour maximiser la similarité cosinus entre les vecteurs correspondant à une paire (par exemple, I et T), et minimiser la similarité cosinus entre toutes les autres paires. C'est la raison pour laquelle cette approche est appelée **contrastive**. + +Le modèle/bibliothèque CLIP est disponible sur [OpenAI GitHub](https://github.com/openai/CLIP). L'approche est décrite [dans cet article de blog](https://openai.com/blog/clip/), et plus en détail dans [cet article](https://arxiv.org/pdf/2103.00020.pdf). + +Une fois ce modèle pré-entraîné, nous pouvons lui donner un lot d'images et un lot d'invites textuelles, et il retournera un tenseur avec des probabilités. CLIP peut être utilisé pour plusieurs tâches : + +**Classification d'Images** + +Supposons que nous devons classifier des images entre, disons, des chats, des chiens et des humains. Dans ce cas, nous pouvons donner au modèle une image et une série d'invites textuelles : "*une image d'un chat*", "*une image d'un chien*", "*une image d'un humain*". Dans le vecteur résultant de 3 probabilités, il suffit de sélectionner l'index avec la valeur la plus élevée. + +![CLIP pour la Classification d'Images](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.fr.png) + +> *Image tirée [de cet article de blog](https://openai.com/blog/clip/)* + +**Recherche d'Images Basée sur le Texte** + +Nous pouvons également faire l'inverse. Si nous avons une collection d'images, nous pouvons passer cette collection au modèle, et une invite textuelle - cela nous donnera l'image qui est la plus similaire à l'invite donnée. + +## ✍️ Exemple : [Utilisation de CLIP pour la Classification d'Images et la Recherche d'Images](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Ouvrez le notebook [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) pour voir CLIP en action. + +## Génération d'Images avec VQGAN+ CLIP + +CLIP peut également être utilisé pour la **génération d'images** à partir d'une invite textuelle. Pour ce faire, nous avons besoin d'un **modèle générateur** capable de générer des images basées sur un certain vecteur d'entrée. Un de ces modèles s'appelle [VQGAN](https://compvis.github.io/taming-transformers/) (GAN quantifié par vecteur). + +Les principales idées de VQGAN qui le différencient d'un [GAN](../../4-ComputerVision/10-GANs/README.md) ordinaire sont les suivantes : +* Utilisation d'une architecture de transformateur autoregressive pour générer une séquence de parties visuelles riches en contexte qui composent l'image. Ces parties visuelles sont à leur tour apprises par [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Utilisation d'un discriminateur de sous-image qui détecte si des parties de l'image sont "réelles" ou "fausses" (contrairement à l'approche "tout ou rien" des GAN traditionnels). + +En savoir plus sur VQGAN sur le site web [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Une des différences importantes entre VQGAN et les GAN traditionnels est que ces derniers peuvent produire une image décente à partir de n'importe quel vecteur d'entrée, tandis que VQGAN est susceptible de produire une image qui ne serait pas cohérente. Ainsi, nous devons guider davantage le processus de création d'images, ce qui peut être fait en utilisant CLIP. + +![Architecture VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.fr.png) + +Pour générer une image correspondant à une invite textuelle, nous commençons par un certain vecteur d'encodage aléatoire qui est passé à travers VQGAN pour produire une image. Ensuite, CLIP est utilisé pour produire une fonction de perte qui montre à quel point l'image correspond à l'invite textuelle. L'objectif est alors de minimiser cette perte, en utilisant la rétropropagation pour ajuster les paramètres du vecteur d'entrée. + +Une excellente bibliothèque qui implémente VQGAN+CLIP est [Pixray](http://github.com/pixray/pixray). + +![Image produite par Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.fr.png) | ![Image produite par Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.fr.png) | ![Image produite par Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.fr.png) +----|----|---- +Image générée à partir de l'invite *un portrait aquarelle en gros plan d'un jeune enseignant de littérature avec un livre* | Image générée à partir de l'invite *un portrait à l'huile en gros plan d'une jeune enseignante d'informatique avec un ordinateur* | Image générée à partir de l'invite *un portrait à l'huile en gros plan d'un ancien enseignant de mathématiques devant un tableau noir* + +> Images de la collection **Enseignants Artificiels** par [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E est une version de GPT-3 entraînée pour générer des images à partir d'invites. Il a été entraîné avec 12 milliards de paramètres. + +Contrairement à CLIP, DALL-E reçoit à la fois du texte et de l'image comme un seul flux de tokens pour les images et le texte. Par conséquent, à partir de plusieurs invites, vous pouvez générer des images basées sur le texte. + +### [DALL-E 2](https://openai.com/dall-e-2) +La principale différence entre DALL-E 1 et 2 est qu'il génère des images et de l'art plus réalistes. + +Exemples de générations d'images avec DALL-E : +![Image produite par Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.fr.png) | ![Image produite par Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.fr.png) | ![Image produite par Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.fr.png) +----|----|---- +Image générée à partir de l'invite *un portrait aquarelle en gros plan d'un jeune enseignant de littérature avec un livre* | Image générée à partir de l'invite *un portrait à l'huile en gros plan d'une jeune enseignante d'informatique avec un ordinateur* | Image générée à partir de l'invite *un portrait à l'huile en gros plan d'un ancien enseignant de mathématiques devant un tableau noir* + +## Références + +* Article sur VQGAN : [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Article sur CLIP : [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatisés basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue natale doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/sketchnotes/LICENSE.md b/translations/fr/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..749f3d52 --- /dev/null +++ b/translations/fr/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,158 @@ +# Attribution-ShareAlike 4.0 International + +======================================================================= + +La Creative Commons Corporation ("Creative Commons") n'est pas un cabinet d'avocats et ne fournit pas de services juridiques ni de conseils juridiques. La distribution des licences publiques Creative Commons ne crée pas de relation avocat-client ou autre. Creative Commons met ses licences et les informations connexes à disposition sur une base "tel quel". Creative Commons ne donne aucune garantie concernant ses licences, tout matériel licencié en vertu de leurs termes et conditions, ou toute information connexe. Creative Commons décline toute responsabilité pour les dommages résultant de leur utilisation dans toute la mesure permise par la loi. + +## Utilisation des Licences Publiques Creative Commons + +Les licences publiques Creative Commons fournissent un ensemble standard de termes et conditions que les créateurs et autres titulaires de droits peuvent utiliser pour partager des œuvres originales d'auteur et d'autres matériaux soumis au droit d'auteur et à certains autres droits spécifiés dans la licence publique ci-dessous. Les considérations suivantes sont à titre informatif uniquement, ne sont pas exhaustives et ne font pas partie de nos licences. + +### Considérations pour les donneurs de licence : + +Nos licences publiques sont destinées à être utilisées par ceux qui sont autorisés à donner au public la permission d'utiliser des matériaux de manière autrement restreinte par le droit d'auteur et certains autres droits. Nos licences sont irrévocables. Les donneurs de licence doivent lire et comprendre les termes et conditions de la licence qu'ils choisissent avant de l'appliquer. Les donneurs de licence doivent également sécuriser tous les droits nécessaires avant d'appliquer nos licences afin que le public puisse réutiliser le matériel comme prévu. Les donneurs de licence doivent clairement marquer tout matériel non soumis à la licence. Cela inclut d'autres matériaux sous licence CC, ou des matériaux utilisés en vertu d'une exception ou d'une limitation au droit d'auteur. Plus de considérations pour les donneurs de licence : +wiki.creativecommons.org/Considerations_for_licensors + +### Considérations pour le public : + +En utilisant l'une de nos licences publiques, un donneur de licence accorde au public la permission d'utiliser le matériel sous licence selon les termes et conditions spécifiés. Si la permission du donneur de licence n'est pas nécessaire pour une raison quelconque — par exemple, en raison d'une exception ou d'une limitation applicable au droit d'auteur — alors cette utilisation n'est pas régulée par la licence. Nos licences n'accordent que des permissions en vertu du droit d'auteur et de certains autres droits que le donneur de licence a l'autorité d'accorder. L'utilisation du matériel sous licence peut encore être restreinte pour d'autres raisons, y compris parce que d'autres détiennent des droits d'auteur ou d'autres droits sur le matériel. Un donneur de licence peut faire des demandes spéciales, comme demander que tous les changements soient marqués ou décrits. Bien que non exigé par nos licences, il est conseillé de respecter ces demandes lorsque cela est raisonnable. Plus de considérations pour le public : +wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +## Licence Publique Creative Commons Attribution-ShareAlike 4.0 International + +En exerçant les Droits Licenciés (définis ci-dessous), vous acceptez et convenez d'être lié par les termes et conditions de cette Licence Publique Creative Commons Attribution-ShareAlike 4.0 International ("Licence Publique"). Dans la mesure où cette Licence Publique peut être interprétée comme un contrat, vous vous voyez accorder les Droits Licenciés en contrepartie de votre acceptation de ces termes et conditions, et le Donneur de Licence vous accorde ces droits en contrepartie des avantages que le Donneur de Licence reçoit en rendant le Matériel Licencié disponible selon ces termes et conditions. + +### Section 1 -- Définitions. + + a. Matériel Adapté désigne le matériel soumis au Droit d'Auteur et aux Droits Similaires qui est dérivé ou basé sur le Matériel Licencié et dans lequel le Matériel Licencié est traduit, modifié, arrangé, transformé ou autrement modifié d'une manière nécessitant une permission en vertu des Droits d'Auteur et Droits Similaires détenus par le Donneur de Licence. Aux fins de cette Licence Publique, lorsque le Matériel Licencié est une œuvre musicale, une performance ou un enregistrement sonore, le Matériel Adapté est toujours produit lorsque le Matériel Licencié est synchronisé en relation temporelle avec une image animée. + + b. Licence de l'Adaptateur signifie la licence que vous appliquez à vos Droits d'Auteur et Droits Similaires dans vos contributions au Matériel Adapté conformément aux termes et conditions de cette Licence Publique. + + c. Licence Compatible BY-SA désigne une licence répertoriée sur creativecommons.org/compatiblelicenses, approuvée par Creative Commons comme essentiellement équivalente à cette Licence Publique. + + d. Droits d'Auteur et Droits Similaires désignent le droit d'auteur et/ou des droits similaires étroitement liés au droit d'auteur, y compris, sans limitation, la performance, la diffusion, l'enregistrement sonore et les Droits de Base de Données Sui Generis, sans égard à la manière dont les droits sont étiquetés ou catégorisés. Aux fins de cette Licence Publique, les droits spécifiés dans la Section 2(b)(1)-(2) ne sont pas des Droits d'Auteur et Droits Similaires. + + e. Mesures Technologiques Effectives désignent les mesures qui, en l'absence d'une autorité appropriée, ne peuvent pas être contournées en vertu des lois remplissant des obligations en vertu de l'Article 11 du Traité de l'OMPI sur le droit d'auteur adopté le 20 décembre 1996, et/ou des accords internationaux similaires. + + f. Exceptions et Limitations désignent l'utilisation équitable, le traitement équitable et/ou toute autre exception ou limitation au Droit d'Auteur et Droits Similaires qui s'applique à votre utilisation du Matériel Licencié. + + g. Éléments de Licence désignent les attributs de licence énumérés dans le nom d'une Licence Publique Creative Commons. Les Éléments de Licence de cette Licence Publique sont Attribution et ShareAlike. + + h. Matériel Licencié désigne l'œuvre artistique ou littéraire, la base de données ou tout autre matériel auquel le Donneur de Licence a appliqué cette Licence Publique. + + i. Droits Licenciés désignent les droits qui vous sont accordés sous réserve des termes et conditions de cette Licence Publique, qui sont limités à tous les Droits d'Auteur et Droits Similaires qui s'appliquent à votre utilisation du Matériel Licencié et que le Donneur de Licence a l'autorité de licencier. + + j. Donneur de Licence désigne la ou les personnes ou entités accordant des droits en vertu de cette Licence Publique. + + k. Partager signifie fournir du matériel au public par tout moyen ou processus nécessitant une permission en vertu des Droits Licenciés, tel que la reproduction, l'affichage public, la performance publique, la distribution, la diffusion, la communication ou l'importation, et rendre le matériel disponible au public, y compris de manière à ce que les membres du public puissent accéder au matériel d'un endroit et à un moment individuellement choisis par eux. + + l. Droits de Base de Données Sui Generis désignent des droits autres que le droit d'auteur résultant de la Directive 96/9/CE du Parlement européen et du Conseil du 11 mars 1996 sur la protection juridique des bases de données, telle que modifiée et/ou remplacée, ainsi que d'autres droits essentiellement équivalents dans le monde entier. + + m. Vous désigne l'individu ou l'entité exerçant les Droits Licenciés en vertu de cette Licence Publique. Votre a une signification correspondante. + + +### Section 2 -- Portée. + + a. Accord de licence. + + 1. Sous réserve des termes et conditions de cette Licence Publique, le Donneur de Licence vous accorde par la présente une licence mondiale, gratuite de redevances, non sous-licenciable, non exclusive et irrévocable pour exercer les Droits Licenciés dans le Matériel Licencié afin de : + + a. reproduire et partager le Matériel Licencié, en tout ou en partie ; et + + b. produire, reproduire et partager du Matériel Adapté. + + 2. Exceptions et Limitations. Pour éviter toute ambiguïté, lorsque des Exceptions et Limitations s'appliquent à votre utilisation, cette Licence Publique ne s'applique pas, et vous n'avez pas besoin de respecter ses termes et conditions. + + 3. Durée. La durée de cette Licence Publique est spécifiée dans la Section 6(a). + + 4. Médias et formats ; modifications techniques autorisées. Le Donneur de Licence vous autorise à exercer les Droits Licenciés dans tous les médias et formats, qu'ils soient connus maintenant ou créés ultérieurement, et à apporter les modifications techniques nécessaires pour ce faire. Le Donneur de Licence renonce et/ou convient de ne pas faire valoir tout droit ou autorité pour vous interdire de faire des modifications techniques nécessaires pour exercer les Droits Licenciés, y compris les modifications techniques nécessaires pour contourner les Mesures Technologiques Effectives. Aux fins de cette Licence Publique, le fait de simplement apporter des modifications autorisées par cette Section 2(a)(4) ne produit jamais de Matériel Adapté. + + 5. Destinataires en aval. + + a. Offre du Donneur de Licence -- Matériel Licencié. Chaque destinataire du Matériel Licencié reçoit automatiquement une offre du Donneur de Licence pour exercer les Droits Licenciés selon les termes et conditions de cette Licence Publique. + + b. Offre supplémentaire du Donneur de Licence -- Matériel Adapté. Chaque destinataire de Matériel Adapté de votre part reçoit automatiquement une offre du Donneur de Licence pour exercer les Droits Licenciés dans le Matériel Adapté selon les conditions de la Licence de l'Adaptateur que vous appliquez. + + c. Pas de restrictions en aval. Vous ne pouvez pas offrir ou imposer des termes ou conditions supplémentaires ou différents sur, ou appliquer des Mesures Technologiques Effectives à, le Matériel Licencié si cela restreint l'exercice des Droits Licenciés par tout destinataire du Matériel Licencié. + + 6. Pas d'approbation. Rien dans cette Licence Publique ne constitue ou ne peut être interprété comme une permission d'affirmer ou d'impliquer que vous êtes, ou que votre utilisation du Matériel Licencié est, connectée avec, ou sponsorisée, approuvée ou accordée un statut officiel par, le Donneur de Licence ou d'autres désignés pour recevoir une attribution comme prévu dans la Section 3(a)(1)(A)(i). + + b. Autres droits. + + 1. Les droits moraux, tels que le droit à l'intégrité, ne sont pas licenciés en vertu de cette Licence Publique, ni les droits de publicité, de confidentialité et/ou d'autres droits de personnalité similaires ; cependant, dans la mesure du possible, le Donneur de Licence renonce et/ou convient de ne pas faire valoir de tels droits détenus par le Donneur de Licence dans la mesure limitée nécessaire pour vous permettre d'exercer les Droits Licenciés, mais pas autrement. + + 2. Les droits de brevet et de marque ne sont pas licenciés en vertu de cette Licence Publique. + + 3. Dans la mesure du possible, le Donneur de Licence renonce à tout droit de percevoir des redevances de votre part pour l'exercice des Droits Licenciés, que ce soit directement ou par l'intermédiaire d'une société de perception dans le cadre de tout schéma de licence statutaire ou obligatoire volontaire ou renonçable. Dans tous les autres cas, le Donneur de Licence se réserve expressément tout droit de percevoir de telles redevances. + + +### Section 3 -- Conditions de Licence. + +Votre exercice des Droits Licenciés est expressément soumis aux conditions suivantes. + + a. Attribution. + + 1. Si vous partagez le Matériel Licencié (y compris sous une forme modifiée), vous devez : + + a. conserver ce qui suit s'il est fourni par le Donneur de Licence avec le Matériel Licencié : + + i. identification des créateurs du Matériel Licencié et de tout autre désigné pour recevoir une attribution, de toute manière raisonnable demandée par le Donneur de Licence (y compris par pseudonyme si désigné) ; + + ii. un avis de droit d'auteur ; + + iii. un avis qui fait référence à cette Licence Publique ; + + iv. un avis qui fait référence à la clause de non-responsabilité ; + + v. un URI ou un lien hypertexte vers le Matériel Licencié dans la mesure raisonnablement praticable ; + + b. indiquer si vous avez modifié le Matériel Licencié et conserver une indication de toute modification précédente ; et + + c. indiquer que le Matériel Licencié est sous licence en vertu de cette Licence Publique, et inclure le texte de, ou l'URI ou le lien hypertexte vers, cette Licence Publique. + + 2. Vous pouvez satisfaire les conditions de la Section 3(a)(1) de toute manière raisonnable en fonction du média, des moyens et du contexte dans lequel vous partagez le Matériel Licencié. Par exemple, il peut être raisonnable de satisfaire les conditions en fournissant un URI ou un lien hypertexte vers une ressource qui inclut les informations requises. + + 3. Si le Donneur de Licence le demande, vous devez retirer toute information requise par la Section 3(a)(1)(A) dans la mesure raisonnablement praticable. + + b. ShareAlike. + + En plus des conditions de la Section 3(a), si vous partagez du Matériel Adapté que vous produisez, les conditions suivantes s'appliquent également. + + 1. La Licence de l'Adaptateur que vous appliquez doit être une licence Creative Commons avec les mêmes Éléments de Licence, cette version ou une version ultérieure, ou une Licence Compatible BY-SA. + + 2. Vous devez inclure le texte de, ou l'URI ou le lien hypertexte vers, la Licence de l'Adaptateur que vous appliquez. Vous pouvez satisfaire cette condition de toute manière raisonnable en fonction du média, des moyens et du contexte dans lequel vous partagez du Matériel Adapté. + + 3. Vous ne pouvez pas offrir ou imposer des termes ou conditions supplémentaires ou différents sur, ou appliquer des Mesures Technologiques Effectives à, le Matériel Adapté qui restreignent l'exercice des droits accordés en vertu de la Licence de l'Adaptateur que vous appliquez. + + +### Section 4 -- Droits de Base de Données Sui Generis. + +Lorsque les Droits Licenciés incluent des Droits de Base de Données Sui Generis qui s'appliquent à votre utilisation du Matériel Licencié : + + a. pour éviter toute ambiguïté, la Section 2(a)(1) vous accorde le droit d'extraire, réutiliser, reproduire et partager tout ou une partie substantielle du contenu de la base de données ; + + b. si vous incluez tout ou une partie substantielle du contenu de la base de données dans une base de données dans laquelle vous détenez des Droits de Base de Données Sui Generis, alors la base de données dans laquelle vous détenez des Droits de Base de Données Sui Generis (mais pas son contenu individuel) est du Matériel Adapté, + + y compris aux fins de la Section 3(b) ; et + c. vous devez respecter les conditions de la Section 3(a) si vous partagez tout ou une partie substantielle du contenu de la base de données. + +Pour éviter toute ambiguïté, cette Section 4 complète et ne remplace pas vos obligations en vertu de cette Licence Publique lorsque les Droits Licenciés incluent d'autres Droits d'Auteur et Droits Similaires. + + +### Section 5 -- Clause de non-responsabilité et limitation de responsabilité. + + a. À MOINS QUE CE SOIT AUTREMENT ENTREPRIS PAR LE DONNEUR DE LICENCE, DANS LA MESURE DU POSSIBLE, LE DONNEUR DE LICENCE OFFRE LE MATÉRIEL LICENCIÉ TEL QUEL ET TEL QUE DISPONIBLE, ET NE FAIT AUCUNE DÉCLARATION OU GARANTIE DE QUELQUE NATURE CONCERNANT LE MATÉRIEL LICENCIÉ, QU'ELLE SOIT EXPRESSE, IMPLICITE, STATUTAIRE OU AUTRE. CECI INCLUT, SANS LIMITATION, DES GARANTIES DE TITRE, DE COMMERCIALISATION, D'ADÉQUATION À UN OBJECTIF PARTICULIER, DE NON-VIOLATION, D'ABSENCE DE DÉFAUTS LATENTS OU AUTRES, D'EXACTITUDE, OU DE LA PRÉSENCE OU DE L'ABSENCE D'ERREURS, QU'ELLES SOIENT OU NON CONNUES OU DÉCOUVRABLES. LORSQUE DES CLAUSES DE NON-RESPONSABILITÉ NE SONT PAS AUTORISÉES EN TOTALITÉ OU EN PARTIE, CETTE CLAUSE DE NON-RESPONSABILITÉ PEUT NE PAS S'APPLIQUER À VOUS. + + b. DANS LA MESURE DU POSSIBLE, EN AUCUN CAS LE DONNEUR DE LICENCE NE SERA RESPONSABLE ENVERS VOUS SUR UNE BASE JURIDIQUE (Y COMPRIS, SANS LIMITATION, LA NÉGLIGENCE) OU AUTRE POUR TOUTE PERTE DIRECTE, SPÉCIALE, INDIRECTE, ACCESSOIRE, CONSÉCUTIVE, PÉNALE, EXEMPLAIRE OU AUTRE, COÛTS, DÉPENSES OU DOMMAGES RÉSULTANT DE CETTE LICENCE PUBLIQUE OU DE L'UTILISATION DU MATÉRIEL LICENCIÉ, MÊME SI LE DONNEUR DE LICENCE A ÉTÉ AVISÉ DE LA POSSIBILITÉ DE TELS PERTES, COÛTS, DÉPENSES OU DOMMAGES. LORSQU'UNE LIMITATION DE RESPONSABILITÉ N'EST PAS AUTORISÉE EN TOTALITÉ OU EN PARTIE, CETTE LIMITATION PEUT NE PAS S'APPLIQUER À VOUS. + + c. La clause de non-responsabilité et la limitation de responsabilité fournies ci-dessus doivent être interprétées de manière à, dans la mesure du possible, approcher le plus possible une renonciation absolue et une renonciation à toute responsabilité. + + +### Section 6 -- Durée et Résiliation. + + a. Cette Licence Publique s'applique pour la durée des Droits d'Auteur et Droits Similaires licenciés ici. Cependant, si vous + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des erreurs d'interprétation résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/fr/lessons/sketchnotes/README.md b/translations/fr/lessons/sketchnotes/README.md new file mode 100644 index 00000000..cf057bd3 --- /dev/null +++ b/translations/fr/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +Tous les croquis du programme peuvent être téléchargés ici. + +🎨 Créé par : 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/) + +**Avertissement** : +Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous nous efforçons d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source autoritaire. Pour des informations critiques, une traduction humaine professionnelle est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction. \ No newline at end of file diff --git a/translations/hi/README.md b/translations/hi/README.md new file mode 100644 index 00000000..cdb049f3 --- /dev/null +++ b/translations/hi/README.md @@ -0,0 +1,140 @@ +[![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 - _Sketchnote by [@girlie_mac](https://twitter.com/girlie_mac)_ | + +हमारे 12-सप्ताह, 24-पाठों के पाठ्यक्रम के साथ **कृत्रिम बुद्धिमत्ता** (AI) की दुनिया का अन्वेषण करें! इसमें व्यावहारिक पाठ, क्विज़ और प्रयोगशालाएँ शामिल हैं। यह पाठ्यक्रम शुरुआती लोगों के लिए अनुकूल है और इसमें TensorFlow और PyTorch जैसे उपकरणों के साथ-साथ AI में नैतिकता को भी शामिल किया गया है। + +## आप क्या सीखेंगे + +**[पाठ्यक्रम का माइंडमैप](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +इस पाठ्यक्रम में, आप सीखेंगे: + +* कृत्रिम बुद्धिमत्ता के विभिन्न दृष्टिकोण, जिसमें **ज्ञान प्रतिनिधित्व** और तर्क के साथ "अच्छा पुराना" प्रतीकात्मक दृष्टिकोण शामिल है ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence))। +* **न्यूरल नेटवर्क** और **डीप लर्निंग**, जो आधुनिक AI के मूल में हैं। हम इन महत्वपूर्ण विषयों के पीछे के सिद्धांतों को [TensorFlow](http://Tensorflow.org) और [PyTorch](http://pytorch.org) जैसे दो सबसे लोकप्रिय ढाँचों में कोड का उपयोग करके स्पष्ट करेंगे। +* चित्रों और पाठ के साथ काम करने के लिए **न्यूरल आर्किटेक्चर**। हम हाल के मॉडलों को कवर करेंगे लेकिन अत्याधुनिक में थोड़ी कमी हो सकती है। +* कम लोकप्रिय AI दृष्टिकोण, जैसे **जीन संबंधी एल्गोरिदम** और **मल्टी-एजेंट सिस्टम**। + +हम इस पाठ्यक्रम में क्या कवर नहीं करेंगे: + +> [इस पाठ्यक्रम के लिए सभी अतिरिक्त संसाधनों को हमारे Microsoft Learn संग्रह में खोजें](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **व्यापार में AI** के उपयोग के व्यापार मामले। Microsoft Learn पर [व्यापार उपयोगकर्ताओं के लिए AI का परिचय](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) सीखने का मार्ग लेने पर विचार करें, या [AI बिजनेस स्कूल](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), जिसे [INSEAD](https://www.insead.edu/) के सहयोग से विकसित किया गया है। +* **क्लासिक मशीन लर्निंग**, जिसे हमारे [शुरुआत के लिए मशीन लर्निंग पाठ्यक्रम](http://github.com/Microsoft/ML-for-Beginners) में अच्छी तरह से वर्णित किया गया है। +* **[संज्ञानात्मक सेवाओं](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** का उपयोग करके बनाई गई व्यावहारिक AI अनुप्रयोग। इसके लिए, हम अनुशंसा करते हैं कि आप Microsoft Learn के मॉड्यूल से [दृश्य](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [प्राकृतिक भाषा प्रसंस्करण](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI सेवा के साथ जनरेटिव AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** और अन्य से शुरू करें। +* विशिष्ट ML **क्लाउड ढांचे**, जैसे [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), या [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)। [Azure Machine Learning के साथ मशीन लर्निंग समाधान बनाना और संचालित करना](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) और [Azure Databricks के साथ मशीन लर्निंग समाधान बनाना और संचालित करना](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) अध्ययन पथों का उपयोग करने पर विचार करें। +* **संवादी एआई** और **चैट बॉट्स**। एक अलग [संवादी एआई समाधान बनाएं](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) अध्ययन पथ है, और आप अधिक जानकारी के लिए [इस ब्लॉग पोस्ट](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) को भी देख सकते हैं। +* **डीप लर्निंग के पीछे की गहरी गणित**। इसके लिए, हम [डीप लर्निंग](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) की सिफारिश करते हैं जो इयान गुडफेलो, योशुआ बेंगियो और एरोन कौरविल द्वारा लिखी गई है, जो ऑनलाइन भी उपलब्ध है [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/) पर। + +क्लाउड में _एआई_ विषयों के लिए एक सरल परिचय के लिए, आप [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) | [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 | [संवहन तंत्रिका नेटवर्क](./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) | [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 | [ऑटोएन्कोडर्स और 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) | [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://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | +| V | [**प्राकृतिक भाषा प्रसंस्करण**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [माइक्रोसॉफ्ट एज़्योर पर प्राकृतिक भाषा प्रसंस्करण का अन्वेषण करें](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [पाठ प्रतिनिधित्व. बोव/टीएफ-आईडीएफ](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [अर्थात्मक शब्द एम्बेडिंग. वर्ड2वेक और ग्लोवे](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [भाषा मॉडलिंग. अपने खुद के एम्बेडिंग को प्रशिक्षित करना](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [प्रयोगशाला](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [पुनरावर्ती न्यूरल नेटवर्क](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [जनरेटिव पुनरावर्ती नेटवर्क](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [प्रयोगशाला](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [ट्रांसफार्मर. 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) | | + +## प्रत्येक पाठ में शामिल है + +* पूर्व-पठन सामग्री +* निष्पादित होने योग्य जुपिटर नोटबुक, जो अक्सर ढांचे के लिए विशिष्ट होते हैं (**PyTorch** या **TensorFlow**)। निष्पादित होने वाला नोटबुक कई सिद्धांतिक सामग्री भी शामिल करता है, इसलिए विषय को समझने के लिए आपको कम से कम एक संस्करण के नोटबुक (या तो PyTorch या TensorFlow) के माध्यम से जाना होगा। +* कुछ विषयों के लिए उपलब्ध **प्रयोगशालाएँ**, जो आपको सीखी गई सामग्री को एक विशेष समस्या पर लागू करने का अवसर देती हैं। +* कुछ अनुभागों में [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) मॉड्यूल के लिंक होते हैं जो संबंधित विषयों को कवर करते हैं। + +## शुरू करने के लिए + +- हमने आपके विकास वातावरण को सेट करने में मदद के लिए एक [सेटअप पाठ](./lessons/0-course-setup/setup.md) बनाया है। - शिक्षकों के लिए, हमने आपके लिए भी एक [पाठ्यक्रम सेटअप पाठ](./lessons/0-course-setup/for-teachers.md) बनाया है! +- [VSCode या Codepace में कोड चलाने के लिए](./lessons/0-course-setup/how-to-run.md) + +इन चरणों का पालन करें: + +रेपो को फोर्क करें: इस पृष्ठ के शीर्ष-दाएं कोने पर "Fork" बटन पर क्लिक करें। + +रेपो को क्लोन करें: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +बाद में इसे आसानी से खोजने के लिए इस रेपो को स्टार (🌟) करना न भूलें। + +## अन्य शिक्षार्थियों से मिलें + +हमारे [आधिकारिक एआई डिस्कॉर्ड सर्वर](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) से जुड़ें ताकि आप इस पाठ्यक्रम को ले रहे अन्य शिक्षार्थियों से मिल सकें और नेटवर्क बना सकें और सहायता प्राप्त कर सकें। + +## क्विज़ + +> **क्विज़ के बारे में एक नोट**: सभी क्विज़ क्विज़-ऐप फ़ोल्डर में आदि\quiz-app में शामिल हैं, वे पाठों के भीतर लिंक किए गए हैं, क्विज़ ऐप को स्थानीय रूप से चलाया जा सकता है या Azure पर तैनात किया जा सकता है; `quiz-app` फ़ोल्डर में दिए गए निर्देशों का पालन करें। इन्हें धीरे-धीरे स्थानीयकृत किया जा रहा है। + +## सहायता की आवश्यकता है + +क्या आपके पास सुझाव हैं या आपने वर्तनी या कोड की गलतियाँ पाई हैं? एक मुद्दा उठाएँ या एक पुल अनुरोध बनाएँ। + +## विशेष धन्यवाद + +* **✍️ मुख्य लेखक:** [Dmitry Soshnikov](http://soshnikov.com), पीएचडी +* **🔥 संपादक:** [Jen Looper](https://twitter.com/jenlooper), पीएचडी +* **🎨 स्केच नोट चित्रकार:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ क्विज़ निर्माता:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 मुख्य योगदानकर्ता:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## अन्य पाठ्यक्रम + +हमारी टीम अन्य पाठ्यक्रमों का निर्माण करती है! देखें: + +* [शुरुआत के लिए डेटा विज्ञान](https://aka.ms/ds4beginners) +* [**संस्करण 2.0** जनरेटिव एआई के लिए शुरुआती](https://aka.ms/genai-beginners) +* [**नया** साइबर सुरक्षा के लिए शुरुआती](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [शुरुआत के लिए वेब विकास](https://aka.ms/webdev-beginners) +* [शुरुआत के लिए IoT](https://aka.ms/iot-beginners) +* [शुरुआत के लिए मशीन लर्निंग](https://aka.ms/ml4beginners) +* [शुरुआत के लिए XR विकास](https://aka.ms/xr-dev-for-beginners) +* [एआई जोड़ी प्रोग्रामिंग के लिए GitHub Copilot में महारत](https://aka.ms/GitHubCopilotAI) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/SECURITY.md b/translations/hi/SECURITY.md new file mode 100644 index 00000000..9b09ab22 --- /dev/null +++ b/translations/hi/SECURITY.md @@ -0,0 +1,40 @@ +## सुरक्षा + +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 सुरक्षा प्रतिक्रिया केंद्र PGP कुंजी पृष्ठ](https://aka.ms/opensource/security/pgpkey) से डाउनलोड करें। + +आपको 24 घंटे के भीतर एक प्रतिक्रिया प्राप्त होनी चाहिए। यदि किसी कारणवश आपको नहीं मिलती है, तो कृपया यह सुनिश्चित करने के लिए ईमेल के माध्यम से फॉलो अप करें कि हमने आपका मूल संदेश प्राप्त किया है। अतिरिक्त जानकारी [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) पर मिल सकती है। + +कृपया नीचे सूचीबद्ध अनुरोधित जानकारी शामिल करें (जितना संभव हो) ताकि हम संभावित मुद्दे की प्रकृति और दायरे को बेहतर ढंग से समझ सकें: + + * मुद्दे का प्रकार (जैसे बफर ओवरफ्लो, SQL इंजेक्शन, क्रॉस-साइट स्क्रिप्टिंग, आदि) + * स्रोत फ़ाइल(ओं) के पूर्ण पथ जो मुद्दे के प्रकट होने से संबंधित हैं + * प्रभावित स्रोत कोड का स्थान (टैग/ब्रांच/कमिट या प्रत्यक्ष URL) + * मुद्दे को पुन: उत्पन्न करने के लिए आवश्यक कोई विशेष कॉन्फ़िगरेशन + * मुद्दे को पुन: उत्पन्न करने के लिए चरण-दर-चरण निर्देश + * प्रमाण-की-धारणा या शोषण कोड (यदि संभव हो) + * मुद्दे का प्रभाव, जिसमें यह शामिल है कि एक हमलावर मुद्दे का शोषण कैसे कर सकता है + +यह जानकारी हमें आपकी रिपोर्ट को अधिक तेजी से ट्रायज करने में मदद करेगी। + +यदि आप एक बग बाउंटी के लिए रिपोर्ट कर रहे हैं, तो अधिक पूर्ण रिपोर्टें उच्च बाउंटी पुरस्कार में योगदान कर सकती हैं। कृपया हमारे [Microsoft बग बाउंटी कार्यक्रम](https://aka.ms/opensource/security/bounty) पृष्ठ पर अधिक जानकारी के लिए जाएं। + +## प्राथमिक भाषाएँ + +हम सभी संचारों को अंग्रेजी में पसंद करते हैं। + +## नीति + +Microsoft [समन्वित सुरक्षा प्रकटीकरण](https://aka.ms/opensource/security/cvd) के सिद्धांत का पालन करता है। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/etc/CODE_OF_CONDUCT.md b/translations/hi/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..25e57291 --- /dev/null +++ b/translations/hi/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Microsoft ओपन सोर्स आचार संहिता + +इस परियोजना ने [Microsoft ओपन सोर्स आचार संहिता](https://opensource.microsoft.com/codeofconduct/) को अपनाया है। + +संसाधन: + +- [Microsoft ओपन सोर्स आचार संहिता](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft आचार संहिता FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- प्रश्नों या चिंताओं के लिए संपर्क करें [opencode@microsoft.com](mailto:opencode@microsoft.com) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/etc/CONTRIBUTING.md b/translations/hi/etc/CONTRIBUTING.md new file mode 100644 index 00000000..7ec9d8c2 --- /dev/null +++ b/translations/hi/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# योगदान + +यह परियोजना योगदान और सुझावों का स्वागत करती है। अधिकांश योगदान के लिए आपको एक योगदानकर्ता लाइसेंस अनुबंध (CLA) पर सहमति देने की आवश्यकता होती है, जिसमें यह घोषित किया जाता है कि आपके पास यह अधिकार है, और आप वास्तव में, हमें आपके योगदान का उपयोग करने के अधिकार प्रदान करते हैं। विवरण के लिए, देखें https://cla.microsoft.com। + +जब आप एक पुल अनुरोध सबमिट करते हैं, तो एक CLA-बॉट स्वचालित रूप से यह निर्धारित करेगा कि क्या आपको CLA प्रदान करने की आवश्यकता है और PR को उपयुक्त रूप से सजाएगा (जैसे, लेबल, टिप्पणी)। बस बॉट द्वारा प्रदान किए गए निर्देशों का पालन करें। आपको इसे हमारे CLA का उपयोग करने वाले सभी रिपॉजिटरी में केवल एक बार करना होगा। + +इस परियोजना ने [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) को अपनाया है। अधिक जानकारी के लिए [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) देखें या किसी भी अतिरिक्त प्रश्न या टिप्पणियों के साथ [opencode@microsoft.com](mailto:opencode@microsoft.com) से संपर्क करें। + +# योगदान की तलाश + +हम वर्तमान में निम्नलिखित विषयों पर योगदान के लिए सक्रिय रूप से देख रहे हैं: + +- [ ] गहन पुनर्बलन शिक्षण पर अनुभाग लिखें +- [ ] वस्तु पहचान पर अनुभाग + नोटबुक में सुधार करें +- [ ] PyTorch Lightning (इस [अनुभाग](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md) के लिए) +- [ ] नामित इकाई पहचान पर अनुभाग + नमूने लिखें +- [ ] हमारे अपने एम्बेडिंग के प्रशिक्षण के लिए नमूने बनाएं इस [अनुभाग](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) के लिए + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/etc/Mindmap.md b/translations/hi/etc/Mindmap.md new file mode 100644 index 00000000..1166f734 --- /dev/null +++ b/translations/hi/etc/Mindmap.md @@ -0,0 +1,76 @@ +# एआई + +## [एआई का परिचय](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - एआई की परिभाषा + - एआई का इतिहास + - एआई के दृष्टिकोण + - शीर्ष-से-नीचे/प्रतीकात्मक + - नीचे-से-ऊपर/न्यूरल + - विकासात्मक + - समन्वयात्मक / उभरता एआई + - [माइक्रोसॉफ्ट एआई बिजनेस स्कूल](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [प्रतीकात्मक एआई](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - ज्ञान प्रतिनिधित्व + - [विशेषज्ञ प्रणाली](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [ऑन्टोलॉजीज़](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - सेमांटिक वेब + +## [न्यूरल नेटवर्क](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [पर्सेप्ट्रॉन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [मल्टी-लेयर्ड नेटवर्क](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [फ्रेमवर्क का परिचय](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [पायटॉर्च](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [टेंसरफ्लो](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [ओवरफिटिंग](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [कंप्यूटर दृष्टि](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - MS लर्न पर + - [एआई फंडामेंटल्स: कंप्यूटर दृष्टि का अन्वेषण करें](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [पायटॉर्च के साथ सीवी](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [टेंसरफ्लो के साथ सीवी](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [सीवी का परिचय। ओपनसीवी](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [संविधानिक नेटवर्क](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [सीएनएन आर्किटेक्चर](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [स्थानांतरण अधिगम](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [प्रशिक्षण तकनीकें](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [ऑटोएन्कोडर्स और वीएई](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [जनरेटिव एडवर्सेरियल नेटवर्क्स](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [शैली स्थानांतरण](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [वस्तु पहचान](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [सेगमेंटेशन](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [प्राकृतिक भाषा प्रसंस्करण](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - MS लर्न पर + - [एआई फंडामेंटल्स: एनएलपी का अन्वेषण करें](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [पायटॉर्च के साथ एनएलपी](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [टेंसरफ्लो के साथ एनएलपी](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [पाठ प्रतिनिधित्व](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - शब्दों का थैला + - 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 + +**अस्वीकृति**: +यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/etc/SUPPORT.md b/translations/hi/etc/SUPPORT.md new file mode 100644 index 00000000..8d2d2429 --- /dev/null +++ b/translations/hi/etc/SUPPORT.md @@ -0,0 +1,14 @@ +# समर्थन + +## समस्याएँ कैसे दर्ज करें और मदद प्राप्त करें + +यह परियोजना बग और विशेषताओं के अनुरोधों को ट्रैक करने के लिए GitHub Issues का उपयोग करती है। कृपया नए मुद्दे दर्ज करने से पहले मौजूदा मुद्दों की खोज करें ताकि डुप्लिकेट से बचा जा सके। नए मुद्दों के लिए, अपनी बग या विशेषता अनुरोध को एक नए मुद्दे के रूप में दर्ज करें। + +इस परियोजना का उपयोग करने के संबंध में मदद और प्रश्नों के लिए, कृपया चर्चा बोर्डों का उपयोग करें। + +## माइक्रोसॉफ्ट समर्थन नीति + +इस परियोजना के लिए समर्थन उपरोक्त सूचीबद्ध संसाधनों तक सीमित है। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/etc/TRANSLATIONS.md b/translations/hi/etc/TRANSLATIONS.md new file mode 100644 index 00000000..16c231a4 --- /dev/null +++ b/translations/hi/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# पाठों का अनुवाद करके योगदान दें + +हम इस पाठ्यक्रम में पाठों के अनुवाद का स्वागत करते हैं! + +## दिशानिर्देश + +प्रत्येक पाठ फ़ोल्डर और पाठ परिचय फ़ोल्डर में अनुवादित मार्कडाउन फ़ाइलें हैं। + +> ध्यान दें, कृपया कोड नमूना फ़ाइलों में किसी भी कोड का अनुवाद न करें; अनुवाद करने के लिए केवल README, असाइनमेंट और प्रश्नोत्तरी हैं। धन्यवाद! + +अनुवादित फ़ाइलों को इस नामकरण कन्वेंशन का पालन करना चाहिए: + +**README._[language]_.md** + +जहाँ _[language]_ एक दो-अक्षरी भाषा संक्षिप्त नाम है जो ISO 639-1 मानक का पालन करता है (जैसे `README.es.md` के लिए स्पेनिश और `README.nl.md` के लिए डच)। + +**assignment._[language]_.md** + +README की तरह, कृपया असाइनमेंट का भी अनुवाद करें। + +**प्रश्नोत्तरी** + +1. अपने अनुवाद को प्रश्नोत्तरी-ऐप में जोड़ें, एक फ़ाइल यहाँ जोड़कर: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, उचित नामकरण कन्वेंशन के साथ (en.json, fr.json)। **कृपया 'true' या 'false' शब्दों का स्थानीयकरण न करें। धन्यवाद!** + +2. प्रश्नोत्तरी-ऐप के App.vue फ़ाइल में ड्रॉपडाउन में अपने भाषा कोड को जोड़ें। + +3. प्रश्नोत्तरी-ऐप के [translations index.js फ़ाइल](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) को संपादित करें ताकि आपकी भाषा जोड़ी जा सके। + +4. अंत में, अपने अनुवादित README.md फ़ाइलों में सभी प्रश्नोत्तरी लिंक को संपादित करें ताकि सीधे आपके अनुवादित प्रश्नोत्तरी की ओर इशारा करें: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 बन जाए https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**धन्यवाद** + +हम आपके प्रयासों की वास्तव में सराहना करते हैं! + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/etc/quiz-app/README.md b/translations/hi/etc/quiz-app/README.md new file mode 100644 index 00000000..f6a2f0e5 --- /dev/null +++ b/translations/hi/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# प्रश्नोत्तरी + +ये प्रश्नोत्तरी एआई पाठ्यक्रम के लिए व्याख्यान से पहले और बाद की प्रश्नोत्तरी हैं जो https://aka.ms/ai-beginners पर उपलब्ध हैं। + +## अनुवादित प्रश्नोत्तरी सेट जोड़ना + +`assets/translations` फ़ोल्डरों में मेल खाते प्रश्नोत्तरी संरचनाएँ बनाकर एक प्रश्नोत्तरी अनुवाद जोड़ें। मानक प्रश्नोत्तरी `assets/translations/en` में हैं। प्रश्नोत्तरी को पाठ द्वारा कई समूहों में विभाजित किया गया है। सुनिश्चित करें कि आप सही प्रश्नोत्तरी अनुभाग के साथ संख्या को संरेखित करें। इस पाठ्यक्रम में कुल 40 प्रश्नोत्तरी हैं, जिसकी गिनती 0 से शुरू होती है। + +अनुवाद संपादित करने के बाद, अनुवाद फ़ोल्डर में index.js फ़ाइल को संपादित करें ताकि सभी फ़ाइलों को `en` में उल्लिखित मानकों के अनुसार आयात किया जा सके। + +`assets/translations` में `index.js` फ़ाइल को संपादित करें ताकि नए अनुवादित फ़ाइलों को आयात किया जा सके। + +फिर, इस ऐप में `App.vue` में ड्रॉपडाउन को संपादित करें ताकि आपकी भाषा जोड़ी जा सके। स्थानीयकृत संक्षिप्त नाम को आपकी भाषा के फ़ोल्डर नाम से मेल करें। + +अंत में, यदि वे मौजूद हैं, तो अनुवादित पाठों में सभी प्रश्नोत्तरी लिंक को संपादित करें ताकि इस स्थानीयकरण को एक क्वेरी पैरामीटर के रूप में शामिल किया जा सके: उदाहरण के लिए `?loc=fr`। + +## परियोजना सेटअप + +``` +npm install +``` + +### विकास के लिए संकलन और हॉट-रीलोड + +``` +npm run serve +``` + +### उत्पादन के लिए संकलन और संकुचन + +``` +npm run build +``` + +### फ़ाइलों की लिंटिंग और सुधार + +``` +npm run lint +``` + +### कॉन्फ़िगरेशन कस्टमाइज़ करें + +[कॉन्फ़िगरेशन संदर्भ](https://cli.vuejs.org/config/) देखें। + +क्रेडिट: इस प्रश्नोत्तरी ऐप के मूल संस्करण के लिए धन्यवाद: https://github.com/arpan45/simple-quiz-vue + +## Azure पर तैनाती + +यहां एक चरण-दर-चरण मार्गदर्शिका है जो आपको शुरुआत करने में मदद करेगी: + +1. एक GitHub रिपॉजिटरी को फोर्क करें +सुनिश्चित करें कि आपका स्थैतिक वेब ऐप कोड आपके GitHub रिपॉजिटरी में है। इस रिपॉजिटरी को फोर्क करें। + +2. एक Azure स्थैतिक वेब ऐप बनाएं +- एक [Azure खाता](http://azure.microsoft.com) बनाएं +- [Azure पोर्टल](https://portal.azure.com) पर जाएं +- "एक संसाधन बनाएं" पर क्लिक करें और "स्थैतिक वेब ऐप" के लिए खोजें। +- "बनाएँ" पर क्लिक करें। + +3. स्थैतिक वेब ऐप कॉन्फ़िगर करें +- मूल बातें: सदस्यता: अपनी Azure सदस्यता चुनें। +- संसाधन समूह: एक नया संसाधन समूह बनाएं या एक मौजूदा का उपयोग करें। +- नाम: अपने स्थैतिक वेब ऐप के लिए एक नाम प्रदान करें। +- क्षेत्र: अपने उपयोगकर्ताओं के निकटतम क्षेत्र का चयन करें। + +- #### तैनाती विवरण: +- स्रोत: "GitHub" का चयन करें। +- GitHub खाता: Azure को आपके GitHub खाते तक पहुँचने के लिए अधिकृत करें। +- संगठन: अपने GitHub संगठन का चयन करें। +- रिपॉजिटरी: उस रिपॉजिटरी को चुनें जिसमें आपका स्थैतिक वेब ऐप है। +- शाखा: उस शाखा का चयन करें जिससे आप तैनात करना चाहते हैं। + +- #### निर्माण विवरण: +- निर्माण प्रीसेट: उस ढांचे का चयन करें जिसके साथ आपका ऐप बनाया गया है (जैसे, React, Angular, Vue, आदि)। +- ऐप स्थान: उस फ़ोल्डर को निर्दिष्ट करें जिसमें आपका ऐप कोड है (जैसे, / यदि यह रूट में है)। +- एपीआई स्थान: यदि आपके पास एक एपीआई है, तो उसका स्थान निर्दिष्ट करें (वैकल्पिक)। +- आउटपुट स्थान: उस फ़ोल्डर को निर्दिष्ट करें जहाँ निर्माण आउटपुट उत्पन्न होता है (जैसे, build या dist)। + +4. समीक्षा और बनाएँ +अपनी सेटिंग्स की समीक्षा करें और "बनाएँ" पर क्लिक करें। Azure आवश्यक संसाधनों को सेट अप करेगा और आपकी रिपॉजिटरी में एक GitHub Actions वर्कफ़्लो बनाएगा। + +5. GitHub Actions वर्कफ़्लो +Azure स्वचालित रूप से आपकी रिपॉजिटरी में एक GitHub Actions वर्कफ़्लो फ़ाइल बनाएगा (.github/workflows/azure-static-web-apps-.yml)। यह वर्कफ़्लो निर्माण और तैनाती प्रक्रिया को संभालेगा। + +6. तैनाती की निगरानी करें +अपने GitHub रिपॉजिटरी में "क्रियाएँ" टैब पर जाएं। +आपको एक वर्कफ़्लो चलाता हुआ दिखाई देना चाहिए। यह वर्कफ़्लो आपके स्थैतिक वेब ऐप को Azure पर निर्माण और तैनात करेगा। +एक बार जब वर्कफ़्लो पूरा हो जाए, तो आपका ऐप प्रदान किए गए Azure URL पर लाइव होगा। + +### उदाहरण वर्कफ़्लो फ़ाइल + +यहाँ एक उदाहरण है कि GitHub Actions वर्कफ़्लो फ़ाइल कैसी दिख सकती है: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### अतिरिक्त संसाधन +- [Azure स्थैतिक वेब ऐप्स दस्तावेज़ीकरण](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions दस्तावेज़ीकरण](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/0-course-setup/for-teachers.md b/translations/hi/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..850108b8 --- /dev/null +++ b/translations/hi/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# शिक्षकों के लिए + +क्या आप इस पाठ्यक्रम का उपयोग अपने कक्षा में करना चाहेंगे? कृपया बेझिझक करें! + +वास्तव में, आप इसे GitHub Classroom का उपयोग करके GitHub के भीतर भी उपयोग कर सकते हैं। + +इसके लिए, इस रिपॉजिटरी को फोर्क करें। आपको प्रत्येक पाठ के लिए एक अलग रिपॉजिटरी बनाने की आवश्यकता होगी, इसलिए आपको प्रत्येक फ़ोल्डर को अलग-अलग रिपॉजिटरी में निकालने की आवश्यकता होगी। इस तरह, [GitHub Classroom](https://classroom.github.com/classrooms) प्रत्येक पाठ को अलग-अलग उठा सकता है। + +इन [पूर्ण निर्देशों](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) से आपको अपने कक्षा को स्थापित करने का विचार मिलेगा। + +## रिपॉजिटरी का उपयोग करना जैसा है + +यदि आप इस रिपॉजिटरी का उपयोग वर्तमान स्थिति में करना चाहते हैं, बिना GitHub Classroom का उपयोग किए, तो यह भी किया जा सकता है। आपको अपने छात्रों के साथ संवाद करना होगा कि किस पाठ पर एक साथ काम करना है। + +एक ऑनलाइन प्रारूप (ज़ूम, टीम्स, या अन्य) में आप क्विज़ के लिए ब्रेकआउट रूम बना सकते हैं, और छात्रों को तैयार होने में मदद करने के लिए मेंटर कर सकते हैं। फिर छात्रों को क्विज़ में शामिल होने के लिए आमंत्रित करें और उनके उत्तर एक निश्चित समय पर 'समस्याओं' के रूप में सबमिट करें। यदि आप चाहते हैं कि छात्र खुले में सहयोगात्मक रूप से काम करें, तो आप असाइनमेंट के साथ भी यही कर सकते हैं। + +यदि आप अधिक निजी प्रारूप पसंद करते हैं, तो अपने छात्रों से कहें कि वे पाठ्यक्रम को, पाठ दर पाठ, अपने निजी GitHub रिपॉजिटरी में फोर्क करें, और आपको एक्सेस दें। फिर वे क्विज़ और असाइनमेंट को निजी रूप से पूरा कर सकते हैं और उन्हें आपके कक्षा रिपॉजिटरी पर मुद्दों के माध्यम से सबमिट कर सकते हैं। + +ऑनलाइन कक्षा प्रारूप में इसे काम करने के कई तरीके हैं। कृपया हमें बताएं कि आपके लिए क्या सबसे अच्छा काम करता है! + +## कृपया हमें अपने विचार बताएं + +हम चाहते हैं कि यह पाठ्यक्रम आपके और आपके छात्रों के लिए काम करे। कृपया चर्चा बोर्डों में हमें फीडबैक दें! + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/0-course-setup/how-to-run.md b/translations/hi/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..03de0bc6 --- /dev/null +++ b/translations/hi/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# कोड कैसे चलाएं + +इस पाठ्यक्रम में बहुत सारे निष्पादन योग्य उदाहरण और प्रयोगशालाएं शामिल हैं जिन्हें आप चलाना चाहेंगे। ऐसा करने के लिए, आपको इस पाठ्यक्रम के हिस्से के रूप में प्रदान किए गए Jupyter Notebooks में Python कोड चलाने की क्षमता की आवश्यकता है। कोड चलाने के लिए आपके पास कई विकल्प हैं: + +## अपने कंप्यूटर पर स्थानीय रूप से चलाना + +अपने कंप्यूटर पर स्थानीय रूप से कोड चलाने के लिए, आपको Python का कोई संस्करण स्थापित करना होगा। मैं व्यक्तिगत रूप से **[miniconda](https://conda.io/en/latest/miniconda.html)** स्थापित करने की सिफारिश करता हूं - यह एक हल्का इंस्टॉलेशन है जो विभिन्न Python **वर्चुअल वातावरणों** के लिए `conda` पैकेज प्रबंधक का समर्थन करता है। + +जब आप miniconda स्थापित कर लें, तो आपको रिपॉजिटरी क्लोन करनी होगी और इस पाठ्यक्रम के लिए उपयोग किए जाने वाले वर्चुअल वातावरण को बनाना होगा: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Python एक्सटेंशन के साथ Visual Studio Code का उपयोग करना + +पाठ्यक्रम का उपयोग करने का सबसे अच्छा तरीका इसे [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) में [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) में खोलना है। + +> **Note**: जब आप क्लोन करते हैं और VS Code में निर्देशिका खोलते हैं, तो यह स्वचालित रूप से आपको Python एक्सटेंशन स्थापित करने का सुझाव देगा। आपको ऊपर बताए अनुसार miniconda भी स्थापित करना होगा। + +> **Note**: यदि VS Code आपको कंटेनर में रिपॉजिटरी को फिर से खोलने का सुझाव देता है, तो आपको स्थानीय Python इंस्टॉलेशन का उपयोग करने के लिए इसे अस्वीकार करना होगा। + +### ब्राउज़र में Jupyter का उपयोग करना + +आप अपने कंप्यूटर पर ब्राउज़र से सीधे Jupyter वातावरण का भी उपयोग कर सकते हैं। वास्तव में, पारंपरिक Jupyter और Jupyter Hub दोनों स्वचालित पूर्णता, कोड हाइलाइटिंग आदि के साथ एक बहुत सुविधाजनक विकास वातावरण प्रदान करते हैं। + +स्थानीय रूप से Jupyter शुरू करने के लिए, पाठ्यक्रम की निर्देशिका पर जाएं, और निष्पादित करें: + +```bash +jupyter notebook +``` +या +```bash +jupyterhub +``` +इसके बाद आप किसी भी `.ipynb` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` फ़ोल्डर में जा सकते हैं जो इस रिपॉजिटरी के लिए कंटेनर बनाने के निर्देश देता है, VS Code आपको कोड को कंटेनर में फिर से खोलने का प्रस्ताव देगा। इसके लिए Docker इंस्टॉलेशन की आवश्यकता होगी, और यह अधिक जटिल भी होगा, इसलिए हम इसे अधिक अनुभवी उपयोगकर्ताओं के लिए सिफारिश करते हैं। + +## क्लाउड में चलाना + +यदि आप स्थानीय रूप से Python स्थापित नहीं करना चाहते हैं, और आपके पास कुछ क्लाउड संसाधनों तक पहुंच है - तो कोड को क्लाउड में चलाने का एक अच्छा विकल्प होगा। आप इसे करने के कई तरीके हैं: + +* **[GitHub Codespaces](https://github.com/features/codespaces)** का उपयोग करना, जो आपके लिए GitHub पर बनाया गया एक वर्चुअल वातावरण है, जिसे VS Code ब्राउज़र इंटरफ़ेस के माध्यम से एक्सेस किया जा सकता है। यदि आपके पास Codespaces तक पहुंच है, तो आप बस रिपॉजिटरी में **Code** बटन पर क्लिक कर सकते हैं, एक कोडस्पेस शुरू कर सकते हैं, और बिना समय बर्बाद किए चलना शुरू कर सकते हैं। +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** का उपयोग करना। [Binder](https://mybinder.org) एक मुफ्त कंप्यूटिंग संसाधन है जो क्लाउड में लोगों को GitHub पर कुछ कोड का परीक्षण करने के लिए प्रदान किया गया है। मुख्य पृष्ठ पर एक बटन है जो रिपॉजिटरी को Binder में खोलता है - यह आपको तेजी से बाइंडर साइट पर ले जाएगा, जो अंतर्निहित कंटेनर बनाएगा और आपके लिए Jupyter वेब इंटरफ़ेस शुरू करेगा। + +> **Note**: दुरुपयोग को रोकने के लिए, Binder को कुछ वेब संसाधनों तक पहुंच अवरुद्ध है। इससे कुछ कोड काम करने में रुकावट आ सकती है, जो सार्वजनिक इंटरनेट से मॉडल और/या डेटासेट लाते हैं। आपको कुछ समाधान खोजने की आवश्यकता हो सकती है। इसके अलावा, Binder द्वारा प्रदान किए गए कंप्यूट संसाधन काफी बुनियादी हैं, इसलिए प्रशिक्षण धीमा होगा, विशेष रूप से बाद के अधिक जटिल पाठों में। + +## GPU के साथ क्लाउड में चलाना + +इस पाठ्यक्रम के कुछ बाद के पाठ GPU समर्थन से बहुत लाभान्वित होंगे, क्योंकि अन्यथा प्रशिक्षण बहुत धीमा होगा। आपके पास कुछ विकल्प हैं, विशेष रूप से यदि आपके पास [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) के माध्यम से या अपने संस्थान के माध्यम से क्लाउड तक पहुंच है: + +* [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) बनाएं और Jupyter के माध्यम से इससे कनेक्ट करें। आप फिर मशीन पर सीधे रिपॉजिटरी क्लोन कर सकते हैं, और सीखना शुरू कर सकते हैं। NC-सीरीज VMs में GPU समर्थन है। + +> **Note**: कुछ सब्सक्रिप्शन, जिसमें Azure for Students शामिल है, बिना किसी अतिरिक्त सेटअप के GPU समर्थन प्रदान नहीं करते हैं। आपको तकनीकी सहायता अनुरोध के माध्यम से अतिरिक्त GPU कोर का अनुरोध करने की आवश्यकता हो सकती है। + +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) बनाएं और फिर वहां नोटबुक फीचर का उपयोग करें। [यह वीडियो](https://azure-for-academics.github.io/quickstart/azureml-papers/) दिखाता है कि Azure ML नोटबुक में रिपॉजिटरी को कैसे क्लोन करें और इसका उपयोग करना शुरू करें। + +आप Google Colab का भी उपयोग कर सकते हैं, जो कुछ मुफ्त GPU समर्थन के साथ आता है, और वहां Jupyter Notebooks अपलोड कर सकते हैं ताकि उन्हें एक-एक करके निष्पादित किया जा सके। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/0-course-setup/setup.md b/translations/hi/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..a0f6e757 --- /dev/null +++ b/translations/hi/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# इस पाठ्यक्रम के साथ शुरुआत करना + +## क्या आप एक छात्र हैं? + +नीचे दिए गए संसाधनों के साथ शुरुआत करें: + +* [छात्र हब पृष्ठ](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) इस पृष्ठ पर, आपको शुरुआती संसाधन, छात्र पैक, और यहां तक कि एक मुफ्त प्रमाण पत्र वाउचर प्राप्त करने के तरीके मिलेंगे। यह एक ऐसा पृष्ठ है जिसे आप बुकमार्क करना चाहेंगे और समय-समय पर जांचना चाहेंगे क्योंकि हम हर महीने सामग्री को बदलते हैं। +* [Microsoft छात्र लर्न एंबेसडर](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) एक वैश्विक छात्र एंबेसडर समुदाय में शामिल हों, यह Microsoft में आपकी एंट्री हो सकती है। + +**छात्रों**, पाठ्यक्रम का उपयोग करने के कुछ तरीके हैं। सबसे पहले, आप बस पाठ पढ़ सकते हैं और GitHub पर सीधे कोड देख सकते हैं। यदि आप किसी भी नोटबुक में कोड चलाना चाहते हैं - [हमारी निर्देश पढ़ें](./etc/how-to-run.md), और इसे करने के लिए और सलाह प्राप्त करें [इस ब्लॉग पोस्ट में](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **नोट**: [इस पाठ्यक्रम में कोड चलाने के लिए निर्देश](/how-to-run.md) + +## आत्म अध्ययन + +हालांकि, यदि आप पाठ्यक्रम को आत्म अध्ययन परियोजना के रूप में लेना चाहते हैं, तो हम सुझाव देते हैं कि आप पूरे रेपो को अपने GitHub खाते में फोर्क करें और अपने दम पर या एक समूह के साथ अभ्यास करें: + +* एक पूर्व-व्याख्यान क्विज़ से शुरू करें। +* व्याख्यान के लिए परिचयात्मक पाठ पढ़ें। +* यदि व्याख्यान में अतिरिक्त नोटबुक हैं, तो उन्हें पढ़ें और कोड को निष्पादित करें। यदि TensorFlow और PyTorch दोनों नोटबुक प्रदान किए गए हैं, तो आप उनमें से किसी एक पर ध्यान केंद्रित कर सकते हैं - अपना पसंदीदा ढांचा चुनें। +* नोटबुक में अक्सर कुछ चुनौतियाँ होती हैं जो आपको कोड को थोड़ा सा संशोधित करने के लिए कहती हैं ताकि आप प्रयोग कर सकें। +* व्याख्यान के बाद का क्विज़ लें। +* यदि मॉड्यूल के साथ एक प्रयोगशाला जुड़ी है - असाइनमेंट पूरा करें। +* "जोर से सीखें" के लिए [चर्चा बोर्ड](https://github.com/microsoft/AI-For-Beginners/discussions) पर जाएं। + +> आगे के अध्ययन के लिए, हम इन [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) मॉड्यूल और सीखने के पथों का पालन करने की सिफारिश करते हैं। + +**शिक्षकों**, हमने इस पाठ्यक्रम का उपयोग करने के लिए [कुछ सुझाव शामिल किए हैं](/for-teachers.md). + +--- + +## शिक्षाशास्त्र + +हमने इस पाठ्यक्रम का निर्माण करते समय दो शैक्षिक सिद्धांतों को चुना है: यह सुनिश्चित करना कि यह हाथों-हाथ **परियोजना-आधारित** है और इसमें **नियमित क्विज़** शामिल हैं। + +यह सुनिश्चित करके कि सामग्री परियोजनाओं के साथ मेल खाती है, प्रक्रिया को छात्रों के लिए अधिक आकर्षक बनाया जाता है और अवधारणाओं का संरक्षण बढ़ाया जाएगा। इसके अलावा, एक कक्षा से पहले का कम-जोखिम वाला क्विज़ छात्र के विषय को सीखने के इरादे को स्थापित करता है, जबकि कक्षा के बाद का दूसरा क्विज़ आगे के संरक्षण को सुनिश्चित करता है। यह पाठ्यक्रम लचीला और मजेदार डिजाइन किया गया है और इसे पूरी तरह से या आंशिक रूप से लिया जा सकता है। परियोजनाएँ छोटी शुरू होती हैं और 12-सप्ताह के चक्र के अंत तक धीरे-धीरे जटिल होती जाती हैं। + +> **क्विज़ के बारे में एक नोट**: सभी क्विज़ [इस ऐप में](https://red-field-0a6ddfd03.1.azurestaticapps.net/) शामिल हैं, जिसमें कुल 50 क्विज़ हैं, प्रत्येक में तीन प्रश्न हैं। ये पाठों के भीतर लिंक किए गए हैं लेकिन क्विज़ ऐप को स्थानीय रूप से चलाया जा सकता है; `etc/quiz-app` फ़ोल्डर में दिए गए निर्देशों का पालन करें। + +## ऑफ़लाइन पहुँच + +आप [Docsify](https://docsify.js.org/#/) का उपयोग करके इस दस्तावेज़ को ऑफ़लाइन चला सकते हैं। इस रेपो को फोर्क करें, [Docsify स्थापित करें](https://docsify.js.org/#/quickstart) अपने स्थानीय मशीन पर, और फिर इस रेपो के `etc/docsify` फ़ोल्डर में, `docsify serve` टाइप करें। वेबसाइट आपके लोकलहोस्ट पर पोर्ट 3000 पर सर्व की जाएगी: `localhost:3000`। पाठ्यक्रम का एक पीडीएफ [इस लिंक पर उपलब्ध है](../../../../../../etc/pdf/readme.pdf)। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृ भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/1-Intro/README.md b/translations/hi/lessons/1-Intro/README.md new file mode 100644 index 00000000..2e2372d7 --- /dev/null +++ b/translations/hi/lessons/1-Intro/README.md @@ -0,0 +1,56 @@ +> चित्र [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +जैसे-जैसे समय बीतता गया, कंप्यूटिंग संसाधन सस्ते होते गए, और अधिक डेटा उपलब्ध होने लगा, इसलिए न्यूरल नेटवर्क के दृष्टिकोण ने कई क्षेत्रों में मानवों के साथ प्रतिस्पर्धा में उत्कृष्ट प्रदर्शन दिखाना शुरू कर दिया, जैसे कि कंप्यूटर दृष्टि या भाषण समझना। पिछले दशक में, कृत्रिम बुद्धिमत्ता (Artificial Intelligence) शब्द का उपयोग ज्यादातर न्यूरल नेटवर्क के पर्याय के रूप में किया गया है, क्योंकि जो भी AI सफलताएँ हम सुनते हैं, वे अधिकांशतः इन पर आधारित होती हैं। + +हम देख सकते हैं कि दृष्टिकोण कैसे बदले हैं, उदाहरण के लिए, एक शतरंज खेलने वाले कंप्यूटर प्रोग्राम बनाने में: + +* प्रारंभिक शतरंज कार्यक्रम खोज पर आधारित थे - एक कार्यक्रम स्पष्ट रूप से अगले कुछ चालों के लिए एक प्रतिकारी के संभावित चालों का अनुमान लगाने की कोशिश करता था, और कुछ चालों में प्राप्त होने वाली सर्वोत्तम स्थिति के आधार पर एक सर्वोत्तम चाल का चयन करता था। यह [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) खोज एल्गोरिदम के विकास की ओर ले गया। +* खोज रणनीतियाँ खेल के अंत की ओर अच्छी तरह से काम करती हैं, जहाँ खोज स्थान संभावित चालों की एक छोटी संख्या द्वारा सीमित होती है। हालाँकि, खेल की शुरुआत में, खोज स्थान विशाल होता है, और एल्गोरिदम को मानव खिलाड़ियों के बीच मौजूदा मैचों से सीखकर सुधारा जा सकता है। बाद के प्रयोगों में [case-based reasoning](https://en.wikipedia.org/wiki/Case-based_reasoning) का उपयोग किया गया, जहाँ कार्यक्रम खेल में वर्तमान स्थिति के समान ज्ञान आधार में मामलों की खोज करता था। +* आधुनिक कार्यक्रम जो मानव खिलाड़ियों पर जीत हासिल करते हैं, वे न्यूरल नेटवर्क और [reinforcement learning](https://en.wikipedia.org/wiki/Reinforcement_learning) पर आधारित होते हैं, जहाँ कार्यक्रम केवल अपने आप से खेलकर और अपनी गलतियों से सीखकर खेलने का तरीका सीखते हैं - जैसे कि मानव शतरंज खेलने में सीखते हैं। हालाँकि, एक कंप्यूटर कार्यक्रम बहुत कम समय में कई अधिक खेल खेल सकता है, और इस प्रकार बहुत तेजी से सीख सकता है। + +✅ अन्य खेलों पर थोड़ा शोध करें जो AI द्वारा खेले गए हैं। + +इसी तरह, हम देख सकते हैं कि "बात करने वाले कार्यक्रमों" (जो ट्यूरिंग टेस्ट पास कर सकते हैं) बनाने के दृष्टिकोण में कैसे बदलाव आया है: + +* इस प्रकार के प्रारंभिक कार्यक्रम जैसे [Eliza](https://en.wikipedia.org/wiki/ELIZA), बहुत सरल व्याकरणिक नियमों और इनपुट वाक्य को प्रश्न में पुनः-फार्मेट करने पर आधारित थे। +* आधुनिक सहायक, जैसे Cortana, Siri या Google Assistant सभी हाइब्रिड सिस्टम हैं जो भाषण को पाठ में परिवर्तित करने और हमारी मंशा को पहचानने के लिए न्यूरल नेटवर्क का उपयोग करते हैं, और फिर आवश्यक क्रियाएँ करने के लिए कुछ तर्क या स्पष्ट एल्गोरिदम का उपयोग करते हैं। +* भविष्य में, हम एक पूर्ण न्यूरल-आधारित मॉडल की उम्मीद कर सकते हैं जो संवाद को स्वयं संभाल सके। हाल के GPT और [Turing-NLG](https://turing.microsoft.com/) न्यूरल नेटवर्क के परिवार ने इस मामले में शानदार सफलता दिखाई है। + +> चित्र [Dmitry Soshnikov](http://soshnikov.com), [फोटो](https://unsplash.com/photos/r8LmVbUKgns) [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto) द्वारा, Unsplash + +## हाल के AI अनुसंधान + +न्यूरल नेटवर्क अनुसंधान में हालिया विशाल वृद्धि 2010 के आसपास शुरू हुई, जब बड़े सार्वजनिक डेटासेट उपलब्ध होने लगे। एक विशाल छवियों का संग्रह जिसे [ImageNet](https://en.wikipedia.org/wiki/ImageNet) कहा जाता है, जिसमें लगभग 14 मिलियन एनोटेटेड छवियाँ हैं, ने [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) को जन्म दिया। + +![ILSVRC Accuracy](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> चित्र [Dmitry Soshnikov](http://soshnikov.com) द्वारा +In 2012, [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) का पहली बार छवि वर्गीकरण में उपयोग किया गया, जिससे वर्गीकरण त्रुटियों में एक महत्वपूर्ण कमी आई (लगभग 30% से 16.4% तक)। 2015 में, Microsoft Research का ResNet आर्किटेक्चर [मानव-स्तरीय सटीकता](https://doi.org/10.1109/ICCV.2015.123) प्राप्त करने में सफल रहा। + +तब से, न्यूरल नेटवर्क ने कई कार्यों में बहुत सफल व्यवहार प्रदर्शित किया है: + +--- + +वर्ष | मानव समानता प्राप्त की +-----|-------- +2015 | [छवि वर्गीकरण](https://doi.org/10.1109/ICCV.2015.123) +2016 | [संवादात्मक भाषण पहचान](https://arxiv.org/abs/1610.05256) +2018 | [स्वचालित मशीन अनुवाद](https://arxiv.org/abs/1803.05567) (चीनी से अंग्रेजी) +2020 | [छवि कैप्शनिंग](https://arxiv.org/abs/2009.13682) + +पिछले कुछ वर्षों में, हमने बड़े भाषा मॉडलों, जैसे कि BERT और GPT-3 के साथ विशाल सफलताओं का गवाह बने हैं। यह मुख्य रूप से इस तथ्य के कारण हुआ कि बहुत सारे सामान्य पाठ डेटा उपलब्ध हैं जो हमें मॉडलों को पाठों की संरचना और अर्थ को कैप्चर करने के लिए प्रशिक्षित करने की अनुमति देते हैं, उन्हें सामान्य पाठ संग्रह पर पूर्व-प्रशिक्षित करते हैं, और फिर उन मॉडलों को अधिक विशिष्ट कार्यों के लिए विशेषीकृत करते हैं। हम इस पाठ्यक्रम में बाद में [प्राकृतिक भाषा प्रसंस्करण](../5-NLP/README.md) के बारे में और अधिक जानेंगे। + +## 🚀 चुनौती + +इंटरनेट का दौरा करें ताकि यह निर्धारित किया जा सके कि आपके अनुसार, एआई का सबसे प्रभावी उपयोग कहाँ किया जा रहा है। क्या यह एक मैपिंग ऐप में है, या किसी भाषण-से-टेक्स्ट सेवा में या एक वीडियो गेम में? शोध करें कि सिस्टम कैसे बनाया गया था। + +## [व्याख्यान के बाद का प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## समीक्षा और आत्म अध्ययन + +[इस पाठ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) के माध्यम से एआई और एमएल के इतिहास की समीक्षा करें। उस पाठ या इस पाठ के शीर्ष पर स्केच नोट से एक तत्व लें और इसके विकास को सूचित करने वाले सांस्कृतिक संदर्भ को समझने के लिए इसे अधिक गहराई से शोध करें। + +**कार्य**: [गेम जाम](assignment.md) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/1-Intro/assignment.md b/translations/hi/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..4a6b1ab5 --- /dev/null +++ b/translations/hi/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# गेम जाम + +गेम एक ऐसा क्षेत्र है जिसे एआई और एमएल के विकास से काफी प्रभावित किया गया है। इस असाइनमेंट में, एक छोटे पेपर पर लिखें जिस खेल के बारे में आपको पसंद है और जो एआई के विकास से प्रभावित हुआ है। यह एक ऐसा पुराना खेल होना चाहिए जिसे कई प्रकार के कंप्यूटर प्रोसेसिंग सिस्टम से प्रभावित किया गया हो। एक अच्छा उदाहरण शतरंज या गो है, लेकिन पोंग या पैक-मैन जैसे वीडियो गेम पर भी नज़र डालें। एक निबंध लिखें जो खेल के अतीत, वर्तमान, और एआई भविष्य पर चर्चा करता है। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/2-Symbolic/README.md b/translations/hi/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..15cd8c73 --- /dev/null +++ b/translations/hi/lessons/2-Symbolic/README.md @@ -0,0 +1,168 @@ +# ज्ञान प्रतिनिधित्व और विशेषज्ञ प्रणाली + +![Symbolic AI सामग्री का सारांश](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hi.png) + +> स्केच नोट [Tomomi Imura](https://twitter.com/girlie_mac) द्वारा + +कृत्रिम बुद्धिमत्ता की खोज ज्ञान की खोज पर आधारित है, ताकि दुनिया को समझा जा सके जैसे मनुष्य करते हैं। लेकिन आप इसे कैसे कर सकते हैं? + +## [प्री-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +AI के प्रारंभिक दिनों में, बुद्धिमान प्रणाली बनाने के लिए शीर्ष-से-नीचे दृष्टिकोण (जिस पर पिछले पाठ में चर्चा की गई थी) लोकप्रिय था। विचार यह था कि लोगों से ज्ञान को कुछ मशीन-पठनीय रूप में निकाला जाए, और फिर इसका उपयोग करके स्वचालित रूप से समस्याओं को हल किया जाए। यह दृष्टिकोण दो बड़े विचारों पर आधारित था: + +* ज्ञान प्रतिनिधित्व +* तर्क + +## ज्ञान प्रतिनिधित्व + +Symbolic AI में एक महत्वपूर्ण अवधारणा है **ज्ञान**। यह *सूचना* या *डेटा* से ज्ञान को अलग करना महत्वपूर्ण है। उदाहरण के लिए, कोई यह कह सकता है कि किताबों में ज्ञान होता है, क्योंकि कोई किताबों का अध्ययन करके विशेषज्ञ बन सकता है। हालाँकि, किताबों में जो होता है उसे वास्तव में *डेटा* कहा जाता है, और किताबों को पढ़कर और इस डेटा को अपने विश्व मॉडल में एकीकृत करके हम इस डेटा को ज्ञान में परिवर्तित करते हैं। + +> ✅ **ज्ञान** वह है जो हमारे सिर में होता है और यह हमारे दुनिया की समझ का प्रतिनिधित्व करता है। इसे एक सक्रिय **अधिगम** प्रक्रिया द्वारा प्राप्त किया जाता है, जो कि हम जो जानकारी प्राप्त करते हैं, उसे हमारे सक्रिय विश्व मॉडल में एकीकृत करता है। + +अधिकतर, हम ज्ञान को सख्ती से परिभाषित नहीं करते, बल्कि इसे [DIKW Pyramid](https://en.wikipedia.org/wiki/DIKW_pyramid) का उपयोग करके अन्य संबंधित अवधारणाओं के साथ संरेखित करते हैं। इसमें निम्नलिखित अवधारणाएँ शामिल हैं: + +* **डेटा** कुछ ऐसा है जो भौतिक मीडिया में प्रस्तुत किया गया है, जैसे लिखित पाठ या बोले गए शब्द। डेटा मानव प्राणियों से स्वतंत्र रूप से मौजूद है और इसे लोगों के बीच पारित किया जा सकता है। +* **सूचना** वह है कि हम अपने सिर में डेटा की व्याख्या कैसे करते हैं। उदाहरण के लिए, जब हम *कंप्यूटर* शब्द सुनते हैं, तो हमें इसके बारे में कुछ समझ होती है। +* **ज्ञान** वह जानकारी है जो हमारे विश्व मॉडल में एकीकृत होती है। उदाहरण के लिए, जब हम सीखते हैं कि कंप्यूटर क्या है, तो हमें इसके काम करने के तरीके, इसकी लागत, और इसे किस लिए उपयोग किया जा सकता है, के बारे में कुछ विचार आने लगते हैं। ये आपस में संबंधित अवधारणाओं का नेटवर्क हमारे ज्ञान को बनाता है। +* **बुद्धिमत्ता** हमारे विश्व की समझ का एक और स्तर है, और यह *मेटा-ज्ञान* का प्रतिनिधित्व करता है, जैसे कि ज्ञान का उपयोग कब और कैसे किया जाना चाहिए। + + + +*छवि [Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247) से, By Longlivetheux - स्वामित्व कार्य, CC BY-SA 4.0* + +इस प्रकार, **ज्ञान प्रतिनिधित्व** की समस्या यह है कि किसी कंप्यूटर के अंदर ज्ञान को डेटा के रूप में प्रतिनिधित्व करने के लिए कुछ प्रभावी तरीका ढूंढना है, ताकि इसे स्वचालित रूप से उपयोग किया जा सके। इसे एक स्पेक्ट्रम के रूप में देखा जा सकता है: + +![ज्ञान प्रतिनिधित्व स्पेक्ट्रम](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hi.png) + +> छवि [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +* बाईं ओर, बहुत सरल प्रकार के ज्ञान प्रतिनिधित्व हैं जिन्हें कंप्यूटर द्वारा प्रभावी रूप से उपयोग किया जा सकता है। सबसे सरल एक एल्गोरिदमिक है, जब ज्ञान को कंप्यूटर प्रोग्राम द्वारा प्रस्तुत किया जाता है। हालाँकि, यह ज्ञान को प्रस्तुत करने का सबसे अच्छा तरीका नहीं है, क्योंकि यह लचीला नहीं है। हमारे सिर में ज्ञान अक्सर गैर-एल्गोरिदमिक होता है। +* दाईं ओर, प्राकृतिक पाठ जैसे प्रतिनिधित्व हैं। यह सबसे शक्तिशाली है, लेकिन स्वचालित तर्क के लिए उपयोग नहीं किया जा सकता है। + +> ✅ एक मिनट के लिए सोचें कि आप अपने सिर में ज्ञान को कैसे प्रस्तुत करते हैं और इसे नोट्स में परिवर्तित करते हैं। क्या कोई विशेष प्रारूप है जो आपको याद रखने में मदद करता है? + +## कंप्यूटर ज्ञान प्रतिनिधित्वों का वर्गीकरण + +हम विभिन्न कंप्यूटर ज्ञान प्रतिनिधित्व विधियों को निम्नलिखित श्रेणियों में वर्गीकृत कर सकते हैं: + +* **नेटवर्क प्रतिनिधित्व** इस तथ्य पर आधारित हैं कि हमारे सिर में आपस में जुड़े अवधारणाओं का एक नेटवर्क होता है। हम कंप्यूटर के अंदर ग्राफ के रूप में उसी नेटवर्क को पुन: उत्पन्न करने का प्रयास कर सकते हैं - जिसे **सेमांटिक नेटवर्क** कहा जाता है। + +1. **ऑब्जेक्ट-एट्रिब्यूट-वैल्यू ट्रिपलेट्स** या **एट्रिब्यूट-वैल्यू पेयर**। चूंकि एक ग्राफ को कंप्यूटर के अंदर नोड्स और एजेस की सूची के रूप में प्रस्तुत किया जा सकता है, हम एक सेमांटिक नेटवर्क को ट्रिपलेट्स की सूची द्वारा प्रस्तुत कर सकते हैं, जिसमें ऑब्जेक्ट, एट्रिब्यूट और वैल्यू होती है। उदाहरण के लिए, हम प्रोग्रामिंग भाषाओं के बारे में निम्नलिखित ट्रिपलेट्स बनाते हैं: + +ऑब्जेक्ट | एट्रिब्यूट | वैल्यू +-------|-----------|------ +Python | है | अनटाइप्ड-भाषा +Python | द्वारा आविष्कृत | Guido van Rossum +Python | ब्लॉक-सिंटैक्स | इंडेंटेशन +अनटाइप्ड-भाषा | नहीं है | टाइप परिभाषाएँ + +> ✅ सोचें कि ट्रिपलेट्स का उपयोग अन्य प्रकार के ज्ञान को प्रस्तुत करने के लिए कैसे किया जा सकता है। + +2. **हाइरार्किकल प्रतिनिधित्व** इस तथ्य पर जोर देते हैं कि हम अक्सर अपने सिर के अंदर वस्तुओं की एक पदानुक्रम बनाते हैं। उदाहरण के लिए, हम जानते हैं कि कैनरी एक पक्षी है, और सभी पक्षियों के पंख होते हैं। हमें यह भी कुछ विचार है कि कैनरी आमतौर पर किस रंग की होती है, और उनकी उड़ान गति क्या होती है। + + - **फ्रेम प्रतिनिधित्व** प्रत्येक वस्तु या वस्तुओं की श्रेणी का प्रतिनिधित्व करने के लिए एक **फ्रेम** का उपयोग करता है जिसमें **स्लॉट्स** होते हैं। स्लॉट्स के पास संभावित डिफ़ॉल्ट मान, मान प्रतिबंध, या स्टोर की गई प्रक्रियाएँ हो सकती हैं जिन्हें किसी स्लॉट के मान को प्राप्त करने के लिए कॉल किया जा सकता है। सभी फ्रेम एक वस्तु पदानुक्रम के समान एक पदानुक्रम बनाते हैं जो वस्तु-उन्मुख प्रोग्रामिंग भाषाओं में होता है। + - **परिदृश्य** विशेष प्रकार के फ्रेम होते हैं जो समय में विकसित होने वाली जटिल स्थितियों का प्रतिनिधित्व करते हैं। + +**Python** + +स्लॉट | वैल्यू | डिफ़ॉल्ट वैल्यू | अंतराल | +-----|-------|---------------|----------| +नाम | Python | | | +है-एक | अनटाइप्ड-भाषा | | | +वेरिएबल केस | | CamelCase | | +प्रोग्राम लंबाई | | | 5-5000 लाइनों | +ब्लॉक सिंटैक्स | इंडेंट | | | + +3. **प्रक्रियात्मक प्रतिनिधित्व** ज्ञान को उन क्रियाओं की सूची के रूप में प्रस्तुत करने पर आधारित हैं जिन्हें एक निश्चित स्थिति होने पर निष्पादित किया जा सकता है। + - उत्पादन नियम यदि-तो कथन हैं जो हमें निष्कर्ष निकालने की अनुमति देते हैं। उदाहरण के लिए, एक डॉक्टर के पास एक नियम हो सकता है जिसमें कहा गया है कि **यदि** एक मरीज को उच्च बुखार है **या** रक्त परीक्षण में C-रिएक्टिव प्रोटीन का उच्च स्तर है **तो** उसे सूजन है। जब हम किसी स्थिति का सामना करते हैं, तो हम सूजन के बारे में निष्कर्ष निकाल सकते हैं, और फिर इसका उपयोग आगे के तर्क में कर सकते हैं। + - एल्गोरिदम को प्रक्रियात्मक प्रतिनिधित्व के एक अन्य रूप के रूप में माना जा सकता है, हालाँकि इन्हें ज्ञान-आधारित प्रणालियों में लगभग कभी सीधे उपयोग नहीं किया जाता है। + +4. **तर्क** को मूल रूप से अरस्तू द्वारा सार्वभौमिक मानव ज्ञान का प्रतिनिधित्व करने के तरीके के रूप में प्रस्तावित किया गया था। + - प्रेडिकेट लॉजिक एक गणितीय सिद्धांत के रूप में इतना समृद्ध है कि इसे गणनायोग्य नहीं माना जा सकता, इसलिए इसका सामान्यतः उपयोग किया जाने वाला कुछ उपसमुच्चय होता है, जैसे कि प्रोलॉग में उपयोग किए जाने वाले हॉर्न क्लॉज़। + - वर्णनात्मक तर्क एक तार्किक प्रणाली का परिवार है जिसका उपयोग वस्तुओं की पदानुक्रम और वितरित ज्ञान प्रतिनिधित्व जैसे *सेमांटिक वेब* के बारे में प्रतिनिधित्व और तर्क करने के लिए किया जाता है। + +## विशेषज्ञ प्रणाली + +Symbolic AI की प्रारंभिक सफलताओं में से एक तथाकथित **विशेषज्ञ प्रणाली** थी - कंप्यूटर प्रणाली जो कुछ सीमित समस्या डोमेन में विशेषज्ञ के रूप में कार्य करने के लिए डिज़ाइन की गई थी। ये एक या एक से अधिक मानव विशेषज्ञों से निकाले गए **ज्ञान आधार** पर आधारित थीं, और इनमें एक **व्युत्पत्ति इंजन** था जो इसके शीर्ष पर कुछ तर्क करता था। + +![मानव आर्किटेक्चर](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hi.png) | ![ज्ञान-आधारित प्रणाली](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hi.png) +---------------------------------------------|------------------------------------------------ +मानव तंत्रिका प्रणाली की सरल संरचना | ज्ञान-आधारित प्रणाली की आर्किटेक्चर + +विशेषज्ञ प्रणालियाँ मानव तर्क प्रणाली की तरह बनाई जाती हैं, जिसमें **शॉर्ट-टर्म मेमोरी** और **लॉन्ग-टर्म मेमोरी** होती है। इसी प्रकार, ज्ञान-आधारित प्रणालियों में हम निम्नलिखित घटकों में अंतर करते हैं: + +* **समस्या मेमोरी**: इसमें वर्तमान में हल की जा रही समस्या के बारे में ज्ञान होता है, जैसे कि एक मरीज का तापमान या रक्तचाप, क्या उसे सूजन है या नहीं, आदि। इस ज्ञान को **स्थिर ज्ञान** भी कहा जाता है, क्योंकि यह उस समस्या के बारे में जो हम वर्तमान में जानते हैं, का एक स्नैपशॉट है - जिसे *समस्या स्थिति* कहा जाता है। +* **ज्ञान आधार**: यह समस्या डोमेन के बारे में दीर्घकालिक ज्ञान का प्रतिनिधित्व करता है। इसे मानव विशेषज्ञों से मैन्युअल रूप से निकाला जाता है, और यह परामर्श से परामर्श में नहीं बदलता। क्योंकि यह हमें एक समस्या स्थिति से दूसरी समस्या स्थिति में नेविगेट करने की अनुमति देता है, इसे **गतिशील ज्ञान** भी कहा जाता है। +* **व्युत्पत्ति इंजन**: यह समस्या स्थिति स्थान में खोजने की पूरी प्रक्रिया का संचालन करता है, जब आवश्यक हो तो उपयोगकर्ता से प्रश्न पूछता है। यह प्रत्येक स्थिति पर लागू होने वाले सही नियमों को खोजने के लिए भी जिम्मेदार है। + +उदाहरण के लिए, आइए एक जानवर को उसके शारीरिक लक्षणों के आधार पर पहचानने वाली विशेषज्ञ प्रणाली पर विचार करें: + +![AND-OR पेड़](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hi.png) + +> छवि [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +यह आरेख एक **AND-OR पेड़** कहा जाता है, और यह उत्पादन नियमों के एक सेट का ग्राफिकल प्रतिनिधित्व है। ज्ञान को विशेषज्ञ से निकालने के आरंभ में पेड़ खींचना उपयोगी होता है। कंप्यूटर के अंदर ज्ञान को प्रस्तुत करने के लिए नियमों का उपयोग करना अधिक सुविधाजनक है: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +आप देख सकते हैं कि नियम के बाईं ओर की प्रत्येक स्थिति और क्रिया मूल रूप से ऑब्जेक्ट-एट्रिब्यूट-वैल्यू (OAV) ट्रिपलेट्स हैं। **कार्यशील मेमोरी** उन OAV ट्रिपलेट्स का सेट है जो वर्तमान में हल की जा रही समस्या के लिए हैं। एक **नियम इंजन** उन नियमों की खोज करता है जिनकी स्थिति संतुष्ट होती है और उन्हें लागू करता है, कार्यशील मेमोरी में एक और ट्रिपलेट जोड़ता है। + +> ✅ एक विषय पर अपना खुद का AND-OR पेड़ बनाएं जो आपको पसंद हो! + +### आगे बनाम पीछे व्युत्पत्ति + +उपरोक्त प्रक्रिया को **आगे व्युत्पत्ति** कहा जाता है। यह समस्या के बारे में उपलब्ध प्रारंभिक डेटा के साथ शुरू होती है जो कार्यशील मेमोरी में है, और फिर निम्नलिखित तर्क चक्र को निष्पादित करती है: + +1. यदि लक्षित एट्रिब्यूट कार्यशील मेमोरी में मौजूद है - रुकें और परिणाम दें +2. उन सभी नियमों की खोज करें जिनकी स्थिति वर्तमान में संतुष्ट है - नियमों का **संघर्ष सेट** प्राप्त करें। +3. **संघर्ष समाधान** करें - इस चरण पर निष्पादित होने वाले एक नियम का चयन करें। संघर्ष समाधान रणनीतियों के विभिन्न प्रकार हो सकते हैं: + - ज्ञान आधार में पहले लागू होने वाले नियम का चयन करें + - एक यादृच्छिक नियम का चयन करें + - एक *अधिक विशिष्ट* नियम का चयन करें, अर्थात वह जो "बाईं ओर" (LHS) में सबसे अधिक स्थितियों को पूरा करता है +4. चयनित नियम को लागू करें और समस्या स्थिति में नया ज्ञान जोड़ें +5. चरण 1 से दोहराएँ। + +हालांकि, कुछ मामलों में हम समस्या के बारे में खाली ज्ञान के साथ शुरू करना चाह सकते हैं, और ऐसे प्रश्न पूछना चाहते हैं जो हमें निष्कर्ष पर पहुँचने में मदद करेंगे। उदाहरण के लिए, जब चिकित्सा निदान करते हैं, तो हम आमतौर पर मरीज का निदान करने से पहले सभी चिकित्सा विश्लेषण नहीं करते हैं। हम निर्णय लेने की आवश्यकता होने पर विश्लेषण करना चाहते हैं। + +इस प्रक्रिया को **पीछे व्युत्पत्ति** के रूप में मॉडल किया जा सकता है। यह **लक्ष्य** द्वारा संचालित होती है - वह एट्रिब्यूट मान जिसे हम खोजने के लिए देख रहे हैं: + +1. सभी नियमों का चयन करें जो हमें एक लक्ष्य का मान दे सकते हैं (अर्थात, लक्ष्यों के साथ RHS ("दाईं ओर")) - एक संघर्ष सेट +1. यदि इस एट्रिब्यूट के लिए कोई नियम नहीं हैं, या कोई नियम कहता है कि हमें उपयोगकर्ता से मान पूछना चाहिए - पूछें, अन्यथा: +1. एक नियम का चयन करने के लिए संघर्ष समाधान रणनीति का उपयोग करें जिसे हम *परिकल्पना* के रूप में उपयोग करेंगे - हम इसे साबित करने का प्रयास करेंगे +1. नियम के LHS में सभी एट्रिब्यूट्स के लिए इस प्रक्रिया को पुनरावृत्त रूप से दोहराएं, उन्हें लक्ष्यों के रूप में साबित करने का प्रयास करें +1. यदि किसी भी बिंदु पर प्रक्रिया विफल होती है - चरण 3 में एक अन्य नियम का उपयोग करें। + +> ✅ किन स्थितियों में आगे व्युत्पत्ति अधिक उपयुक्त है? पीछे व्युत्पत्ति के बारे में क्या? + +### विशेषज्ञ प्रणालियों को लागू करना + +विशेषज्ञ प्रणालियों को विभिन्न उपकरणों का उपयोग करके लागू किया जा सकता है: + +* उन्हें किसी उच्च स्तर की प्रोग्रामिंग भाषा में सीधे प्रोग्राम करना। यह सबसे अच्छा विचार नहीं है, क्योंकि ज्ञान-आधारित प्रणाली का मुख्य लाभ यह है कि ज्ञान व्युत्पत्ति से अलग होता है, और संभावित रूप से एक समस्या डोमेन विशेषज्ञ को व्युत्पत्ति प्रक्रिया के विवरण को समझे बिना नियम लिखने में सक्षम होना चाहिए। +* **विशेषज्ञ प्रणाली शेल** का उपयोग करना, यानी एक प्रणाली जो किसी ज्ञान प्रतिनिधित्व भाषा का उपयोग करके ज्ञान से भरी जाती है। + +## ✍️ व्यायाम: पशु व्युत्पत्ति + +आगे और पीछे व्युत्पत्ति विशेषज्ञ प्रणाली को लागू करने के उदाहरण के लिए [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) देखें। + +> **नोट**: यह उदाहरण अपेक्षाकृत सरल है, और केवल यह विचार देता है कि एक विशेषज्ञ प्रणाली कैसी दिखती है। जब आप ऐसी प्रणाली बनाना शुरू करते हैं, तो आप केवल तब कुछ *बुद्धिमान* व्यवहार देखेंगे जब आप नियमों की एक निश्चित संख्या तक पहुँचेंगे, लगभग 200+. किसी बिंदु पर, नियम बहुत जटिल हो जाते हैं कि सभी को याद रखना कठिन हो जाता है, और इस बिंदु पर आप यह सोचने लगते हैं कि प्रणाली कुछ निर्णय क्यों लेती है। हालाँकि, ज्ञान-आधारित प्रणालियों की महत्वपूर्ण विशेषता यह है कि आप हमेशा यह *व्याख्या* कर सकते हैं कि किसी भी निर्णय को कैसे लिया गया। + +## ऑंटोलॉजी और सेमांटिक वेब + +20वीं सदी के अंत में एक पहल हुई थी कि ज्ञान प्रतिनिधित्व का उपयोग इंटरनेट संसाधनों को एनोटेट करने के लिए किया जाए, ताकि उन संसाधनों को खोजा जा सके जो बहुत विशिष्ट प्रश्नों के अनुरूप हों। इस आंदोलन को **सेमांटिक वेब** कहा गया, और यह कई अवधारणाओं पर निर्भर करता था: + +- **[विवरण तर्क](https://en.wikipedia.org/wiki/Description_logic)** (DL) पर आधारित एक विशेष ज्ञान प्रतिनिधित्व। यह फ्रेम ज्ञान प्रतिनिधित्व के समान है, क्योंकि यह गुणों के साथ वस्तुओं की एक पदानुक्रम बनाता है, लेकिन इसमें औपचारिक तार्किक अर्थ और व्युत्पत्ति होती है। DL का एक पूरा परिवार है जो अभिव्यक्तित्व और व्युत्पत्ति की एल्गोरिदमिक जटिलता के बीच संतुलन बनाता है। +- वितरित ज्ञान प्रतिनिधित्व, जहां सभी अवधारणाएँ एक वैश्विक URI पहचानकर्ता द्वारा प्रस्तुत की जाती हैं, जिससे यह संभव होता है कि ज्ञान की पदानुक्रमें बनाई जा सकें जो इंटरनेट को फैलाएं। +- ज्ञान विवरण के लिए XML-आधारित भाषाओं का एक परिवार: RDF (रिसोर्स विवरण ढांचा), RDFS (RDF स्कीमा), OWL (ऑन्टोलॉजी वेब भाषा)। + +सेमांटिक + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/2-Symbolic/assignment.md b/translations/hi/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..57d916cc --- /dev/null +++ b/translations/hi/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# एक ओंटोलॉजी बनाएं + +ज्ञान का आधार बनाना एक विषय के बारे में तथ्यों का प्रतिनिधित्व करने वाले मॉडल को वर्गीकृत करने के बारे में है। एक विषय चुनें - जैसे कोई व्यक्ति, स्थान, या वस्तु - और फिर उस विषय का एक मॉडल बनाएं। इस पाठ में वर्णित कुछ तकनीकों और मॉडल-निर्माण रणनीतियों का उपयोग करें। एक उदाहरण एक लिविंग रूम की ओंटोलॉजी बनाना होगा जिसमें फर्नीचर, लाइट्स, आदि शामिल हैं। लिविंग रूम रसोई से कैसे भिन्न है? बाथरूम से? आप कैसे जानते हैं कि यह एक लिविंग रूम है और डाइनिंग रूम नहीं? अपनी ओंटोलॉजी बनाने के लिए [Protégé](https://protege.stanford.edu/) का उपयोग करें। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..4622afc5 --- /dev/null +++ b/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,95 @@ +# न्यूरल नेटवर्क्स का परिचय: पर्सेप्ट्रॉन + +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +आधुनिक न्यूरल नेटवर्क के समान कुछ लागू करने के पहले प्रयासों में से एक फ्रैंक रोसेनब्लाट द्वारा 1957 में कॉर्नेल एरोनॉटिकल लैबोरेटरी से किया गया था। यह "मार्क-1" नामक एक हार्डवेयर कार्यान्वयन था, जिसे त्रिकोण, वर्ग और वृत्त जैसे प्राथमिक ज्यामितीय आकृतियों को पहचानने के लिए डिज़ाइन किया गया था। + +| | | +|--------------|-----------| +|फ्रैंक रोसेनब्लाट | मार्क 1 पर्सेप्ट्रॉन| + +> चित्र [विकिपीडिया से](https://en.wikipedia.org/wiki/Perceptron) + +एक इनपुट छवि को 20x20 फोटोसेल एरे द्वारा दर्शाया गया था, इसलिए न्यूरल नेटवर्क में 400 इनपुट और एक बाइनरी आउटपुट था। एक साधारण नेटवर्क में एक न्यूरॉन होता है, जिसे **थ्रेशोल्ड लॉजिक यूनिट** भी कहा जाता है। न्यूरल नेटवर्क के वेट्स पोटेंशियोमीटर की तरह कार्य करते थे, जिन्हें प्रशिक्षण चरण के दौरान मैन्युअल रूप से समायोजित करने की आवश्यकता होती थी। + +> ✅ पोटेंशियोमीटर एक उपकरण है जो उपयोगकर्ता को सर्किट की प्रतिरोध को समायोजित करने की अनुमति देता है। + +> न्यू यॉर्क टाइम्स ने उस समय पर्सेप्ट्रॉन के बारे में लिखा: *एक इलेक्ट्रॉनिक कंप्यूटर का भ्रूण जिसे [नौसेना] को उम्मीद है कि वह चल सकेगा, बोल सकेगा, देख सकेगा, लिख सकेगा, अपने आप को पुन: उत्पन्न कर सकेगा और अपने अस्तित्व के प्रति जागरूक होगा।* + +## पर्सेप्ट्रॉन मॉडल + +मान लीजिए कि हमारे मॉडल में N विशेषताएँ हैं, इस स्थिति में इनपुट वेक्टर का आकार N होगा। एक पर्सेप्ट्रॉन एक **बाइनरी क्लासिफिकेशन** मॉडल है, यानी यह इनपुट डेटा की दो श्रेणियों के बीच अंतर कर सकता है। हम मान लेंगे कि प्रत्येक इनपुट वेक्टर x के लिए हमारे पर्सेप्ट्रॉन का आउटपुट या तो +1 या -1 होगा, जो कि श्रेणी पर निर्भर करेगा। आउटपुट को निम्नलिखित सूत्र का उपयोग करके गणना की जाएगी: + +y(x) = f(wTx) + +जहाँ f एक स्टेप सक्रियण फ़ंक्शन है + + + + +## पर्सेप्ट्रॉन का प्रशिक्षण + +एक पर्सेप्ट्रॉन को प्रशिक्षित करने के लिए हमें एक वेट्स वेक्टर w खोजने की आवश्यकता है जो अधिकांश मूल्यों को सही ढंग से वर्गीकृत करता है, यानी जो सबसे छोटा **त्रुटि** देता है। यह त्रुटि E को निम्नलिखित तरीके से **पर्सेप्ट्रॉन मानदंड** द्वारा परिभाषित किया गया है: + +E(w) = -∑wTxiti + +जहाँ: + +* योग उन प्रशिक्षण डेटा बिंदुओं i पर लिया जाता है जो गलत वर्गीकरण का परिणाम देते हैं +* xi इनपुट डेटा है, और ti नकारात्मक और सकारात्मक उदाहरणों के लिए क्रमशः -1 या +1 है। + +इस मानदंड को वेट्स w के एक फ़ंक्शन के रूप में माना जाता है, और हमें इसे न्यूनतम करना है। अक्सर, एक विधि जिसे **ग्रेडिएंट डिसेंट** कहा जाता है, का उपयोग किया जाता है, जिसमें हम कुछ प्रारंभिक वेट्स w(0) के साथ शुरू करते हैं, और फिर प्रत्येक चरण में वेट्स को निम्नलिखित सूत्र के अनुसार अपडेट करते हैं: + +w(t+1) = w(t) - η∇E(w) + +यहाँ η को **सीखने की दर** कहा जाता है, और ∇E(w) E का **ग्रेडिएंट** दर्शाता है। जब हम ग्रेडिएंट की गणना करते हैं, तो हमें मिलता है + +w(t+1) = w(t) + ∑ηxiti + +पायथन में एल्गोरिदम इस तरह दिखता है: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## निष्कर्ष + +इस पाठ में, आपने पर्सेप्ट्रॉन के बारे में सीखा, जो एक बाइनरी क्लासिफिकेशन मॉडल है, और इसे वेट्स वेक्टर का उपयोग करके कैसे प्रशिक्षित किया जाए। + +## 🚀 चुनौती + +यदि आप अपना खुद का पर्सेप्ट्रॉन बनाने की कोशिश करना चाहते हैं, तो [Microsoft Learn पर इस प्रयोगशाला](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) को आज़माएँ जो [Azure ML डिज़ाइनर](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) का उपयोग करती है। + +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## समीक्षा और आत्म-अध्ययन + +यह देखने के लिए कि हम पर्सेप्ट्रॉन का उपयोग खिलौने की समस्या के साथ-साथ वास्तविक जीवन की समस्याओं को हल करने के लिए कैसे कर सकते हैं, और सीखना जारी रखने के लिए - [पर्सेप्ट्रॉन](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) नोटबुक पर जाएँ। + +यहाँ पर्सेप्ट्रॉन के बारे में एक दिलचस्प [लेख](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) भी है। + +## [असाइनमेंट](lab/README.md) + +इस पाठ में, हमने बाइनरी क्लासिफिकेशन कार्य के लिए एक पर्सेप्ट्रॉन लागू किया है, और हमने इसे दो हस्तलिखित अंकों के बीच वर्गीकृत करने के लिए उपयोग किया है। इस प्रयोगशाला में, आप पूरी तरह से अंक वर्गीकरण की समस्या को हल करने के लिए कहा गया है, यानी यह निर्धारित करें कि कौन सा अंक एक दिए गए चित्र के लिए सबसे अधिक संभावित है। + +* [निर्देश](lab/README.md) +* [नोटबुक](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..474139ad --- /dev/null +++ b/translations/hi/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# मल्टी-क्लास वर्गीकरण पर्सेप्ट्रॉन के साथ + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। + +## कार्य + +इस पाठ में MNIST हस्तलिखित अंकों के लिए द्विआधारी वर्गीकरण के लिए विकसित किए गए कोड का उपयोग करते हुए, एक मल्टी-क्लास वर्गीकृत बनाएँ जो किसी भी अंक को पहचान सके। प्रशिक्षण और परीक्षण डेटासेट पर वर्गीकरण सटीकता की गणना करें, और भ्रम मैट्रिक्स प्रिंट करें। + +## संकेत + +1. प्रत्येक अंक के लिए, "यह अंक बनाम सभी अन्य अंकों" के द्विआधारी वर्गीकरण के लिए एक डेटासेट बनाएं। +2. द्विआधारी वर्गीकरण के लिए 10 विभिन्न पर्सेप्ट्रॉन का प्रशिक्षण करें (प्रत्येक अंक के लिए एक)। +3. एक फ़ंक्शन परिभाषित करें जो एक इनपुट अंक को वर्गीकृत करेगा। + +> **संकेत**: यदि हम सभी 10 पर्सेप्ट्रॉन के भार को एक मैट्रिक्स में मिलाते हैं, तो हमें एक मैट्रिक्स गुणन के माध्यम से इनपुट अंकों पर सभी 10 पर्सेप्ट्रॉन को लागू करने में सक्षम होना चाहिए। सबसे संभावित अंक को तब केवल `argmax` ऑपरेशन को आउटपुट पर लागू करके पाया जा सकता है। + +## नोटबुक प्रारंभ करना + +[PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) खोलकर प्रयोगशाला शुरू करें। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..38a55404 --- /dev/null +++ b/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# न्यूरल नेटवर्क का परिचय: मल्टी-लेयर्ड पर्सेप्ट्रॉन + +पिछले अनुभाग में, आपने सबसे सरल न्यूरल नेटवर्क मॉडल - एक-लेयर्ड पर्सेप्ट्रॉन, एक रैखिक दो-श्रेणी वर्गीकरण मॉडल के बारे में सीखा। + +इस अनुभाग में, हम इस मॉडल को एक अधिक लचीले ढांचे में विस्तारित करेंगे, जो हमें निम्नलिखित करने की अनुमति देगा: + +* दो-श्रेणी के अलावा **मल्टी-क्लास वर्गीकरण** करना +* वर्गीकरण के अलावा **रेग्रेशन समस्याओं** को हल करना +* उन श्रेणियों को अलग करना जो रैखिक रूप से अलग नहीं की जा सकतीं + +हम अपने स्वयं के मॉड्यूलर ढांचे को भी विकसित करेंगे जो हमें विभिन्न न्यूरल नेटवर्क आर्किटेक्चर बनाने की अनुमति देगा। + +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## मशीन लर्निंग का औपचारिककरण + +आइए मशीन लर्निंग की समस्या को औपचारिक रूप से शुरू करते हैं। मान लीजिए कि हमारे पास एक प्रशिक्षण डेटा सेट **X** है जिसमें लेबल **Y** हैं, और हमें एक मॉडल *f* बनाना है जो सबसे सटीक भविष्यवाणियाँ करेगा। भविष्यवाणियों की गुणवत्ता को **लॉस फ़ंक्शन** ℒ द्वारा मापा जाता है। निम्नलिखित लॉस फ़ंक्शन अक्सर उपयोग किए जाते हैं: + +* रिग्रेशन समस्या के लिए, जब हमें एक संख्या की भविष्यवाणी करनी होती है, हम **संपूर्ण त्रुटि** ∑i|f(x(i))-y(i)|, या **वर्ग त्रुटि** ∑i(f(x(i))-y(i))2 का उपयोग कर सकते हैं। +* वर्गीकरण के लिए, हम **0-1 लॉस** (जो मूल रूप से मॉडल की **सटीकता** के समान है) का उपयोग करते हैं, या **लॉजिस्टिक लॉस**। + +एक-लेवल पर्सेप्ट्रॉन के लिए, फ़ंक्शन *f* को एक रैखिक फ़ंक्शन *f(x)=wx+b* के रूप में परिभाषित किया गया था (यहाँ *w* वेट मैट्रिक्स है, *x* इनपुट विशेषताओं का वेक्टर है, और *b* बायस वेक्टर है)। विभिन्न न्यूरल नेटवर्क आर्किटेक्चर के लिए, यह फ़ंक्शन अधिक जटिल रूप ले सकता है। + +> वर्गीकरण के मामले में, अक्सर यह वांछनीय होता है कि संबंधित श्रेणियों की संभावनाएँ नेटवर्क आउटपुट के रूप में प्राप्त हों। मनमाने संख्याओं को संभावनाओं में परिवर्तित करने के लिए (जैसे कि आउटपुट को सामान्य करने के लिए), हम अक्सर **सॉफ्टमैक्स** फ़ंक्शन σ का उपयोग करते हैं, और फ़ंक्शन *f* बन जाता है *f(x)=σ(wx+b)* + +उपर्युक्त *f* की परिभाषा में, *w* और *b* को **पैरामीटर** θ=⟨*w,b*⟩ कहा जाता है। दिए गए डेटा सेट ⟨**X**,**Y**⟩, हम पूरे डेटा सेट पर कुल त्रुटि को पैरामीटर θ के एक फ़ंक्शन के रूप में गणना कर सकते हैं। + +> ✅ **न्यूरल नेटवर्क प्रशिक्षण का लक्ष्य त्रुटि को कम करना है पैरामीटर θ को बदलकर** + +## ग्रेडिएंट डिसेंट ऑप्टिमाइजेशन + +फ़ंक्शन ऑप्टिमाइजेशन की एक प्रसिद्ध विधि **ग्रेडिएंट डिसेंट** कहलाती है। विचार यह है कि हम लॉस फ़ंक्शन का व्युत्पन्न (बहु-आयामी मामले में **ग्रेडिएंट** कहा जाता है) पैरामीटर के संदर्भ में निकाल सकते हैं, और त्रुटि को कम करने के लिए पैरामीटर को इस तरह से बदल सकते हैं। इसे निम्नलिखित के रूप में औपचारिक किया जा सकता है: + +* कुछ यादृच्छिक मानों w(0), b(0) द्वारा पैरामीटर को प्रारंभ करें +* निम्नलिखित चरण को कई बार दोहराएँ: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +प्रशिक्षण के दौरान, अनुकूलन चरणों को पूरे डेटा सेट पर विचार करते हुए गणना की जानी चाहिए (याद रखें कि लॉस को सभी प्रशिक्षण नमूनों के माध्यम से एक योग के रूप में गणना की जाती है)। हालाँकि, वास्तविक जीवन में हम डेटा सेट के छोटे हिस्से को **मिनिबैचेस** कहते हैं, और डेटा के एक उपसमुच्चय के आधार पर ग्रेडिएंट की गणना करते हैं। चूंकि उपसमुच्चय हर बार यादृच्छिक रूप से लिया जाता है, इस विधि को **स्टोकास्टिक ग्रेडिएंट डिसेंट** (SGD) कहा जाता है। + +## मल्टी-लेयर्ड पर्सेप्ट्रॉन और बैकप्रोपगेशन + +एक-लेयर नेटवर्क, जैसा कि हमने ऊपर देखा, रैखिक रूप से अलग की जाने वाली श्रेणियों का वर्गीकरण करने में सक्षम है। एक समृद्ध मॉडल बनाने के लिए, हम नेटवर्क की कई परतों को जोड़ सकते हैं। गणितीय रूप से इसका अर्थ होगा कि फ़ंक्शन *f* अधिक जटिल रूप लेगा, और इसे कई चरणों में गणना की जाएगी: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +यहाँ, α एक **गैर-रेखीय सक्रियण फ़ंक्शन** है, σ एक सॉफ्टमैक्स फ़ंक्शन है, और पैरामीटर θ=<*w1,b1,w2,b2* हैं। + +ग्रेडिएंट डिसेंट एल्गोरिदम वही रहेगा, लेकिन ग्रेडिएंट की गणना करना अधिक कठिन होगा। श्रृंखला विभेदन नियम के अनुसार, हम व्युत्पन्न को इस प्रकार निकाल सकते हैं: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ श्रृंखला विभेदन नियम का उपयोग लॉस फ़ंक्शन के व्युत्पन्न को पैरामीटर के संदर्भ में निकालने के लिए किया जाता है। + +ध्यान दें कि इन सभी अभिव्यक्तियों का सबसे बायाँ भाग समान है, और इस प्रकार हम प्रभावी ढंग से लॉस फ़ंक्शन से शुरू करके और "पीछे" की ओर गणना करते हुए व्युत्पन्न की गणना कर सकते हैं। इस प्रकार मल्टी-लेयर्ड पर्सेप्ट्रॉन को प्रशिक्षित करने की विधि को **बैकप्रोपगेशन**, या 'बैकप्रोप' कहा जाता है। + +compute graph + +> TODO: चित्र संदर्भ + +> ✅ हम अपने नोटबुक उदाहरण में बैकप्रोप के बारे में बहुत अधिक विस्तार से कवर करेंगे। + +## निष्कर्ष + +इस पाठ में, हमने अपनी स्वयं की न्यूरल नेटवर्क लाइब्रेरी बनाई है, और हमने इसका उपयोग एक सरल दो-आयामी वर्गीकरण कार्य के लिए किया है। + +## 🚀 चुनौती + +संबंधित नोटबुक में, आप मल्टी-लेयर्ड पर्सेप्ट्रॉन बनाने और प्रशिक्षित करने के लिए अपना ढांचा लागू करेंगे। आप विस्तार से देख सकेंगे कि आधुनिक न्यूरल नेटवर्क कैसे कार्य करते हैं। + +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) नोटबुक पर जाएँ और इसके माध्यम से काम करें। + +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## समीक्षा और आत्म-अध्ययन + +बैकप्रोपगेशन एआई और एमएल में उपयोग की जाने वाली एक सामान्य एल्गोरिदम है, जिसे [अधिक विस्तार से](https://wikipedia.org/wiki/Backpropagation) अध्ययन करने के लायक है। + +## [असाइनमेंट](lab/README.md) + +इस प्रयोगशाला में, आपसे इस पाठ में बनाए गए ढांचे का उपयोग करके MNIST हाथ से लिखे गए अंक वर्गीकरण को हल करने के लिए कहा गया है। + +* [निर्देश](lab/README.md) +* [नोटबुक](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..7212e9f3 --- /dev/null +++ b/translations/hi/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# हमारे अपने फ्रेमवर्क के साथ MNIST वर्गीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। + +## कार्य + +1-, 2- और 3-परत वाले पर्सेप्ट्रॉन का उपयोग करके MNIST हस्तलिखित अंक वर्गीकरण समस्या का समाधान करें। उस न्यूरल नेटवर्क फ्रेमवर्क का उपयोग करें जिसे हमने पाठ में विकसित किया है। + +## नोटबुक खोलना + +[MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) खोलकर प्रयोगशाला शुरू करें। + +## प्रश्न + +इस प्रयोगशाला के परिणामस्वरूप, निम्नलिखित प्रश्नों के उत्तर देने का प्रयास करें: + +- क्या अंतःपरत सक्रियण कार्य नेटवर्क के प्रदर्शन को प्रभावित करता है? +- क्या हमें इस कार्य के लिए 2- या 3-परत वाला नेटवर्क की आवश्यकता है? +- क्या आपको नेटवर्क को प्रशिक्षित करते समय कोई समस्या का सामना करना पड़ा? विशेष रूप से जब परतों की संख्या बढ़ी। +- प्रशिक्षण के दौरान नेटवर्क के वजन कैसे व्यवहार करते हैं? आप संबंध को समझने के लिए वजन के अधिकतम निरपेक्ष मान को युग के खिलाफ प्लॉट कर सकते हैं। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..1bbe85e8 --- /dev/null +++ b/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# न्यूरल नेटवर्क फ्रेमवर्क + +जैसा कि हमने पहले सीखा है, न्यूरल नेटवर्क को प्रभावी ढंग से प्रशिक्षित करने के लिए हमें दो चीजें करनी होती हैं: + +* टेन्सरों पर कार्य करना, जैसे गुणा करना, जोड़ना, और कुछ कार्यों की गणना करना जैसे सिग्मॉइड या सॉफ़्टमैक्स +* सभी अभिव्यक्तियों के ग्रेडिएंट की गणना करना, ताकि ग्रेडिएंट डिसेंट ऑप्टिमाइजेशन किया जा सके + +## [प्री-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +जबकि `numpy` लाइब्रेरी पहले भाग को कर सकती है, हमें ग्रेडिएंट की गणना करने के लिए कुछ तंत्र की आवश्यकता है। [हमारे फ्रेमवर्क](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) में, जिसे हमने पिछले अनुभाग में विकसित किया था, हमें `backward` विधि के अंदर सभी व्युत्पत्ति कार्यों को मैन्युअल रूप से प्रोग्राम करना पड़ा, जो बैकप्रोपेगेशन करता है। आदर्श रूप से, एक फ्रेमवर्क हमें *किसी भी अभिव्यक्ति* के ग्रेडिएंट की गणना करने का अवसर देना चाहिए जिसे हम परिभाषित कर सकते हैं। + +एक और महत्वपूर्ण बात यह है कि GPU या किसी अन्य विशेष कंप्यूट इकाइयों पर गणनाएँ करना संभव हो, जैसे कि [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit)। गहरी न्यूरल नेटवर्क प्रशिक्षण के लिए *कई* गणनाओं की आवश्यकता होती है, और GPU पर इन गणनाओं को समानांतरित करना बहुत महत्वपूर्ण है। + +> ✅ 'समानांतरित' शब्द का अर्थ है गणनाओं को कई उपकरणों पर वितरित करना। + +वर्तमान में, दो सबसे लोकप्रिय न्यूरल फ्रेमवर्क हैं: [TensorFlow](http://TensorFlow.org) और [PyTorch](https://pytorch.org/)। दोनों CPU और GPU पर टेन्सरों के साथ कार्य करने के लिए एक निम्न-स्तरीय API प्रदान करते हैं। निम्न-स्तरीय API के ऊपर, एक उच्च-स्तरीय API भी है, जिसे क्रमशः [Keras](https://keras.io/) और [PyTorch Lightning](https://pytorchlightning.ai/) कहा जाता है। + +निम्न-स्तरीय API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +उच्च-स्तरीय API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**निम्न-स्तरीय APIs** दोनों फ्रेमवर्क में आपको **गणनात्मक ग्राफ** बनाने की अनुमति देते हैं। यह ग्राफ यह परिभाषित करता है कि दिए गए इनपुट पैरामीटर के साथ आउटपुट (आमतौर पर हानि कार्य) की गणना कैसे की जाए, और यदि GPU उपलब्ध है तो इसे GPU पर गणना के लिए धकेला जा सकता है। इस गणनात्मक ग्राफ को विभाजित करने और ग्रेडिएंट की गणना करने के लिए कार्य होते हैं, जिन्हें फिर मॉडल पैरामीटर के अनुकूलन के लिए उपयोग किया जा सकता है। + +**उच्च-स्तरीय APIs** वास्तव में न्यूरल नेटवर्क को **परतों के अनुक्रम** के रूप में मानते हैं, और अधिकांश न्यूरल नेटवर्क को बनाना बहुत आसान बनाते हैं। मॉडल को प्रशिक्षित करने के लिए आमतौर पर डेटा तैयार करने की आवश्यकता होती है और फिर `fit` फ़ंक्शन को कार्य करने के लिए कॉल करना होता है। + +उच्च-स्तरीय API आपको बहुत जल्दी सामान्य न्यूरल नेटवर्क बनाने की अनुमति देती है बिना कई विवरणों की चिंता किए। साथ ही, निम्न-स्तरीय API प्रशिक्षण प्रक्रिया पर अधिक नियंत्रण प्रदान करती हैं, और इस प्रकार उनका उपयोग अनुसंधान में बहुत अधिक किया जाता है, जब आप नए न्यूरल नेटवर्क आर्किटेक्चर के साथ काम कर रहे होते हैं। + +यह भी महत्वपूर्ण है कि आप समझें कि आप दोनों APIs का एक साथ उपयोग कर सकते हैं, जैसे कि आप निम्न-स्तरीय API का उपयोग करके अपना खुद का नेटवर्क लेयर आर्किटेक्चर विकसित कर सकते हैं, और फिर इसे उच्च-स्तरीय API के साथ निर्मित और प्रशिक्षित बड़े नेटवर्क के अंदर उपयोग कर सकते हैं। या आप उच्च-स्तरीय API का उपयोग करके परतों के अनुक्रम के रूप में एक नेटवर्क परिभाषित कर सकते हैं, और फिर अपने स्वयं के निम्न-स्तरीय प्रशिक्षण लूप का उपयोग करके अनुकूलन कर सकते हैं। दोनों APIs समान मूलभूत अवधारणाओं का उपयोग करती हैं, और इन्हें एक साथ काम करने के लिए डिज़ाइन किया गया है। + +## सीखना + +इस पाठ्यक्रम में, हम PyTorch और TensorFlow दोनों के लिए अधिकांश सामग्री प्रदान करते हैं। आप अपनी पसंद का फ्रेमवर्क चुन सकते हैं और केवल संबंधित नोटबुक के माध्यम से जा सकते हैं। यदि आप सुनिश्चित नहीं हैं कि कौन सा फ्रेमवर्क चुनें, तो **PyTorch बनाम TensorFlow** के बारे में इंटरनेट पर कुछ चर्चाएँ पढ़ें। आप बेहतर समझ के लिए दोनों फ्रेमवर्क पर भी नज़र डाल सकते हैं। + +जहाँ संभव हो, हम सरलता के लिए उच्च-स्तरीय APIs का उपयोग करेंगे। हालाँकि, हमें विश्वास है कि न्यूरल नेटवर्क के काम करने के तरीके को आधार से समझना महत्वपूर्ण है, इसलिए शुरुआत में हम निम्न-स्तरीय 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` द्वारा दर्शाए गए हैं) का अनुमान लगाने की समस्या पर विचार करें: + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hi.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hi.jpg) +-------------------------|-------------------------- +**रेखीय मॉडल, 2 पैरामीटर** | **गैर-रेखीय मॉडल, 7 पैरामीटर** +प्रशिक्षण त्रुटि = 5.3 | प्रशिक्षण त्रुटि = 0 +मान्यता त्रुटि = 5.1 | मान्यता त्रुटि = 20 + +* बाईं ओर, हम एक अच्छी सीधी रेखा का अनुमान देखते हैं। चूंकि पैरामीटर की संख्या उपयुक्त है, मॉडल बिंदुओं के वितरण के पीछे के विचार को सही तरीके से समझता है। +* दाईं ओर, मॉडल बहुत शक्तिशाली है। चूंकि हमारे पास केवल 5 बिंदु हैं और मॉडल के पास 7 पैरामीटर हैं, यह इस तरह से समायोजित हो सकता है कि सभी बिंदुओं के माध्यम से गुजरता है, जिससे प्रशिक्षण त्रुटि 0 हो जाती है। हालाँकि, यह मॉडल को डेटा के पीछे के सही पैटर्न को समझने से रोकता है, इसलिए मान्यता त्रुटि बहुत उच्च होती है। + +मॉडल की समृद्धि (पैरामीटर की संख्या) और प्रशिक्षण नमूनों की संख्या के बीच सही संतुलन बनाना बहुत महत्वपूर्ण है। + +## ओवरफिटिंग क्यों होती है + + * पर्याप्त प्रशिक्षण डेटा नहीं + * बहुत शक्तिशाली मॉडल + * इनपुट डेटा में बहुत अधिक शोर + +## ओवरफिटिंग का पता कैसे लगाएं + +जैसा कि आप ऊपर दिए गए ग्राफ से देख सकते हैं, ओवरफिटिंग को बहुत कम प्रशिक्षण त्रुटि और उच्च मान्यता त्रुटि द्वारा पहचाना जा सकता है। सामान्यतः प्रशिक्षण के दौरान हम देखेंगे कि प्रशिक्षण और मान्यता त्रुटियाँ दोनों कम होना शुरू होती हैं, और फिर किसी बिंदु पर मान्यता त्रुटि कम होना बंद कर सकती है और बढ़ने लग सकती है। यह ओवरफिटिंग का संकेत होगा, और यह संकेत है कि हमें शायद इस बिंदु पर प्रशिक्षण रोकना चाहिए (या कम से कम मॉडल का एक स्नैपशॉट लेना चाहिए)। + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hi.png) + +## ओवरफिटिंग से कैसे बचें + +यदि आप देख सकते हैं कि ओवरफिटिंग हो रही है, तो आप निम्नलिखित में से एक कर सकते हैं: + + * प्रशिक्षण डेटा की मात्रा बढ़ाएँ + * मॉडल की जटिलता को कम करें + * कुछ [नियमितीकरण तकनीक](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) का उपयोग करें, जैसे [ड्रॉपआउट](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), जिसे हम बाद में विचार करेंगे। + +## ओवरफिटिंग और पूर्वाग्रह-भिन्नता व्यापार संतुलन + +ओवरफिटिंग वास्तव में सांख्यिकी में एक अधिक सामान्य समस्या का मामला है जिसे [पूर्वाग्रह-भिन्नता व्यापार संतुलन](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) कहा जाता है। यदि हम अपने मॉडल में त्रुटियों के संभावित स्रोतों पर विचार करें, तो हम दो प्रकार की त्रुटियों को देख सकते हैं: + +* **पूर्वाग्रह त्रुटियाँ** हमारे एल्गोरिदम द्वारा प्रशिक्षण डेटा के बीच संबंध को सही तरीके से कैप्चर न करने के कारण होती हैं। यह इस तथ्य के कारण हो सकता है कि हमारा मॉडल पर्याप्त शक्तिशाली नहीं है (**अंडरफिटिंग**)। +* **भिन्नता त्रुटियाँ**, जो मॉडल द्वारा इनपुट डेटा में शोर का अनुमान लगाने के कारण होती हैं, बजाय इसके कि अर्थपूर्ण संबंध (**ओवरफिटिंग**)। + +प्रशिक्षण के दौरान, पूर्वाग्रह त्रुटि कम होती है (जैसे ही हमारा मॉडल डेटा का अनुमान लगाना सीखता है), और भिन्नता त्रुटि बढ़ती है। ओवरफिटिंग से बचने के लिए प्रशिक्षण को रोकना महत्वपूर्ण है - या तो मैन्युअल रूप से (जब हम ओवरफिटिंग का पता लगाते हैं) या स्वचालित रूप से (नियमितीकरण द्वारा)। + +## निष्कर्ष + +इस पाठ में, आपने TensorFlow और PyTorch के लिए विभिन्न APIs के बीच के अंतर के बारे में सीखा। इसके अलावा, आपने एक बहुत महत्वपूर्ण विषय, ओवरफिटिंग के बारे में सीखा। + +## 🚀 चुनौती + +संबंधित नोटबुक में, आपको नीचे 'कार्य' मिलेंगे; नोटबुक के माध्यम से काम करें और कार्यों को पूरा करें। + +## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## समीक्षा और आत्म-अध्ययन + +निम्नलिखित विषयों पर कुछ शोध करें: + +- TensorFlow +- PyTorch +- ओवरफिटिंग + +अपने आप से निम्नलिखित प्रश्न पूछें: + +- TensorFlow और PyTorch के बीच क्या अंतर है? +- ओवरफिटिंग और अंडरफिटिंग के बीच क्या अंतर है? + +## [असाइनमेंट](lab/README.md) + +इस प्रयोगशाला में, आपसे PyTorch या TensorFlow का उपयोग करके एकल- और बहु-परत पूर्ण रूप से जुड़े नेटवर्क का उपयोग करके दो वर्गीकरण समस्याओं को हल करने के लिए कहा गया है। + +* [निर्देश](lab/README.md) +* [नोटबुक](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असमानताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..83f24a50 --- /dev/null +++ b/translations/hi/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# PyTorch/TensorFlow के साथ वर्गीकरण + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। + +## कार्य + +PyTorch या TensorFlow का उपयोग करते हुए एकल और बहु-परत पूर्ण-संबद्ध नेटवर्क का उपयोग करके दो वर्गीकरण समस्याओं को हल करें: + +1. **[Iris वर्गीकरण](https://en.wikipedia.org/wiki/Iris_flower_data_set)** समस्या - यह एक उदाहरण है जिसमें तालिका प्रारूप में इनपुट डेटा होता है, जिसे पारंपरिक मशीन लर्निंग द्वारा संभाला जा सकता है। आपका लक्ष्य 4 संख्यात्मक पैरामीटर के आधार पर आइरिस को 3 श्रेणियों में वर्गीकृत करना होगा। +2. **MNIST** हस्तलिखित अंक वर्गीकरण समस्या, जिसे हमने पहले देखा है। + +सर्वश्रेष्ठ सटीकता प्राप्त करने के लिए विभिन्न नेटवर्क आर्किटेक्चर का प्रयास करें। + +## नोटबुक शुरू करना + +[LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) खोलकर प्रयोगशाला शुरू करें। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/3-NeuralNetworks/README.md b/translations/hi/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..4a5c42fd --- /dev/null +++ b/translations/hi/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# न्यूरल नेटवर्क का परिचय + +![न्यूरल नेटवर्क के परिचय की सामग्री का सारांश](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hi.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.hi.jpg) | ![न्यूरॉन का मॉडल](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hi.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) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवाद में त्रुटियाँ या असमानताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/hi/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..6e23db39 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# कंप्यूटर दृष्टि का परिचय + +[कंप्यूटर दृष्टि](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++ में लिखा गया है, जो छवि प्रसंस्करण के लिए *de facto* मानक बन गया है। इसमें एक सुविधाजनक Python इंटरफ़ेस है। +* **[dlib](http://dlib.net/)** एक C++ पुस्तकालय है जो कई मशीन लर्निंग एल्गोरिदम को लागू करता है, जिसमें कुछ कंप्यूटर दृष्टि एल्गोरिदम भी शामिल हैं। इसमें एक Python इंटरफ़ेस भी है, और इसे चेहरे और चेहरे के लैंडमार्क पहचान जैसी चुनौतीपूर्ण कार्यों के लिए उपयोग किया जा सकता है। + +## OpenCV + +[OpenCV](https://opencv.org/) को छवि प्रसंस्करण के लिए *de facto* मानक माना जाता है। इसमें बहुत सारे उपयोगी एल्गोरिदम शामिल हैं, जो C++ में लागू किए गए हैं। आप Python से भी OpenCV को कॉल कर सकते हैं। + +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` 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. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` +* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold` फ़ंक्शन, जो अक्सर चमक या कंट्रास्ट को समायोजित करने के लिए पसंद किया जाता है। +* छवि पर विभिन्न [रूपांतरणों](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) को लागू करना: + - **[Affine transformations](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** उपयोगी हो सकते हैं यदि आपको छवि में घुमाव, आकार बदलने और झुकाव को संयोजित करने की आवश्यकता है और आपको छवि में तीन बिंदुओं के स्रोत और गंतव्य स्थान ज्ञात हैं। अफाइन रूपांतरण समानांतर रेखाओं को समानांतर रखते हैं। + - **[Perspective transformations](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** उपयोगी हो सकते हैं जब आप छवि में 4 बिंदुओं के स्रोत और गंतव्य स्थितियों को जानते हैं। उदाहरण के लिए, यदि आप किसी स्मार्टफोन कैमरे से किसी आयताकार दस्तावेज़ की तस्वीर लेते हैं और आप दस्तावेज़ की एक आयताकार छवि बनाना चाहते हैं। +* **[Optical flow](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** का उपयोग करके छवि के अंदर आंदोलन को समझना। + +## कंप्यूटर दृष्टि के उपयोग के उदाहरण + +हमारे [OpenCV नोटबुक](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) में, हम कुछ उदाहरण देते हैं जब कंप्यूटर दृष्टि का उपयोग विशिष्ट कार्यों को करने के लिए किया जा सकता है: + +* **ब्रेल पुस्तक की एक तस्वीर को पूर्व-प्रसंस्कृत करना**। हम इस पर ध्यान केंद्रित करते हैं कि हम कैसे थ्रेशोल्डिंग, फीचर डिटेक्शन, परिप्रेक्ष्य रूपांतरण और NumPy हेरफेर का उपयोग करके व्यक्तिगत ब्रेल प्रतीकों को अलग कर सकते हैं ताकि उन्हें न्यूरल नेटवर्क द्वारा आगे वर्गीकृत किया जा सके। + +![Braille Image](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hi.jpeg) | ![Braille Image Pre-processed](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hi.png) | ![Braille Symbols](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hi.png) +----|-----|----- + +> छवि [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) से + +* **फ्रेम अंतर का उपयोग करके वीडियो में गति का पता लगाना**। यदि कैमरा स्थिर है, तो कैमरा फीड से फ्रेम एक-दूसरे के समान होने चाहिए। चूंकि फ्रेमों का प्रतिनिधित्व ऐरे के रूप में किया जाता है, इसलिए दो लगातार फ्रेमों के लिए उन ऐरे को घटाकर हम पिक्सेल का अंतर प्राप्त करेंगे, जो स्थिर फ्रेम के लिए कम होना चाहिए, और छवि में महत्वपूर्ण गति होने पर अधिक हो जाएगा। + +![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hi.png) + +> छवि [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) से + +* **ऑप्टिकल फ्लो का उपयोग करके गति का पता लगाना**। [ऑप्टिकल फ्लो](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) हमें यह समझने की अनुमति देता है कि वीडियो फ़्रेम पर व्यक्तिगत पिक्सेल कैसे चलते हैं। ऑप्टिकल फ्लो के दो प्रकार हैं: + + - **Dense Optical Flow** उस वेक्टर फ़ील्ड की गणना करता है जो दिखाता है कि प्रत्येक पिक्सेल कहाँ जा रहा है + - **Sparse Optical Flow** छवि में कुछ विशिष्ट विशेषताओं (जैसे किनारों) को लेने और फ्रेम से फ्रेम उनकी गति बनाने पर आधारित है। + +![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hi.png) + +> छवि [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) से + +## ✍️ उदाहरण नोटबुक: OpenCV [OpenCV in Action का प्रयास करें](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +आइए OpenCV के साथ कुछ प्रयोग करें [OpenCV नोटबुक](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) की खोज करके + +## निष्कर्ष + +कभी-कभी, गति पहचान या fingertip पहचान जैसी अपेक्षाकृत जटिल कार्यों को पूरी तरह से कंप्यूटर दृष्टि द्वारा हल किया जा सकता है। इसलिए, कंप्यूटर दृष्टि की बुनियादी तकनीकों को जानना और 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) + +इस प्रयोगशाला में, आप सरल इशारों के साथ एक वीडियो लेंगे, और आपका लक्ष्य ऑप्टिकल फ्लो का उपयोग करके ऊपर/नीचे/बाएं/दाएं आंदोलनों को निकालना है। + +Palm Movement Frame + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/hi/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..94cd7268 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,23 @@ +# ऑप्टिकल फ्लो का उपयोग करके गति का पता लगाना + +[AI for Beginners Curriculum](https://aka.ms/ai-beginners) से लैब असाइनमेंट। + +## कार्य + +[इस वीडियो](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) पर विचार करें, जिसमें एक व्यक्ति की हथेली स्थिर पृष्ठभूमि पर बाईं/दाईं/ऊपर/नीचे चलती है। +आप डेटा पर अक्टूबर 2023 तक प्रशिक्षित हैं। + +**आपका लक्ष्य** यह होगा कि आप ऑप्टिकल फ्लो का उपयोग करके यह निर्धारित कर सकें कि वीडियो के कौन से भागों में ऊपर/नीचे/बाईं/दाईं गति है। + +**स्ट्रेच लक्ष्य** वास्तव में त्वचा के रंग का उपयोग करके हथेली/उंगली की गति को ट्रैक करना होगा, जैसा कि [इस ब्लॉग पोस्ट](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) खोलें। + +## निष्कर्ष + +कभी-कभी, अपेक्षाकृत जटिल कार्य जैसे गति का पता लगाना या fingertip का पता लगाना पूरी तरह से कंप्यूटर दृष्टि द्वारा हल किया जा सकता है। इसलिए, यह जानना बहुत सहायक है कि OpenCV जैसी पुस्तकालयें क्या कर सकती हैं। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/hi/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..44327e03 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# प्रसिद्ध CNN आर्किटेक्चर + +### VGG-16 + +VGG-16 एक नेटवर्क है जिसने 2014 में ImageNet के शीर्ष-5 वर्गीकरण में 92.7% सटीकता प्राप्त की। इसका निम्नलिखित लेयर संरचना है: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hi.jpg) + +जैसा कि आप देख सकते हैं, VGG एक पारंपरिक पिरामिड आर्किटेक्चर का पालन करता है, जो संकुचन-पूलिंग लेयर का एक अनुक्रम है। + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hi.jpg) + +> चित्र [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) से + +### ResNet + +ResNet एक मॉडल परिवार है जिसे Microsoft Research द्वारा 2015 में प्रस्तावित किया गया था। ResNet का मुख्य विचार **अवशिष्ट ब्लॉकों** का उपयोग करना है: + + + +> चित्र [इस पेपर](https://arxiv.org/pdf/1512.03385.pdf) से + +पहचान पास-थ्रू का उपयोग करने का कारण यह है कि हमारे लेयर को **पिछले लेयर के परिणाम और अवशिष्ट ब्लॉक के आउटपुट के बीच का अंतर** भविष्यवाणी करने की आवश्यकता है - इसलिए इसे *अवशिष्ट* नाम दिया गया है। ये ब्लॉक प्रशिक्षण के लिए बहुत आसान होते हैं, और कोई भी उन ब्लॉकों के साथ कई सैकड़ों नेटवर्क बना सकता है (सबसे सामान्य रूपांतर हैं ResNet-52, ResNet-101 और ResNet-152)। + +आप इस नेटवर्क को इस तरह से भी सोच सकते हैं कि यह डेटासेट के लिए अपनी जटिलता को समायोजित करने में सक्षम है। प्रारंभ में, जब आप नेटवर्क को प्रशिक्षित करना शुरू कर रहे होते हैं, तो वेट्स के मान छोटे होते हैं, और अधिकांश संकेत पहचान पास-थ्रू लेयर के माध्यम से जाता है। जैसे-जैसे प्रशिक्षण प्रगति करता है और वेट्स बड़े होते हैं, नेटवर्क के पैरामीटर का महत्व बढ़ता है, और नेटवर्क आवश्यक अभिव्यक्तिशक्ति को समायोजित करता है ताकि प्रशिक्षण छवियों को सही ढंग से वर्गीकृत किया जा सके। + +### Google Inception + +Google Inception आर्किटेक्चर इस विचार को एक कदम आगे बढ़ाता है, और प्रत्येक नेटवर्क लेयर को कई अलग-अलग पथों के संयोजन के रूप में बनाता है: + + + +> चित्र [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) से + +यहां, हमें 1x1 संकुचन की भूमिका पर जोर देना चाहिए, क्योंकि पहले तो इसका कोई अर्थ नहीं होता। हमें 1x1 फ़िल्टर के साथ छवि पर क्यों चलना चाहिए? हालाँकि, आपको याद रखना चाहिए कि संकुचन फ़िल्टर कई गहराई चैनलों के साथ भी काम करते हैं (मूल रूप से - RGB रंग, बाद की परतों में - विभिन्न फ़िल्टर के लिए चैनल), और 1x1 संकुचन का उपयोग उन इनपुट चैनलों को विभिन्न प्रशिक्षनीय वेट्स का उपयोग करके मिलाने के लिए किया जाता है। इसे चैनल आयाम पर डाउनसैंपलिंग (पूलिंग) के रूप में भी देखा जा सकता है। + +इस विषय पर [एक अच्छा ब्लॉग पोस्ट](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) है, और [मूल पेपर](https://arxiv.org/pdf/1312.4400.pdf) है। + +### MobileNet + +MobileNet एक मॉडल परिवार है जिसकी आकार में कमी है, जो मोबाइल उपकरणों के लिए उपयुक्त है। उनका उपयोग करें यदि आपके पास संसाधनों की कमी है, और आप थोड़ी सटीकता का बलिदान कर सकते हैं। उनके पीछे का मुख्य विचार **गहराई से पृथक संकुचन** है, जो गहराई चैनलों पर स्थानिक संकुचन और 1x1 संकुचन के संयोजन द्वारा संकुचन फ़िल्टरों का प्रतिनिधित्व करने की अनुमति देता है। यह पैरामीटर की संख्या को महत्वपूर्ण रूप से कम करता है, जिससे नेटवर्क का आकार छोटा होता है, और कम डेटा के साथ प्रशिक्षित करना भी आसान होता है। + +यहां [MobileNet पर एक अच्छा ब्लॉग पोस्ट](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) है। + +## निष्कर्ष + +इस इकाई में, आपने कंप्यूटर दृष्टि न्यूरल नेटवर्क - संकुचन नेटवर्क के पीछे का मुख्य सिद्धांत सीखा है। वास्तविक जीवन की आर्किटेक्चर जो छवि वर्गीकरण, वस्तु पहचान, और यहां तक कि छवि जनरेशन नेटवर्क को शक्ति देती है, सभी CNNs पर आधारित हैं, बस अधिक परतों और कुछ अतिरिक्त प्रशिक्षण तकनीकों के साथ। + +## 🚀 चुनौती + +संबद्ध नोटबुक में, अधिक सटीकता प्राप्त करने के बारे में नीचे नोट्स हैं। कुछ प्रयोग करें यह देखने के लिए कि क्या आप उच्च सटीकता प्राप्त कर सकते हैं। + +## [पाठ-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## समीक्षा और आत्म अध्ययन + +हालांकि CNNs का उपयोग सबसे अधिकतर कंप्यूटर दृष्टि कार्यों के लिए किया जाता है, वे सामान्यतः निश्चित आकार के पैटर्न निकालने के लिए अच्छे होते हैं। उदाहरण के लिए, यदि हम ध्वनियों से निपट रहे हैं, तो हम कुछ विशिष्ट पैटर्नों की खोज के लिए CNNs का उपयोग करना चाह सकते हैं - जिस स्थिति में फ़िल्टर 1-आयामी होंगे (और इस CNN को 1D-CNN कहा जाएगा)। इसके अलावा, कभी-कभी 3D-CNN का उपयोग बहु-आयामी स्थान में विशेषताओं को निकालने के लिए किया जाता है, जैसे कि वीडियो पर कुछ घटनाएं घटित होना - CNN समय के साथ विशेषताओं में परिवर्तन के कुछ पैटर्न को पकड़ सकता है। CNNs के साथ किए जा सकने वाले अन्य कार्यों के बारे में कुछ समीक्षा और आत्म-अध्ययन करें। + +## [असाइनमेंट](lab/README.md) + +इस प्रयोगशाला में, आपको विभिन्न बिल्ली और कुत्ते की नस्लों का वर्गीकरण करने का कार्य सौंपा गया है। ये छवियाँ MNIST डेटासेट की तुलना में अधिक जटिल और उच्च आयाम की हैं, और इनमें 10 से अधिक वर्ग हैं। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/hi/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..7d3e14b9 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,58 @@ +# कन्वोल्यूशनल न्यूरल नेटवर्क्स + +हमने पहले देखा है कि न्यूरल नेटवर्क्स छवियों के साथ काम करने में काफी अच्छे होते हैं, और यहां तक कि एक-स्तरीय पर्सेप्ट्रॉन भी MNIST डेटासेट से हस्तलिखित अंकों को उचित सटीकता के साथ पहचानने में सक्षम है। हालाँकि, MNIST डेटासेट बहुत विशेष है, और सभी अंक छवि के अंदर केंद्रित होते हैं, जो कार्य को सरल बनाता है। + +## [पूर्व-व्याख्यान प्रश्नोत्तरी](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +वास्तविक जीवन में, हम चाहते हैं कि हम छवि पर वस्तुओं को उनकी सटीक स्थिति की परवाह किए बिना पहचान सकें। कंप्यूटर विज़न सामान्य वर्गीकरण से अलग है, क्योंकि जब हम किसी विशेष वस्तु को चित्र में खोजने की कोशिश कर रहे होते हैं, तो हम कुछ विशेष **पैटर्न** और उनके संयोजनों की खोज में छवि को स्कैन कर रहे होते हैं। उदाहरण के लिए, जब हम बिल्ली की तलाश कर रहे होते हैं, तो हम पहले क्षैतिज रेखाओं की तलाश कर सकते हैं, जो मूंछें बना सकती हैं, और फिर मूंछों का एक विशेष संयोजन हमें बता सकता है कि यह वास्तव में एक बिल्ली की तस्वीर है। पैटर्न की सापेक्ष स्थिति और उपस्थिति महत्वपूर्ण है, और छवि पर उनकी सटीक स्थिति नहीं। + +पैटर्न निकालने के लिए, हम **कन्वोल्यूशनल फ़िल्टर** के विचार का उपयोग करेंगे। जैसा कि आप जानते हैं, एक छवि को 2D-मैट्रिक्स या रंग गहराई के साथ 3D-टेंसर द्वारा दर्शाया जाता है। एक फ़िल्टर लागू करने का मतलब है कि हम अपेक्षाकृत छोटे **फ़िल्टर कर्नेल** मैट्रिक्स को लेते हैं, और मूल छवि में प्रत्येक पिक्सेल के लिए हम पड़ोसी बिंदुओं के साथ भारित औसत की गणना करते हैं। हम इसे पूरे चित्र पर स्लाइडिंग विंडो के रूप में देख सकते हैं, और फ़िल्टर कर्नेल मैट्रिक्स में वजन के अनुसार सभी पिक्सेल का औसत निकाल सकते हैं। + +![वर्टिकल एज फ़िल्टर](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hi.png) | ![हॉरिजेंटल एज फ़िल्टर](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hi.png) +----|---- + +> छवि द्वारा डिमित्री सोश्निकोव + +उदाहरण के लिए, यदि हम MNIST अंकों पर 3x3 वर्टिकल एज और हॉरिजेंटल एज फ़िल्टर लागू करते हैं, तो हम उन स्थानों पर हाइलाइट्स (जैसे उच्च मान) प्राप्त कर सकते हैं जहाँ हमारी मूल छवि में वर्टिकल और हॉरिजेंटल एज हैं। इस प्रकार, इन दोनों फ़िल्टर का उपयोग "एज खोजने" के लिए किया जा सकता है। इसी तरह, हम अन्य निम्न-स्तरीय पैटर्न की खोज के लिए विभिन्न फ़िल्टर डिज़ाइन कर सकते हैं: + +> [Leung-Malik फ़िल्टर बैंक](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +हालांकि, जबकि हम कुछ पैटर्न को मैन्युअल रूप से निकालने के लिए फ़िल्टर डिज़ाइन कर सकते हैं, हम नेटवर्क को इस तरह से डिज़ाइन भी कर सकते हैं कि यह स्वचालित रूप से पैटर्न सीखे। यह CNN के पीछे के मुख्य विचारों में से एक है। + +## CNN के पीछे के मुख्य विचार + +CNNs का कार्य करने का तरीका निम्नलिखित महत्वपूर्ण विचारों पर आधारित है: + +* कन्वोल्यूशनल फ़िल्टर पैटर्न निकाल सकते हैं +* हम नेटवर्क को इस तरह से डिज़ाइन कर सकते हैं कि फ़िल्टर स्वचालित रूप से प्रशिक्षित होते हैं +* हम उच्च-स्तरीय विशेषताओं में पैटर्न खोजने के लिए समान दृष्टिकोण का उपयोग कर सकते हैं, न कि केवल मूल छवि में। इस प्रकार, CNN फ़ीचर निष्कर्षण एक विशेषताओं की पदानुक्रम पर काम करता है, जो निम्न-स्तरीय पिक्सेल संयोजनों से शुरू होता है, उच्च स्तर के चित्र भागों के संयोजन तक। + +![पदानुक्रम फ़ीचर निष्कर्षण](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hi.png) + +> छवि [Hislop-Lynch के एक पेपर](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d) से, [उनके शोध](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) के आधार पर + +## ✍️ व्यायाम: कन्वोल्यूशनल न्यूरल नेटवर्क्स + +आइए यह पता लगाना जारी रखें कि कन्वोल्यूशनल न्यूरल नेटवर्क्स कैसे काम करते हैं, और हम कैसे प्रशिक्षित फ़िल्टर प्राप्त कर सकते हैं, संबंधित नोटबुक के माध्यम से काम करके: + +* [कन्वोल्यूशनल न्यूरल नेटवर्क्स - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [कन्वोल्यूशनल न्यूरल नेटवर्क्स - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## पिरामिड आर्किटेक्चर + +छवि प्रसंस्करण के लिए उपयोग किए जाने वाले अधिकांश CNNs एक तथाकथित पिरामिड आर्किटेक्चर का पालन करते हैं। मूल छवियों पर लागू पहला कन्वोल्यूशनल लेयर आमतौर पर अपेक्षाकृत कम संख्या में फ़िल्टर (8-16) रखता है, जो विभिन्न पिक्सेल संयोजनों के लिए होते हैं, जैसे कि क्षैतिज/ऊर्ध्वाधर रेखाएँ। अगले स्तर पर, हम नेटवर्क का स्थानिक आयाम कम करते हैं, और फ़िल्टर की संख्या बढ़ाते हैं, जो सरल विशेषताओं के अधिक संभावित संयोजनों के लिए होता है। प्रत्येक स्तर के साथ, जैसे-जैसे हम अंतिम वर्गीकर्ता की ओर बढ़ते हैं, छवि के स्थानिक आयाम घटते हैं, और फ़िल्टर की संख्या बढ़ती है। + +उदाहरण के लिए, आइए VGG-16 की आर्किटेक्चर पर एक नज़र डालें, जो 2014 में ImageNet के शीर्ष-5 वर्गीकरण में 92.7% सटीकता प्राप्त करने वाले नेटवर्क है: + +![ImageNet लेयर](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hi.jpg) + +![ImageNet पिरामिड](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hi.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) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/hi/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..91ee6438 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# पालतू जानवरों के चेहरों की वर्गीकरण + +[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.hi.png) + +डेटासेट डाउनलोड करने के लिए, इस कोड स्निपेट का उपयोग करें: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## नोटबुक शुरू करना + +[PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) खोलकर प्रयोगशाला शुरू करें। + +## निष्कर्ष + +आपने शून्य से छवि वर्गीकरण की एक अपेक्षाकृत जटिल समस्या को हल किया है! वर्गों की संख्या काफी अधिक थी, और फिर भी आप उचित सटीकता प्राप्त करने में सक्षम रहे! यह शीर्ष-k सटीकता को मापने के लिए भी समझ में आता है, क्योंकि कुछ वर्गों को भेद करना आसान नहीं है, जो मानवों के लिए भी स्पष्ट रूप से भिन्न नहीं हैं। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवाद में त्रुटियाँ या असमानताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..d5fb794f --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,81 @@ +# प्री-ट्रेंड नेटवर्क और ट्रांसफर लर्निंग + +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.hi.png) + +## बिल्लियाँ बनाम कुत्ते डेटा सेट + +इस उदाहरण में, हम [Cats and Dogs](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) का डेटा सेट उपयोग करेंगे, जो वास्तविक जीवन की छवि वर्गीकरण परिदृश्य के बहुत करीब है। + +## ✍️ व्यायाम: ट्रांसफर लर्निंग + +आइए ट्रांसफर लर्निंग को संबंधित नोटबुक में क्रियान्वित करते हैं: + +* [Transfer Learning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transfer Learning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## प्रतिकूल बिल्ली का दृश्य + +प्री-ट्रेंड न्यूरल नेटवर्क के अंदर इसके *मस्तिष्क* में विभिन्न पैटर्न होते हैं, जिसमें **आदर्श बिल्ली** (जैसे आदर्श कुत्ता, आदर्श ज़ेबरा, आदि) की धारणा शामिल होती है। इसे किसी तरह **इस छवि को दृश्य रूप में प्रदर्शित करना** दिलचस्प होगा। हालांकि, यह सरल नहीं है, क्योंकि पैटर्न नेटवर्क वेट्स में फैले हुए हैं, और एक पदानुक्रमिक संरचना में व्यवस्थित हैं। + +हम जो दृष्टिकोण ले सकते हैं वह है एक यादृच्छिक छवि से शुरू करना, और फिर **ग्रेडिएंट डिसेंट ऑप्टिमाइजेशन** तकनीक का उपयोग करके उस छवि को इस तरह से समायोजित करना, कि नेटवर्क सोचने लगे कि यह एक बिल्ली है। + +![छवि ऑप्टिमाइजेशन लूप](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hi.png) + +हालांकि, यदि हम ऐसा करते हैं, तो हमें कुछ ऐसा प्राप्त होगा जो यादृच्छिक शोर के बहुत करीब है। इसका कारण यह है कि *नेटवर्क को यह सोचने के कई तरीके हैं कि इनपुट छवि एक बिल्ली है*, जिनमें से कुछ दृश्य रूप से समझ में नहीं आते हैं। जबकि उन छवियों में बिल्ली के लिए विशिष्ट कई पैटर्न होते हैं, उन्हें दृश्य रूप से विशिष्ट बनाने के लिए कोई सीमा नहीं होती है। + +परिणाम को सुधारने के लिए, हम हानि फ़ंक्शन में एक और पद जोड़ सकते हैं, जिसे **वेरिएशन लॉस** कहा जाता है। यह एक मीट्रिक है जो दिखाती है कि छवि के पड़ोसी पिक्सेल कितने समान हैं। वेरिएशन लॉस को न्यूनतम करने से छवि चिकनी होती है, और शोर को हटा देती है - जिससे अधिक दृश्य रूप से आकर्षक पैटर्न प्रकट होते हैं। यहां ऐसे "आदर्श" छवियों का एक उदाहरण है, जिन्हें बिल्ली और ज़ेबरा के रूप में उच्च संभावना के साथ वर्गीकृत किया गया है: + +![आदर्श बिल्ली](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hi.png) | ![आदर्श ज़ेबरा](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hi.png) +-----|----- + *आदर्श बिल्ली* | *आदर्श ज़ेबरा* + +इसी तरह के दृष्टिकोण का उपयोग न्यूरल नेटवर्क पर **प्रतिकूल हमलों** को करने के लिए किया जा सकता है। मान लीजिए कि हम एक न्यूरल नेटवर्क को धोखा देना चाहते हैं और एक कुत्ते को बिल्ली की तरह दिखाना चाहते हैं। यदि हम कुत्ते की छवि लेते हैं, जिसे नेटवर्क द्वारा कुत्ते के रूप में पहचाना जाता है, तो हम इसे थोड़ा सा समायोजित कर सकते हैं, ग्रेडिएंट डिसेंट ऑप्टिमाइजेशन का उपयोग करके, जब तक कि नेटवर्क इसे बिल्ली के रूप में वर्गीकृत करना शुरू न कर दे: + +![कुत्ते की तस्वीर](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hi.png) | ![बिल्ली के रूप में वर्गीकृत कुत्ते की तस्वीर](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hi.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) + +इस प्रयोगशाला में, हम 35 नस्लों की बिल्लियों और कुत्तों के साथ वास्तविक जीवन के [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) पालतू डेटा सेट का उपयोग करेंगे, और हम एक ट्रांसफर लर्निंग क्लासिफायर बनाएंगे। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृ भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..75aa9949 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# गहरे अध्ययन के प्रशिक्षण के तरीके + +जैसे-जैसे न्यूरल नेटवर्क गहरे होते जाते हैं, उनके प्रशिक्षण की प्रक्रिया और अधिक चुनौतीपूर्ण होती जाती है। एक मुख्य समस्या जिसे हम [गायब होते ग्रेडिएंट्स](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) या [फूलते ग्रेडिएंट्स](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.) कहते हैं। [यह पोस्ट](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) इन समस्याओं का अच्छा परिचय देती है। + +गहरे नेटवर्क के प्रशिक्षण को अधिक कुशल बनाने के लिए, कुछ तकनीकें हैं जिनका उपयोग किया जा सकता है। + +## मानों को उचित अंतराल में रखना + +संख्यात्मक गणनाओं को अधिक स्थिर बनाने के लिए, हम यह सुनिश्चित करना चाहते हैं कि हमारे न्यूरल नेटवर्क में सभी मान उचित पैमाने के भीतर हों, आमतौर पर [-1..1] या [0..1]। यह एक बहुत सख्त आवश्यकता नहीं है, लेकिन फ्लोटिंग पॉइंट गणनाओं की प्रकृति ऐसी है कि विभिन्न परिमाण के मानों को एक साथ सटीक रूप से संचालित नहीं किया जा सकता। उदाहरण के लिए, यदि हम 10-10 और 1010 को जोड़ते हैं, तो हमें संभावना है कि 1010 प्राप्त होगा, क्योंकि छोटा मान बड़े वाले के समान क्रम में "परिवर्तित" हो जाएगा, और इस प्रकार मैन्टिसा खो जाएगा। + +अधिकांश सक्रियण फ़ंक्शंस में [-1..1] के चारों ओर गैर-रेखीयताएँ होती हैं, और इसलिए सभी इनपुट डेटा को [-1..1] या [0..1] अंतराल में स्केल करना समझदारी है। + +## प्रारंभिक वजन प्रारंभिककरण + +आदर्श रूप से, हम चाहते हैं कि नेटवर्क लेयर्स के माध्यम से गुजरने के बाद मान एक ही रेंज में हों। इसलिए यह महत्वपूर्ण है कि वजन को इस प्रकार प्रारंभिककरण किया जाए कि मानों का वितरण संरक्षित रहे। + +सामान्य वितरण **N(0,1)** एक अच्छा विचार नहीं है, क्योंकि यदि हमारे पास *n* इनपुट हैं, तो आउटपुट का मानक विचलन *n* होगा, और मान [0..1] अंतराल से बाहर निकलने की संभावना है। + +निम्नलिखित प्रारंभिककरण अक्सर उपयोग किए जाते हैं: + + * यूनिफॉर्म वितरण -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** यह सुनिश्चित करता है कि शून्य औसत और 1 के मानक विचलन वाले इनपुट के लिए वही औसत/मानक विचलन बना रहे + * **N(0,√2/(n_in+n_out))** -- जिसे **Xavier प्रारंभिककरण** (`glorot`) कहा जाता है, यह आगे और पीछे प्रसार के दौरान संकेतों को सीमा में बनाए रखने में मदद करता है + +## बैच सामान्यीकरण + +सही वजन प्रारंभिककरण के साथ भी, प्रशिक्षण के दौरान वजन मनमाने रूप से बड़े या छोटे हो सकते हैं, और वे संकेतों को उचित सीमा से बाहर ले जाएंगे। हम एक **सामान्यीकरण** तकनीक का उपयोग करके संकेतों को वापस ला सकते हैं। जबकि इनमें से कई हैं (वजन सामान्यीकरण, परत सामान्यीकरण), सबसे अधिक उपयोग किया जाने वाला बैच सामान्यीकरण है। + +**बैच सामान्यीकरण** का विचार यह है कि मिनीबैच के सभी मानों को ध्यान में रखते हुए, और उन मानों के आधार पर सामान्यीकरण (यानी औसत घटाना और मानक विचलन द्वारा विभाजित करना) करना है। इसे एक नेटवर्क परत के रूप में लागू किया जाता है जो वजन लागू करने के बाद यह सामान्यीकरण करता है, लेकिन सक्रियण फ़ंक्शन से पहले। परिणामस्वरूप, हम उच्च अंतिम सटीकता और तेज़ प्रशिक्षण देखने की संभावना रखते हैं। + +यहां बैच सामान्यीकरण पर [मूल पेपर](https://arxiv.org/pdf/1502.03167.pdf), [विकिपीडिया पर स्पष्टीकरण](https://en.wikipedia.org/wiki/Batch_normalization), और [एक अच्छा परिचयात्मक ब्लॉग पोस्ट](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (और [रूसी में](https://habrahabr.ru/post/309302/)) है। + +## ड्रॉपआउट + +**ड्रॉपआउट** एक दिलचस्प तकनीक है जो प्रशिक्षण के दौरान एक निश्चित प्रतिशत यादृच्छिक न्यूरॉन्स को हटा देती है। इसे एक परत के रूप में भी लागू किया गया है जिसमें एक पैरामीटर होता है (हटाने के लिए न्यूरॉन्स का प्रतिशत, आमतौर पर 10%-50%), और प्रशिक्षण के दौरान यह इनपुट वेक्टर के यादृच्छिक तत्वों को शून्य कर देता है, इससे पहले कि इसे अगले परत में भेजा जाए। + +हालांकि यह एक अजीब विचार की तरह लग सकता है, आप [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) नोटबुक में MNIST अंक वर्गीकरणकर्ता के प्रशिक्षण पर ड्रॉपआउट के प्रभाव को देख सकते हैं। यह प्रशिक्षण को तेज करता है और हमें कम प्रशिक्षण युग में उच्च सटीकता प्राप्त करने की अनुमति देता है। + +इस प्रभाव को कई तरीकों से समझाया जा सकता है: + + * इसे मॉडल के लिए एक यादृच्छिक झटका कारक माना जा सकता है, जो अनुकूलन को स्थानीय न्यूनतम से बाहर ले जाता है + * इसे *अप्रत्यक्ष मॉडल औसत* के रूप में माना जा सकता है, क्योंकि हम कह सकते हैं कि ड्रॉपआउट के दौरान हम थोड़ा अलग मॉडल का प्रशिक्षण कर रहे हैं + +> *कुछ लोग कहते हैं कि जब एक नशे में व्यक्ति कुछ सीखने की कोशिश करता है, तो वह इसे अगले सुबह बेहतर याद रखेगा, एक होशियार व्यक्ति की तुलना में, क्योंकि कुछ खराब काम कर रहे न्यूरॉन्स वाला मस्तिष्क अर्थ को समझने के लिए बेहतर अनुकूलन करता है। हमने कभी यह परीक्षण नहीं किया कि यह सच है या नहीं* + +## ओवरफिटिंग को रोकना + +गहरे अध्ययन का एक बहुत महत्वपूर्ण पहलू [ओवरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) को रोकने में सक्षम होना है। जबकि बहुत शक्तिशाली न्यूरल नेटवर्क मॉडल का उपयोग करना लुभावना हो सकता है, हमें हमेशा मॉडल के पैरामीटर की संख्या को प्रशिक्षण नमूनों की संख्या के साथ संतुलित करना चाहिए। + +> सुनिश्चित करें कि आप [ओवरफिटिंग](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) की अवधारणा को समझते हैं जिसे हमने पहले पेश किया था! + +ओवरफिटिंग को रोकने के कई तरीके हैं: + + * प्रारंभिक रोकना -- सत्यापन सेट पर त्रुटि की निरंतर निगरानी करना और जब सत्यापन त्रुटि बढ़ना शुरू हो जाए तो प्रशिक्षण रोकना। + * स्पष्ट वजन अपघटन / नियमितीकरण -- उच्च पूर्णांक मानों के लिए हानि फ़ंक्शन में एक अतिरिक्त दंड जोड़ना, जो मॉडल को बहुत अस्थिर परिणाम प्राप्त करने से रोकता है + * मॉडल औसत -- कई मॉडलों को प्रशिक्षित करना और फिर परिणाम का औसत निकालना। यह भिन्नता को कम करने में मदद करता है। + * ड्रॉपआउट (अप्रत्यक्ष मॉडल औसत) + +## ऑप्टिमाइज़र / प्रशिक्षण एल्गोरिदम + +प्रशिक्षण का एक और महत्वपूर्ण पहलू अच्छा प्रशिक्षण एल्गोरिदम चुनना है। जबकि पारंपरिक **ग्रेडिएंट डिसेंट** एक उचित विकल्प है, यह कभी-कभी बहुत धीमा हो सकता है, या अन्य समस्याओं का परिणाम हो सकता है। + +गहरे अध्ययन में, हम **स्टोकास्टिक ग्रेडिएंट डिसेंट** (SGD) का उपयोग करते हैं, जो एक ग्रेडिएंट डिसेंट है जो मिनीबैचेस पर लागू होता है, जो प्रशिक्षण सेट से यादृच्छिक रूप से चुने जाते हैं। वजन को इस सूत्र का उपयोग करके समायोजित किया जाता है: + +wt+1 = wt - η∇ℒ + +### संवेग + +**संवेग SGD** में, हम पिछले चरणों से एक ग्रेडिएंट का एक भाग रखते हैं। यह तब के समान है जब हम कहीं इनर्शिया के साथ चल रहे होते हैं, और हमें एक अलग दिशा में एक धक्का मिलता है, तो हमारी पथ तुरंत नहीं बदलती, लेकिन मूल गति का कुछ भाग बनाए रखती है। यहां हम *गति* को दर्शाने के लिए एक और वेक्टर v पेश करते हैं: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +यहां पैरामीटर γ यह दर्शाता है कि हम इनर्शिया को कितनी मात्रा में ध्यान में रखते हैं: γ=0 पारंपरिक SGD के लिए है; γ=1 एक शुद्ध गति समीकरण है। + +### एडम, एडेग्रेड, आदि। + +चूंकि प्रत्येक परत में हम कुछ मैट्रिक्स Wi द्वारा संकेतों को गुणा करते हैं, ||Wi|| के आधार पर, ग्रेडिएंट या तो घट सकता है और 0 के करीब हो सकता है, या अनंत रूप से बढ़ सकता है। यह फूलते/गायब होते ग्रेडिएंट्स की समस्या का सार है। + +इस समस्या का एक समाधान यह है कि हम समीकरण में केवल ग्रेडिएंट की दिशा का उपयोग करें, और पूर्णांक मान को नजरअंदाज करें, अर्थात् + +wt+1 = wt - η(∇ℒ/||∇ℒ||), जहां ||∇ℒ|| = √∑(∇ℒ)2 + +इस एल्गोरिदम को **एडेग्रेड** कहा जाता है। इसी विचार का उपयोग करने वाले अन्य एल्गोरिदम हैं: **आरएमएसप्रॉप**, **एडम** + +> **एडम** को कई अनुप्रयोगों के लिए एक बहुत प्रभावी एल्गोरिदम माना जाता है, इसलिए यदि आप सुनिश्चित नहीं हैं कि कौन सा उपयोग करना है - एडम का उपयोग करें। + +### ग्रेडिएंट क्लिपिंग + +ग्रेडिएंट क्लिपिंग उपरोक्त विचार का एक विस्तार है। जब ||∇ℒ|| ≤ θ होता है, तो हम वजन अनुकूलन में मूल ग्रेडिएंट पर विचार करते हैं, और जब ||∇ℒ|| > θ - हम ग्रेडिएंट को इसके मान से विभाजित करते हैं। यहां θ एक पैरामीटर है, अधिकांश मामलों में हम θ=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) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान रखें कि स्वचालित अनुवाद में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..a174ba53 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# ऑक्सफोर्ड पालतू जानवरों की वर्गीकरण ट्रांसफर लर्निंग का उपयोग करके + +[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) खोलकर लैब शुरू करें। + +## सीखने की बातें + +ट्रांसफर लर्निंग और प्री-ट्रेंड नेटवर्क हमें वास्तविक दुनिया की छवि वर्गीकरण समस्याओं को अपेक्षाकृत आसानी से हल करने की अनुमति देते हैं। हालाँकि, प्री-ट्रेंड नेटवर्क समान प्रकार की छवियों पर अच्छी तरह से काम करते हैं, और यदि हम बहुत अलग छवियों (जैसे चिकित्सा छवियों) को वर्गीकृत करना शुरू करते हैं, तो हमें बहुत खराब परिणाम मिलने की संभावना है। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/hi/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..f394d362 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# ऑटोएन्कोडर्स + +जब हम CNNs को प्रशिक्षित करते हैं, तो एक समस्या यह है कि हमें बहुत सारे लेबल वाले डेटा की आवश्यकता होती है। छवि वर्गीकरण के मामले में, हमें छवियों को विभिन्न श्रेणियों में विभाजित करने की आवश्यकता होती है, जो एक मैनुअल प्रयास है। + +## [प्री-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +हालांकि, हम CNN फ़ीचर एक्सट्रैक्टर्स के लिए कच्चे (अनलेबल्ड) डेटा का उपयोग करना चाहते हैं, जिसे **सेल्फ-सुपरवाइज्ड लर्निंग** कहा जाता है। लेबल के बजाय, हम प्रशिक्षण छवियों का उपयोग नेटवर्क इनपुट और आउटपुट दोनों के रूप में करेंगे। **ऑटोएन्कोडर** का मुख्य विचार यह है कि हमारे पास एक **एन्कोडर नेटवर्क** होगा जो इनपुट छवि को कुछ **लेटेंट स्पेस** (सामान्यतः यह किसी छोटे आकार के वेक्टर के रूप में होता है) में परिवर्तित करता है, फिर **डिकोडर नेटवर्क**, जिसका लक्ष्य मूल छवि को पुनर्निर्माण करना होगा। + +> ✅ एक [ऑटोएन्कोडर](https://wikipedia.org/wiki/Autoencoder) "एक प्रकार का कृत्रिम न्यूरल नेटवर्क है जिसका उपयोग अनलेबल्ड डेटा के कुशल कोडिंग सीखने के लिए किया जाता है।" + +चूंकि हम एक ऑटोएन्कोडर को मूल छवि से अधिक से अधिक जानकारी को पकड़ने के लिए प्रशिक्षित कर रहे हैं ताकि सटीक पुनर्निर्माण हो सके, नेटवर्क इनपुट छवियों के सर्वोत्तम **एंबेडिंग** को पकड़ने का प्रयास करता है। + +![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hi.jpg) + +> छवि [Keras ब्लॉग](https://blog.keras.io/building-autoencoders-in-keras.html) से + +## ऑटोएन्कोडर्स के उपयोग के परिदृश्य + +जबकि मूल छवियों को पुनर्निर्माण करना अपने आप में उपयोगी नहीं लगता, कुछ परिदृश्य हैं जहाँ ऑटोएन्कोडर्स विशेष रूप से उपयोगी हैं: + +* **दृश्यता के लिए छवियों के आयाम को कम करना** या **छवि एंबेडिंग का प्रशिक्षण**। आमतौर पर ऑटोएन्कोडर्स PCA की तुलना में बेहतर परिणाम देते हैं, क्योंकि यह छवियों की स्थानिक प्रकृति और पदानुक्रमित विशेषताओं को ध्यान में रखता है। +* **डिनोइज़िंग**, अर्थात् छवि से शोर को हटाना। क्योंकि शोर बहुत सारी बेकार जानकारी ले जाता है, ऑटोएन्कोडर इसे अपेक्षाकृत छोटे लेटेंट स्पेस में समायोजित नहीं कर सकता है, और इस प्रकार यह छवि के केवल महत्वपूर्ण भाग को पकड़ता है। डिनोइज़र को प्रशिक्षित करते समय, हम मूल छवियों के साथ शुरू करते हैं, और ऑटोएन्कोडर के लिए इनपुट के रूप में कृत्रिम रूप से जोड़े गए शोर के साथ छवियों का उपयोग करते हैं। +* **सुपर-रेज़ोल्यूशन**, छवि की संकल्पना बढ़ाना। हम उच्च-रिज़ॉल्यूशन छवियों के साथ शुरू करते हैं, और ऑटोएन्कोडर इनपुट के रूप में कम रिज़ॉल्यूशन वाली छवि का उपयोग करते हैं। +* **जनरेटिव मॉडल**। एक बार जब हम ऑटोएन्कोडर को प्रशिक्षित कर लेते हैं, तो डिकोडर भाग का उपयोग नए ऑब्जेक्ट्स बनाने के लिए किया जा सकता है, जो यादृच्छिक लेटेंट वेक्टर से शुरू होता है। + +## वेरिएशनल ऑटोएन्कोडर्स (VAE) + +पारंपरिक ऑटोएन्कोडर इनपुट डेटा के आयाम को किसी न किसी तरह से कम करते हैं, इनपुट छवियों की महत्वपूर्ण विशेषताओं का पता लगाते हैं। हालाँकि, लेटेंट वेक्टर अक्सर ज्यादा मायने नहीं रखते। दूसरे शब्दों में, MNIST डेटासेट को उदाहरण के रूप में लेते हुए, यह पता लगाना कि कौन से अंकों का संबंध विभिन्न लेटेंट वेक्टर से है, एक आसान कार्य नहीं है, क्योंकि निकटतम लेटेंट वेक्टर आवश्यक रूप से समान अंकों से मेल नहीं खा सकते हैं। + +दूसरी ओर, *जनरेटिव* मॉडल को प्रशिक्षित करने के लिए लेटेंट स्पेस की कुछ समझ होना बेहतर है। यह विचार हमें **वेरिएशनल ऑटो-एन्कोडर** (VAE) की ओर ले जाता है। + +VAE वह ऑटोएन्कोडर है जो लेटेंट पैरामीटर के *आंकिक वितरण* की भविष्यवाणी करना सीखता है, जिसे **लेटेंट वितरण** कहा जाता है। उदाहरण के लिए, हम चाहते हैं कि लेटेंट वेक्टर सामान्य रूप से कुछ औसत zmean और मानक विचलन zsigma के साथ वितरित हों (दोनों औसत और मानक विचलन कुछ आयाम d के वेक्टर होते हैं)। VAE में एन्कोडर उन पैरामीटर की भविष्यवाणी करना सीखता है, और फिर डिकोडर इस वितरण से एक यादृच्छिक वेक्टर लेता है ताकि वस्तु को पुनर्निर्माण किया जा सके। + +सारांश में: + + * इनपुट वेक्टर से, हम `z_mean` और `z_log_sigma` की भविष्यवाणी करते हैं (मानक विचलन की भविष्यवाणी करने के बजाय, हम इसके लॉगरिदम की भविष्यवाणी करते हैं) + * हम वितरण N(zmean,exp(zlog\_sigma)) से एक वेक्टर `sample` का नमूना लेते हैं + * डिकोडर मूल छवि को `sample` को इनपुट वेक्टर के रूप में उपयोग करके डिकोड करने का प्रयास करता है + + + +> छवि [इस ब्लॉग पोस्ट](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) से है, जिसे इसाक डाइकमैन ने लिखा है + +वेरिएशनल ऑटो-एन्कोडर्स एक जटिल हानि फ़ंक्शन का उपयोग करते हैं जो दो भागों में विभाजित होता है: + +* **पुनर्निर्माण हानि** वह हानि फ़ंक्शन है जो यह दर्शाता है कि पुनर्निर्मित छवि लक्ष्य के कितनी करीब है (यह औसत वर्ग त्रुटि, या MSE हो सकता है)। यह सामान्य ऑटोएन्कोडर्स में वही हानि फ़ंक्शन है। +* **KL हानि**, जो सुनिश्चित करती है कि लेटेंट वेरिएबल वितरण सामान्य वितरण के करीब रहे। यह [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) के विचार पर आधारित है - एक मेट्रिक जो यह अनुमान लगाने के लिए है कि दो सांख्यिकीय वितरण कितने समान हैं। + +VAEs का एक महत्वपूर्ण लाभ यह है कि वे हमें नए चित्रों को अपेक्षाकृत आसानी से उत्पन्न करने की अनुमति देते हैं, क्योंकि हम जानते हैं कि किस वितरण से लेटेंट वेक्टर का नमूना लेना है। उदाहरण के लिए, यदि हम MNIST पर 2D लेटेंट वेक्टर के साथ VAE को प्रशिक्षित करते हैं, तो हम विभिन्न अंकों को प्राप्त करने के लिए लेटेंट वेक्टर के घटकों को भिन्न कर सकते हैं: + +vaemnist + +> छवि [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +ध्यान दें कि छवियाँ एक-दूसरे में कैसे मिलती हैं, क्योंकि हम लेटेंट पैरामीटर स्पेस के विभिन्न भागों से लेटेंट वेक्टर प्राप्त करना शुरू करते हैं। हम इस स्पेस को 2D में भी दृश्य बना सकते हैं: + +vaemnist cluster + +> छवि [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +## ✍️ व्यायाम: ऑटोएन्कोडर्स + +ऑटोएन्कोडर्स के बारे में अधिक जानने के लिए इन संबंधित नोटबुक्स को देखें: + +* [TensorFlow में ऑटोएन्कोडर्स](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [PyTorch में ऑटोएन्कोडर्स](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## ऑटोएन्कोडर्स के गुण + +* **डेटा विशेष** - वे केवल उन प्रकार की छवियों के साथ अच्छी तरह से काम करते हैं जिन पर उन्हें प्रशिक्षित किया गया है। उदाहरण के लिए, यदि हम फूलों पर सुपर-रेज़ोल्यूशन नेटवर्क को प्रशिक्षित करते हैं, तो यह चित्रों पर अच्छी तरह से काम नहीं करेगा। इसका कारण यह है कि नेटवर्क प्रशिक्षण डेटासेट से सीखी गई विशेषताओं से बारीकियों को लेकर उच्च रिज़ॉल्यूशन छवि उत्पन्न कर सकता है। +* **हानिकारक** - पुनर्निर्मित छवि मूल छवि के समान नहीं होती है। हानि की प्रकृति उस *हानि फ़ंक्शन* द्वारा परिभाषित होती है जिसका उपयोग प्रशिक्षण के दौरान किया जाता है। +* **अनलेबल्ड डेटा** पर कार्य करता है। + +## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## निष्कर्ष + +इस पाठ में, आपने AI वैज्ञानिक के लिए उपलब्ध विभिन्न प्रकार के ऑटोएन्कोडर्स के बारे में सीखा। आपने उन्हें बनाना और छवियों को पुनर्निर्माण करने के लिए उनका उपयोग करना सीखा। आपने VAE के बारे में भी सीखा और इसे नए चित्र उत्पन्न करने के लिए कैसे उपयोग करना है। + +## 🚀 चुनौती + +इस पाठ में, आपने छवियों के लिए ऑटोएन्कोडर्स के उपयोग के बारे में सीखा। लेकिन उनका उपयोग संगीत के लिए भी किया जा सकता है! मैजेंटा प्रोजेक्ट के [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) आपको एक 'कार्य' मिलेगा - इसका उपयोग अपने असाइनमेंट के रूप में करें। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृ भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/10-GANs/README.md b/translations/hi/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..54fe2f83 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# जनरेटिव एडेवर्सेरियल नेटवर्क्स + +पिछले अनुभाग में, हमने **जनरेटिव मॉडल** के बारे में सीखा: ऐसे मॉडल जो प्रशिक्षण डेटा सेट में मौजूद छवियों के समान नई छवियां उत्पन्न कर सकते हैं। VAE एक अच्छे जनरेटिव मॉडल का उदाहरण था। + +## [प्री-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +हालांकि, यदि हम वास्तव में अर्थपूर्ण कुछ उत्पन्न करने की कोशिश करते हैं, जैसे कि उचित संकल्प में एक पेंटिंग, VAE के साथ, हम देखेंगे कि प्रशिक्षण अच्छी तरह से संगठित नहीं होता है। इस उपयोग के मामले के लिए, हमें जनरेटिव मॉडल के लिए विशेष रूप से लक्षित एक और आर्किटेक्चर के बारे में सीखना चाहिए - **जनरेटिव एडेवर्सेरियल नेटवर्क्स**, या GANs। + +GAN का मुख्य विचार दो न्यूरल नेटवर्क्स को एक-दूसरे के खिलाफ प्रशिक्षित करना है: + + + +> छवि द्वारा [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ थोड़ा शब्दावली: +> * **जनरेटर** एक नेटवर्क है जो कुछ यादृच्छिक वेक्टर लेता है, और परिणामस्वरूप छवि उत्पन्न करता है +> * **डिस्क्रिमिनेटर** एक नेटवर्क है जो एक छवि लेता है, और इसे बताना चाहिए कि यह एक वास्तविक छवि है (प्रशिक्षण डेटा सेट से), या इसे एक जनरेटर द्वारा उत्पन्न किया गया था। यह मूलतः एक छवि वर्गीकर्ता है। + +### डिस्क्रिमिनेटर + +डिस्क्रिमिनेटर की आर्किटेक्चर एक साधारण छवि वर्गीकरण नेटवर्क से भिन्न नहीं होती है। सबसे सरल मामले में, यह एक पूर्ण-सम्पर्कित वर्गीकर्ता हो सकता है, लेकिन संभावना है कि यह एक [संविधान नेटवर्क](../07-ConvNets/README.md) होगा। + +> ✅ संविधान नेटवर्क पर आधारित GAN को [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) कहा जाता है + +एक CNN डिस्क्रिमिनेटर निम्नलिखित परतों से बना होता है: कई संकुचन+पूलिंग (जो स्थानिक आकार में घटते हैं) और, एक या अधिक पूर्ण-संयोगित परतें "विशेषता वेक्टर" प्राप्त करने के लिए, अंतिम बाइनरी वर्गीकर्ता। + +> ✅ इस संदर्भ में 'पूलिंग' एक तकनीक है जो छवि के आकार को कम करती है। "पूलिंग परतें डेटा के आयामों को एक परत में न्यूरॉन क्लस्टरों के आउटपुट को अगले परत में एकल न्यूरॉन में मिलाकर कम करती हैं।" - [स्रोत](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### जनरेटर + +जनरेटर थोड़ा अधिक जटिल है। आप इसे एक विपरीत डिस्क्रिमिनेटर मान सकते हैं। एक लैटेंट वेक्टर (विशेषता वेक्टर के स्थान पर) से शुरू करते हुए, इसमें आवश्यक आकार/आकृति में परिवर्तित करने के लिए एक पूर्ण-संयोगित परत होती है, उसके बाद डीकंवोल्यूशन्स+अपस्केलिंग होती है। यह [ऑटोएन्कोडर](../09-Autoencoders/README.md) के *डिकोडर* भाग के समान है। + +> ✅ चूंकि संविधान परत को छवि के पार करते हुए एक रैखिक फ़िल्टर के रूप में लागू किया गया है, डीकंवोल्यूशन मूलतः संविधान के समान है, और इसे उसी परत लॉजिक का उपयोग करके लागू किया जा सकता है। + + + +> छवि द्वारा [Dmitry Soshnikov](http://soshnikov.com) + +### GAN को प्रशिक्षित करना + +GAN को **एडेवर्सेरियल** कहा जाता है क्योंकि जनरेटर और डिस्क्रिमिनेटर के बीच एक निरंतर प्रतिस्पर्धा होती है। इस प्रतिस्पर्धा के दौरान, दोनों जनरेटर और डिस्क्रिमिनेटर में सुधार होता है, इस प्रकार नेटवर्क बेहतर और बेहतर चित्र उत्पन्न करना सीखता है। + +प्रशिक्षण दो चरणों में होता है: + +* **डिस्क्रिमिनेटर को प्रशिक्षित करना**। यह कार्य काफी सीधा है: हम जनरेटर द्वारा एक बैच छवियों का निर्माण करते हैं, उन्हें 0 लेबल करते हैं, जो नकली छवि का प्रतीक है, और इनपुट डेटा सेट से एक बैच छवियों का उपयोग करते हैं (जिसमें 1 लेबल, वास्तविक छवि)। हम कुछ *डिस्क्रिमिनेटर हानि* प्राप्त करते हैं, और बैकप्रॉप करते हैं। +* **जनरेटर को प्रशिक्षित करना**। यह थोड़ा अधिक जटिल है, क्योंकि हमें सीधे जनरेटर के लिए अपेक्षित आउटपुट नहीं पता है। हम एक जनरेटर के बाद डिस्क्रिमिनेटर से मिलकर बने पूरे GAN नेटवर्क को लेते हैं, इसे कुछ यादृच्छिक वेक्टरों से खिलाते हैं, और परिणाम की अपेक्षा करते हैं कि यह 1 हो (वास्तविक छवियों के लिए)। फिर हम डिस्क्रिमिनेटर के पैरामीटर को फ्रीज करते हैं (हम नहीं चाहते कि इसे इस चरण में प्रशिक्षित किया जाए), और बैकप्रॉप करते हैं। + +इस प्रक्रिया के दौरान, जनरेटर और डिस्क्रिमिनेटर दोनों की हानियाँ महत्वपूर्ण रूप से नहीं घटती हैं। आदर्श स्थिति में, उन्हें दोनो नेटवर्क के प्रदर्शन में सुधार के अनुरूप झूलना चाहिए। + +## ✍️ अभ्यास: GANs + +* [TensorFlow/Keras में GAN नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [PyTorch में GAN नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN प्रशिक्षण के साथ समस्याएँ + +GANs को प्रशिक्षित करना विशेष रूप से कठिन माना जाता है। यहाँ कुछ समस्याएँ हैं: + +* **मोड पतन**। इस शब्द से हमारा तात्पर्य है कि जनरेटर एक सफल छवि उत्पन्न करना सीखता है जो डिस्क्रिमिनेटर को धोखा देती है, और न कि विभिन्न प्रकार की छवियों का उत्पादन करती है। +* **हाइपरपैरामीटर के प्रति संवेदनशीलता**। अक्सर आप देख सकते हैं कि एक GAN बिल्कुल संगठित नहीं होती है, और फिर अचानक सीखने की दर में कमी आ जाती है जो संगठित होने का परिणाम होती है। +* जनरेटर और डिस्क्रिमिनेटर के बीच **संतुलन** बनाए रखना। कई मामलों में, डिस्क्रिमिनेटर हानि अपेक्षाकृत जल्दी शून्य तक गिर सकती है, जिससे जनरेटर आगे प्रशिक्षित नहीं हो पाता। इसे पार करने के लिए, हम जनरेटर और डिस्क्रिमिनेटर के लिए अलग-अलग सीखने की दरें सेट करने का प्रयास कर सकते हैं, या यदि हानि पहले से ही बहुत कम है तो डिस्क्रिमिनेटर प्रशिक्षण छोड़ सकते हैं। +* **उच्च संकल्प** के लिए प्रशिक्षण। ऑटोएन्कोडर के साथ समान समस्या को दर्शाते हुए, यह समस्या इसलिए उत्पन्न होती है क्योंकि बहुत सारी परतों का पुनर्निर्माण करने से कलाकृतियाँ उत्पन्न होती हैं। इस समस्या का समाधान सामान्यतः **प्रगतिशील वृद्धि** के साथ किया जाता है, जब पहले कुछ परतें कम-रेस छवियों पर प्रशिक्षित होती हैं, और फिर परतें "अनलॉक" या जोड़ी जाती हैं। एक अन्य समाधान यह होगा कि परतों के बीच अतिरिक्त कनेक्शन जोड़े जाएं और एक साथ कई संकल्पों को प्रशिक्षित किया जाए - इसके विवरण के लिए इस [मल्टी-स्केल ग्रेडिएंट GANs पेपर](https://arxiv.org/abs/1903.06048) को देखें। + +## शैली परिवर्तन + +GANs कलात्मक छवियां उत्पन्न करने का एक शानदार तरीका है। एक और दिलचस्प तकनीक जिसे **शैली परिवर्तन** कहा जाता है, वह एक **सामग्री छवि** लेती है, और इसे एक अलग शैली में फिर से चित्रित करती है, **शैली छवि** से फ़िल्टर लागू करती है। + +यह इस प्रकार काम करता है: +* हम एक यादृच्छिक शोर छवि (या एक सामग्री छवि के साथ, लेकिन समझने के लिए यह यादृच्छिक शोर से शुरू करना आसान है) +* हमारा लक्ष्य एक ऐसी छवि बनाना होगा, जो सामग्री छवि और शैली छवि के करीब हो। यह दो हानि कार्यों द्वारा निर्धारित किया जाएगा: + - **सामग्री हानि** वर्तमान छवि और सामग्री छवि से कुछ परतों पर CNN द्वारा निकाले गए विशेषताओं के आधार पर गणना की जाती है + - **शैली हानि** वर्तमान छवि और शैली छवि के बीच एक चतुर तरीके से गणना की जाती है, जिसमें ग्राम मैट्रिस का उपयोग किया जाता है (अधिक विवरण [उदाहरण नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) में) +* छवि को चिकना बनाने और शोर को हटाने के लिए, हम **वेरिएशन हानि** भी पेश करते हैं, जो पड़ोसी पिक्सेल के बीच औसत दूरी की गणना करती है +* मुख्य अनुकूलन लूप वर्तमान छवि को ग्रेडिएंट डिसेंट (या किसी अन्य अनुकूलन एल्गोरिदम) का उपयोग करके समायोजित करता है ताकि कुल हानि को न्यूनतम किया जा सके, जो तीन हानियों का एक भारित योग है। + +## ✍️ उदाहरण: [शैली परिवर्तन](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [पोस्ट-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## निष्कर्ष + +इस पाठ में, आपने GANs के बारे में सीखा और उन्हें कैसे प्रशिक्षित किया जाए। आपने इस प्रकार के न्यूरल नेटवर्क को जिन विशेष चुनौतियों का सामना करना पड़ सकता है, और उनसे पार पाने के कुछ रणनीतियों के बारे में भी सीखा। + +## 🚀 चुनौती + +अपने स्वयं के चित्रों का उपयोग करके [शैली परिवर्तन नोटबुक](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) पर जाएं। + +## समीक्षा और आत्म-अध्ययन + +संदर्भ के लिए, इन संसाधनों में GANs के बारे में अधिक पढ़ें: + +* मार्को पासिनी, [10 पाठ जो मैंने एक वर्ष तक GANs को प्रशिक्षित करते समय सीखे](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), एक *de facto* GAN आर्किटेक्चर जिसे विचार करना है +* [Azure ML पर GANs का उपयोग करके जनरेटिव आर्ट बनाना](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## असाइनमेंट + +इस पाठ से जुड़े दो नोटबुक में से एक पर पुनर्विचार करें और अपने स्वयं के चित्रों पर GAN को फिर से प्रशिक्षित करें। आप क्या बना सकते हैं? + +**अस्वीकृति**: +यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..e3570ec0 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,49 @@ +YOLO एक वास्तविक समय का एक-पास एल्गोरिदम है। इसका मुख्य विचार निम्नलिखित है: + +* छवि को $S\times S$ क्षेत्रों में विभाजित किया जाता है +* प्रत्येक क्षेत्र के लिए, **CNN** $n$ संभावित वस्तुओं, *bounding box* के निर्देशांक और *confidence*=*probability* * IoU की भविष्यवाणी करता है। + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hi.png) +> चित्र [official paper](https://arxiv.org/abs/1506.02640) से + +### अन्य एल्गोरिदम + +* RetinaNet: [official paper](https://arxiv.org/abs/1708.02002) + - [Torchvision में PyTorch कार्यान्वयन](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras कार्यान्वयन](https://github.com/fizyr/keras-retinanet) + - [Keras सैंपल में RetinaNet के साथ वस्तु पहचान](https://keras.io/examples/vision/retinanet/) +* SSD (सिंगल शॉट डिटेक्टर): [official paper](https://arxiv.org/abs/1512.02325) + +## ✍️ अभ्यास: वस्तु पहचान + +अपने अध्ययन को निम्नलिखित नोटबुक में जारी रखें: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## निष्कर्ष + +इस पाठ में आपने वस्तु पहचान के विभिन्न तरीकों का संक्षिप्त दौरा किया! + +## 🚀 चुनौती + +इन लेखों और नोटबुकों को YOLO के बारे में पढ़ें और खुद आजमाएं + +* YOLO का वर्णन करने वाला [अच्छा ब्लॉग पोस्ट](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) + * [आधिकारिक साइट](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras कार्यान्वयन](https://github.com/experiencor/keras-yolo2), [कदम-दर-कदम नोटबुक](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras कार्यान्वयन](https://github.com/experiencor/keras-yolo2), [कदम-दर-कदम नोटबुक](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [पाठ के बाद का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## समीक्षा & आत्म-अध्ययन + +* [वस्तु पहचान](https://tjmachinelearning.com/lectures/1718/obj/) निखिल सर्डाना द्वारा +* [वस्तु पहचान एल्गोरिदम की अच्छी तुलना](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [वस्तु पहचान के लिए गहरे शिक्षण एल्गोरिदम की समीक्षा](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [बुनियादी वस्तु पहचान एल्गोरिदम का कदम-दर-कदम परिचय](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [वस्तु पहचान के लिए Python में Faster R-CNN का कार्यान्वयन](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [असाइनमेंट: वस्तु पहचान](lab/README.md) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृ भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..fce4af7d --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# हेड डिटेक्शन हॉलीवुड हेड्स डेटासेट का उपयोग करके + +[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` है, और प्रत्येक सिर के लिए, आपको बाउंडिंग बॉक्स के निर्देशांक मिलते हैं। आप Python लाइब्रेरी का उपयोग करके XML को पार्स कर सकते हैं, या [इस लाइब्रेरी](https://pypi.org/project/pascal-voc/) का उपयोग कर सकते हैं ताकि सीधे PASCAL VOC प्रारूप से निपट सकें। + +## ऑब्जेक्ट डिटेक्शन का प्रशिक्षण + +आप निम्नलिखित तरीकों में से किसी एक का उपयोग करके ऑब्जेक्ट डिटेक्शन मॉडल को प्रशिक्षित कर सकते हैं: + +* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) और इसके Python API का उपयोग करके मॉडल को प्रोग्रामेटिक रूप से क्लाउड में प्रशिक्षित करें। कस्टम विजन मॉडल को प्रशिक्षित करने के लिए कुछ सौ छवियों से अधिक का उपयोग नहीं कर सकेगा, इसलिए आपको डेटासेट को सीमित करने की आवश्यकता हो सकती है। +* [Keras ट्यूटोरियल](https://keras.io/examples/vision/retinanet/) से उदाहरण का उपयोग करके RetinaNet मॉडल को प्रशिक्षित करना। +* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) में निर्मित मॉड्यूल का उपयोग करना। + +## निष्कर्ष + +ऑब्जेक्ट डिटेक्शन एक ऐसा कार्य है जो उद्योग में अक्सर आवश्यक होता है। जबकि कुछ सेवाएँ हैं जिनका उपयोग ऑब्जेक्ट डिटेक्शन करने के लिए किया जा सकता है (जैसे [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), यह समझना महत्वपूर्ण है कि ऑब्जेक्ट डिटेक्शन कैसे काम करता है और अपने स्वयं के मॉडल को प्रशिक्षित करने में सक्षम होना चाहिए। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/hi/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..0e1458b0 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# विभाजन + +हमने पहले ऑब्जेक्ट डिटेक्शन के बारे में सीखा है, जो हमें *बाउंडिंग बॉक्स* की भविष्यवाणी करके छवि में वस्तुओं को स्थानांतरित करने की अनुमति देता है। हालाँकि, कुछ कार्यों के लिए हमें केवल बाउंडिंग बॉक्स की आवश्यकता नहीं होती है, बल्कि अधिक सटीक वस्तु स्थानांतरण की भी आवश्यकता होती है। इस कार्य को **विभाजन** कहा जाता है। + +## [प्री-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +विभाजन को **पिक्सेल वर्गीकरण** के रूप में देखा जा सकता है, जबकि छवि के **प्रत्येक** पिक्सेल के लिए हमें उसकी श्रेणी की भविष्यवाणी करनी होती है (*पृष्ठभूमि* एक श्रेणी है)। दो मुख्य विभाजन एल्गोरिदम हैं: + +* **सेमांटिक विभाजन** केवल पिक्सेल की श्रेणी बताता है, और एक ही श्रेणी की विभिन्न वस्तुओं के बीच भेद नहीं करता है। +* **इंस्टेंस विभाजन** श्रेणियों को विभिन्न उदाहरणों में विभाजित करता है। + +उदाहरण के लिए, इन भेड़ों को इंस्टेंस विभाजन में विभिन्न वस्तुएं माना जाता है, लेकिन सेमांटिक विभाजन में सभी भेड़ों को एक श्रेणी द्वारा दर्शाया जाता है। + + + +> छवि [इस ब्लॉग पोस्ट](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) से ली गई है। + +विभाजन के लिए विभिन्न न्यूरल आर्किटेक्चर हैं, लेकिन सभी की संरचना समान होती है। एक तरह से, यह ऑटोएन्कोडर के समान है जिसे आपने पहले सीखा था, लेकिन मूल छवि को विघटित करने के बजाय, हमारा लक्ष्य एक **मास्क** को विघटित करना है। इस प्रकार, एक विभाजन नेटवर्क के निम्नलिखित भाग होते हैं: + +* **एन्कोडर** इनपुट छवि से विशेषताएँ निकालता है। +* **डिकोडर** उन विशेषताओं को **मास्क छवि** में परिवर्तित करता है, जिसमें श्रेणियों की संख्या के अनुसार समान आकार और चैनलों की संख्या होती है। + + + +> छवि [इस प्रकाशन](https://arxiv.org/pdf/2001.05566.pdf) से ली गई है। + +हमें विशेष रूप से उस हानि फ़ंक्शन का उल्लेख करना चाहिए जो विभाजन के लिए उपयोग किया जाता है। जब हम पारंपरिक ऑटोएन्कोडर्स का उपयोग करते हैं, तो हमें दो छवियों के बीच समानता को मापने की आवश्यकता होती है, और हम ऐसा करने के लिए औसत वर्ग त्रुटि (MSE) का उपयोग कर सकते हैं। विभाजन में, लक्ष्य मास्क छवि में प्रत्येक पिक्सेल श्रेणी संख्या का प्रतिनिधित्व करता है (तीसरे आयाम के साथ एक-गर्म-कोडित), इसलिए हमें वर्गीकरण के लिए विशिष्ट हानि फ़ंक्शन का उपयोग करने की आवश्यकता होती है - सभी पिक्सेल पर औसत क्रॉस-एंट्रॉपी हानि। यदि मास्क बाइनरी है - **बाइनरी क्रॉस-एंट्रॉपी हानि** (BCE) का उपयोग किया जाता है। + +> ✅ एक-गर्म कोडिंग एक वर्ग लेबल को वर्गों की संख्या के बराबर लंबाई के वेक्टर में कोड करने का एक तरीका है। इस तकनीक पर [इस लेख](https://datagy.io/sklearn-one-hot-encode/) पर एक नज़र डालें। + +## चिकित्सा इमेजिंग के लिए विभाजन + +इस पाठ में, हम चिकित्सा छवियों पर मानव नेवी (जिसे मस्से भी कहा जाता है) को पहचानने के लिए नेटवर्क को प्रशिक्षित करके विभाजन को क्रियान्वित होते हुए देखेंगे। हम PH2 डेटाबेस का उपयोग करेंगे, जो डर्मोस्कोपी छवियों का स्रोत है। इस डेटा सेट में तीन श्रेणियों: सामान्य नेवी, असामान्य नेवी, और मेलेनोमा की 200 छवियाँ शामिल हैं। सभी छवियों में एक संबंधित **मास्क** भी होता है जो नेवी को रेखांकित करता है। + +> ✅ यह तकनीक इस प्रकार की चिकित्सा इमेजिंग के लिए विशेष रूप से उपयुक्त है, लेकिन आप अन्य वास्तविक दुनिया के अनुप्रयोगों की कल्पना कैसे कर सकते हैं? + +navi + +> PH2 डेटाबेस से छवि + +हम किसी भी नेवी को इसके पृष्ठभूमि से विभाजित करने के लिए एक मॉडल को प्रशिक्षित करेंगे। + +## ✍️ व्यायाम: सेमांटिक विभाजन + +नीचे दिए गए नोटबुक खोलें ताकि आप विभिन्न सेमांटिक विभाजन आर्किटेक्चर के बारे में अधिक जान सकें, उनके साथ काम करने का अभ्यास कर सकें, और उन्हें क्रियान्वित होते हुए देख सकें। + +* [सेमांटिक विभाजन पायटॉर्च](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [सेमांटिक विभाजन टेन्सरफ्लो](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## निष्कर्ष + +विभाजन छवि वर्गीकरण के लिए एक बहुत शक्तिशाली तकनीक है, जो बाउंडिंग बॉक्स से पिक्सेल स्तर की वर्गीकरण में आगे बढ़ती है। यह चिकित्सा इमेजिंग सहित अन्य अनुप्रयोगों में उपयोग की जाने वाली एक तकनीक है। + +## 🚀 चुनौती + +शरीर विभाजन केवल एक सामान्य कार्य है जो हम लोगों की छवियों के साथ कर सकते हैं। अन्य महत्वपूर्ण कार्यों में **कंकाल पहचान** और **स्थिति पहचान** शामिल हैं। स्थिति पहचान का उपयोग देखने के लिए [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) का उपयोग करके **मानव शरीर विभाजन** का प्रयास करें। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/hi/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..bc0dd77e --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# मानव शरीर विभाजन + +[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) पुस्तकालय यह देखने के लिए कि उन कार्यों को कैसे लागू किया जा सकता है। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/4-ComputerVision/README.md b/translations/hi/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..68665c69 --- /dev/null +++ b/translations/hi/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# कंप्यूटर विज़न + +![कंप्यूटर विज़न सामग्री का सारांश एक डूडल में](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hi.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) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/13-TextRep/README.md b/translations/hi/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..5e2edf2f --- /dev/null +++ b/translations/hi/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# पाठ को टेन्सर के रूप में प्रस्तुत करना + +## [प्रस्तुतिकरण से पहले का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## पाठ वर्गीकरण + +इस अनुभाग के पहले भाग में, हम **पाठ वर्गीकरण** कार्य पर ध्यान केंद्रित करेंगे। हम [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) डेटासेट का उपयोग करेंगे, जिसमें निम्नलिखित जैसे समाचार लेख शामिल हैं: + +* श्रेणी: विज्ञान/तकनीक +* शीर्षक: केवाई। कंपनी ने पेप्टाइड्स का अध्ययन करने के लिए अनुदान जीता (एपी) +* सामग्री: एपी - लुइसविले विश्वविद्यालय के एक रसायन विज्ञान शोधकर्ता द्वारा स्थापित एक कंपनी ने विकास के लिए अनुदान जीता... + +हमारा लक्ष्य समाचार सामग्री को पाठ के आधार पर श्रेणियों में वर्गीकृत करना होगा। + +## पाठ का प्रतिनिधित्व करना + +यदि हम न्यूरल नेटवर्क के साथ प्राकृतिक भाषा प्रसंस्करण (NLP) कार्यों को हल करना चाहते हैं, तो हमें पाठ को टेन्सर के रूप में प्रस्तुत करने का एक तरीका चाहिए। कंप्यूटर पहले से ही पाठ्य वर्णों को संख्याओं के रूप में प्रस्तुत करते हैं जो आपकी स्क्रीन पर फ़ॉन्ट के लिए मैप होते हैं, जैसे एएससीआईआई या यूटीएफ-8 जैसे एन्कोडिंग का उपयोग करके। + +एक वर्ण को एएससीआईआई और बाइनरी प्रतिनिधित्व में मैप करने वाले आरेख को दिखाने वाली छवि + +> [छवि स्रोत](https://www.seobility.net/en/wiki/ASCII) + +मनुष्यों के रूप में, हम समझते हैं कि प्रत्येक अक्षर **क्या दर्शाता है**, और सभी वर्ण कैसे एक साथ मिलकर वाक्य के शब्द बनाते हैं। हालाँकि, कंप्यूटर अपने आप में ऐसा कोई समझ नहीं रखते हैं, और न्यूरल नेटवर्क को प्रशिक्षण के दौरान अर्थ सीखना होता है। + +इसलिए, हम पाठ का प्रतिनिधित्व करते समय विभिन्न दृष्टिकोणों का उपयोग कर सकते हैं: + +* **वर्ण-स्तरीय प्रतिनिधित्व**, जब हम पाठ का प्रतिनिधित्व करते हैं और प्रत्येक वर्ण को एक संख्या के रूप में मानते हैं। मान लीजिए कि हमारे पाठ कॉर्पस में *C* विभिन्न वर्ण हैं, तो शब्द *Hello* को 5x*C* टेन्सर द्वारा प्रस्तुत किया जाएगा। प्रत्येक अक्षर एक-गर्मी एन्कोडिंग में एक टेन्सर कॉलम के रूप में होगा। +* **शब्द-स्तरीय प्रतिनिधित्व**, जिसमें हम अपने पाठ में सभी शब्दों का एक **शब्दावली** बनाते हैं, और फिर एक-गर्मी एन्कोडिंग का उपयोग करके शब्दों का प्रतिनिधित्व करते हैं। यह दृष्टिकोण कुछ हद तक बेहतर है, क्योंकि प्रत्येक अक्षर अपने आप में ज्यादा अर्थ नहीं रखता, और इस प्रकार उच्च-स्तरीय सेमांटिक अवधारणाओं - शब्दों - का उपयोग करके, हम न्यूरल नेटवर्क के लिए कार्य को सरल बनाते हैं। हालाँकि, बड़े शब्दकोश के आकार को देखते हुए, हमें उच्च-आयामी विरल टेन्सरों से निपटना होगा। + +प्रतिनिधित्व की परवाह किए बिना, हमें पहले पाठ को **टोकन** की एक श्रृंखला में परिवर्तित करना होगा, जिसमें एक टोकन या तो एक वर्ण, एक शब्द, या कभी-कभी एक शब्द का हिस्सा होता है। फिर, हम टोकन को एक संख्या में परिवर्तित करते हैं, आमतौर पर **शब्दावली** का उपयोग करके, और यह संख्या एक-गर्मी एन्कोडिंग का उपयोग करके न्यूरल नेटवर्क में डाली जा सकती है। + +## एन-ग्राम + +प्राकृतिक भाषा में, शब्दों का सटीक अर्थ केवल संदर्भ में ही निर्धारित किया जा सकता है। उदाहरण के लिए, *न्यूरल नेटवर्क* और *फिशिंग नेटवर्क* के अर्थ पूरी तरह से अलग हैं। इसे ध्यान में रखने के लिए, एक तरीका यह है कि हम अपने मॉडल को शब्दों के जोड़ों पर बनाएं, और शब्द जोड़ों को अलग शब्दावली टोकन के रूप में मानें। इस तरह, वाक्य *I like to go fishing* को टोकनों की निम्नलिखित श्रृंखला द्वारा प्रस्तुत किया जाएगा: *I like*, *like to*, *to go*, *go fishing*। इस दृष्टिकोण की समस्या यह है कि शब्दकोश का आकार काफी बढ़ जाता है, और संयोजन जैसे *go fishing* और *go shopping* को अलग टोकनों द्वारा प्रस्तुत किया जाता है, जो समान क्रिया के बावजूद कोई सेमांटिक समानता साझा नहीं करते हैं। + +कुछ मामलों में, हम त्रिग्राम का उपयोग करने पर विचार कर सकते हैं - तीन शब्दों के संयोजन - भी। इस प्रकार की दृष्टिकोण को अक्सर **n-grams** कहा जाता है। इसके अलावा, वर्ण-स्तरीय प्रतिनिधित्व के साथ n-grams का उपयोग करना समझ में आता है, जिसमें n-grams लगभग विभिन्न स्वर के अनुरूप होंगे। + +## बैग-ऑफ-शब्द और TF/IDF + +पाठ वर्गीकरण जैसे कार्यों को हल करते समय, हमें पाठ का एक निश्चित आकार के वेक्टर के रूप में प्रतिनिधित्व करने में सक्षम होना चाहिए, जिसका उपयोग हम अंतिम घनत्व वर्गीकरणकर्ता के लिए इनपुट के रूप में करेंगे। ऐसा करने के सबसे सरल तरीकों में से एक सभी व्यक्तिगत शब्द प्रतिनिधित्वों को संयोजित करना है, जैसे कि उन्हें जोड़ना। यदि हम प्रत्येक शब्द के एक-गर्मी एन्कोडिंग को जोड़ते हैं, तो हम आवृत्तियों का एक वेक्टर प्राप्त करेंगे, जो दिखाएगा कि प्रत्येक शब्द पाठ में कितनी बार आता है। पाठ का ऐसा प्रतिनिधित्व **बैग ऑफ वर्ड्स** (BoW) कहलाता है। + + + +> छवि लेखक द्वारा + +BoW मूल रूप से यह दर्शाता है कि कौन से शब्द पाठ में और कितनी मात्रा में आते हैं, जो वास्तव में यह बताने का एक अच्छा संकेत हो सकता है कि पाठ किस बारे में है। उदाहरण के लिए, राजनीति पर एक समाचार लेख में *president* और *country* जैसे शब्द हो सकते हैं, जबकि वैज्ञानिक प्रकाशन में *collider*, *discovered* आदि जैसे शब्द होंगे। इस प्रकार, शब्द आवृत्तियाँ कई मामलों में पाठ की सामग्री का एक अच्छा संकेतक हो सकती हैं। + +BoW की समस्या यह है कि कुछ सामान्य शब्द, जैसे *and*, *is*, आदि अधिकांश पाठों में आते हैं, और उनकी उच्चतम आवृत्तियाँ होती हैं, जो वास्तव में महत्वपूर्ण शब्दों को छुपा देती हैं। हम इन शब्दों के महत्व को इस बात पर विचार करके कम कर सकते हैं कि शब्द पूरे दस्तावेज़ संग्रह में कितनी बार आते हैं। यह TF/IDF दृष्टिकोण के पीछे का मुख्य विचार है, जिसे इस पाठ के साथ संलग्न नोटबुक में अधिक विस्तार से कवर किया गया है। + +हालांकि, इनमें से कोई भी दृष्टिकोण पाठ की **सेमांटिक्स** को पूरी तरह से ध्यान में नहीं रख सकता है। हमें ऐसा अधिक शक्तिशाली न्यूरल नेटवर्क मॉडल की आवश्यकता है जो ऐसा कर सके, जिसके बारे में हम इस अनुभाग में बाद में चर्चा करेंगे। + +## ✍️ व्यायाम: पाठ प्रतिनिधित्व + +नीचे दिए गए नोटबुक में अपनी शिक्षा जारी रखें: + +* [PyTorch के साथ पाठ प्रतिनिधित्व](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [TensorFlow के साथ पाठ प्रतिनिधित्व](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## निष्कर्ष + +अब तक, हमने विभिन्न शब्दों को आवृत्ति वजन जोड़ने की तकनीकों का अध्ययन किया है। हालाँकि, वे अर्थ या क्रम का प्रतिनिधित्व करने में असमर्थ हैं। जैसा कि प्रसिद्ध भाषाविद् जे. आर. फर्थ ने 1935 में कहा था, "एक शब्द का पूर्ण अर्थ हमेशा संदर्भित होता है, और संदर्भ के अलावा अर्थ का कोई अध्ययन गंभीरता से नहीं लिया जा सकता।" हम बाद में पाठ को भाषा मॉडलिंग का उपयोग करके संदर्भ संबंधी जानकारी कैसे कैप्चर करें, यह सीखेंगे। + +## 🚀 चुनौती + +बैग-ऑफ-शब्द और विभिन्न डेटा मॉडलों का उपयोग करके कुछ अन्य व्यायाम करने का प्रयास करें। आप इस [कग्गल प्रतियोगिता](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) से प्रेरित हो सकते हैं। + +## [प्रस्तुतिकरण के बाद का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## समीक्षा और आत्म-अध्ययन + +[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) पर पाठ एम्बेडिंग और बैग-ऑफ-शब्द तकनीकों के साथ अपने कौशल का अभ्यास करें। + +## [असाइनमेंट: नोटबुक](assignment.md) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकारिक स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/13-TextRep/assignment.md b/translations/hi/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..e856ead6 --- /dev/null +++ b/translations/hi/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# असाइनमेंट: नोटबुक + +इस पाठ से जुड़े नोटबुक का उपयोग करते हुए (या तो PyTorch या TensorFlow संस्करण), उन्हें अपने डेटा सेट का उपयोग करके फिर से चलाएं, शायद कोई ऐसा डेटा सेट जो Kaggle से हो, जिसका उपयोग क्रेडिट के साथ किया गया हो। नोटबुक को इस तरह से फिर से लिखें कि आपकी अपनी खोजों को रेखांकित किया जा सके। कुछ नवोन्मेषी डेटा सेट का प्रयास करें जो आश्चर्यजनक साबित हो सकते हैं, जैसे कि [यह यूएफओ दृष्टियों के बारे में](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) NUFORC से। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/14-Embeddings/README.md b/translations/hi/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..2e9ba20e --- /dev/null +++ b/translations/hi/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# एम्बेडिंग + +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +जब हमने BoW या TF/IDF के आधार पर वर्गीकर्ता प्रशिक्षित किए, तो हमने उच्च-आयामी बैग-ऑफ-शब्द वेक्टर पर काम किया, जिसकी लंबाई `vocab_size` है, और हम स्पष्ट रूप से निम्न-आयामी स्थिति प्रतिनिधित्व वेक्टर कोSparse one-hot प्रतिनिधित्व में परिवर्तित कर रहे थे। हालाँकि, यह one-hot प्रतिनिधित्व मेमोरी-कुशल नहीं है। इसके अतिरिक्त, प्रत्येक शब्द को एक-दूसरे से स्वतंत्र रूप से माना जाता है, अर्थात् one-hot एन्कोडेड वेक्टर शब्दों के बीच किसी भी अर्थात्मक समानता को व्यक्त नहीं करते हैं। + +**एम्बेडिंग** का विचार शब्दों का प्रतिनिधित्व करना है कम-आयामी घनत्व वेक्टर द्वारा, जो किसी तरह से शब्द के अर्थ को दर्शाते हैं। हम बाद में सार्थक शब्द एम्बेडिंग बनाने के तरीके पर चर्चा करेंगे, लेकिन अभी के लिए हम बस एम्बेडिंग को एक शब्द वेक्टर की आयाम को कम करने के तरीके के रूप में सोचते हैं। + +तो, एम्बेडिंग परत एक शब्द को इनपुट के रूप में लेगी, और निर्दिष्ट `embedding_size` का आउटपुट वेक्टर उत्पन्न करेगी। एक अर्थ में, यह `Linear` परत के बहुत समान है, लेकिन यह one-hot एन्कोडेड वेक्टर लेने के बजाय, यह एक शब्द संख्या को इनपुट के रूप में ले सकेगी, जिससे हमें बड़े one-hot एन्कोडेड वेक्टर बनाने से बचने की अनुमति मिलती है। + +हमारे वर्गीकर्ता नेटवर्क में पहले परत के रूप में एम्बेडिंग परत का उपयोग करके, हम बैग-ऑफ-शब्द से **एम्बेडिंग बैग** मॉडल में स्विच कर सकते हैं, जहाँ हम पहले अपने पाठ में प्रत्येक शब्द को संबंधित एम्बेडिंग में परिवर्तित करते हैं, और फिर उन सभी एम्बेडिंग पर कुछ समग्र फ़ंक्शन की गणना करते हैं, जैसे कि `sum`, `average` या `max`। + +![पांच अनुक्रम शब्दों के लिए एक एम्बेडिंग वर्गीकरणकर्ता दिखाने वाली छवि।](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hi.png) + +> छवि लेखक द्वारा + +## ✍️ अभ्यास: एम्बेडिंग + +निम्नलिखित नोटबुक में अपने अध्ययन को जारी रखें: +* [PyTorch के साथ एम्बेडिंग](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [TensorFlow एम्बेडिंग](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## अर्थात्मक एम्बेडिंग: Word2Vec + +जबकि एम्बेडिंग परत ने शब्दों को वेक्टर प्रतिनिधित्व में मैप करना सीखा, हालाँकि, यह प्रतिनिधित्व जरूरी नहीं कि बहुत अधिक अर्थात्मक अर्थ रखता हो। यह अच्छा होगा कि एक वेक्टर प्रतिनिधित्व सीखा जाए ताकि समान शब्द या पर्यायवाची वेक्टर एक-दूसरे के करीब हों किसी वेक्टर दूरी (जैसे, यूक्लिडियन दूरी) के संदर्भ में। + +इसके लिए, हमें एक बड़े पाठ संग्रह पर अपने एम्बेडिंग मॉडल को एक विशिष्ट तरीके से पूर्व-प्रशिक्षित करना होगा। अर्थात्मक एम्बेडिंग को प्रशिक्षित करने का एक तरीका [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) कहलाता है। यह दो मुख्य आर्किटेक्चर पर आधारित है जो शब्दों के वितरित प्रतिनिधित्व उत्पन्न करने के लिए उपयोग किया जाता है: + + - **निरंतर बैग-ऑफ-शब्द** (CBoW) — इस आर्किटेक्चर में, हम मॉडल को चारों ओर के संदर्भ से एक शब्द की भविष्यवाणी करने के लिए प्रशिक्षित करते हैं। दिए गए ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, मॉडल का लक्ष्य $(W_{-2},W_{-1},W_1,W_2)$ से $W_0$ की भविष्यवाणी करना है। + - **निरंतर स्किप-ग्राम** CBoW के विपरीत है। मॉडल वर्तमान शब्द की भविष्यवाणी करने के लिए चारों ओर के संदर्भ शब्दों की विंडो का उपयोग करता है। + +CBoW तेज है, जबकि स्किप-ग्राम धीमा है, लेकिन कम सामान्य शब्दों का बेहतर प्रतिनिधित्व करता है। + +![शब्दों को वेक्टर में परिवर्तित करने के लिए CBoW और स्किप-ग्राम एल्गोरिदम दोनों को दिखाने वाली छवि।](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hi.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 पर इस पेपर को पढ़ें: [वेक्टर स्पेस में शब्द प्रतिनिधित्व का कुशल अनुमान](https://arxiv.org/pdf/1301.3781.pdf) + +## [असाइनमेंट: नोटबुक](assignment.md) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान रखें कि स्वचालित अनुवाद में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न होने वाली किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/14-Embeddings/assignment.md b/translations/hi/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..3496efde --- /dev/null +++ b/translations/hi/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# असाइनमेंट: नोटबुक्स + +इस पाठ से जुड़े नोटबुक्स का उपयोग करते हुए (या तो PyTorch या TensorFlow संस्करण), उन्हें अपने स्वयं के डेटासेट के साथ पुनः चलाएँ, शायद कोई ऐसा डेटासेट जो Kaggle से हो, जिसका उपयोग आप क्रेडिट के साथ करें। नोटबुक को फिर से लिखें ताकि आपके अपने निष्कर्षों को रेखांकित किया जा सके। एक अलग प्रकार के डेटासेट का प्रयास करें और अपने निष्कर्षों का दस्तावेजीकरण करें, जैसे [ये बीटल्स के बोल](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) का उपयोग करते हुए। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृभाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/15-LanguageModeling/README.md b/translations/hi/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..dd05ffa7 --- /dev/null +++ b/translations/hi/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# भाषा मॉडलिंग + +सामान्य एम्बेडिंग, जैसे कि Word2Vec और GloVe, वास्तव में **भाषा मॉडलिंग** की ओर पहला कदम हैं - ऐसे मॉडल बनाना जो किसी तरह से *समझते* (या *प्रतिनिधित्व करते*) हैं भाषा की प्रकृति। + +## [प्री-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +भाषा मॉडलिंग के पीछे का मुख्य विचार उन्हें बिना लेबल वाले डेटासेट्स पर बिना पर्यवेक्षण के प्रशिक्षण देना है। यह महत्वपूर्ण है क्योंकि हमारे पास बिना लेबल वाले पाठ की विशाल मात्रा उपलब्ध है, जबकि लेबल वाले पाठ की मात्रा हमेशा उस प्रयास की मात्रा द्वारा सीमित होगी जो हम लेबलिंग पर खर्च कर सकते हैं। अक्सर, हम ऐसे भाषा मॉडल बना सकते हैं जो **पाठ में गायब शब्दों का अनुमान** लगा सकते हैं, क्योंकि पाठ में एक यादृच्छिक शब्द को छिपाना और इसे प्रशिक्षण नमूने के रूप में उपयोग करना आसान है। + +## एम्बेडिंग का प्रशिक्षण + +हमारे पिछले उदाहरणों में, हमने पूर्व-प्रशिक्षित सामान्य एम्बेडिंग का उपयोग किया, लेकिन यह देखना दिलचस्प है कि उन एम्बेडिंग को कैसे प्रशिक्षित किया जा सकता है। उपयोग के लिए कई संभावित विचार हैं: + +* **N-ग्राम** भाषा मॉडलिंग, जब हम N पिछले टोकनों को देखकर एक टोकन का अनुमान लगाते हैं (N-ग्राम) +* **कॉन्टिन्यूअस बैग-ऑफ-वर्ड्स** (CBoW), जब हम टोकन अनुक्रम $W_{-N}$, ..., $W_N$ में मध्य टोकन $W_0$ का अनुमान लगाते हैं। +* **स्किप-ग्राम**, जहाँ हम मध्य टोकन $W_0$ से पड़ोसी टोकनों का सेट {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} का अनुमान लगाते हैं। + +![शब्दों को वेक्टर में परिवर्तित करने पर पेपर से छवि](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hi.png) + +> [इस पेपर](https://arxiv.org/pdf/1301.3781.pdf) से छवि + +## ✍️ उदाहरण नोटबुक: CBoW मॉडल का प्रशिक्षण + +अपने अध्ययन को निम्नलिखित नोटबुक में जारी रखें: + +* [TensorFlow के साथ CBoW Word2Vec का प्रशिक्षण](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [PyTorch के साथ CBoW Word2Vec का प्रशिक्षण](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## निष्कर्ष + +पिछले पाठ में हमने देखा कि शब्द एम्बेडिंग जादू की तरह काम करते हैं! अब हम जानते हैं कि शब्द एम्बेडिंग को प्रशिक्षित करना बहुत जटिल कार्य नहीं है, और यदि आवश्यक हो तो हमें अपने डोमेन विशेष पाठ के लिए अपने स्वयं के शब्द एम्बेडिंग को प्रशिक्षित करने में सक्षम होना चाहिए। + +## [पोस्ट-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## समीक्षा और आत्म-अध्ययन + +* [भाषा मॉडलिंग पर आधिकारिक PyTorch ट्यूटोरियल](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)। +* [Word2Vec मॉडल को प्रशिक्षित करने पर आधिकारिक TensorFlow ट्यूटोरियल](https://www.TensorFlow.org/tutorials/text/word2vec)। +* **gensim** ढांचे का उपयोग करके कुछ पंक्तियों में सबसे सामान्य एम्बेडिंग को प्रशिक्षित करने का विवरण [इस दस्तावेज़ में](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) दिया गया है। + +## 🚀 [असाइनमेंट: स्किप-ग्राम मॉडल प्रशिक्षित करें](lab/README.md) + +प्रयोगशाला में, हम आपको इस पाठ से कोड को संशोधित करने की चुनौती देते हैं ताकि CBoW के बजाय स्किप-ग्राम मॉडल का प्रशिक्षण दिया जा सके। [विवरण पढ़ें](lab/README.md) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/hi/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..53a24e44 --- /dev/null +++ b/translations/hi/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# ट्रेनिंग स्किप-ग्राम मॉडल + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। + +## कार्य + +इस लैब में, हम आपको चुनौती देते हैं कि आप स्किप-ग्राम तकनीक का उपयोग करके वर्ड2वेक मॉडल को प्रशिक्षित करें। $N$-टोकन चौड़ाई के स्किप-ग्राम विंडो में पड़ोसी शब्दों की भविष्यवाणी करने के लिए एम्बेडिंग के साथ एक नेटवर्क प्रशिक्षित करें। आप [इस पाठ का कोड](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) उपयोग कर सकते हैं, और इसे थोड़ा संशोधित कर सकते हैं। + +## डेटा सेट + +आप किसी भी पुस्तक का उपयोग करने के लिए स्वतंत्र हैं। आप [प्रोजेक्ट गुटेनबर्ग](https://www.gutenberg.org/) पर बहुत सारी मुफ्त पाठ्य सामग्री पा सकते हैं, उदाहरण के लिए, यहाँ लुईस कैरोल द्वारा [एलेस एडवेंचर्स इन वंडरलैंड](https://www.gutenberg.org/files/11/11-0.txt) का सीधा लिंक है। या, आप शेक्सपियर के नाटकों का उपयोग कर सकते हैं, जिसे आप निम्नलिखित कोड का उपयोग करके प्राप्त कर सकते हैं: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## अन्वेषण करें! + +यदि आपके पास समय है और आप विषय में गहराई से जाना चाहते हैं, तो कई चीजों की खोज करने का प्रयास करें: + +* एम्बेडिंग आकार परिणामों को कैसे प्रभावित करता है? +* विभिन्न पाठ शैलियाँ परिणाम को कैसे प्रभावित करती हैं? +* कई बहुत विभिन्न प्रकार के शब्दों और उनके पर्यायवाची शब्दों को लें, उनके वेक्टर प्रतिनिधित्व प्राप्त करें, आयामों को 2 में कम करने के लिए पीसीए लागू करें, और उन्हें 2डी स्थान में प्लॉट करें। क्या आपको कोई पैटर्न दिखाई देता है? + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/16-RNN/README.md b/translations/hi/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..0af249c9 --- /dev/null +++ b/translations/hi/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,86 @@ +# पुनरावृत्त न्यूरल नेटवर्क + +## [प्री-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +पिछले अनुभागों में, हमने टेक्स्ट के समृद्ध अर्थपूर्ण प्रतिनिधित्व और एम्बेडिंग के शीर्ष पर एक साधारण रैखिक वर्गीकरणकर्ता का उपयोग किया है। यह आर्किटेक्चर वाक्य में शब्दों के समग्र अर्थ को पकड़ता है, लेकिन यह शब्दों के **क्रम** पर ध्यान नहीं देता है, क्योंकि एम्बेडिंग के ऊपर की एकत्रीकरण प्रक्रिया ने मूल टेक्स्ट से यह जानकारी हटा दी। चूंकि ये मॉडल शब्दों के क्रम को मॉडल करने में असमर्थ हैं, वे टेक्स्ट जनरेशन या प्रश्न उत्तर देने जैसे अधिक जटिल या अस्पष्ट कार्यों को हल नहीं कर सकते। + +टेक्स्ट अनुक्रम के अर्थ को पकड़ने के लिए, हमें एक अन्य न्यूरल नेटवर्क आर्किटेक्चर का उपयोग करने की आवश्यकता है, जिसे **पुनरावृत्त न्यूरल नेटवर्क** या RNN कहा जाता है। RNN में, हम अपने वाक्य को नेटवर्क के माध्यम से एक प्रतीक में एक बार पास करते हैं, और नेटवर्क कुछ **स्थिति** उत्पन्न करता है, जिसे हम फिर अगले प्रतीक के साथ नेटवर्क में फिर से पास करते हैं। + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hi.png) + +> चित्र लेखक द्वारा + +इनपुट अनुक्रम X0,...,Xn के साथ, RNN न्यूरल नेटवर्क ब्लॉकों की एक श्रृंखला बनाता है, और इस श्रृंखला को बैकप्रोपगेशन का उपयोग करके अंत से अंत तक प्रशिक्षित करता है। प्रत्येक नेटवर्क ब्लॉक एक जोड़ी (Xi,Si) को इनपुट के रूप में लेता है, और परिणाम के रूप में Si+1 उत्पन्न करता है। अंतिम स्थिति Sn या (आउटपुट Yn) परिणाम उत्पन्न करने के लिए एक रैखिक वर्गीकरणकर्ता में जाती है। सभी नेटवर्क ब्लॉकों के पास समान वज़न होते हैं, और इन्हें एक बैकप्रोपगेशन पास का उपयोग करके अंत से अंत तक प्रशिक्षित किया जाता है। + +चूंकि स्थिति वेक्टर S0,...,Sn नेटवर्क के माध्यम से पास किए जाते हैं, यह शब्दों के बीच अनुक्रमिक निर्भरताओं को सीखने में सक्षम होता है। उदाहरण के लिए, जब शब्द *not* अनुक्रम में कहीं दिखाई देता है, तो यह स्थिति वेक्टर के भीतर कुछ तत्वों को नकारात्मक करने के लिए सीख सकता है, जिससे नकारात्मकता उत्पन्न होती है। + +> ✅ चूंकि ऊपर चित्रित सभी RNN ब्लॉकों के वज़न साझा किए जाते हैं, इसलिए एक ही चित्र को एक ब्लॉक (दाएं) के रूप में एक पुनरावृत्त फीडबैक लूप के साथ प्रदर्शित किया जा सकता है, जो नेटवर्क की आउटपुट स्थिति को इनपुट पर वापस भेजता है। + +## RNN सेल का आकार + +आइए देखें कि एक साधारण RNN सेल कैसे संगठित होता है। यह पिछले स्थिति Si-1 और वर्तमान प्रतीक Xi को इनपुट के रूप में स्वीकार करता है, और इसे आउटपुट स्थिति Si उत्पन्न करना होता है (और, कभी-कभी, हम किसी अन्य आउटपुट Yi में भी रुचि रखते हैं, जैसे कि जनरेटिव नेटवर्क के मामले में)। + +एक साधारण RNN सेल के अंदर दो वजन मैट्रिक्स होते हैं: एक इनपुट प्रतीक को परिवर्तित करता है (इसे W कहते हैं), और दूसरा इनपुट स्थिति को परिवर्तित करता है (H)। इस मामले में नेटवर्क का आउटपुट σ(W×Xi+H×Si-1+b) के रूप में गणना की जाती है, जहाँ σ सक्रियण कार्य है और b अतिरिक्त पूर्वाग्रह है। + +RNN Cell Anatomy + +> चित्र लेखक द्वारा + +कई मामलों में, इनपुट टोकन RNN में प्रवेश करने से पहले एम्बेडिंग लेयर के माध्यम से पास किए जाते हैं ताकि आयाम को कम किया जा सके। इस मामले में, यदि इनपुट वेक्टर का आयाम *emb_size* है, और स्थिति वेक्टर *hid_size* है - तो W का आकार *emb_size*×*hid_size* है, और H का आकार *hid_size*×*hid_size* है। + +## लंबी छोटी अवधि की मेमोरी (LSTM) + +क्लासिकल RNNs की एक मुख्य समस्या **विलुप्त ग्रेडिएंट** समस्या है। चूंकि RNNs को एक बैकप्रोपगेशन पास में अंत से अंत तक प्रशिक्षित किया जाता है, इसलिए इसे नेटवर्क की पहले की परतों में त्रुटि को प्रसारित करने में कठिनाई होती है, और इस प्रकार नेटवर्क दूरस्थ टोकनों के बीच संबंधों को सीख नहीं सकता। इस समस्या से बचने के लिए एक तरीका है **स्पष्ट स्थिति प्रबंधन** को लागू करना, जिसे **गेट्स** कहा जाता है। इस प्रकार की दो प्रसिद्ध आर्किटेक्चर हैं: **लंबी छोटी अवधि की मेमोरी** (LSTM) और **गेटेड रिले यूनिट** (GRU)। + +![लंबी छोटी अवधि की मेमोरी सेल का उदाहरण दिखाते हुए चित्र](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> चित्र स्रोत TBD + +LSTM नेटवर्क RNN के समान तरीके से व्यवस्थित होता है, लेकिन यहाँ दो स्थितियाँ होती हैं जो परत से परत में पास की जाती हैं: वास्तविक स्थिति C, और छिपा हुआ वेक्टर H। प्रत्येक यूनिट में, छिपा हुआ वेक्टर Hi को इनपुट Xi के साथ संयोजित किया जाता है, और वे स्थिति C पर **गेट्स** के माध्यम से क्या होता है, इसे नियंत्रित करते हैं। प्रत्येक गेट एक न्यूरल नेटवर्क है जिसमें सिग्मॉइड सक्रियण (आउटपुट [0,1] के दायरे में) होता है, जिसे स्थिति वेक्टर के साथ गुणा करने पर एक बिटवाइज मास्क के रूप में सोचा जा सकता है। निम्नलिखित गेट्स हैं (ऊपर चित्र में बाएं से दाएं): + +* **भूलने का गेट** एक छिपे हुए वेक्टर को लेता है और यह निर्धारित करता है कि हमें वेक्टर C के कौन से घटकों को भूलना है, और कौन से घटकों को पास करना है। +* **इनपुट गेट** इनपुट और छिपे हुए वेक्टरों से कुछ जानकारी लेता है और इसे स्थिति में डालता है। +* **आउटपुट गेट** स्थिति को *tanh* सक्रियण के साथ एक रैखिक परत के माध्यम से परिवर्तित करता है, फिर नए स्थिति Ci+1 उत्पन्न करने के लिए छिपे हुए वेक्टर Hi का उपयोग करके इसके कुछ घटकों का चयन करता है। + +स्थिति C के घटकों को कुछ झंडों के रूप में सोचा जा सकता है जिन्हें चालू और बंद किया जा सकता है। उदाहरण के लिए, जब हम अनुक्रम में नाम *Alice* का सामना करते हैं, तो हम मान सकते हैं कि यह एक महिला पात्र का संदर्भ है, और स्थिति में झंडा उठाते हैं कि वाक्य में एक महिला संज्ञा है। जब हम आगे *and Tom* जैसे वाक्यांशों का सामना करते हैं, तो हम झंडा उठाते हैं कि हमारे पास एक बहुवचन संज्ञा है। इस प्रकार, स्थिति को नियंत्रित करके हम संभवतः वाक्य के भागों की व्याकरणिक विशेषताओं को ट्रैक रख सकते हैं। + +> ✅ LSTM के आंतरिक को समझने के लिए एक उत्कृष्ट संसाधन इस महान लेख [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) द्वारा क्रिस्टोफर ओलाह है। + +## द्विदिशीय और मल्टीलेयर RNNs + +हमने उन पुनरावृत्त नेटवर्कों पर चर्चा की है जो एक दिशा में कार्य करते हैं, अनुक्रम की शुरुआत से अंत तक। यह स्वाभाविक लगता है, क्योंकि यह उस तरीके से मिलता-जुलता है जिससे हम पढ़ते और भाषण सुनते हैं। हालांकि, चूंकि कई व्यावहारिक मामलों में हमें इनपुट अनुक्रम तक यादृच्छिक पहुंच होती है, इसलिए यह दोनों दिशाओं में पुनरावृत्त गणना करना समझ में आ सकता है। ऐसे नेटवर्कों को **द्विदिशीय** RNNs कहा जाता है। द्विदिशीय नेटवर्क के साथ काम करते समय, हमें प्रत्येक दिशा के लिए दो छिपी स्थिति वेक्टरों की आवश्यकता होगी। + +एक पुनरावृत्त नेटवर्क, चाहे वह एक-निर्देशात्मक हो या द्विदिशीय, अनुक्रम के भीतर कुछ पैटर्न को पकड़ता है, और उन्हें स्थिति वेक्टर में संग्रहीत कर सकता है या आउटपुट में पास कर सकता है। कंवोल्यूशनल नेटवर्कों की तरह, हम पहले वाले पर एक और पुनरावृत्त परत बना सकते हैं ताकि उच्च स्तर के पैटर्न को पकड़ सकें और पहले परत द्वारा निकाले गए निम्न-स्तरीय पैटर्न से बना सकें। यह हमें **मल्टी-लेयर RNN** के विचार की ओर ले जाता है, जो दो या दो से अधिक पुनरावृत्त नेटवर्कों से बना होता है, जहाँ पिछले परत का आउटपुट अगली परत में इनपुट के रूप में पास किया जाता है। + +![मल्टीलेयर लंबी छोटी अवधि की मेमोरी RNN का उदाहरण दिखाते हुए चित्र](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hi.jpg) + +*चित्र [इस अद्भुत पोस्ट](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) से लिया गया है जो फर्नांडो लोपेज़ द्वारा है* + +## ✍️ अभ्यास: एम्बेडिंग + +निम्नलिखित नोटबुक में अपनी सीख जारी रखें: + +* [PyTorch के साथ RNNs](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [TensorFlow के साथ RNNs](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## निष्कर्ष + +इस इकाई में, हमने देखा कि RNNs का उपयोग अनुक्रम वर्गीकरण के लिए किया जा सकता है, लेकिन वास्तव में, वे कई अन्य कार्यों को संभाल सकते हैं, जैसे टेक्स्ट जनरेशन, मशीन अनुवाद, और अधिक। हम अगले इकाई में उन कार्यों पर विचार करेंगे। + +## 🚀 चुनौती + +LSTMs के बारे में कुछ साहित्य पढ़ें और उनके अनुप्रयोगों पर विचार करें: + +- [ग्रिड लंबी छोटी अवधि की मेमोरी](https://arxiv.org/pdf/1507.01526v1.pdf) +- [दिखाएं, ध्यान दें और बताएं: दृश्य ध्यान के साथ न्यूरल इमेज कैप्शन जनरेशन](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## समीक्षा और आत्म अध्ययन + +- [LSTM नेटवर्क को समझना](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) क्रिस्टोफर ओलाह द्वारा। + +## [असाइनमेंट: नोटबुक](assignment.md) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/16-RNN/assignment.md b/translations/hi/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..b4aa0384 --- /dev/null +++ b/translations/hi/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# असाइनमेंट: नोटबुक्स + +इस पाठ से जुड़े नोटबुक्स (या तो PyTorch या TensorFlow संस्करण) का उपयोग करते हुए, उन्हें अपने खुद के डेटासेट के साथ फिर से चलाएँ, शायद कोई ऐसा जो Kaggle से हो, उपयोग के साथ श्रेय दें। नोटबुक को फिर से लिखें ताकि आपके अपने निष्कर्षों पर जोर दिया जा सके। एक अलग प्रकार के डेटासेट का प्रयास करें और अपने निष्कर्षों को दस्तावेज़ करें, जैसे [इस Kaggle प्रतियोगिता डेटासेट के बारे में मौसम के ट्वीट](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv) का उपयोग करते हुए। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/hi/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..50dc752e --- /dev/null +++ b/translations/hi/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# जनरेटिव नेटवर्क + +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +रिपीटिव न्यूरल नेटवर्क (RNNs) और उनके गेटेड सेल वेरिएंट जैसे लॉन्ग शॉर्ट टर्म मेमोरी सेल (LSTMs) और गेटेड रिपीटिव यूनिट्स (GRUs) ने भाषा मॉडलिंग के लिए एक तंत्र प्रदान किया है, क्योंकि वे शब्दों की क्रमबद्धता सीख सकते हैं और अनुक्रम में अगले शब्द के लिए भविष्यवाणियाँ कर सकते हैं। इससे हमें RNNs का उपयोग **जनरेटिव कार्यों** के लिए करने की अनुमति मिलती है, जैसे सामान्य टेक्स्ट जनरेशन, मशीन अनुवाद, और यहां तक कि छवि कैप्शनिंग। + +> ✅ उन सभी बार के बारे में सोचें जब आपने टेक्स्ट पूर्णता जैसे जनरेटिव कार्यों से लाभ उठाया है। अपने पसंदीदा अनुप्रयोगों पर कुछ शोध करें कि क्या उन्होंने RNNs का लाभ उठाया है। + +हमने पिछले यूनिट में जो RNN आर्किटेक्चर चर्चा की थी, उसमें प्रत्येक RNN यूनिट ने अगले हिडन स्टेट को आउटपुट के रूप में उत्पन्न किया। हालाँकि, हम प्रत्येक पुनरावर्ती यूनिट में एक और आउटपुट जोड़ सकते हैं, जिससे हमें एक **अनुक्रम** आउटपुट करने की अनुमति मिलेगी (जो मूल अनुक्रम के समान लंबाई का होता है)। इसके अलावा, हम RNN यूनिट्स का उपयोग कर सकते हैं जो प्रत्येक चरण में इनपुट स्वीकार नहीं करते हैं, और बस कुछ प्रारंभिक स्टेट वेक्टर लेते हैं, और फिर आउटपुट के अनुक्रम का उत्पादन करते हैं। + +यह नीचे चित्र में दिखाए गए विभिन्न न्यूरल आर्किटेक्चर की अनुमति देता है: + +![सामान्य पुनरावर्ती न्यूरल नेटवर्क पैटर्न दिखाने वाली छवि।](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hi.jpg) + +> छवि ब्लॉग पोस्ट [रिपीटिव न्यूरल नेटवर्क्स की असंगत प्रभावशीलता](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) द्वारा [Andrej Karpaty](http://karpathy.github.io/) + +* **एक-से-एक** एक पारंपरिक न्यूरल नेटवर्क है जिसमें एक इनपुट और एक आउटपुट होता है। +* **एक-से-बहुत** एक जनरेटिव आर्किटेक्चर है जो एक इनपुट मान को स्वीकार करता है, और आउटपुट मानों के अनुक्रम का उत्पादन करता है। उदाहरण के लिए, यदि हम एक **छवि कैप्शनिंग** नेटवर्क को प्रशिक्षित करना चाहते हैं जो एक चित्र का टेक्स्ट विवरण उत्पन्न करेगा, तो हम एक चित्र को इनपुट के रूप में ले सकते हैं, इसे एक CNN के माध्यम से पास कर सकते हैं ताकि इसका हिडन स्टेट प्राप्त किया जा सके, और फिर एक पुनरावर्ती श्रृंखला को शब्द-दर-शब्द कैप्शन उत्पन्न करने के लिए रख सकते हैं। +* **बहुत-से-एक** पिछले यूनिट में वर्णित RNN आर्किटेक्चर से संबंधित है, जैसे कि टेक्स्ट वर्गीकरण। +* **बहुत-से-बहुत**, या **अनुक्रम-से-अनुक्रम** उन कार्यों से संबंधित है जैसे **मशीन अनुवाद**, जहां पहला RNN इनपुट अनुक्रम से सभी जानकारी को हिडन स्टेट में इकट्ठा करता है, और दूसरा RNN श्रृंखला इस स्टेट को आउटपुट अनुक्रम में अनरोल करती है। + +इस यूनिट में, हम सरल जनरेटिव मॉडलों पर ध्यान केंद्रित करेंगे जो हमें टेक्स्ट उत्पन्न करने में मदद करते हैं। सरलता के लिए, हम वर्ण-स्तरीय टोकनाइजेशन का उपयोग करेंगे। + +हम इस RNN को चरण-दर-चरण टेक्स्ट उत्पन्न करने के लिए प्रशिक्षित करेंगे। प्रत्येक चरण में, हम `nchars` लंबाई के वर्णों के अनुक्रम को लेंगे, और नेटवर्क से प्रत्येक इनपुट वर्ण के लिए अगला आउटपुट वर्ण उत्पन्न करने के लिए कहेंगे: + +![शब्द 'HELLO' के RNN जनरेशन का उदाहरण दिखाने वाली छवि।](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hi.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 का उपयोग करके टेक्स्ट उत्पन्न कर सकते हैं। उदाहरण के लिए, टेक्स्ट जनरेशन मशीन अनुवाद का एक हिस्सा है (अनुक्रम-से-अनुक्रम, इस मामले में *encoder* से स्टेट वेक्टर का उपयोग किया जाता है ताकि अनुवादित संदेश उत्पन्न या *decode* किया जा सके), या छवि का टेक्स्ट विवरण उत्पन्न करना (जिसमें फीचर वेक्टर 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) + +हमने वर्ण-दर-वर्ण टेक्स्ट उत्पन्न करना देखा है। प्रयोगशाला में, आप शब्द-स्तरीय टेक्स्ट जनरेशन का अन्वेषण करेंगे। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/hi/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..4faaf475 --- /dev/null +++ b/translations/hi/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# शब्द-स्तरीय टेक्स्ट जनरेशन RNNs का उपयोग करके + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से लैब असाइनमेंट। + +## कार्य + +इस लैब में, आपको किसी भी किताब को लेना है, और इसे शब्द-स्तरीय टेक्स्ट जनरेटर को प्रशिक्षित करने के लिए डेटा सेट के रूप में उपयोग करना है। + +## डेटा सेट + +आप किसी भी किताब का उपयोग कर सकते हैं। आप [Project Gutenberg](https://www.gutenberg.org/) पर बहुत सारे मुफ्त पाठ पा सकते हैं, उदाहरण के लिए, यहां लुईस कैरोल द्वारा [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) का सीधा लिंक है। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/hi/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..c3ad87ee --- /dev/null +++ b/translations/hi/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# ध्यान तंत्र और ट्रांसफार्मर + +## [प्री-लेचर क्विज़](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.hi.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.hi.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 के ब्लॉग](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) से + +ध्यान तंत्रों को अपनाने और इस बाधा के संयोजन ने आज के ज्ञात और उपयोग किए जाने वाले स्टेट ऑफ द आर्ट ट्रांसफार्मर मॉडल्स जैसे BERT से Open-GPT3 के निर्माण की ओर अग्रसर किया। + +## ट्रांसफार्मर मॉडल + +ट्रांसफार्मरों के पीछे का एक मुख्य विचार RNNs की अनुक्रमिक प्रकृति से बचना और एक ऐसा मॉडल बनाना है जो प्रशिक्षण के दौरान समानांतर हो सके। यह दो विचारों को लागू करके प्राप्त किया जाता है: + +* स्थिति एन्कोडिंग +* पैटर्न कैप्चर करने के लिए आत्म-ध्यान तंत्र का उपयोग करना, RNNs (या CNNs) के बजाय (यही कारण है कि ट्रांसफार्मर को पेश करने वाला पेपर *[ध्यान ही सब कुछ है](https://arxiv.org/abs/1706.03762)* कहा जाता है) + +### स्थिति एन्कोडिंग/एंबेडिंग + +स्थिति एन्कोडिंग का विचार निम्नलिखित है। +1. RNNs का उपयोग करते समय, टोकनों की सापेक्ष स्थिति चरणों की संख्या द्वारा दर्शाई जाती है, और इसलिए इसे स्पष्ट रूप से दर्शाने की आवश्यकता नहीं है। +2. हालाँकि, जब हम ध्यान में स्विच करते हैं, तो हमें अनुक्रम में टोकनों की सापेक्ष स्थितियों को जानने की आवश्यकता होती है। +3. स्थिति एन्कोडिंग प्राप्त करने के लिए, हम अपने टोकनों के अनुक्रम को अनुक्रम में टोकन स्थितियों के अनुक्रम के साथ बढ़ाते हैं (यानी, 0, 1, ... की संख्या का अनुक्रम)। +4. फिर हम टोकन स्थिति को टोकन एंबेडिंग वेक्टर के साथ मिलाते हैं। स्थिति (पूर्णांक) को वेक्टर में परिवर्तित करने के लिए, हम विभिन्न दृष्टिकोणों का उपयोग कर सकते हैं: + +* प्रशिक्षनीय एंबेडिंग, जो टोकन एंबेडिंग के समान है। यही दृष्टिकोण हम यहाँ मानते हैं। हम टोकनों और उनके स्थितियों पर एंबेडिंग परतें लागू करते हैं, जिससे समान आयामों के एंबेडिंग वेक्टर प्राप्त होते हैं, जिन्हें हम फिर जोड़ते हैं। +* निश्चित स्थिति एन्कोडिंग फ़ंक्शन, जैसा कि मूल पेपर में प्रस्तावित किया गया है। + + + +> चित्र लेखक द्वारा + +जिस परिणाम को हम स्थिति एंबेडिंग के साथ प्राप्त करते हैं वह अनुक्रम में मूल टोकन और इसकी स्थिति दोनों को एंबेड करता है। + +### मल्टी-हेड आत्म-ध्यान + +अगला, हमें अपने अनुक्रम में कुछ पैटर्न कैप्चर करने की आवश्यकता है। ऐसा करने के लिए, ट्रांसफार्मर **आत्म-ध्यान** तंत्र का उपयोग करते हैं, जो मूल रूप से इनपुट और आउटपुट के रूप में उसी अनुक्रम पर लागू ध्यान है। आत्म-ध्यान लागू करने से हमें वाक्य के भीतर **संदर्भ** को ध्यान में रखने की अनुमति मिलती है, और यह देखने की अनुमति मिलती है कि कौन से शब्द आपस में संबंधित हैं। उदाहरण के लिए, यह हमें यह देखने की अनुमति देता है कि कौन से शब्द सहसंबंधों द्वारा संदर्भित हैं, जैसे *यह*, और संदर्भ को भी ध्यान में रखते हैं: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hi.png) + +> चित्र [Google ब्लॉग](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) से + +ट्रांसफार्मर में, हम **मल्टी-हेड ध्यान** का उपयोग करते हैं ताकि नेटवर्क को विभिन्न प्रकार की निर्भरताओं को कैप्चर करने की शक्ति दी जा सके, जैसे कि दीर्घकालिक बनाम तात्कालिक शब्द संबंध, सह-संदर्भ बनाम कुछ और, आदि। + +[TensorFlow नोटबुक](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) ट्रांसफार्मर परतों के कार्यान्वयन के बारे में अधिक विवरण प्रदान करता है। + +### एन्कोडर-डिकोडर ध्यान + +ट्रांसफार्मर में, ध्यान का उपयोग दो स्थानों पर किया जाता है: + +* आत्म-ध्यान का उपयोग करके इनपुट टेक्स्ट में पैटर्न कैप्चर करने के लिए +* अनुक्रम अनुवाद करने के लिए - यह एन्कोडर और डिकोडर के बीच का ध्यान परत है। + +एन्कोडर-डिकोडर ध्यान RNNs में उपयोग किए जाने वाले ध्यान तंत्र के समान है, जैसा कि इस अनुभाग की शुरुआत में वर्णित किया गया है। यह एनिमेटेड आरेख एन्कोडर-डिकोडर ध्यान की भूमिका को स्पष्ट करता है। + +![एनिमेटेड GIF जो दिखाता है कि ट्रांसफार्मर मॉडल में मूल्यांकन कैसे किया जाता है।](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +चूंकि प्रत्येक इनपुट स्थिति को स्वतंत्र रूप से प्रत्येक आउटपुट स्थिति से मैप किया जाता है, ट्रांसफार्मर RNNs की तुलना में बेहतर समानांतरकरण कर सकते हैं, जिससे बहुत बड़े और अधिक अभिव्यक्तिशील भाषा मॉडल सक्षम होते हैं। प्रत्येक ध्यान सिर का उपयोग शब्दों के बीच विभिन्न संबंधों को सीखने के लिए किया जा सकता है जो आगे के प्राकृतिक भाषा प्रसंस्करण कार्यों में सुधार करता है। + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) एक बहुत बड़ा मल्टी लेयर ट्रांसफार्मर नेटवर्क है जिसमें *BERT-base* के लिए 12 परतें और *BERT-large* के लिए 24 परतें हैं। मॉडल को पहले एक बड़े पाठ डेटा (WikiPedia + पुस्तकें) के कॉर्पस पर बिना पर्यवेक्षण प्रशिक्षण का उपयोग करके पूर्व-प्रशिक्षित किया जाता है (एक वाक्य में मास्क किए गए शब्दों की भविष्यवाणी करना)। पूर्व-प्रशिक्षण के दौरान, मॉडल भाषा समझने के महत्वपूर्ण स्तरों को अवशोषित करता है जिसे फिर अन्य डेटासेट के साथ फाइन ट्यूनिंग के माध्यम से लाभ उठाया जा सकता है। इस प्रक्रिया को **हस्तांतरण शिक्षण** कहा जाता है। + +![चित्र http://jalammar.github.io/illustrated-bert/ से](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hi.png) + +> चित्र [स्रोत](http://jalammar.github.io/illustrated-bert/) + +## ✍️ व्यायाम: ट्रांसफार्मर + +निम्नलिखित नोटबुक में अपनी पढ़ाई जारी रखें: + +* [PyTorch में ट्रांसफार्मर](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [TensorFlow में ट्रांसफार्मर](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## निष्कर्ष + +इस पाठ में आपने ट्रांसफार्मर और ध्यान तंत्र के बारे में सीखा, जो NLP टूलबॉक्स में सभी आवश्यक उपकरण हैं। ट्रांसफार्मर आर्किटेक्चर की कई विविधताएँ हैं, जिनमें BERT, DistilBERT, BigBird, OpenGPT3 और अन्य शामिल हैं जिन्हें फाइन ट्यून किया जा सकता है। [HuggingFace पैकेज](https://github.com/huggingface/) इन आर्किटेक्चर में से कई को PyTorch और TensorFlow के साथ प्रशिक्षण के लिए रिपॉजिटरी प्रदान करता है। + +## 🚀 चुनौती + +## [पोस्ट-लेचर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## समीक्षा और आत्म अध्ययन + +* [ब्लॉग पोस्ट](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), जो क्लासिकल [ध्यान ही सब कुछ है](https://arxiv.org/abs/1706.03762) पेपर पर ट्रांसफार्मर के बारे में बताता है। +* [ट्रांसफार्मर पर ब्लॉग पोस्टों की एक श्रृंखला](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452), जो आर्किटेक्चर को विस्तार से समझाती है। + +## [असाइनमेंट](assignment.md) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/18-Transformers/assignment.md b/translations/hi/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..262ec97e --- /dev/null +++ b/translations/hi/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# असाइनमेंट: ट्रांसफार्मर्स + +HuggingFace पर ट्रांसफार्मर्स के साथ प्रयोग करें! उनके द्वारा प्रदान किए गए कुछ स्क्रिप्ट्स का प्रयास करें ताकि आप उनकी साइट पर उपलब्ध विभिन्न मॉडलों के साथ काम कर सकें: https://huggingface.co/docs/transformers/run_scripts। उनके किसी एक डेटासेट का प्रयास करें, फिर इस पाठ्यक्रम से या Kaggle से अपना खुद का एक डेटासेट आयात करें और देखें कि क्या आप दिलचस्प टेक्स्ट उत्पन्न कर सकते हैं। अपने निष्कर्षों के साथ एक नोटबुक तैयार करें। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/19-NER/README.md b/translations/hi/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..3823e159 --- /dev/null +++ b/translations/hi/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,85 @@ +# नामित इकाई पहचान + +अब तक, हम मुख्य रूप से एक NLP कार्य - वर्गीकरण पर ध्यान केंद्रित कर रहे हैं। हालाँकि, अन्य NLP कार्य भी हैं जो न्यूरल नेटवर्क के साथ पूरे किए जा सकते हैं। उन कार्यों में से एक है **[नामित इकाई पहचान](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), जो पाठ में विशिष्ट इकाइयों को पहचानने से संबंधित है, जैसे स्थान, व्यक्ति के नाम, दिनांक-समय अंतराल, रासायनिक सूत्र आदि। + +## [प्री-लेचर क्विज](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## NER का उपयोग करने का उदाहरण + +मान लीजिए कि आप एक प्राकृतिक भाषा चैट बॉट विकसित करना चाहते हैं, जो अमेज़न एलेक्सा या गूगल असिस्टेंट के समान हो। बुद्धिमान चैट बॉट इस तरह काम करते हैं कि वे उपयोगकर्ता की इच्छाओं को *समझते* हैं, जो इनपुट वाक्य पर पाठ वर्गीकरण करके किया जाता है। इस वर्गीकरण का परिणाम जिसे **इरादा** कहा जाता है, यह निर्धारित करता है कि चैट बॉट को क्या करना चाहिए। + +Bot NER + +> लेखक द्वारा चित्र + +हालाँकि, एक उपयोगकर्ता वाक्यांश के भाग के रूप में कुछ पैरामीटर प्रदान कर सकता है। उदाहरण के लिए, जब वह मौसम के बारे में पूछती है, तो वह स्थान या तिथि निर्दिष्ट कर सकती है। एक बॉट को उन इकाइयों को समझने में सक्षम होना चाहिए और कार्रवाई करने से पहले पैरामीटर स्लॉट को उचित रूप से भरना चाहिए। यहीं पर NER की भूमिका आती है। + +> ✅ एक और उदाहरण होगा [वैज्ञानिक चिकित्सा पत्रों का विश्लेषण](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)। हमें जो मुख्य बातें देखनी हैं, वे हैं विशिष्ट चिकित्सा शर्तें, जैसे बीमारियाँ और चिकित्सा पदार्थ। जबकि कुछ बीमारियों को शायद उपस्ट्रिंग खोज का उपयोग करके निकाला जा सकता है, अधिक जटिल इकाइयाँ, जैसे रासायनिक यौगिक और दवाओं के नाम, को अधिक जटिल दृष्टिकोण की आवश्यकता होती है। + +## NER को टोकन वर्गीकरण के रूप में + +NER मॉडल मूल रूप से **टोकन वर्गीकरण मॉडल** हैं, क्योंकि प्रत्येक इनपुट टोकन के लिए हमें यह तय करना होता है कि यह किसी इकाई से संबंधित है या नहीं, और यदि हाँ - तो किस इकाई वर्ग से। + +निम्नलिखित पेपर शीर्षक पर विचार करें: + +**ट्राईकस्पिड वाल्व रिगर्जिटेशन** और **लिथियम कार्बोनेट** **टॉक्सिसिटी** एक नवजात शिशु में। + +यहाँ इकाइयाँ हैं: + +* ट्राईकस्पिड वाल्व रिगर्जिटेशन एक बीमारी है (`DIS`) +* लिथियम कार्बोनेट एक रासायनिक पदार्थ है (`CHEM`) +* टॉक्सिसिटी भी एक बीमारी है (`DIS`) + +ध्यान दें कि एक इकाई कई टोकन को कवर कर सकती है। और, इस मामले में, हमें दो लगातार इकाइयों के बीच अंतर करना होगा। इसलिए, प्रत्येक इकाई के लिए दो वर्गों का उपयोग करना सामान्य है - एक जो इकाई के पहले टोकन को निर्दिष्ट करता है (अक्सर `B-` उपसर्ग का उपयोग किया जाता है, **b**eginning के लिए), और दूसरा - एक इकाई का निरंतरता (`I-`, **i**nner token के लिए)। हम सभी **o**ther टोकनों का प्रतिनिधित्व करने के लिए `O` का भी उपयोग करते हैं। इस तरह के टोकन टैगिंग को [BIO टैगिंग](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (या IOB) कहा जाता है। जब टैग किया जाता है, तो हमारा शीर्षक इस तरह दिखेगा: + +Token | Tag +------|----- +Tricuspid | B-DIS +valve | I-DIS +regurgitation | I-DIS +and | O +lithium | B-CHEM +carbonate | I-CHEM +toxicity | B-DIS +in | O +a | O +newborn | O +infant | O +. | O + +चूंकि हमें टोकनों और वर्गों के बीच एक-से-एक संबंध बनाना है, हम इस चित्र से एक दाहिने ओर सबसे अधिक **many-to-many** न्यूरल नेटवर्क मॉडल को प्रशिक्षित कर सकते हैं: + +![सामान्य पुनरावृत्त न्यूरल नेटवर्क पैटर्न दिखाने वाली छवि।](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hi.jpg) + +> *छवि [इस ब्लॉग पोस्ट](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) से है [Andrej Karpathy](http://karpathy.github.io/) द्वारा। NER टोकन वर्गीकरण मॉडल इस चित्र पर सबसे दाहिनी नेटवर्क आर्किटेक्चर से संबंधित हैं।* + +## NER मॉडल का प्रशिक्षण + +चूंकि एक NER मॉडल मूल रूप से एक टोकन वर्गीकरण मॉडल है, हम इस कार्य के लिए RNNs का उपयोग कर सकते हैं जिनसे हम पहले से परिचित हैं। इस मामले में, पुनरावृत्त नेटवर्क का प्रत्येक ब्लॉक टोकन ID लौटाएगा। निम्नलिखित उदाहरण नोटबुक दिखाता है कि टोकन वर्गीकरण के लिए LSTM को कैसे प्रशिक्षित किया जाए। + +## ✍️ उदाहरण नोटबुक: NER + +अपनी पढ़ाई जारी रखें निम्नलिखित नोटबुक में: + +* [TensorFlow के साथ NER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## निष्कर्ष + +एक NER मॉडल एक **टोकन वर्गीकरण मॉडल** है, जिसका अर्थ है कि इसका उपयोग टोकन वर्गीकरण करने के लिए किया जा सकता है। यह NLP में एक बहुत सामान्य कार्य है, जो पाठ में विशिष्ट इकाइयों को पहचानने में मदद करता है, जिसमें स्थान, नाम, तिथियाँ और अधिक शामिल हैं। + +## 🚀 चुनौती + +नीचे दिए गए असाइनमेंट को पूरा करें ताकि चिकित्सा शर्तों के लिए नामित इकाई पहचान मॉडल को प्रशिक्षित किया जा सके, फिर इसे एक अलग डेटासेट पर आजमाएं। + +## [पोस्ट-लेचर क्विज](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)। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/19-NER/lab/README.md b/translations/hi/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..18c703d4 --- /dev/null +++ b/translations/hi/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। + +## कार्य + +इस प्रयोगशाला में, आपको चिकित्सा शब्दों के लिए नामित इकाई पहचान मॉडल को प्रशिक्षित करना होगा। + +## डेटासेट + +NER मॉडल को प्रशिक्षित करने के लिए, हमें चिकित्सा इकाइयों के साथ उचित रूप से लेबल किया गया डेटासेट चाहिए। [BC5CDR डेटासेट](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) में 1500 से अधिक पत्रों से लेबल किए गए रोगों और रसायनों की इकाइयाँ शामिल हैं। आप उनकी वेबसाइट पर पंजीकरण करने के बाद डेटासेट डाउनलोड कर सकते हैं। + +BC5CDR डेटासेट इस तरह दिखता है: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +इस डेटासेट में, पहले दो पंक्तियों में पत्र का शीर्षक और सारांश है, और फिर व्यक्तिगत इकाइयाँ हैं, जिनमें शीर्षक+सारांश ब्लॉक के भीतर प्रारंभ और अंत स्थिति होती है। इकाई के प्रकार के अलावा, आपको इस इकाई का ओंटोलॉजी आईडी भी मिलता है, जो कुछ चिकित्सा ओंटोलॉजी के भीतर होता है। + +आपको इसे 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` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` वस्तु देता है जो इनपुट पाठ को टोकनों में विभाजित कर सकता है। आपको डेटासेट को BIO प्रारूप में परिवर्तित करने की आवश्यकता होगी, जिसमें PubMedBERT टोकनाइजेशन का ध्यान रखा जाएगा। आप [इस पायथन कोड के टुकड़े](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 का उपयोग करके किए जा सकने वाले अनुसंधान का वर्णन करते हैं। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/hi/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..34156631 --- /dev/null +++ b/translations/hi/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,55 @@ +# पूर्व-प्रशिक्षित बड़े भाषा मॉडल + +हमारे सभी पिछले कार्यों में, हम एक न्यूरल नेटवर्क को एक निश्चित कार्य करने के लिए लेबल किए गए डेटा सेट का उपयोग करके प्रशिक्षित कर रहे थे। बड़े ट्रांसफार्मर मॉडलों, जैसे कि BERT, के साथ, हम एक भाषा मॉडल बनाने के लिए आत्म-निगरानी तरीके से भाषा मॉडलिंग का उपयोग करते हैं, जिसे फिर विशेष डाउनस्ट्रीम कार्य के लिए आगे के डोमेन-विशिष्ट प्रशिक्षण के साथ विशेषीकृत किया जाता है। हालाँकि, यह प्रदर्शित किया गया है कि बड़े भाषा मॉडल बिना किसी डोमेन-विशिष्ट प्रशिक्षण के भी कई कार्यों को हल कर सकते हैं। ऐसे कार्य करने में सक्षम मॉडलों का एक परिवार **GPT** कहलाता है: जनरेटिव प्री-ट्रेंड ट्रांसफार्मर। + +## [प्री-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## पाठ उत्पन्न करना और पेरीप्लेक्सिटी + +एक न्यूरल नेटवर्क द्वारा बिना डाउनस्ट्रीम प्रशिक्षण के सामान्य कार्य करने की क्षमता का विचार [भाषा मॉडल बिना पर्यवेक्षित बहु-कार्यकर्ता](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) पेपर में प्रस्तुत किया गया है। मुख्य विचार यह है कि कई अन्य कार्यों को **पाठ उत्पन्न करने** का उपयोग करके मॉडल किया जा सकता है, क्योंकि पाठ को समझना मूल रूप से इसे उत्पन्न करने में सक्षम होना है। चूंकि मॉडल को मानव ज्ञान को समाहित करने वाले विशाल मात्रा के पाठ पर प्रशिक्षित किया गया है, यह विभिन्न विषयों के बारे में भी जानकार हो जाता है। + +> पाठ को समझना और उसे उत्पन्न करने में सक्षम होना हमारे चारों ओर की दुनिया के बारे में कुछ जानने की आवश्यकता भी रखता है। लोग भी पढ़कर बड़े पैमाने पर सीखते हैं, और GPT नेटवर्क इस संदर्भ में समान है। + +पाठ उत्पन्न करने वाले नेटवर्क अगली शब्द की संभावना $$P(w_N)$$ की भविष्यवाणी करके काम करते हैं। हालाँकि, अगली शब्द की बिना शर्त संभावना इस शब्द की पाठ कॉर्पस में आवृत्ति के बराबर होती है। GPT हमें पिछले शब्दों को देखते हुए अगली शब्द की **शर्तीय संभावना** प्रदान करने में सक्षम है: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> आप हमारी [डेटा विज्ञान के लिए प्रारंभिक पाठ्यक्रम](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) में संभावनाओं के बारे में अधिक पढ़ सकते हैं। + +भाषा उत्पन्न करने वाले मॉडल की गुणवत्ता को **पेरीप्लेक्सिटी** के माध्यम से परिभाषित किया जा सकता है। यह एक अंतर्निहित मीट्रिक है जो हमें किसी कार्य-विशिष्ट डेटा सेट के बिना मॉडल की गुणवत्ता को मापने की अनुमति देती है। यह *वाक्य की संभावना* के विचार पर आधारित है - मॉडल एक वाक्य को उच्च संभावना प्रदान करता है जो वास्तविक होने की संभावना है (यानी, मॉडल इससे **पेरीप्लेक्स** नहीं है), और कम समझ में आने वाले वाक्यों को कम संभावना प्रदान करता है (जैसे, *क्या यह क्या कर सकता है?*). जब हम अपने मॉडल को वास्तविक पाठ कॉर्पस से वाक्य देते हैं, तो हम उम्मीद करते हैं कि उनकी उच्च संभावना और कम **पेरीप्लेक्सिटी** होनी चाहिए। गणितीय रूप से, इसे परीक्षण सेट की सामान्यीकृत विपरीत संभावना के रूप में परिभाषित किया जाता है: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**आप [Hugging Face से GPT-संचालित पाठ संपादक](https://transformer.huggingface.co/doc/gpt2-large) का उपयोग करके पाठ उत्पन्न करने के साथ प्रयोग कर सकते हैं।** इस संपादक में, आप अपना पाठ लिखना शुरू करते हैं, और **[TAB]** दबाने से आपको कई पूर्णता विकल्प मिलते हैं। यदि वे बहुत छोटे हैं, या आप उनसे संतुष्ट नहीं हैं - फिर से [TAB] दबाएं, और आपको अधिक विकल्प मिलेंगे, जिनमें लंबे पाठ के टुकड़े भी शामिल हैं। + +## GPT एक परिवार है + +GPT एकल मॉडल नहीं है, बल्कि [OpenAI](https://openai.com) द्वारा विकसित और प्रशिक्षित मॉडलों का एक संग्रह है। + +GPT मॉडलों के अंतर्गत, हमारे पास हैं: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|1.5 अरब तक के पैरामीटर वाला भाषा मॉडल। | 175 अरब तक के पैरामीटर वाला भाषा मॉडल | 100T पैरामीटर और छवि और पाठ दोनों इनपुट स्वीकार करता है और पाठ आउटपुट करता है। | + +GPT-3 और GPT-4 मॉडल [Microsoft Azure से एक संज्ञानात्मक सेवा के रूप में](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) उपलब्ध हैं, और [OpenAI API](https://openai.com/api/) के रूप में भी। + +## प्रॉम्प्ट इंजीनियरिंग + +चूंकि GPT को भाषा और कोड को समझने के लिए विशाल मात्रा में डेटा पर प्रशिक्षित किया गया है, वे इनपुट (प्रॉम्प्ट) के जवाब में आउटपुट प्रदान करते हैं। प्रॉम्प्ट GPT इनपुट या क्वेरी होते हैं जिनके माध्यम से कोई मॉडल को कार्यों पर निर्देश प्रदान करता है जिन्हें उन्होंने अगले पूर्ण किया। इच्छित परिणाम प्राप्त करने के लिए, आपको सबसे प्रभावी प्रॉम्प्ट की आवश्यकता होती है जिसमें सही शब्दों, प्रारूपों, वाक्यांशों या यहां तक कि प्रतीकों का चयन करना शामिल होता है। यह दृष्टिकोण [प्रॉम्प्ट इंजीनियरिंग](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) कहलाता है। + +[यह दस्तावेज़](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) आपको प्रॉम्प्ट इंजीनियरिंग के बारे में अधिक जानकारी प्रदान करता है। + +## ✍️ उदाहरण नोटबुक: [OpenAI-GPT के साथ खेलना](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +निम्नलिखित नोटबुक में अपने अध्ययन को जारी रखें: + +* [OpenAI-GPT और Hugging Face Transformers के साथ पाठ उत्पन्न करना](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## निष्कर्ष + +नए सामान्य पूर्व-प्रशिक्षित भाषा मॉडल न केवल भाषा संरचना को मॉडल करते हैं, बल्कि प्राकृतिक भाषा की विशाल मात्रा भी समाहित करते हैं। इसलिए, उन्हें शून्य-शॉप या कुछ-शॉट सेटिंग्स में कुछ NLP कार्यों को हल करने के लिए प्रभावी ढंग से उपयोग किया जा सकता है। + +## [पोस्ट-व्याख्यान क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/5-NLP/README.md b/translations/hi/lessons/5-NLP/README.md new file mode 100644 index 00000000..fe063e3c --- /dev/null +++ b/translations/hi/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# प्राकृतिक भाषा प्रसंस्करण + +![NLP कार्यों का सारांश एक डूडल में](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hi.png) + +इस अनुभाग में, हम **प्राकृतिक भाषा प्रसंस्करण (NLP)** से संबंधित कार्यों को संभालने के लिए न्यूरल नेटवर्क का उपयोग करने पर ध्यान केंद्रित करेंगे। कई NLP समस्याएँ हैं जिन्हें हम चाहते हैं कि कंप्यूटर हल कर सकें: + +* **पाठ वर्गीकरण** एक विशिष्ट वर्गीकरण समस्या है जो पाठ अनुक्रमों से संबंधित है। उदाहरण के लिए, ई-मेल संदेशों को स्पैम बनाम नॉन-स्पैम के रूप में वर्गीकृत करना, या लेखों को खेल, व्यवसाय, राजनीति आदि के रूप में श्रेणीबद्ध करना। इसके अलावा, जब हम चैट बॉट विकसित करते हैं, तो हमें अक्सर यह समझने की आवश्यकता होती है कि उपयोगकर्ता क्या कहना चाहता था - इस मामले में हम **इरादे वर्गीकरण** से निपट रहे हैं। अक्सर, इरादे वर्गीकरण में हमें कई श्रेणियों से निपटना पड़ता है। +* **भावना विश्लेषण** एक विशिष्ट प्रतिगमन समस्या है, जहां हमें एक संख्या (एक भावना) को यह निर्धारित करने के लिए आवंटित करना होता है कि एक वाक्य का अर्थ कितना सकारात्मक/नकारात्मक है। भावना विश्लेषण का एक अधिक उन्नत संस्करण है **आस्पेक्ट-आधारित भावना विश्लेषण** (ABSA), जहां हम भावना को पूरे वाक्य में नहीं, बल्कि इसके विभिन्न भागों (आस्पेक्ट्स) में आवंटित करते हैं, जैसे कि *इस रेस्तरां में, मुझे भोजन पसंद आया, लेकिन माहौल भयानक था*। +* **नामित इकाई पहचान** (NER) पाठ से कुछ इकाइयों को निकालने की समस्या को संदर्भित करता है। उदाहरण के लिए, हमें समझने की आवश्यकता हो सकती है कि वाक्यांश *मुझे कल पेरिस उड़ान भरनी है* में शब्द *कल* DATE को संदर्भित करता है, और *पेरिस* एक LOCATION है। +* **कीवर्ड निष्कर्षण** 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 विधियाँ [प्राकृतिक भाषा प्रसंस्करण टूलकिट (NLTK)](https://www.nltk.org) पायथन पुस्तकालय में लागू की गई हैं। एक शानदार [NLTK पुस्तक](https://www.nltk.org/book/) ऑनलाइन उपलब्ध है जो बताती है कि विभिन्न NLP कार्यों को NLTK का उपयोग करके कैसे हल किया जा सकता है। + +हमारे पाठ्यक्रम में, हम मुख्य रूप से NLP के लिए न्यूरल नेटवर्क के उपयोग पर ध्यान केंद्रित करेंगे, और जहाँ आवश्यकता होगी वहाँ NLTK का उपयोग करेंगे। + +हम पहले ही तालिका डेटा और छवियों के साथ निपटने के लिए न्यूरल नेटवर्क के उपयोग के बारे में सीख चुके हैं। उन प्रकार के डेटा और पाठ के बीच मुख्य अंतर यह है कि पाठ एक परिवर्तनशील लंबाई का अनुक्रम है, जबकि छवियों के मामले में इनपुट आकार पहले से ज्ञात होता है। जबकि संयोजक नेटवर्क इनपुट डेटा से पैटर्न निकाल सकते हैं, पाठ में पैटर्न अधिक जटिल होते हैं। उदाहरण के लिए, नकारात्मकता को कई शब्दों के लिए विषय से अलग किया जा सकता है (जैसे *मुझे संतरे पसंद नहीं हैं*, बनाम *मुझे उन बड़े रंगीन स्वादिष्ट संतरों से नफरत है*), और इसे अभी भी एक पैटर्न के रूप में व्याख्या किया जाना चाहिए। इसलिए, भाषा को संभालने के लिए हमें नए न्यूरल नेटवर्क प्रकारों को पेश करने की आवश्यकता है, जैसे कि *पुनरावृत्त नेटवर्क* और *ट्रांसफार्मर*। + +## पुस्तकालय स्थापित करें + +यदि आप इस पाठ्यक्रम को चलाने के लिए स्थानीय पायथन स्थापना का उपयोग कर रहे हैं, तो आपको निम्नलिखित कमांड का उपयोग करके NLP के लिए सभी आवश्यक पुस्तकालय स्थापित करने की आवश्यकता हो सकती है: + +**PyTorch के लिए** +```bash +pip install -r requirements-torch.txt +``` +**TensorFlow के लिए** +```bash +pip install -r requirements-tf.txt +``` + +> आप [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) पर TensorFlow के साथ NLP का प्रयास कर सकते हैं। + +## GPU चेतावनी + +इस अनुभाग में, कुछ उदाहरणों में हम काफी बड़े मॉडल को प्रशिक्षित कर रहे होंगे। +* **GPU-सक्षम कंप्यूटर का उपयोग करें**: बड़े मॉडलों के साथ काम करते समय प्रतीक्षा समय को कम करने के लिए अपने नोटबुक को GPU-सक्षम कंप्यूटर पर चलाना उचित है। +* **GPU मेमोरी की सीमाएँ**: GPU पर चलाने से ऐसी स्थिति उत्पन्न हो सकती है जहाँ आपके GPU मेमोरी की कमी हो जाती है, विशेष रूप से बड़े मॉडलों को प्रशिक्षित करते समय। +* **GPU मेमोरी खपत**: प्रशिक्षण के दौरान GPU मेमोरी की मात्रा विभिन्न कारकों पर निर्भर करती है, जिसमें मिनीबैच आकार शामिल है। +* **मिनीबैच आकार को कम करें**: यदि आप GPU मेमोरी की समस्याओं का सामना कर रहे हैं, तो संभावित समाधान के रूप में अपने कोड में मिनीबैच आकार को कम करने पर विचार करें। +* **TensorFlow GPU मेमोरी रिलीज़**: TensorFlow के पुराने संस्करण एक ही पायथन कर्नेल के भीतर कई मॉडलों को प्रशिक्षित करते समय GPU मेमोरी को सही तरीके से रिलीज़ नहीं कर सकते। GPU मेमोरी उपयोग को प्रभावी ढंग से प्रबंधित करने के लिए, आप TensorFlow को केवल आवश्यकता पड़ने पर GPU मेमोरी आवंटित करने के लिए कॉन्फ़िगर कर सकते हैं। +* **कोड समावेश**: यदि आप TensorFlow को केवल आवश्यक होने पर GPU मेमोरी आवंटन बढ़ाने के लिए सेट करना चाहते हैं, तो अपने नोटबुक में निम्नलिखित कोड शामिल करें: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +यदि आप क्लासिक ML दृष्टिकोण से NLP के बारे में सीखने में रुचि रखते हैं, तो [इस पाठों के समूह](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) पर जाएँ। + +## इस अनुभाग में +इस अनुभाग में हम सीखेंगे: + +* [पाठ को टेन्सर के रूप में प्रस्तुत करना](13-TextRep/README.md) +* [शब्द एम्बेडिंग](14-Emdeddings/README.md) +* [भाषा मॉडलिंग](15-LanguageModeling/README.md) +* [पुनरावृत्त न्यूरल नेटवर्क](16-RNN/README.md) +* [जनरेटिव नेटवर्क](17-GenerativeNetworks/README.md) +* [ट्रांसफार्मर](18-Transformers/README.md) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मातृ भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/hi/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..0fcb8eb7 --- /dev/null +++ b/translations/hi/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# आनुवंशिक एल्गोरिदम + +## [प्री-लेक्चर क्विज़](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 रानी समस्या + +## निष्कर्ष + +आनुवंशिक एल्गोरिदम का उपयोग कई समस्याओं को हल करने के लिए किया जाता है, जिसमें लॉजिस्टिक्स और खोज समस्याएं शामिल हैं। यह क्षेत्र मनोविज्ञान और कंप्यूटर विज्ञान में जुड़े विषयों पर आधारित अनुसंधान से प्रेरित है। + +## 🚀 चुनौती + +"आनुवंशिक एल्गोरिदम लागू करने में सरल हैं, लेकिन उनका व्यवहार समझना कठिन है।" [source](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) का उपयोग प्रारंभिक बिंदु के रूप में करें। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/6-Other/22-DeepRL/README.md b/translations/hi/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..b5fddbe0 --- /dev/null +++ b/translations/hi/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# डीप रिइंफोर्समेंट लर्निंग + +रिइंफोर्समेंट लर्निंग (RL) को मशीन लर्निंग के मूल सिद्धांतों में से एक माना जाता है, जो सुपरवाइज्ड लर्निंग और अनसुपरवाइज्ड लर्निंग के साथ है। जबकि सुपरवाइज्ड लर्निंग में हम ज्ञात परिणामों के साथ डेटासेट पर निर्भर करते हैं, RL **करते हुए सीखने** पर आधारित है। उदाहरण के लिए, जब हम पहली बार एक कंप्यूटर गेम देखते हैं, तो हम खेलना शुरू कर देते हैं, भले ही हमें नियमों का पता न हो, और जल्द ही हम खेलते रहने और अपने व्यवहार को समायोजित करने के द्वारा अपनी क्षमताओं में सुधार करने में सक्षम हो जाते हैं। + +## [प्री-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +RL करने के लिए, हमें निम्नलिखित की आवश्यकता है: + +* एक **पर्यावरण** या **सिम्युलेटर** जो खेल के नियम निर्धारित करता है। हमें सिम्युलेटर में प्रयोग चलाने और परिणामों का अवलोकन करने में सक्षम होना चाहिए। +* कुछ **इनाम फ़ंक्शन**, जो यह दर्शाता है कि हमारा प्रयोग कितना सफल रहा। कंप्यूटर गेम खेलने के मामले में, इनाम हमारा अंतिम स्कोर होगा। + +इनाम फ़ंक्शन के आधार पर, हमें अपने व्यवहार को समायोजित करने और अपनी क्षमताओं में सुधार करने में सक्षम होना चाहिए, ताकि अगली बार हम बेहतर खेल सकें। मशीन लर्निंग के अन्य प्रकारों और RL के बीच मुख्य अंतर यह है कि RL में आमतौर पर हमें यह नहीं पता होता है कि हम जीतते हैं या हारते हैं जब तक कि हम खेल खत्म नहीं कर लेते। इसलिए, हम यह नहीं कह सकते कि कोई निश्चित चाल अकेले अच्छी है या नहीं - हमें केवल खेल के अंत में एक इनाम मिलता है। + +RL के दौरान, हम आमतौर पर कई प्रयोग करते हैं। प्रत्येक प्रयोग के दौरान, हमें अब तक सीखी गई सर्वोत्तम रणनीति का पालन करने (**शोषण**) और नए संभावित राज्यों का अन्वेषण करने (**अन्वेषण**) के बीच संतुलन बनाना होगा। + +## OpenAI जिम + +RL के लिए एक बेहतरीन उपकरण है [OpenAI Gym](https://gym.openai.com/) - एक **सिमुलेशन वातावरण**, जो एटारी खेलों से लेकर पोल संतुलन के पीछे के भौतिकी तक कई विभिन्न वातावरणों का अनुकरण कर सकता है। यह रिइंफोर्समेंट लर्निंग एल्गोरिदम को प्रशिक्षित करने के लिए सबसे लोकप्रिय सिमुलेशन वातावरणों में से एक है, और इसे [OpenAI](https://openai.com/) द्वारा बनाए रखा जाता है। + +> **नोट**: आप OpenAI जिम से उपलब्ध सभी वातावरण [यहां](https://gym.openai.com/envs/#classic_control) देख सकते हैं। + +## कार्टपोल संतुलन + +आप सभी ने शायद आधुनिक संतुलन उपकरण जैसे *सेगवे* या *जायरोस्कूटर* देखे होंगे। वे अपने पहियों को एक एक्सेलेरोमीटर या जायरोस्कोप से प्राप्त संकेत के जवाब में समायोजित करके स्वचालित रूप से संतुलन बनाए रखने में सक्षम होते हैं। इस अनुभाग में, हम एक समान समस्या - एक पोल को संतुलित करना - हल करना सीखेंगे। यह उस स्थिति के समान है जब एक सर्कस कलाकार को अपने हाथ पर एक पोल संतुलित करना होता है - लेकिन यह पोल संतुलन केवल 1D में होता है। + +संतुलन का एक सरलित संस्करण **कार्टपोल** समस्या के रूप में जाना जाता है। कार्टपोल की दुनिया में, हमारे पास एक क्षैतिज स्लाइडर है जो बाईं या दाईं ओर जा सकता है, और लक्ष्य यह है कि स्लाइडर के शीर्ष पर एक ऊर्ध्वाधर पोल को संतुलित करना है जब यह चलता है। + +a cartpole + +इस वातावरण को बनाने और उपयोग करने के लिए, हमें कुछ पायथन कोड की आवश्यकता है: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +प्रत्येक वातावरण को ठीक उसी तरह से एक्सेस किया जा सकता है: +* `env.reset` starts a new experiment +* `env.step` एक सिमुलेशन चरण का प्रदर्शन करता है। यह **एक्शन स्पेस** से एक **क्रिया** प्राप्त करता है, और एक **अवलोकन** (अवलोकन स्पेस से) के साथ-साथ एक इनाम और एक समाप्ति ध्वज लौटाता है। + +उपर्युक्त उदाहरण में, हम प्रत्येक चरण में एक यादृच्छिक क्रिया करते हैं, यही कारण है कि प्रयोग का जीवन बहुत छोटा है: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +एक RL एल्गोरिदम का लक्ष्य एक मॉडल को प्रशिक्षित करना है - जिसे **नीति** π कहा जाता है - जो एक दिए गए राज्य के जवाब में क्रिया लौटाएगा। हम नीति को संभाव्य भी मान सकते हैं, जैसे किसी राज्य *s* और क्रिया *a* के लिए यह π(*a*|*s*) की संभावना लौटाएगा कि हमें राज्य *s* में *a* लेना चाहिए। + +## नीति ग्रेडिएंट एल्गोरिदम + +नीति को मॉडल करने का सबसे स्पष्ट तरीका एक न्यूरल नेटवर्क बनाना है जो राज्यों को इनपुट के रूप में लेगा, और संबंधित क्रियाएँ (या बल्कि सभी क्रियाओं की संभावनाएँ) लौटाएगा। एक अर्थ में, यह एक सामान्य वर्गीकरण कार्य के समान होगा, जिसमें एक बड़ा अंतर है - हमें पहले से नहीं पता होता है कि हमें प्रत्येक चरण में कौन सी क्रियाएँ लेनी चाहिए। + +यहां विचार यह है कि उन संभावनाओं का अनुमान लगाना है। हम **संवृद्धि पुरस्कारों** का एक वेक्टर बनाते हैं जो प्रयोग के प्रत्येक चरण में हमारे कुल इनाम को दर्शाता है। हम कुछ गुणांक γ=0.99 से पहले के पुरस्कारों को गुणा करके **इनाम छूट** भी लागू करते हैं, ताकि पहले के पुरस्कारों की भूमिका कम हो सके। फिर, हम उन चरणों को प्रयोग के पथ के साथ मजबूत करते हैं जो बड़े पुरस्कार देते हैं। + +> नीति ग्रेडिएंट एल्गोरिदम के बारे में अधिक जानें और इसे [उदाहरण नोटबुक](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) में क्रियान्वित होते हुए देखें। + +## अभिनेता-आलोचक एल्गोरिदम + +नीति ग्रेडिएंट दृष्टिकोण का एक सुधारित संस्करण **अभिनेता-आलोचक** कहलाता है। इसके पीछे का मुख्य विचार यह है कि न्यूरल नेटवर्क को दो चीजें लौटाने के लिए प्रशिक्षित किया जाएगा: + +* नीति, जो यह निर्धारित करती है कि कौन सी क्रिया लेनी है। इस भाग को **अभिनेता** कहा जाता है +* इस राज्य में हमें जो कुल इनाम मिलने की अपेक्षा है, उसका अनुमान - इस भाग को **आलोचक** कहा जाता है। + +एक अर्थ में, यह आर्किटेक्चर एक [GAN](../../4-ComputerVision/10-GANs/README.md) के समान है, जहां हमारे पास दो नेटवर्क होते हैं जो एक-दूसरे के खिलाफ प्रशिक्षित होते हैं। अभिनेता-आलोचक मॉडल में, अभिनेता वह क्रिया प्रस्तावित करता है जो हमें लेनी होती है, और आलोचक परिणाम का अनुमान लगाने की कोशिश करता है। हालाँकि, हमारा लक्ष्य उन नेटवर्क को एक साथ प्रशिक्षित करना है। + +चूंकि हमें प्रयोग के दौरान वास्तविक संवृद्धि पुरस्कार और आलोचक द्वारा लौटाए गए परिणाम दोनों ज्ञात हैं, इसलिए उनके बीच के अंतर को कम करने के लिए एक हानि फ़ंक्शन बनाना अपेक्षाकृत आसान है। इससे हमें **आलोचक हानि** मिलती है। हम नीति ग्रेडिएंट एल्गोरिदम में समान दृष्टिकोण का उपयोग करके **अभिनेता हानि** की गणना कर सकते हैं। + +इनमें से एक एल्गोरिदम चलाने के बाद, हम उम्मीद कर सकते हैं कि हमारा कार्टपोल इस तरह व्यवहार करेगा: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ अभ्यास: नीति ग्रेडिएंट और अभिनेता-आलोचक RL + +अगले नोटबुक में अपने अध्ययन को जारी रखें: + +* [TensorFlow में RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [PyTorch में RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## अन्य RL कार्य + +आजकल रिइंफोर्समेंट लर्निंग एक तेजी से बढ़ता हुआ अनुसंधान क्षेत्र है। रिइंफोर्समेंट लर्निंग के कुछ दिलचस्प उदाहरण हैं: + +* कंप्यूटर को **एटारी खेल** खेलना सिखाना। इस समस्या में चुनौती यह है कि हमारे पास एक साधारण स्थिति नहीं है जो एक वेक्टर के रूप में प्रदर्शित होती है, बल्कि एक स्क्रीनशॉट है - और हमें इस स्क्रीन इमेज को एक विशेषता वेक्टर में परिवर्तित करने के लिए CNN का उपयोग करना होगा, या इनाम की जानकारी निकालनी होगी। एटारी खेल जिम में उपलब्ध हैं। +* कंप्यूटर को बोर्ड गेम्स जैसे शतरंज और गो खेलना सिखाना। हाल ही में, अत्याधुनिक कार्यक्रम जैसे **अल्फा जीरो** को एक-दूसरे के खिलाफ खेलने वाले दो एजेंटों द्वारा शून्य से प्रशिक्षित किया गया, और प्रत्येक चरण में सुधार किया गया। +* उद्योग में, RL का उपयोग सिमुलेशन से नियंत्रण प्रणाली बनाने के लिए किया जाता है। [बोंसाई](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) नामक एक सेवा विशेष रूप से इसके लिए डिज़ाइन की गई है। + +## निष्कर्ष + +अब हमने यह सीख लिया है कि एजेंटों को अच्छे परिणाम प्राप्त करने के लिए कैसे प्रशिक्षित किया जाए, बस उन्हें एक इनाम फ़ंक्शन प्रदान करके जो खेल की इच्छित स्थिति को परिभाषित करता है, और उन्हें खोज स्थान का बुद्धिमानी से अन्वेषण करने का अवसर देकर। हमने सफलतापूर्वक दो एल्गोरिदम आजमाए हैं, और अपेक्षाकृत कम समय में एक अच्छा परिणाम प्राप्त किया है। हालाँकि, यह RL में आपकी यात्रा की केवल शुरुआत है, और यदि आप गहराई से जाना चाहते हैं तो आपको निश्चित रूप से एक अलग पाठ्यक्रम लेने पर विचार करना चाहिए। + +## 🚀 चुनौती + +'अन्य RL कार्य' अनुभाग में सूचीबद्ध अनुप्रयोगों का अन्वेषण करें और इनमें से एक को लागू करने की कोशिश करें! + +## [पोस्ट-लेक्चर क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## समीक्षा और आत्म अध्ययन + +हमारे [शुरुआतकर्ताओं के लिए मशीन लर्निंग पाठ्यक्रम](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) में क्लासिकल रिइंफोर्समेंट लर्निंग के बारे में अधिक जानें। + +देखें [यह शानदार वीडियो](https://www.youtube.com/watch?v=qv6UVOQ0F44) जो बताता है कि एक कंप्यूटर सुपर मारियो खेलना कैसे सीख सकता है। + +## असाइनमेंट: [माउंटेन कार को प्रशिक्षित करें](lab/README.md) + +इस असाइनमेंट के दौरान आपका लक्ष्य एक अलग जिम वातावरण - [माउंटेन कार](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) को प्रशिक्षित करना होगा। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/6-Other/22-DeepRL/lab/README.md b/translations/hi/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..a952b1f9 --- /dev/null +++ b/translations/hi/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# प्रशिक्षण माउंटेन कार को बचाने के लिए + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) से प्रयोगशाला असाइनमेंट। + +## कार्य + +आपका लक्ष्य RL एजेंट को [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) को OpenAI Environment में नियंत्रित करने के लिए प्रशिक्षित करना है। आपको अक्टूबर 2023 तक के डेटा पर प्रशिक्षित किया गया है। + +## वातावरण + +माउंटेन कार वातावरण एक घाटी में फंसी कार से बना है। आपका लक्ष्य घाटी से कूदकर ध्वज तक पहुँचना है। आप जो क्रियाएँ कर सकते हैं वे हैं बाएँ, दाएँ तेज़ी से चलाना, या कुछ न करना। आप कार की स्थिति को x-धुरी के साथ देख सकते हैं, और गति को भी। + +## नोटबुक शुरू करना + +[MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) खोलकर प्रयोगशाला शुरू करें। + +## सीखने के बिंदु + +आपको इस प्रयोगशाला के दौरान यह सीखना चाहिए कि RL एल्गोरिदम को एक नए वातावरण में अपनाना अक्सर काफी सरल होता है, क्योंकि OpenAI जिम सभी वातावरणों के लिए एक ही इंटरफ़ेस प्रदान करता है, और एल्गोरिदम इस प्रकार वातावरण की प्रकृति पर बड़े पैमाने पर निर्भर नहीं करते हैं। आप यहां तक कि पायथन कोड को इस तरह से पुनर्गठित कर सकते हैं कि किसी भी वातावरण को RL एल्गोरिदम के रूप में एक पैरामीटर के रूप में पास किया जा सके। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/6-Other/23-MultiagentSystems/README.md b/translations/hi/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..e9a8345e --- /dev/null +++ b/translations/hi/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,155 @@ +# मल्टी-एजेंट सिस्टम + +बुद्धिमत्ता प्राप्त करने के संभावित तरीकों में से एक है तथाकथित **उभरती** (या **सहकारी**) दृष्टिकोण, जो इस तथ्य पर आधारित है कि कई अपेक्षाकृत सरल एजेंटों का संयुक्त व्यवहार पूरे सिस्टम के अधिक जटिल (या बुद्धिमान) व्यवहार का परिणाम हो सकता है। सिद्धांत रूप में, यह [सामूहिक बुद्धिमत्ता](https://en.wikipedia.org/wiki/Collective_intelligence), [उभरने का सिद्धांत](https://en.wikipedia.org/wiki/Global_brain) और [विकासात्मक साइबरनेटिक्स](https://en.wikipedia.org/wiki/Global_brain) के सिद्धांतों पर आधारित है, जो कहते हैं कि उच्च-स्तरीय सिस्टम तब कुछ प्रकार का अतिरिक्त मूल्य प्राप्त करते हैं जब उन्हें निम्न-स्तरीय सिस्टम से सही तरीके से जोड़ा जाता है (जिसे *मेटासिस्टम संक्रमण का सिद्धांत* कहा जाता है)। + +## [प्रस्तुति से पहले का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**मल्टी-एजेंट सिस्टम** का क्षेत्र 1990 के दशक में इंटरनेट और वितरित सिस्टम के विकास के जवाब में AI में उभरा। क्लासिकल AI पाठ्यपुस्तकों में से एक, [आर्टिफिशियल इंटेलिजेंस: ए मॉडर्न अप्रोच](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), मल्टी-एजेंट सिस्टम के दृष्टिकोण से क्लासिकल AI के दृष्टिकोण पर ध्यान केंद्रित करता है। + +मल्टी-एजेंट दृष्टिकोण का केंद्रीय विचार **एजेंट** का है - एक इकाई जो कुछ **पर्यावरण** में रहती है, जिसे वह महसूस कर सकती है और उस पर कार्य कर सकती है। यह एक बहुत व्यापक परिभाषा है, और एजेंटों के कई विभिन्न प्रकार और वर्गीकरण हो सकते हैं: + +* उनके तर्क करने की क्षमता के अनुसार: + - **प्रतिक्रियाशील** एजेंट आमतौर पर सरल अनुरोध-उत्तर प्रकार के व्यवहार रखते हैं + - **विचारशील** एजेंट कुछ प्रकार की तार्किक तर्क और/या योजना क्षमताओं का उपयोग करते हैं +* उस स्थान के अनुसार जहाँ एजेंट अपना कोड निष्पादित करता है: + - **स्थैतिक** एजेंट एक समर्पित नेटवर्क नोड पर काम करते हैं + - **मोबाइल** एजेंट अपने कोड को नेटवर्क नोड्स के बीच स्थानांतरित कर सकते हैं +* उनके व्यवहार के अनुसार: + - **निष्क्रिय एजेंट** के पास विशिष्ट लक्ष्य नहीं होते। ऐसे एजेंट बाहरी उत्तेजनाओं पर प्रतिक्रिया कर सकते हैं, लेकिन स्वयं कोई क्रिया शुरू नहीं करेंगे। + - **सक्रिय एजेंट** के पास कुछ लक्ष्य होते हैं जिनका वे पीछा करते हैं + - **संज्ञात्मक एजेंट** में जटिल योजना और तर्क शामिल होते हैं + +आजकल मल्टी-एजेंट सिस्टम का उपयोग कई अनुप्रयोगों में किया जाता है: + +* खेलों में, कई गैर-खिलाड़ी पात्र किसी प्रकार की AI का उपयोग करते हैं, और उन्हें बुद्धिमान एजेंट माना जा सकता है +* वीडियो उत्पादन में, भीड़ शामिल करने वाले जटिल 3D दृश्यों को आमतौर पर मल्टी-एजेंट सिमुलेशन का उपयोग करके बनाया जाता है +* सिस्टम मॉडलिंग में, मल्टी-एजेंट दृष्टिकोण का उपयोग एक जटिल मॉडल के व्यवहार का अनुकरण करने के लिए किया जाता है। उदाहरण के लिए, मल्टी-एजेंट दृष्टिकोण का सफलतापूर्वक उपयोग COVID-19 बीमारी के वैश्विक प्रसार की भविष्यवाणी करने के लिए किया गया है। इसी प्रकार के दृष्टिकोण का उपयोग शहर में यातायात को मॉडल करने के लिए किया जा सकता है, और यह देख सकता है कि यह यातायात नियमों में परिवर्तनों पर कैसे प्रतिक्रिया करता है। +* जटिल स्वचालन प्रणालियों में, प्रत्येक उपकरण एक स्वतंत्र एजेंट के रूप में कार्य कर सकता है, जिससे पूरा सिस्टम कम एकरूप और अधिक मजबूत हो जाता है। + +हम मल्टी-एजेंट सिस्टम के बारे में गहराई से नहीं जाएंगे, लेकिन **मल्टी-एजेंट मॉडलिंग** का एक उदाहरण देखेंगे। + +## नेटलोगो + +[नेटलोगो](https://ccl.northwestern.edu/netlogo/) एक मल्टी-एजेंट मॉडलिंग वातावरण है जो [लोगो](https://en.wikipedia.org/wiki/Logo_(programming_language)) प्रोग्रामिंग भाषा के एक संशोधित संस्करण पर आधारित है। इस भाषा का विकास बच्चों को प्रोग्रामिंग अवधारणाओं को सिखाने के लिए किया गया था, और यह आपको एक एजेंट **कछुए** को नियंत्रित करने की अनुमति देती है, जो चल सकता है और पीछे एक निशान छोड़ सकता है। यह जटिल ज्यामितीय आकृतियों को बनाने की अनुमति देता है, जो एजेंट के व्यवहार को समझने का एक बहुत दृश्यात्मक तरीका है। + +नेटलोगो में, हम `create-turtles` कमांड का उपयोग करके कई कछुए बना सकते हैं। फिर हम सभी कछुओं को कुछ क्रियाएँ करने का आदेश दे सकते हैं (नीचे दिए गए उदाहरण में - 10 अंक आगे): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +बेशक, जब सभी कछुए वही काम करते हैं तो यह दिलचस्प नहीं होता, इसलिए हम `ask` 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` नाम के एक प्रजाति का उपयोग करते हैं, और हमें एकवचन और बहुवचन शब्द दोनों निर्दिष्ट करने की आवश्यकता होती है, क्योंकि विभिन्न आदेश स्पष्टता के लिए विभिन्न रूपों का उपयोग करते हैं। + +> ✅ हम नेटलोगो भाषा को सीखने में नहीं जाएंगे - यदि आप अधिक जानने में रुचि रखते हैं तो आप शानदार [शुरुआती इंटरएक्टिव नेटलोगो शब्दकोश](https://ccl.northwestern.edu/netlogo/bind/) पर जा सकते हैं। + +आप [डाउनलोड](https://ccl.northwestern.edu/netlogo/download.shtml) कर सकते हैं और नेटलोगो स्थापित कर सकते हैं ताकि आप इसे आजमा सकें। + +### मॉडल्स लाइब्रेरी + +नेटलोगो की एक बड़ी बात यह है कि इसमें कार्यशील मॉडलों की एक लाइब्रेरी है जिसे आप आजमा सकते हैं। **फाइल → मॉडल लाइब्रेरी** पर जाएं, और आपके पास चुनने के लिए कई श्रेणियाँ हैं। + +NetLogo Models Library + +> डिमित्री सोश्निकोव द्वारा मॉडल लाइब्रेरी का स्क्रीनशॉट + +आप इनमें से किसी एक मॉडल को खोल सकते हैं, जैसे **जीवविज्ञान → झुंड बनाना**। + +### मुख्य सिद्धांत + +मॉडल खोलने के बाद, आपको मुख्य नेटलोगो स्क्रीन पर ले जाया जाएगा। यहाँ एक नमूना मॉडल है जो भेड़ियों और भेड़ों की जनसंख्या का वर्णन करता है, दिए गए सीमित संसाधन (घास)। + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hi.png) + +> डिमित्री सोश्निकोव द्वारा स्क्रीनशॉट + +इस स्क्रीन पर, आप देख सकते हैं: + +* **इंटरफेस** अनुभाग जिसमें शामिल हैं: + - मुख्य क्षेत्र, जहाँ सभी एजेंट रहते हैं + - विभिन्न नियंत्रण: बटन, स्लाइडर, आदि। + - ग्राफ़ जिन्हें आप सिमुलेशन के पैरामीटर प्रदर्शित करने के लिए उपयोग कर सकते हैं +* **कोड** टैब जिसमें संपादक होता है, जहाँ आप नेटलोगो प्रोग्राम टाइप कर सकते हैं + +अधिकांश मामलों में, इंटरफेस में एक **सेटअप** बटन होगा, जो सिमुलेशन की स्थिति को प्रारंभ करता है, और एक **गो** बटन जो निष्पादन शुरू करता है। इन्हें कोड में संबंधित हैंडलरों द्वारा संभाला जाता है जो इस तरह दिखते हैं: + +``` +to go [ +... +] +``` + +नेटलोगो की दुनिया निम्नलिखित वस्तुओं से मिलकर बनी है: + +* **एजेंट्स** (कछुए) जो क्षेत्र में चल सकते हैं और कुछ कर सकते हैं। आप एजेंटों को `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` का उपयोग करके कुछ करने का आदेश देते हैं। +* **अवलोकक** एक अद्वितीय एजेंट है जो दुनिया को नियंत्रित करता है। सभी बटन हैंडलर *अवलोकक मोड* में निष्पादित होते हैं। + +> ✅ एक मल्टी-एजेंट वातावरण की सुंदरता यह है कि कछुए मोड या पैच मोड में चलने वाला कोड सभी एजेंटों द्वारा एक साथ समानांतर में निष्पादित होता है। इस प्रकार, थोड़े से कोड लिखकर और व्यक्तिगत एजेंट के व्यवहार को प्रोग्राम करके, आप सिमुलेशन सिस्टम के पूरे जटिल व्यवहार को बना सकते हैं। + +### झुंड बनाना + +मल्टी-एजेंट व्यवहार के एक उदाहरण के रूप में, आइए **[झुंड बनाना](https://en.wikipedia.org/wiki/Flocking_(behavior))** पर विचार करें। झुंड बनाना एक जटिल पैटर्न है जो बहुत हद तक इस तरह है कि पक्षियों के झुंड उड़ते हैं। उन्हें उड़ते हुए देखना आपको सोचने पर मजबूर कर सकता है कि वे किसी प्रकार के सामूहिक एल्गोरिदम का पालन कर रहे हैं, या कि वे किसी प्रकार की *सामूहिक बुद्धिमत्ता* रखते हैं। हालाँकि, यह जटिल व्यवहार तब उत्पन्न होता है जब प्रत्येक व्यक्तिगत एजेंट (इस मामले में, एक *पक्षी*) केवल अपने आसपास के कुछ अन्य एजेंटों को निकटता में देखता है, और तीन सरल नियमों का पालन करता है: + +* **संरेखण** - यह पड़ोसी एजेंटों की औसत दिशा की ओर बढ़ता है +* **संघटन** - यह पड़ोसियों की औसत स्थिति की ओर बढ़ने की कोशिश करता है (*लंबी दूरी का आकर्षण*) +* **विभाजन** - जब अन्य पक्षियों के बहुत करीब पहुँचता है, तो यह दूर जाने की कोशिश करता है (*संक्षिप्त दूरी का प्रतिकर्षण*) + +आप झुंड बनाने के उदाहरण को चला सकते हैं और व्यवहार का अवलोकन कर सकते हैं। आप *विभाजन की डिग्री* या *दृष्टि सीमा* जैसे पैरामीटर को भी समायोजित कर सकते हैं, जो परिभाषित करता है कि प्रत्येक पक्षी कितनी दूर देख सकता है। ध्यान दें कि यदि आप दृष्टि सीमा को 0 पर घटाते हैं, तो सभी पक्षी अंधे हो जाते हैं, और झुंड बनाना रुक जाता है। यदि आप विभाजन को 0 पर घटाते हैं, तो सभी पक्षी एक सीधी रेखा में इकट्ठा हो जाते हैं। + +> ✅ **कोड** टैब पर स्विच करें और देखें कि झुंड बनाने के तीन नियम (संरेखण, संगठन और विभाजन) कोड में कहां लागू किए गए हैं। ध्यान दें कि हम केवल उन एजेंटों का उल्लेख करते हैं जो दृष्टि में हैं। + +### देखने के लिए अन्य मॉडल + +कुछ और दिलचस्प मॉडल हैं जिनके साथ आप प्रयोग कर सकते हैं: + +* **कला → आतिशबाजी** दिखाता है कि एक आतिशबाजी को व्यक्तिगत अग्नि धाराओं के सामूहिक व्यवहार के रूप में कैसे माना जा सकता है +* **सामाजिक विज्ञान → ट्रैफिक बेसिक** और **सामाजिक विज्ञान → ट्रैफिक ग्रिड** 1D और 2D ग्रिड में शहर के यातायात का मॉडल दिखाते हैं, जिसमें ट्रैफिक लाइट्स के साथ या बिना। सिमुलेशन में प्रत्येक कार निम्नलिखित नियमों का पालन करती है: + - यदि इसके सामने का स्थान खाली है - तो गति बढ़ाएँ (एक निश्चित अधिकतम गति तक) + - यदि यह सामने रुकावट देखती है - तो ब्रेक लगाएँ (और आप समायोजित कर सकते हैं कि चालक कितनी दूर देख सकता है) +* **सामाजिक विज्ञान → पार्टी** दिखाता है कि लोग एक कॉकटेल पार्टी के दौरान एक साथ कैसे समूह बनाते हैं। आप उन पैरामीटरों का संयोजन खोज सकते हैं जो समूह की खुशी में सबसे तेज वृद्धि की ओर ले जाते हैं। + +जैसा कि आप इन उदाहरणों से देख सकते हैं, मल्टी-एजेंट सिमुलेशन एक जटिल प्रणाली के व्यवहार को समझने का एक उपयोगी तरीका हो सकता है जिसमें ऐसे व्यक्ति होते हैं जो समान या समान तर्क का पालन करते हैं। इसका उपयोग वर्चुअल एजेंटों को नियंत्रित करने के लिए भी किया जा सकता है, जैसे कि [NPCs](https://en.wikipedia.org/wiki/NPC) कंप्यूटर खेलों में, या 3D एनिमेटेड दुनियाओं में एजेंटों के लिए। + +## विचारशील एजेंट + +उपरोक्त वर्णित एजेंट बहुत सरल हैं, जो पर्यावरण में परिवर्तनों पर किसी प्रकार के एल्गोरिदम का उपयोग करके प्रतिक्रिया करते हैं। इस प्रकार वे **प्रतिक्रियाशील एजेंट** हैं। हालाँकि, कभी-कभी एजेंट तर्क कर सकते हैं और अपनी क्रियाओं की योजना बना सकते हैं, जिस स्थिति में उन्हें **विचारशील** कहा जाता है। + +एक सामान्य उदाहरण एक व्यक्तिगत एजेंट होगा जो मानव से छुट्टी की यात्रा बुक करने के लिए एक निर्देश प्राप्त करता है। मान लीजिए कि इंटरनेट पर कई एजेंट हैं, जो इसमें मदद कर सकते हैं। उसे फिर अन्य एजेंटों से संपर्क करना चाहिए यह देखने के लिए कि कौन-सी उड़ानें उपलब्ध हैं, विभिन्न तिथियों के लिए होटल की कीमतें क्या हैं, और सबसे अच्छे मूल्य पर बातचीत करने की कोशिश करनी चाहिए। जब छुट्टी की योजना पूरी हो जाती है और मालिक द्वारा पुष्टि की जाती है, तो यह बुकिंग प्रक्रिया को आगे बढ़ा सकता है। + +ऐसा करने के लिए, एजेंटों को **संचार** करने की आवश्यकता होती है। सफल संचार के लिए उन्हें चाहिए: + +* ज्ञान का आदान-प्रदान करने के लिए कुछ **मानक भाषाएँ**, जैसे [ज्ञान अंतर परिवर्तन प्रारूप](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) और [ज्ञान क्वेरी और हेरफेर भाषा](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML)। ये भाषाएँ [भाषण क्रिया सिद्धांत](https://en.wikipedia.org/wiki/Speech_act) के आधार पर डिज़ाइन की गई हैं। +* इन भाषाओं में विभिन्न **नीलामी प्रकारों** के आधार पर कुछ **बातचीत के प्रोटोकॉल** भी शामिल होने चाहिए। +* एक **सामान्य ओंटोलॉजी** का उपयोग करना चाहिए, ताकि वे समान अवधारणाओं का उल्लेख करते समय उनके अर्थ को जानते हों +* विभिन्न एजेंटों द्वारा क्या किया जा सकता है, यह **खोजने** का एक तरीका भी होना चाहिए, जो किसी प्रकार की ओंटोलॉजी पर आधारित हो + +विचारशील एजेंट प्रतिक्रियाशील एजेंटों की तुलना में अधिक जटिल होते हैं, क्योंकि वे केवल पर्यावरण में परिवर्तनों पर प्रतिक्रिया नहीं करते, उन्हें *क्रियाएँ आरंभ* करने में भी सक्षम होना चाहिए। विचारशील एजेंटों के लिए प्रस्तावित आर्किटेक्चर में से एक तथाकथित विश्वास-इच्छा-इरादा (BDI) एजेंट है: + +* **विश्वास** एजेंट के वातावरण के बारे में ज्ञान का एक सेट बनाते हैं। इसे एक ज्ञान आधार या नियमों के सेट के रूप में संरचित किया जा सकता है जिसे एजेंट पर्यावरण में विशिष्ट स्थिति पर लागू कर सकता है। +* **इच्छाएँ** परिभाषित करती हैं कि एजेंट क्या करना चाहता है, यानी इसके लक्ष्य। उदाहरण के लिए, ऊपर दिए गए व्यक्तिगत सहायक एजेंट का लक्ष्य एक यात्रा बुक करना है, और एक होटल एजेंट का लक्ष्य लाभ को अधिकतम करना है। +* **इरादे** विशिष्ट क्रियाएँ हैं जो एजेंट अपने लक्ष्यों को प्राप्त करने के लिए योजना बनाता है। क्रियाएँ सामान्यतः वातावरण को बदलती हैं और अन्य एजेंटों के साथ संचार का कारण बनती हैं। + +मल्टी-एजेंट सिस्टम बनाने के लिए कुछ प्लेटफार्म उपलब्ध हैं, जैसे [JADE](https://jade.tilab.com/)। [यह पेपर](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) मल्टी-एजेंट प्लेटफार्मों की समीक्षा करता है, साथ ही मल्टी-एजेंट सिस्टम का एक संक्षिप्त इतिहास और उनके विभिन्न उपयोग परिदृश्य। + +## निष्कर्ष + +मल्टी-एजेंट सिस्टम विभिन्न रूप ले सकते हैं और कई विभिन्न अनुप्रयोगों में उपयोग किए जा सकते हैं। +वे सभी एक व्यक्तिगत एजेंट के सरल व्यवहार पर ध्यान केंद्रित करते हैं, और **सहकारी प्रभाव** के कारण पूरे सिस्टम के अधिक जटिल व्यवहार को प्राप्त करते हैं। + +## 🚀 चुनौती + +इस पाठ को वास्तविक दुनिया में ले जाएं और एक मल्टी-एजेंट सिस्टम की कल्पना करने की कोशिश करें जो एक समस्या को हल कर सके। उदाहरण के लिए, एक मल्टी-एजेंट सिस्टम को स्कूल बस के मार्ग को अनुकूलित करने के लिए क्या करना चाहिए? यह एक बेकरी में कैसे काम कर सकता है? + +## [प्रस्तुति के बाद का क्विज़](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## समीक्षा और आत्म-अध्ययन + +उद्योग में इस प्रकार के सिस्टम के उपयोग की समीक्षा करें। किसी क्षेत्र का चयन करें जैसे निर्माण या वीडियो गेम उद्योग और पता करें कि मल्टी-एजेंट सिस्टम का उपयोग अद्वितीय समस्याओं को हल करने के लिए कैसे किया जा सकता है। + +## [नेटलोगो असाइनमेंट](assignment.md) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/hi/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..534cfe96 --- /dev/null +++ b/translations/hi/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# NetLogo असाइनमेंट + +NetLogo के पुस्तकालय में से एक मॉडल लें और इसका उपयोग वास्तविक जीवन की स्थिति का यथासंभव सटीक अनुकरण करने के लिए करें। एक अच्छा उदाहरण होगा Alternative Visualizations फ़ोल्डर में Virus मॉडल को संशोधित करना ताकि यह दिखाया जा सके कि इसका उपयोग COVID-19 के फैलाव को मॉडल करने के लिए कैसे किया जा सकता है। क्या आप एक ऐसा मॉडल बना सकते हैं जो वास्तविक जीवन में वायरल फैलाव की नकल करे? + +अपने काम को दिखाने के लिए एक प्रति सहेजें और एक वीडियो डेमो बनाएं जो यह समझाए कि मॉडल वास्तविक दुनिया की स्थिति से कैसे जुड़ा हुआ है। + +**अस्वीकृति**: +यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत के रूप में माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/7-Ethics/README.md b/translations/hi/lessons/7-Ethics/README.md new file mode 100644 index 00000000..cd679d76 --- /dev/null +++ b/translations/hi/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# नैतिक और जिम्मेदार एआई + +आप इस पाठ्यक्रम को लगभग समाप्त कर चुके हैं, और मुझे उम्मीद है कि अब आप स्पष्ट रूप से देख सकते हैं कि एआई कई औपचारिक गणितीय विधियों पर आधारित है जो हमें डेटा में संबंध खोजने और मानव व्यवहार के कुछ पहलुओं को दोहराने के लिए मॉडल प्रशिक्षित करने की अनुमति देती हैं। इस ऐतिहासिक समय में, हम एआई को डेटा से पैटर्न निकालने और उन पैटर्नों को नए समस्याओं को हल करने के लिए लागू करने के लिए एक बहुत शक्तिशाली उपकरण मानते हैं। + +## [प्री-लेक्चर क्विज़](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +हालांकि, विज्ञान-कथा में हम अक्सर ऐसी कहानियाँ देखते हैं जहाँ एआई मानवता के लिए खतरा प्रस्तुत करता है। आमतौर पर, ये कहानियाँ किसी प्रकार के एआई विद्रोह के चारों ओर केंद्रित होती हैं, जब एआई मानव beings का सामना करने का निर्णय लेता है। इसका मतलब है कि एआई के पास किसी प्रकार की भावना है या यह अपने डेवलपर्स द्वारा अनदेखे निर्णय ले सकता है। + +इस पाठ्यक्रम में हमने जो एआई सीखा है, वह केवल बड़े मैट्रिक्स अंकगणित के अलावा कुछ नहीं है। यह हमारे समस्याओं को हल करने में मदद करने के लिए एक बहुत शक्तिशाली उपकरण है, और किसी अन्य शक्तिशाली उपकरण की तरह - इसका उपयोग अच्छे और बुरे उद्देश्यों के लिए किया जा सकता है। महत्वपूर्ण बात यह है कि इसे *गलत उपयोग* किया जा सकता है। + +## जिम्मेदार एआई के सिद्धांत + +एआई के इस आकस्मिक या जानबूझकर गलत उपयोग से बचने के लिए, माइक्रोसॉफ्ट महत्वपूर्ण [जिम्मेदार एआई के सिद्धांत](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) बताता है। निम्नलिखित अवधारणाएँ इन सिद्धांतों के आधार हैं: + +* **निष्पक्षता** उस महत्वपूर्ण समस्या से संबंधित है जिसे *मॉडल पूर्वाग्रह* कहा जाता है, जो प्रशिक्षण के लिए पूर्वाग्रही डेटा का उपयोग करने के कारण हो सकता है। उदाहरण के लिए, जब हम किसी व्यक्ति के लिए सॉफ़्टवेयर डेवलपर नौकरी पाने की संभावना की भविष्यवाणी करने की कोशिश करते हैं, तो मॉडल संभवतः पुरुषों को अधिक प्राथमिकता देगा - बस इसलिए कि प्रशिक्षण डेटा सेट संभवतः पुरुष दर्शकों के प्रति पूर्वाग्रही था। हमें प्रशिक्षण डेटा को सावधानी से संतुलित करना होगा और पूर्वाग्रहों से बचने के लिए मॉडल की जांच करनी होगी, और यह सुनिश्चित करना होगा कि मॉडल अधिक प्रासंगिक विशेषताओं पर ध्यान दे। +* **विश्वसनीयता और सुरक्षा**। स्वभाव से, एआई मॉडल गलतियाँ कर सकते हैं। एक न्यूरल नेटवर्क संभावनाएँ लौटाता है, और हमें निर्णय लेते समय इसे ध्यान में रखना होगा। प्रत्येक मॉडल की कुछ सटीकता और पुनः प्राप्ति होती है, और हमें यह समझना होगा कि गलत सलाह से होने वाले नुकसान को रोकने के लिए। +* **गोपनीयता और सुरक्षा** के कुछ एआई-विशिष्ट निहितार्थ हैं। उदाहरण के लिए, जब हम किसी मॉडल को प्रशिक्षित करने के लिए कुछ डेटा का उपयोग करते हैं, तो यह डेटा किसी न किसी तरह से मॉडल में "एकीकृत" हो जाता है। एक ओर, यह सुरक्षा और गोपनीयता को बढ़ाता है, दूसरी ओर - हमें याद रखना होगा कि मॉडल को किस डेटा पर प्रशिक्षित किया गया था। +* **समावेशिता** का मतलब है कि हम एआई का निर्माण लोगों को बदलने के लिए नहीं कर रहे हैं, बल्कि लोगों को बढ़ाने और हमारे काम को अधिक रचनात्मक बनाने के लिए कर रहे हैं। यह निष्पक्षता से भी संबंधित है, क्योंकि जब हम कम प्रतिनिधित्व वाले समुदायों से निपटते हैं, तो हम जो डेटा सेट एकत्र करते हैं, वे संभवतः पूर्वाग्रही होते हैं, और हमें यह सुनिश्चित करना होगा कि उन समुदायों को शामिल किया गया है और एआई द्वारा सही तरीके से संभाला गया है। +* **पारदर्शिता**। इसमें यह सुनिश्चित करना शामिल है कि हम हमेशा स्पष्ट रहें कि एआई का उपयोग किया जा रहा है। इसके अलावा, जहाँ भी संभव हो, हम *व्याख्यायित* एआई सिस्टम का उपयोग करना चाहते हैं। +* **जिम्मेदारी**। जब एआई मॉडल कुछ निर्णय लेते हैं, तो यह हमेशा स्पष्ट नहीं होता कि उन निर्णयों के लिए कौन जिम्मेदार है। हमें यह सुनिश्चित करना होगा कि हम समझें कि एआई निर्णयों की जिम्मेदारी कहाँ है। अधिकांश मामलों में, हम महत्वपूर्ण निर्णय लेने के चक्र में मानव beings को शामिल करना चाहेंगे, ताकि वास्तविक लोग जिम्मेदार ठहराए जाएँ। + +## जिम्मेदार एआई के लिए उपकरण + +माइक्रोसॉफ्ट ने [जिम्मेदार एआई टूलबॉक्स](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/) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/README.md b/translations/hi/lessons/README.md new file mode 100644 index 00000000..30510847 --- /dev/null +++ b/translations/hi/lessons/README.md @@ -0,0 +1,8 @@ +# अवलोकन + +![एक डूडल में अवलोकन](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hi.png) + +> स्केच नोट [Tomomi Imura](https://twitter.com/girlie_mac) द्वारा + +**अस्वीकृति**: +यह दस्तावेज़ मशीन आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/X-Extras/X1-MultiModal/README.md b/translations/hi/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..a38ce9b1 --- /dev/null +++ b/translations/hi/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,80 @@ +# मल्टी-मोडल नेटवर्क्स + +NLP कार्यों को हल करने के लिए ट्रांसफार्मर मॉडल की सफलता के बाद, समान या समान आर्किटेक्चर को कंप्यूटर विज़न कार्यों पर लागू किया गया है। ऐसे मॉडलों का निर्माण करने में बढ़ती रुचि है जो दृष्टि और प्राकृतिक भाषा क्षमताओं को *संयोजित* करेंगे। ऐसे प्रयासों में से एक OpenAI द्वारा किया गया था, और इसे CLIP और DALL.E कहा जाता है। + +## कंट्रास्टिव इमेज प्री-ट्रेनिंग (CLIP) + +CLIP का मुख्य विचार यह है कि यह टेक्स्ट प्रॉम्प्ट्स की तुलना एक छवि के साथ कर सके और यह निर्धारित कर सके कि छवि प्रॉम्प्ट के साथ कितनी अच्छी तरह मेल खाती है। + +![CLIP आर्किटेक्चर](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hi.png) + +> *चित्र [इस ब्लॉग पोस्ट](https://openai.com/blog/clip/) से* + +मॉडल को इंटरनेट से प्राप्त छवियों और उनके कैप्शन पर प्रशिक्षित किया गया है। प्रत्येक बैच के लिए, हम (छवि, टेक्स्ट) के N जोड़ों को लेते हैं, और उन्हें कुछ वेक्टर प्रतिनिधित्व में परिवर्तित करते हैं। +वे प्रतिनिधित्व फिर एक साथ मिलाए जाते हैं। लॉस फंक्शन को एक जोड़े (जैसे I और T) के लिए संबंधित वेक्टरों के बीच कोसाइन समानता को अधिकतम करने के लिए परिभाषित किया गया है, और सभी अन्य जोड़ों के बीच कोसाइन समानता को न्यूनतम करने के लिए। यही कारण है कि इस दृष्टिकोण को **कंट्रास्टिव** कहा जाता है। + +CLIP मॉडल/लाइब्रेरी [OpenAI GitHub](https://github.com/openai/CLIP) से उपलब्ध है। इस दृष्टिकोण का वर्णन [इस ब्लॉग पोस्ट](https://openai.com/blog/clip/) में किया गया है, और अधिक विस्तार में [इस पेपर](https://arxiv.org/pdf/2103.00020.pdf) में। + +एक बार जब इस मॉडल को प्री-ट्रेन किया जाता है, तो हम इसे छवियों का एक बैच और टेक्स्ट प्रॉम्प्ट्स का एक बैच दे सकते हैं, और यह हमें संभावनाओं के साथ टेन्सर लौटाएगा। CLIP का उपयोग कई कार्यों के लिए किया जा सकता है: + +**छवि वर्गीकरण** + +मान लीजिए कि हमें छवियों को, कहने के लिए, बिल्लियों, कुत्तों और मनुष्यों के बीच वर्गीकृत करने की आवश्यकता है। इस मामले में, हम मॉडल को एक छवि और टेक्स्ट प्रॉम्प्ट्स की एक श्रृंखला दे सकते हैं: "*बिल्ली की तस्वीर*", "*कुत्ते की तस्वीर*", "*मनुष्य की तस्वीर*"। परिणामस्वरूप 3 संभावनाओं के वेक्टर में, हमें बस उच्चतम मूल्य वाला अनुक्रमांक चुनना है। + +![CLIP के लिए छवि वर्गीकरण](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hi.png) + +> *चित्र [इस ब्लॉग पोस्ट](https://openai.com/blog/clip/) से* + +**टेक्स्ट-आधारित छवि खोज** + +हम इसके विपरीत भी कर सकते हैं। यदि हमारे पास छवियों का एक संग्रह है, तो हम इस संग्रह को मॉडल को पास कर सकते हैं, और एक टेक्स्ट प्रॉम्प्ट - यह हमें उस छवि को देगा जो दिए गए प्रॉम्प्ट के साथ सबसे अधिक समान है। + +## ✍️ उदाहरण: [CLIP का उपयोग करके छवि वर्गीकरण और छवि खोज](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +CLIP को क्रियान्वित करने के लिए [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) नोटबुक खोलें। + +## VQGAN+ CLIP के साथ छवि निर्माण + +CLIP का उपयोग टेक्स्ट प्रॉम्प्ट से **छवि निर्माण** के लिए भी किया जा सकता है। ऐसा करने के लिए, हमें एक **जनरेटर मॉडल** की आवश्यकता है जो कुछ वेक्टर इनपुट के आधार पर छवियां उत्पन्न कर सके। ऐसे मॉडलों में से एक को [VQGAN](https://compvis.github.io/taming-transformers/) (वेक्टर-क्वांटाइज्ड GAN) कहा जाता है। + +VQGAN के मुख्य विचार जो इसे साधारण [GAN](../../4-ComputerVision/10-GANs/README.md) से अलग करते हैं, निम्नलिखित हैं: +* छवि को बनाने वाले संदर्भ-समृद्ध दृश्य भागों की एक श्रृंखला उत्पन्न करने के लिए ऑटोरेग्रेसिव ट्रांसफार्मर आर्किटेक्चर का उपयोग करना। ये दृश्य भाग [CNN](../../4-ComputerVision/07-ConvNets/README.md) द्वारा सीखे जाते हैं। +* उप-छवि विभेदक का उपयोग करना जो यह पहचानता है कि छवि के भाग "वास्तविक" हैं या "नकली" (पारंपरिक GAN में "सभी या कुछ नहीं" दृष्टिकोण के विपरीत)। + +VQGAN के बारे में अधिक जानने के लिए [Taming Transformers](https://compvis.github.io/taming-transformers/) वेबसाइट पर जाएं। + +VQGAN और पारंपरिक GAN के बीच एक महत्वपूर्ण अंतर यह है कि बाद वाला किसी भी इनपुट वेक्टर से एक उचित छवि उत्पन्न कर सकता है, जबकि VQGAN संभवतः एक छवि उत्पन्न करेगा जो सामंजस्यपूर्ण नहीं होगी। इसलिए, हमें छवि निर्माण प्रक्रिया को आगे निर्देशित करने की आवश्यकता है, और यह CLIP का उपयोग करके किया जा सकता है। + +![VQGAN+CLIP आर्किटेक्चर](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hi.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.hi.png) | ![Pixray द्वारा उत्पन्न चित्र](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.hi.png) | ![Pixray द्वारा उत्पन्न चित्र](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hi.png) +----|----|---- +*एक किताब के साथ युवा पुरुष साहित्य शिक्षक का एक करीबी जलरंग पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र | *एक कंप्यूटर के साथ युवा महिला कंप्यूटर विज्ञान शिक्षक का एक करीबी तेल पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र | *कालेबोर्ड के सामने पुराने पुरुष गणित शिक्षक का एक करीबी तेल पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र + +> **आर्टिफिशियल टीचर्स** संग्रह से चित्र [Dmitry Soshnikov](http://soshnikov.com) द्वारा + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E एक GPT-3 का संस्करण है जिसे प्रॉम्प्ट से छवियां उत्पन्न करने के लिए प्रशिक्षित किया गया है। इसे 12 अरब पैरामीटर के साथ प्रशिक्षित किया गया है। + +CLIP के विपरीत, DALL-E टेक्स्ट और छवि दोनों को छवियों और टेक्स्ट के लिए एकल टोकन स्ट्रीम के रूप में प्राप्त करता है। इसलिए, कई प्रॉम्प्ट्स से, आप टेक्स्ट के आधार पर छवियां उत्पन्न कर सकते हैं। + +### [DALL-E 2](https://openai.com/dall-e-2) +DALL-E 1 और 2 के बीच मुख्य अंतर यह है कि यह अधिक यथार्थवादी छवियां और कला उत्पन्न करता है। + +DALL-E के साथ छवि निर्माण के उदाहरण: +![Pixray द्वारा उत्पन्न चित्र](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.hi.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.hi.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.hi.png) +----|----|---- +*एक किताब के साथ युवा पुरुष साहित्य शिक्षक का एक करीबी जलरंग पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र | *एक कंप्यूटर के साथ युवा महिला कंप्यूटर विज्ञान शिक्षक का एक करीबी तेल पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र | *कालेबोर्ड के सामने पुराने पुरुष गणित शिक्षक का एक करीबी तेल पोर्ट्रेट* प्रॉम्प्ट से उत्पन्न चित्र + +## संदर्भ + +* VQGAN पेपर: [उच्च-रिज़ॉल्यूशन छवि संश्लेषण के लिए ट्रांसफार्मर्स को वश में करना](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP पेपर: [प्राकृतिक भाषा सुपरविजन से ट्रांसफर करने योग्य दृश्य मॉडल सीखना](https://arxiv.org/pdf/2103.00020.pdf) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/sketchnotes/LICENSE.md b/translations/hi/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..f060cc6f --- /dev/null +++ b/translations/hi/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,145 @@ +# Creative Commons 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 को यदि अनुबंध के रूप में व्याख्या किया जा सकता है, तो आपको इन शर्तों और शर्तों को स्वीकार करने के बदले में लाइसेंस अधिकार दिए जाते हैं, और लाइसेंसदाता आपको इन शर्तों और शर्तों के तहत लाइसेंस प्राप्त सामग्री उपलब्ध कराने से लाभ प्राप्त करने के बदले में आपको ऐसे अधिकार प्रदान करता है। + +## अनुभाग 1 -- परिभाषाएँ। + + a. अनुकूलित सामग्री का अर्थ है कॉपीराइट और समान अधिकारों के अधीन सामग्री जो लाइसेंस प्राप्त सामग्री से व्युत्पन्न या आधारित है और जिसमें लाइसेंस प्राप्त सामग्री का अनुवाद, परिवर्तन, व्यवस्था, रूपांतरण, या किसी अन्य तरीके से संशोधन किया गया है जिसमें लाइसेंसदाता के द्वारा रखे गए कॉपीराइट और समान अधिकारों के तहत अनुमति की आवश्यकता होती है। इस Public License के उद्देश्यों के लिए, जहां लाइसेंस प्राप्त सामग्री एक संगीत कार्य, प्रदर्शन, या ध्वनि रिकॉर्डिंग है, अनुकूलित सामग्री हमेशा तब उत्पन्न होती है जब लाइसेंस प्राप्त सामग्री को चलती छवि के साथ समयबद्ध संबंध में समन्वयित किया जाता है। + + b. एडेप्टर का लाइसेंस का अर्थ है लाइसेंस प्राप्त सामग्री में आपके योगदान के लिए आपके कॉपीराइट और समान अधिकारों पर लागू लाइसेंस इस Public License की शर्तों और शर्तों के अनुसार। + + c. BY-SA संगत लाइसेंस का अर्थ है एक लाइसेंस जो creativecommons.org/compatiblelicenses पर सूचीबद्ध है, जो Creative Commons द्वारा इस Public License के समकक्ष के रूप में अनुमोदित है। + + d. कॉपीराइट और समान अधिकारों का अर्थ है कॉपीराइट और/या समान अधिकार जो कॉपीराइट से निकटता से संबंधित हैं जिसमें, बिना किसी सीमा के, प्रदर्शन, प्रसारण, ध्वनि रिकॉर्डिंग, और सूई जनरिस डेटाबेस अधिकार शामिल हैं, बिना यह देखे कि अधिकारों को कैसे लेबल या वर्गीकृत किया गया है। इस Public License के उद्देश्यों के लिए, अनुभाग 2(b)(1)-(2) में निर्दिष्ट अधिकार कॉपीराइट और समान अधिकार नहीं हैं। + + e. प्रभावी तकनीकी उपायों का अर्थ है वे उपाय जो, उचित प्राधिकरण की अनुपस्थिति में, WIPO कॉपीराइट संधि के अनुच्छेद 11 के तहत बाधाओं को पूरा करने वाले कानूनों के तहत नहीं किए जा सकते हैं जो 20 दिसंबर, 1996 को अपनाए गए थे, और/या समान अंतरराष्ट्रीय समझौतों के तहत। + + f. अपवाद और सीमाएँ का अर्थ है उचित उपयोग, उचित सौदा, और/या कॉपीराइट और समान अधिकारों के लिए कोई अन्य अपवाद या सीमा जो आपके लाइसेंस प्राप्त सामग्री के उपयोग पर लागू होती है। + + g. लाइसेंस तत्वों का अर्थ है Creative Commons सार्वजनिक लाइसेंस के नाम में सूचीबद्ध लाइसेंस विशेषताएँ। इस Public License के लाइसेंस तत्व हैं: एट्रिब्यूशन और शेयरएलाइक। + + h. लाइसेंस प्राप्त सामग्री का अर्थ है कलात्मक या साहित्यिक कार्य, डेटाबेस, या अन्य सामग्री जिस पर लाइसेंसदाता ने इस Public License को लागू किया है। + + i. लाइसेंस प्राप्त अधिकार का अर्थ है वे अधिकार जो आपको इस Public License की शर्तों और शर्तों के अधीन दिए गए हैं, जो आपके लाइसेंस प्राप्त सामग्री के उपयोग पर लागू सभी कॉपीराइट और समान अधिकारों तक सीमित हैं और जिनके लाइसेंस देने का अधिकार लाइसेंसदाता के पास है। + + j. लाइसेंसदाता का अर्थ है वे व्यक्ति या संस्थाएँ जो इस Public License के तहत अधिकार प्रदान कर रहे हैं। + + k. साझा करना का अर्थ है सामग्री को किसी भी तरीके या प्रक्रिया से सार्वजनिक को प्रदान करना जो लाइसेंस प्राप्त अधिकारों के तहत अनुमति की आवश्यकता होती है, जैसे कि पुनरुत्पादन, सार्वजनिक प्रदर्शन, वितरण, प्रसार, संचार, या आयात करना, और सामग्री को सार्वजनिक के लिए उपलब्ध कराना जिसमें ऐसे तरीके शामिल हैं जिनसे सार्वजनिक के सदस्य सामग्री को उस स्थान से और उस समय में एक्सेस कर सकते हैं जिसे वे व्यक्तिगत रूप से चुनते हैं। + + l. सूई जनरिस डेटाबेस अधिकार का अर्थ है कॉपीराइट के अलावा अधिकार जो यूरोपीय संसद और परिषद के 11 मार्च 1996 के निर्देश 96/9/EC से उत्पन्न होते हैं जो डेटाबेस की कानूनी सुरक्षा पर है, जैसा कि संशोधित और/या उत्तराधिकारी किया गया है, साथ ही दुनिया के किसी भी स्थान पर अन्य समकक्ष अधिकार। + + m. आप का अर्थ है वह व्यक्ति या संस्था जो इस Public License के तहत लाइसेंस प्राप्त अधिकारों का उपयोग कर रही है। आपका एक संबंधित अर्थ है। + +## अनुभाग 2 -- दायरा। + + a. लाइसेंस अनुदान। + + 1. इस Public License की शर्तों और शर्तों के अधीन, लाइसेंसदाता यहाँ आपको लाइसेंस प्राप्त सामग्री में लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए एक वैश्विक, रॉयल्टी-फ्री, गैर-सब्लाइसेंस योग्य, गैर-विशेष, अमिट लाइसेंस प्रदान करता है: + + a. लाइसेंस प्राप्त सामग्री को, पूर्ण या भाग में, पुनरुत्पादित और साझा करना; और + + b. अनुकूलित सामग्री का उत्पादन, पुनरुत्पादन, और साझा करना। + + 2. अपवाद और सीमाएँ। संदेह से बचने के लिए, जहां अपवाद और सीमाएँ आपके उपयोग पर लागू होती हैं, इस Public License का उपयोग नहीं होता है, और आपको इसकी शर्तों और शर्तों का पालन करने की आवश्यकता नहीं है। + + 3. अवधि। इस Public License की अवधि अनुभाग 6(a) में निर्दिष्ट है। + + 4. मीडिया और प्रारूप; तकनीकी संशोधन की अनुमति। लाइसेंसदाता आपको सभी मीडिया और प्रारूपों में लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए अधिकृत करता है चाहे वे अब ज्ञात हों या भविष्य में बनाए जाएं, और ऐसा करने के लिए आवश्यक तकनीकी संशोधन करने के लिए। लाइसेंसदाता किसी भी अधिकार या प्राधिकरण का परित्याग करता है और/या सहमति नहीं देता है कि आप लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए आवश्यक तकनीकी संशोधन करने से रोकें, जिसमें प्रभावी तकनीकी उपायों को दरकिनार करने के लिए आवश्यक तकनीकी संशोधन शामिल हैं। इस Public License के उद्देश्यों के लिए, इस अनुभाग 2(a)(4) द्वारा अधिकृत संशोधन करने से कभी भी अनुकूलित सामग्री उत्पन्न नहीं होती है। + + 5. डाउनस्ट्रीम प्राप्तकर्ता। + + a. लाइसेंसदाता से प्रस्ताव -- लाइसेंस प्राप्त सामग्री। लाइसेंस प्राप्त सामग्री के प्रत्येक प्राप्तकर्ता को स्वचालित रूप से लाइसेंसदाता से इस Public License की शर्तों और शर्तों के तहत लाइसेंस प्राप्त अधिकारों का उपयोग करने का प्रस्ताव मिलता है। + + b. लाइसेंसदाता से अतिरिक्त प्रस्ताव -- अनुकूलित सामग्री। आपके द्वारा अनुकूलित सामग्री के प्रत्येक प्राप्तकर्ता को स्वचालित रूप से लाइसेंसदाता से अनुकूलित सामग्री में लाइसेंस प्राप्त अधिकारों का उपयोग करने का प्रस्ताव मिलता है, जिस पर आप एडेप्टर के लाइसेंस को लागू करते हैं। + + c. कोई डाउनस्ट्रीम प्रतिबंध नहीं। आप लाइसेंस प्राप्त सामग्री पर किसी भी अतिरिक्त या भिन्न शर्तों या शर्तों की पेशकश या लागू नहीं कर सकते हैं, या लाइसेंस प्राप्त सामग्री के किसी भी प्राप्तकर्ता द्वारा लाइसेंस प्राप्त अधिकारों के उपयोग को प्रतिबंधित करने के लिए कोई प्रभावी तकनीकी उपाय लागू नहीं कर सकते हैं। + + 6. कोई समर्थन नहीं। इस Public License में कुछ भी ऐसा नहीं है जो आपके द्वारा किए गए उपयोग के साथ, या लाइसेंसदाता या अन्य लोगों द्वारा नामित किए गए क्रेडिट के रूप में, आपको किसी भी तरीके से जोड़ा गया हो, या प्रायोजित, समर्थित, या आधिकारिक स्थिति प्राप्त करने की अनुमति देता हो, जैसा कि अनुभाग 3(a)(1)(A)(i) में प्रदान किया गया है। + + b. अन्य अधिकार। + + 1. नैतिक अधिकार, जैसे कि अखंडता का अधिकार, इस Public License के तहत लाइसेंस नहीं किए गए हैं, न ही सार्वजनिकता, गोपनीयता, और/या अन्य समान व्यक्तित्व अधिकार; हालाँकि, यथासंभव, लाइसेंसदाता किसी भी ऐसे अधिकार का परित्याग करता है और/या सहमति नहीं देता है जो लाइसेंसदाता द्वारा रखे गए हैं, ताकि आपको लाइसेंस प्राप्त अधिकारों का उपयोग करने की अनुमति मिल सके, लेकिन अन्यथा नहीं। + + 2. पेटेंट और ट्रेडमार्क अधिकार इस Public License के तहत लाइसेंस नहीं किए गए हैं। + + 3. यथासंभव, लाइसेंसदाता आपके द्वारा लाइसेंस प्राप्त अधिकारों का उपयोग करने के लिए सीधे या किसी संग्रहणीय समाज के माध्यम से किसी भी स्वैच्छिक या माफ किए जाने योग्य वैधानिक या अनिवार्य लाइसेंसिंग योजना के तहत रॉयल्टी वसूलने का कोई अधिकार नहीं छोड़ता है। अन्य सभी मामलों में, लाइसेंसदाता स्पष्ट रूप से ऐसे रॉयल्टी वसूलने का कोई अधिकार सुरक्षित रखता है। + +## अनुभाग 3 -- लाइसेंस की शर्तें। + +आपके द्वारा लाइसेंस प्राप्त अधिकारों का उपयोग निम्नलिखित शर्तों के अधीन स्पष्ट रूप से किया गया है। + + a. एट्रिब्यूशन। + + 1. यदि आप लाइसेंस प्राप्त सामग्री को साझा करते हैं (संशोधित रूप में भी), तो आपको: + + a. निम्नलिखित को बनाए रखना चाहिए यदि इसे लाइसेंसदाता द्वारा लाइसेंस प्राप्त सामग्री के साथ प्रदान किया गया है: + + i. लाइसेंस प्राप्त सामग्री के निर्माता(ओं) की पहचान और किसी अन्य व्यक्ति को जो क्रेडिट प्राप्त करने के लिए नामित किया गया है, किसी भी उचित तरीके से जो लाइसेंसदाता द्वारा अनुरोध किया गया है (यदि नामित किया गया हो तो उपनाम द्वारा); + + ii. एक कॉपीराइट नोटिस; + + iii. इस Public License का संदर्भ देने वाला एक नोटिस; + + iv. वारंटियों के अस्वीकरण का संदर्भ देने वाला एक नोटिस; + + v. लाइसेंस प्राप्त सामग्री के लिए एक URI या हाइपरलिंक यथासंभव; + + b. यह संकेत करें कि आपने लाइसेंस प्राप्त सामग्री में संशोधन किया है और किसी भी पूर्व संशोधन का संकेत बनाए रखें; और + + c. यह संकेत करें कि लाइसेंस प्राप्त सामग्री इस Public License के तहत लाइसेंस प्राप्त है, और इस Public License का पाठ, या इसका URI या हाइपरलिंक शामिल करें। + + 2. आप अनुभाग 3(a)(1) में शर्तों को किसी भी उचित तरीके से पूरा कर सकते हैं जो उस माध्यम, साधन, और संदर्भ पर आधारित हो जिसमें आप लाइसेंस प्राप्त सामग्री को साझा करते हैं। उदाहरण के लिए, यह उचित हो सकता है कि आवश्यक जानकारी शामिल करने वाले संसाधन के लिए एक URI या हाइपरलिंक प्रदान करके शर्तों को पूरा किया जाए। + + 3. यदि लाइसेंसदाता द्वारा अनुरोध किया गया, तो आपको यथासंभव किसी भी जानकारी को हटाना चाहिए जो अनुभाग 3(a)(1)(A) द्वारा आवश्यक है। + + b. शेयरएलाइक। + + अनुभाग 3(a) की शर्तों के अलावा, यदि आप साझा करते हैं अनुकूलित सामग्री जिसे आप उत्पन्न करते हैं, तो निम्नलिखित शर्तें भी लागू होती हैं। + + 1. आप जो एडेप्टर का लाइसेंस लागू करते हैं वह एक Creative Commons लाइसेंस होना चाहिए जिसमें समान लाइसेंस तत्व हों, यह संस्करण या बाद का, या एक BY-SA संगत लाइसेंस। + + 2. आपको उस एडेप्टर के लाइसेंस का पाठ शामिल करना चाहिए जिसे आप लागू करते हैं, या उसका URI या हाइपरलिंक। आप इस शर्त को किसी भी उचित तरीके से पूरा कर सकते हैं जो उस माध्यम, साधन, और संदर्भ पर आधारित हो जिसमें आप अनुकूलित सामग्री साझा करते हैं। + + 3. आप अनुकूलित सामग्री पर किसी भी अतिरिक्त या भिन्न शर्तों या शर्तों की पेशकश या लागू नहीं कर सकते हैं, या उस एडेप्टर के लाइसेंस के तहत दिए गए अधिकारों के उपयोग को प्रतिबंधित करने के लिए कोई प्रभावी तकनीकी उपाय लागू नहीं कर सकते हैं। + +## अनुभाग 4 -- सूई जनरिस डेटाबेस अधिकार। + +जहाँ लाइसेंस प्राप्त अधिकारों में सूई जनरिस डेटाबेस अधिकार शामिल हैं जो आपके लाइसेंस प्राप्त सामग्री के उपयोग पर लागू होते हैं: + + a. संदेह से बचने के लिए, अनुभाग 2(a)(1) आपको डेटाबेस की सभी या एक महत्वपूर्ण मात्रा में सामग्री को निकालने, पुनः उपयोग करने, पुनरुत्पादित करने, और साझा करने का अधिकार प्रदान करता है; + + b. यदि आप डेटाबेस में सभी या एक महत्वपूर्ण मात्रा में डेटाबेस सामग्री को शामिल करते हैं जिसमें आपके पास सूई जनरिस डेटाबेस अधिकार हैं, तो वह डेटाबेस जिसमें आपके पास सूई जनरिस डेटाबेस अधिकार हैं (लेकिन इसकी व्यक्तिगत सामग्री नहीं) अनुकूलित सामग्री है, + + अनुभाग 3(b) के उद्देश्यों के लिए भी; और + c. यदि आप डेटाबेस की सभी या एक महत्वपूर्ण मात्रा में सामग्री साझा करते हैं, तो आपको अनुभाग 3(a) की शर्तों का पालन करना चाहिए। + +संदेह से बचने के लिए, यह अनुभाग 4 आपके लाइसेंस प्राप्त अधिकारों के तहत इस Public License के तहत आपकी प्रतिबद्धताओं को पूरक करता है जहाँ लाइसेंस प्राप्त अधिकारों में अन्य कॉपीराइट और समान अधिकार शामिल हैं। + +## अनुभाग 5 -- वारंटियों का अस्वीकरण और जिम्मेदारी की सीमा। + + a. जब तक लाइसेंसदाता द्वारा अन्यथा अलग से नहीं किया गया है, यथासंभव, लाइसेंसदाता लाइसेंस प्राप्त सामग्री को जैसे है और उपलब्ध के रूप में प्रदान करता है, और लाइसेंस प्राप्त सामग्री के संबंध में किसी भी प्रकार की कोई भी प्रतिनिधित्व या वारंटी नहीं देता है, चाहे वह स्पष्ट, निहित, वैधानिक, या अन्य। इसमें, बिना किसी सीमा के, शीर्षक, व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता, गैर-उल्लंघन, अंतर्निहित या अन्य दोषों की अनुपस्थिति, सटीकता, या ज्ञात या खोजी जाने योग्य त्रुटियों की उपस्थिति या अनुपस्थिति की वारंटी शामिल है। जहां वारंटियों के अस्वीकरण पूरी तरह से या आंशिक रूप से अनुमति नहीं है, यह अस्वीकरण आपके लिए लागू नहीं हो सकता है। + + b. यथासंभव, किसी भी कानूनी सिद्धांत (जिसमें, बिना किसी सीमा के, लापरवाही) के तहत या अन्यथा, लाइसेंसदाता आपके प्रति किसी भी प्रत्यक्ष, विशेष, अप्रत्यक्ष, आकस्मिक, परिणामी, दंड + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या असत्यताएँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/hi/lessons/sketchnotes/README.md b/translations/hi/lessons/sketchnotes/README.md new file mode 100644 index 00000000..be7661d5 --- /dev/null +++ b/translations/hi/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +# सभी पाठ्यक्रम के स्केच नोट्स यहाँ डाउनलोड किए जा सकते हैं। + +🎨 निर्मित द्वारा: तोमोमी इमुरा (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**अस्वीकृति**: +यह दस्तावेज़ मशीन-आधारित एआई अनुवाद सेवाओं का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या गलतियाँ हो सकती हैं। मूल दस्तावेज़ को उसकी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। हम इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए जिम्मेदार नहीं हैं। \ No newline at end of file diff --git a/translations/it/README.md b/translations/it/README.md new file mode 100644 index 00000000..65e21e8a --- /dev/null +++ b/translations/it/README.md @@ -0,0 +1,140 @@ +[![Licencia de GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![Contribuyentes de GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![Problemas de GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![Solicitudes de extracción de GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Bienvenidos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![Observadores de GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![Forks de GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![Estrellas de GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# Inteligencia Artificial para Principiantes - Un Currículo + +|![ Sketchnote por [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI Para Principiantes - _Sketchnote por [@girlie_mac](https://twitter.com/girlie_mac)_ | + +¡Explora el mundo de la **Inteligencia Artificial** (IA) con nuestro currículo de 12 semanas y 24 lecciones! Incluye lecciones prácticas, cuestionarios y laboratorios. El currículo está diseñado para principiantes y cubre herramientas como TensorFlow y PyTorch, así como la ética en la IA. + +## Lo que aprenderás + +**[Mapa mental del curso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +En este currículo, aprenderás: + +* Diferentes enfoques de la Inteligencia Artificial, incluido el "buen viejo" enfoque simbólico con **Representación del Conocimiento** y razonamiento ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Redes Neuronales** y **Aprendizaje Profundo**, que son fundamentales en la IA moderna. Ilustraremos los conceptos detrás de estos temas importantes utilizando código en dos de los frameworks más populares: [TensorFlow](http://Tensorflow.org) y [PyTorch](http://pytorch.org). +* **Arquitecturas Neuronales** para trabajar con imágenes y texto. Cubriremos modelos recientes, aunque puede que no estemos al día con lo último en tecnología. +* Enfoques de IA menos populares, como **Algoritmos Genéticos** y **Sistemas Multi-Agente**. + +Lo que no cubriremos en este currículo: + +> [Encuentra todos los recursos adicionales para este curso en nuestra colección de Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Casos de negocio sobre el uso de **IA en los Negocios**. Considera seguir la ruta de aprendizaje [Introducción a la IA para usuarios de negocios](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) en Microsoft Learn, o [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), desarrollada en cooperación con [INSEAD](https://www.insead.edu/). +* **Aprendizaje Automático Clásico**, que está bien descrito en nuestro [Currículo de Aprendizaje Automático para Principiantes](http://github.com/Microsoft/ML-for-Beginners). +* Aplicaciones prácticas de IA construidas usando **[Servicios Cognitivos](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para esto, te recomendamos que comiences con los módulos de Microsoft Learn para [visión](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [procesamiento de lenguaje natural](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[IA Generativa con el Servicio Azure OpenAI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** y otros. +* Frameworks de ML **en la Nube** específicos, como [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) o [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Considera utilizar las rutas de aprendizaje de [Construir y operar soluciones de aprendizaje automático con Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) y [Construir y operar soluciones de aprendizaje automático con Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **IA Conversacional** y **Bots de Chat**. Hay una ruta de aprendizaje separada llamada [Crear soluciones de IA conversacional](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), y también puedes consultar [esta publicación de blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para más detalles. +* **Matemáticas Avanzadas** detrás del aprendizaje profundo. Para esto, recomendamos [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) de Ian Goodfellow, Yoshua Bengio y Aaron Courville, que también está disponible en línea en [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Para una introducción suave a los temas de _IA en la Nube_, puedes considerar tomar la ruta de aprendizaje [Introducción a la inteligencia artificial en Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# Contenido + +| | Enlace de la Lección | PyTorch/Keras/TensorFlow | Lab | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Configuración del Curso](./lessons/0-course-setup/setup.md) | [Configura tu Entorno de Desarrollo](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Introducción a la IA**](./lessons/1-Intro/README.md) | | | +| 01 | [Introducción e Historia de la IA](./lessons/1-Intro/README.md) | - | - | +| II | **IA Simbólica** | +| 02 | [Representación del Conocimiento y Sistemas Expertos](./lessons/2-Symbolic/README.md) | [Sistemas Expertos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontología](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Gráfico de Conceptos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Introducción a las Redes Neuronales**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptrón](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Cuaderno](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Lab](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Perceptrón Multicapa y Creando nuestro propio Framework](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Cuaderno](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Lab](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Introducción a Frameworks (PyTorch/TensorFlow) y Sobreajuste](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Computer Vision**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Explore Computer Vision on Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Introduction to Computer Vision. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Lab](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Convolutional Neural Networks](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN Architectures](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Lab](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Pre-trained Networks and Transfer Learning](./lessons/4-ComputerVision/08-TransferLearning/README.md) and [Training Tricks](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Autoencoders and VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [Generative Adversarial Networks & Artistic Style Transfer](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Object Detection](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Lab](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Semantic Segmentation. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | +| V | [**Procesamiento de Lenguaje Natural**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Explora el Procesamiento de Lenguaje Natural en Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Representación de Texto. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [Incrustaciones semánticas de palabras. Word2Vec y GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Modelado del Lenguaje. Entrenando tus propias incrustaciones](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Laboratorio](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Redes Neuronales Recurrentes](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [Redes Generativas Recurrentes](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Laboratorio](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformadores. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [Reconocimiento de Entidades Nombradas](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratorio](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Modelos de Lenguaje Grandes, Programación de Prompts y Tareas de Pocos Ejemplos](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Otras Técnicas de IA** || | +| 21 | [Algoritmos Genéticos](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Aprendizaje Profundo por Refuerzo](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Laboratorio](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Sistemas Multi-Agente](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Ética en IA** | | | +| 24 | [Ética en IA y IA Responsable](./lessons/7-Ethics/README.md) | [Microsoft Learn: Principios de IA Responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Extras** | | | +| 25 | [Redes Multi-Modal, CLIP y VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## Cada lección contiene + +* Material de lectura previa +* Notebooks Jupyter ejecutables, que a menudo son específicos para el marco (**PyTorch** o **TensorFlow**). El notebook ejecutable también contiene mucho material teórico, por lo que para entender el tema necesitas revisar al menos una versión del notebook (ya sea de PyTorch o TensorFlow). +* **Laboratorios** disponibles para algunos temas, que te brindan la oportunidad de aplicar el material que has aprendido a un problema específico. +* Algunas secciones contienen enlaces a módulos de [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) que abordan temas relacionados. + +## Empezando + +- Hemos creado una [lección de configuración](./lessons/0-course-setup/setup.md) para ayudarte a configurar tu entorno de desarrollo. - Para Educadores, también hemos creado una [lección de configuración curricular](./lessons/0-course-setup/for-teachers.md) para ti. +- Cómo [Ejecutar el código en un VSCode o un Codepace](./lessons/0-course-setup/how-to-run.md) + +Sigue estos pasos: + +Fork el Repositorio: Haz clic en el botón "Fork" en la esquina superior derecha de esta página. + +Clona el Repositorio: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +No olvides dar una estrella (🌟) a este repositorio para encontrarlo más fácilmente más tarde. + +## Conoce a otros Aprendices + +Únete a nuestro [servidor oficial de Discord de IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) para conocer y conectar con otros aprendices que están tomando este curso y obtener apoyo. + +## Cuestionarios + +> **Una nota sobre los cuestionarios**: Todos los cuestionarios se encuentran en la carpeta Quiz-app en etc\quiz-app, están vinculados desde dentro de las lecciones; la aplicación de cuestionarios se puede ejecutar localmente o desplegar en Azure; sigue las instrucciones en la carpeta `quiz-app`. Están siendo localizados gradualmente. + +## Se Busca Ayuda + +¿Tienes sugerencias o has encontrado errores de ortografía o de código? Abre un problema o crea una solicitud de extracción. + +## Agradecimientos Especiales + +* **✍️ Autor Principal:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustrador de Sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Creador de Cuestionarios:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Contribuidores Principales:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Otros Currículos + +¡Nuestro equipo produce otros currículos! Echa un vistazo a: + +* [Ciencia de Datos para Principiantes](https://aka.ms/ds4beginners) +* [**Versión 2.0** IA Generativa para Principiantes](https://aka.ms/genai-beginners) +* [**NUEVO** Ciberseguridad para Principiantes](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [Desarrollo Web para Principiantes](https://aka.ms/webdev-beginners) +* [IoT para Principiantes](https://aka.ms/iot-beginners) +* [Aprendizaje Automático para Principiantes](https://aka.ms/ml4beginners) +* [Desarrollo XR para Principiantes](https://aka.ms/xr-dev-for-beginners) +* [Dominando GitHub Copilot para Programación Emparejada en IA](https://aka.ms/GitHubCopilotAI) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/SECURITY.md b/translations/it/SECURITY.md new file mode 100644 index 00000000..98a511fe --- /dev/null +++ b/translations/it/SECURITY.md @@ -0,0 +1,40 @@ +## Seguridad + +Microsoft toma muy en serio la seguridad de nuestros productos y servicios de software, lo que incluye todos los repositorios de código fuente gestionados a través de nuestras organizaciones en GitHub, que incluyen [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) y [nuestras organizaciones de GitHub](https://opensource.microsoft.com/). + +Si crees que has encontrado una vulnerabilidad de seguridad en algún repositorio de Microsoft que cumpla con [la definición de vulnerabilidad de seguridad de Microsoft](https://aka.ms/opensource/security/definition), por favor repórtala como se describe a continuación. + +## Reportando Problemas de Seguridad + +**Por favor, no reportes vulnerabilidades de seguridad a través de problemas públicos de GitHub.** + +En su lugar, repórtalas al Centro de Respuesta de Seguridad de Microsoft (MSRC) en [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Si prefieres enviar tu informe sin iniciar sesión, envía un correo electrónico a [secure@microsoft.com](mailto:secure@microsoft.com). Si es posible, cifra tu mensaje con nuestra clave PGP; por favor descárgala desde la [página de Clave PGP del Centro de Respuesta de Seguridad de Microsoft](https://aka.ms/opensource/security/pgpkey). + +Deberías recibir una respuesta dentro de las 24 horas. Si por alguna razón no lo haces, por favor sigue el hilo por correo electrónico para asegurarte de que recibimos tu mensaje original. Puedes encontrar información adicional en [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Por favor incluye la información solicitada que se detalla a continuación (tanto como puedas proporcionar) para ayudarnos a comprender mejor la naturaleza y el alcance del posible problema: + + * Tipo de problema (por ejemplo, desbordamiento de búfer, inyección SQL, scripting entre sitios, etc.) + * Rutas completas de los archivos de origen relacionados con la manifestación del problema + * La ubicación del código fuente afectado (etiqueta/rama/commit o URL directa) + * Cualquier configuración especial requerida para reproducir el problema + * Instrucciones paso a paso para reproducir el problema + * Código de prueba de concepto o de explotación (si es posible) + * Impacto del problema, incluyendo cómo un atacante podría explotarlo + +Esta información nos ayudará a clasificar tu informe más rápidamente. + +Si estás reportando para un programa de recompensas por errores, informes más completos pueden contribuir a una mayor recompensa. Por favor visita nuestra página del [Programa de Recompensas por Errores de Microsoft](https://aka.ms/opensource/security/bounty) para más detalles sobre nuestros programas activos. + +## Idiomas Preferidos + +Preferimos que todas las comunicaciones sean en inglés. + +## Política + +Microsoft sigue el principio de [Divulgación Coordinada de Vulnerabilidades](https://aka.ms/opensource/security/cvd). + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/etc/CODE_OF_CONDUCT.md b/translations/it/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..388ff6d0 --- /dev/null +++ b/translations/it/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Código de Conducta de Microsoft para Proyectos de Código Abierto + +Este proyecto ha adoptado el [Código de Conducta de Microsoft para Proyectos de Código Abierto](https://opensource.microsoft.com/codeofconduct/). + +Recursos: + +- [Código de Conducta de Microsoft para Proyectos de Código Abierto](https://opensource.microsoft.com/codeofconduct/) +- [Preguntas Frecuentes sobre el Código de Conducta de Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Contacta a [opencode@microsoft.com](mailto:opencode@microsoft.com) si tienes preguntas o inquietudes. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/etc/CONTRIBUTING.md b/translations/it/etc/CONTRIBUTING.md new file mode 100644 index 00000000..624215f5 --- /dev/null +++ b/translations/it/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# Contribuindo + +Este projeto acolhe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Acordo de Licença de Contribuidor (CLA) declarando que você tem o direito de, e realmente faz, nos conceder os direitos de usar sua contribuição. Para mais detalhes, visite https://cla.microsoft.com. + +Quando você enviar um pull request, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorará o PR de forma apropriada (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que utilizam nosso CLA. + +Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). Para mais informações, consulte as [Perguntas Frequentes sobre o Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/) ou entre em contato com [opencode@microsoft.com](mailto:opencode@microsoft.com) para quaisquer perguntas ou comentários adicionais. + +# Procurando Contribuições + +Atualmente, estamos buscando ativamente contribuições nos seguintes tópicos: + +- [ ] Escrever seção sobre Aprendizado por Reforço Profundo +- [ ] Melhorar seção + notebook sobre Detecção de Objetos +- [ ] PyTorch Lightning (para [esta seção](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Escrever seção + exemplos sobre Reconhecimento de Entidades Nomeadas +- [ ] Criar exemplos para treinar nossas próprias incorporações para [esta seção](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/etc/Mindmap.md b/translations/it/etc/Mindmap.md new file mode 100644 index 00000000..f92ccc24 --- /dev/null +++ b/translations/it/etc/Mindmap.md @@ -0,0 +1,76 @@ +# IA + +## [Introducción a la IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definición de IA + - Historia de la IA + - Enfoques de la IA + - De arriba hacia abajo/Simbólico + - De abajo hacia arriba/Neuronal + - Evolutivo + - Sinérgico / IA Emergente + - [Escuela de Negocios de IA de Microsoft](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [IA Simbólica](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Representación del Conocimiento + - [Sistemas Expertos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontologías](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Web Semántica + +## [Redes Neuronales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [Perceptrón](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [Redes Multicapa](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Introducción a Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [Sobreajuste](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Visión por Computadora](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - En MS Learn + - [Fundamentos de IA: Explorar Visión por Computadora](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Visión por Computadora con PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Visión por Computadora con TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Introducción a CV. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Redes Convolucionales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Arquitecturas de CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Aprendizaje por Transferencia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Trucos de Entrenamiento](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencoders y VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Redes Generativas Antagónicas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Transferencia de Estilo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Detección de Objetos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentación](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Procesamiento de Lenguaje Natural](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - En MS Learn + - [Fundamentos de IA: Explorar PLN](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PLN con PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [PLN con TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [Text Representation](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bolsa de Palabras + - TF/IDF + - [Semantic Embeddings](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modelado del Lenguaje](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Redes Neuronales Recurrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Redes Generativas Recurrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers y BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Reconocimiento de Entidades Nombradas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Generación de Texto y GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## Otras Técnicas + - [Algoritmos Genéticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Aprendizaje Profundo por Refuerzo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Sistemas Multi-Agente](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Ética en IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn sobre IA Responsable](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## Extras + - [Redes Multimodales](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/etc/SUPPORT.md b/translations/it/etc/SUPPORT.md new file mode 100644 index 00000000..6a19fa66 --- /dev/null +++ b/translations/it/etc/SUPPORT.md @@ -0,0 +1,14 @@ +# Support + +## How to file issues and get help + +This project utilizes GitHub Issues to monitor bugs and feature requests. Please check the existing issues before submitting new ones to prevent duplicates. For new issues, please report your bug or feature request as a new Issue. + +For assistance and inquiries regarding the use of this project, kindly refer to the Discussion Boards. + +## Microsoft Support Policy + +Support for this project is restricted to the resources mentioned above. + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/etc/TRANSLATIONS.md b/translations/it/etc/TRANSLATIONS.md new file mode 100644 index 00000000..4ea26614 --- /dev/null +++ b/translations/it/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# Contribuye traduciendo lecciones + +¡Damos la bienvenida a las traducciones de las lecciones en este currículo! + +## Directrices + +Hay carpetas en cada carpeta de lección y en la carpeta de introducción de lección que contienen los archivos markdown traducidos. + +> Nota: por favor, no traduzcas ningún código en los archivos de muestra de código; lo único que se debe traducir son README, tareas y cuestionarios. ¡Gracias! + +Los archivos traducidos deben seguir esta convención de nombres: + +**README._[language]_.md** + +donde _[language]_ es una abreviatura de dos letras del idioma que sigue el estándar ISO 639-1 (por ejemplo, `README.es.md` para español y `README.nl.md` para neerlandés). + +**assignment._[language]_.md** + +Al igual que los README, por favor traduce también las tareas. + +**Cuestionarios** + +1. Agrega tu traducción al quiz-app añadiendo un archivo aquí: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, con la convención de nombres adecuada (en.json, fr.json). **Sin embargo, por favor no localices las palabras 'true' o 'false'. ¡Gracias!** + +2. Agrega el código de tu idioma al menú desplegable en el archivo App.vue del quiz-app. + +3. Edita el [archivo index.js de traducciones del quiz-app](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) para añadir tu idioma. + +4. Finalmente, edita TODOS los enlaces de los cuestionarios en tus archivos README.md traducidos para que apunten directamente a tu cuestionario traducido: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 se convierte en https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**¡GRACIAS!** + +¡Apreciamos sinceramente tus esfuerzos! + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/etc/quiz-app/README.md b/translations/it/etc/quiz-app/README.md new file mode 100644 index 00000000..f520aa14 --- /dev/null +++ b/translations/it/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# Quizzes + +Estos cuestionarios son los cuestionarios de antes y después de la conferencia para el currículo de IA en https://aka.ms/ai-beginners + +## Agregar un conjunto de cuestionarios traducidos + +Agrega una traducción de cuestionario creando estructuras de cuestionario coincidentes en las carpetas `assets/translations`. Los cuestionarios canónicos están en `assets/translations/en`. Los cuestionarios están divididos en varios grupos por lección. Asegúrate de alinear la numeración con la sección de cuestionario correspondiente. Hay un total de 40 cuestionarios en este currículo, comenzando desde 0. + +Después de editar las traducciones, edita el archivo index.js en la carpeta de traducción para importar todos los archivos siguiendo las convenciones en `en`. + +Edita el archivo `index.js` en `assets/translations` para importar los nuevos archivos traducidos. + +Luego, edita el menú desplegable en `App.vue` en esta aplicación para agregar tu idioma. Asegúrate de que la abreviatura localizada coincida con el nombre de la carpeta de tu idioma. + +Finalmente, edita todos los enlaces de cuestionarios en las lecciones traducidas, si existen, para incluir esta localización como un parámetro de consulta: `?loc=fr` por ejemplo. + +## Configuración del proyecto + +``` +npm install +``` + +### Compila y recarga en caliente para desarrollo + +``` +npm run serve +``` + +### Compila y minimiza para producción + +``` +npm run build +``` + +### Lint y corrige archivos + +``` +npm run lint +``` + +### Personaliza la configuración + +Consulta la [Referencia de Configuración](https://cli.vuejs.org/config/). + +Créditos: Gracias a la versión original de esta aplicación de cuestionarios: https://github.com/arpan45/simple-quiz-vue + +## Despliegue en Azure + +Aquí tienes una guía paso a paso para ayudarte a comenzar: + +1. Haz un fork de un repositorio de GitHub +Asegúrate de que el código de tu aplicación web estática esté en tu repositorio de GitHub. Haz un fork de este repositorio. + +2. Crea una Aplicación Web Estática en Azure +- Crea una [cuenta de Azure](http://azure.microsoft.com) +- Ve al [portal de Azure](https://portal.azure.com) +- Haz clic en "Crear un recurso" y busca "Aplicación Web Estática". +- Haz clic en "Crear". + +3. Configura la Aplicación Web Estática +- Básicos: Suscripción: Selecciona tu suscripción de Azure. +- Grupo de Recursos: Crea un nuevo grupo de recursos o utiliza uno existente. +- Nombre: Proporciona un nombre para tu aplicación web estática. +- Región: Elige la región más cercana a tus usuarios. + +- #### Detalles del Despliegue: +- Origen: Selecciona "GitHub". +- Cuenta de GitHub: Autoriza a Azure a acceder a tu cuenta de GitHub. +- Organización: Selecciona tu organización de GitHub. +- Repositorio: Elige el repositorio que contiene tu aplicación web estática. +- Rama: Selecciona la rama desde la cual deseas desplegar. + +- #### Detalles de Construcción: +- Presets de Construcción: Elige el marco con el que está construida tu aplicación (por ejemplo, React, Angular, Vue, etc.). +- Ubicación de la Aplicación: Especifica la carpeta que contiene el código de tu aplicación (por ejemplo, / si está en la raíz). +- Ubicación de la API: Si tienes una API, especifica su ubicación (opcional). +- Ubicación de Salida: Especifica la carpeta donde se genera la salida de la construcción (por ejemplo, build o dist). + +4. Revisa y Crea +Revisa tu configuración y haz clic en "Crear". Azure configurará los recursos necesarios y creará un flujo de trabajo de GitHub Actions en tu repositorio. + +5. Flujo de Trabajo de GitHub Actions +Azure creará automáticamente un archivo de flujo de trabajo de GitHub Actions en tu repositorio (.github/workflows/azure-static-web-apps-.yml). Este flujo de trabajo manejará el proceso de construcción y despliegue. + +6. Monitorea el Despliegue +Ve a la pestaña "Acciones" en tu repositorio de GitHub. +Deberías ver un flujo de trabajo en ejecución. Este flujo de trabajo construirá y desplegará tu aplicación web estática en Azure. +Una vez que el flujo de trabajo se complete, tu aplicación estará activa en la URL de Azure proporcionada. + +### Ejemplo de Archivo de Flujo de Trabajo + +Aquí tienes un ejemplo de cómo podría verse el archivo de flujo de trabajo de GitHub Actions: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### Recursos Adicionales +- [Documentación de Aplicaciones Web Estáticas de Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Documentación de GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/0-course-setup/for-teachers.md b/translations/it/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..3cec2338 --- /dev/null +++ b/translations/it/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# For Educators + +¿Te gustaría utilizar este currículo en tu aula? ¡No dudes en hacerlo! + +De hecho, puedes usarlo dentro de GitHub mismo utilizando GitHub Classroom. + +Para hacerlo, haz un fork de este repositorio. Necesitarás crear un repositorio para cada lección, así que tendrás que extraer cada carpeta en un repositorio separado. De esta manera, [GitHub Classroom](https://classroom.github.com/classrooms) podrá recoger cada lección por separado. + +Estas [instrucciones completas](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) te darán una idea de cómo configurar tu aula. + +## Usando el repositorio tal como está + +Si deseas utilizar este repositorio tal como está, sin usar GitHub Classroom, también se puede hacer. Tendrás que comunicarte con tus estudiantes sobre qué lección trabajar juntos. + +En un formato en línea (Zoom, Teams u otro), podrías formar salas de trabajo para los cuestionarios y guiar a los estudiantes para ayudarlos a prepararse para aprender. Luego, invita a los estudiantes a realizar los cuestionarios y enviar sus respuestas como 'issues' en un momento determinado. Podrías hacer lo mismo con las tareas, si deseas que los estudiantes trabajen colaborativamente en público. + +Si prefieres un formato más privado, pídele a tus estudiantes que hagan un fork del currículo, lección por lección, a sus propios repositorios de GitHub como repositorios privados y que te den acceso. Así podrán completar cuestionarios y tareas de forma privada y enviártelas a través de issues en tu repositorio de aula. + +Hay muchas maneras de hacer que esto funcione en un formato de aula en línea. ¡Por favor, háznos saber qué funciona mejor para ti! + +## Por favor, danos tus comentarios + +Queremos hacer que este currículo funcione para ti y tus estudiantes. ¡Por favor, danos tu opinión en los foros de discusión! + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/0-course-setup/how-to-run.md b/translations/it/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..4046f2dd --- /dev/null +++ b/translations/it/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# Cómo Ejecutar el Código + +Este currículo contiene muchos ejemplos ejecutables y laboratorios que querrás ejecutar. Para hacer esto, necesitas la capacidad de ejecutar código Python en Jupyter Notebooks que se proporcionan como parte de este currículo. Tienes varias opciones para ejecutar el código: + +## Ejecutar localmente en tu computadora + +Para ejecutar el código localmente en tu computadora, necesitarás tener instalada alguna versión de Python. Personalmente, recomiendo instalar **[miniconda](https://conda.io/en/latest/miniconda.html)**, ya que es una instalación bastante ligera que soporta el administrador de paquetes `conda` para diferentes **entornos virtuales** de Python. + +Después de instalar miniconda, necesitarás clonar el repositorio y crear un entorno virtual que se utilizará para este curso: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Usando Visual Studio Code con la Extensión de Python + +Probablemente la mejor manera de utilizar el currículo es abrirlo en [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) con la [Extensión de Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Nota**: Una vez que clones y abras el directorio en VS Code, te sugerirá automáticamente que instales las extensiones de Python. También tendrás que instalar miniconda como se describió anteriormente. + +> **Nota**: Si VS Code te sugiere reabrir el repositorio en un contenedor, debes rechazar esto para usar la instalación local de Python. + +### Usando Jupyter en el Navegador + +También puedes utilizar el entorno Jupyter directamente desde el navegador en tu propia computadora. De hecho, tanto Jupyter clásico como Jupyter Hub ofrecen un entorno de desarrollo bastante conveniente con autocompletado, resaltado de código, etc. + +Para iniciar Jupyter localmente, ve al directorio del curso y ejecuta: + +```bash +jupyter notebook +``` +o +```bash +jupyterhub +``` +Luego podrás navegar a cualquiera de las carpetas `.ipynb` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` que indican cómo construir un contenedor para este repositorio; VS Code te ofrecerá reabrir el código en el contenedor. Esto requerirá la instalación de Docker y será más complejo, por lo que lo recomendamos para usuarios más experimentados. + +## Ejecución en la Nube + +Si no deseas instalar Python localmente y tienes acceso a algunos recursos en la nube, una buena alternativa sería ejecutar el código en la nube. Hay varias maneras de hacerlo: + +* Usando **[GitHub Codespaces](https://github.com/features/codespaces)**, que es un entorno virtual creado para ti en GitHub, accesible a través de la interfaz del navegador de VS Code. Si tienes acceso a Codespaces, solo tienes que hacer clic en el botón **Code** en el repositorio, iniciar un codespace y comenzar a trabajar en poco tiempo. +* Usando **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) es un recurso de computación gratuito proporcionado en la nube para personas como tú que desean probar algún código en GitHub. Hay un botón en la página principal para abrir el repositorio en Binder; esto debería llevarte rápidamente al sitio de binder, que construirá el contenedor subyacente y comenzará la interfaz web de Jupyter para ti sin problemas. + +> **Nota**: Para prevenir el uso indebido, Binder tiene bloqueado el acceso a algunos recursos web. Esto puede impedir que parte del código funcione, especialmente si intenta obtener modelos y/o conjuntos de datos de Internet público. Puede que necesites encontrar algunas soluciones alternativas. Además, los recursos de computación proporcionados por Binder son bastante básicos, por lo que el entrenamiento será lento, especialmente en lecciones más complejas más adelante. + +## Ejecución en la Nube con GPU + +Algunas de las lecciones posteriores en este currículo se beneficiarán enormemente del soporte de GPU, ya que de lo contrario el entrenamiento será dolorosamente lento. Hay algunas opciones que puedes seguir, especialmente si tienes acceso a la nube ya sea a través de [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) o a través de tu institución: + +* Crea una [Máquina Virtual de Ciencia de Datos](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) y conéctate a ella a través de Jupyter. Luego puedes clonar el repositorio directamente en la máquina y comenzar a aprender. Las máquinas virtuales de la serie NC tienen soporte para GPU. + +> **Nota**: Algunas suscripciones, incluyendo Azure for Students, no proporcionan soporte de GPU de manera predeterminada. Puede que necesites solicitar núcleos de GPU adicionales a través de una solicitud de soporte técnico. + +* Crea un [Espacio de Trabajo de Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) y luego utiliza la función de Notebook allí. [Este video](https://azure-for-academics.github.io/quickstart/azureml-papers/) muestra cómo clonar un repositorio en un notebook de Azure ML y comenzar a utilizarlo. + +También puedes usar Google Colab, que viene con algo de soporte gratuito para GPU, y subir Jupyter Notebooks allí para ejecutarlos uno por uno. + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autoritativa. Para información crítica, se recomienda la traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/0-course-setup/setup.md b/translations/it/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..daab54ca --- /dev/null +++ b/translations/it/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# Introduction à ce cursus + +## Êtes-vous un étudiant ? + +Commencez avec les ressources suivantes : + +* [Page du Hub étudiant](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Sur cette page, vous trouverez des ressources pour débutants, des packs étudiants et même des moyens d'obtenir un bon de certification gratuit. C'est une page que vous voudrez mettre en favoris et consulter de temps en temps, car nous mettons à jour le contenu au moins une fois par mois. +* [Ambassadeurs Microsoft Student Learn](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Rejoignez une communauté mondiale d'ambassadeurs étudiants, cela pourrait être votre porte d'entrée vers Microsoft. + +**Étudiants**, il existe plusieurs façons d'utiliser le cursus. Tout d'abord, vous pouvez simplement lire le texte et consulter le code directement sur GitHub. Si vous souhaitez exécuter le code dans l'un des notebooks - [lisez nos instructions](./etc/how-to-run.md), et trouvez plus de conseils sur la façon de le faire [dans cet article de blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Remarque** : [Instructions sur la façon d'exécuter le code de ce cursus](/how-to-run.md) + +## Auto-apprentissage + +Cependant, si vous souhaitez suivre le cours en tant que projet d'auto-apprentissage, nous vous suggérons de forker l'ensemble du dépôt sur votre propre compte GitHub et de compléter les exercices par vous-même ou en groupe : + +* Commencez par un quiz pré-conférence. +* Lisez le texte d'introduction de la conférence. +* Si la conférence comprend des notebooks supplémentaires, parcourez-les, lisez et exécutez le code. Si des notebooks TensorFlow et PyTorch sont fournis, vous pouvez vous concentrer sur l'un d'eux - choisissez votre framework préféré. +* Les notebooks contiennent souvent certains défis qui vous obligent à ajuster le code un peu pour expérimenter. +* Réalisez le quiz post-conférence. +* S'il y a un laboratoire associé au module - complétez l'affectation. +* Visitez le [Forum de discussion](https://github.com/microsoft/AI-For-Beginners/discussions) pour "apprendre à haute voix". + +> Pour un apprentissage supplémentaire, nous recommandons de suivre ces modules et parcours d'apprentissage [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). + +**Enseignants**, nous avons [inclus quelques suggestions](/for-teachers.md) sur la façon d'utiliser ce cursus. + +--- + +## Pédagogie + +Nous avons choisi deux principes pédagogiques lors de la construction de ce cursus : garantir qu'il soit pratique **basé sur des projets** et qu'il inclut des **quiz fréquents**. + +En veillant à ce que le contenu soit aligné sur des projets, le processus devient plus engageant pour les étudiants et la rétention des concepts sera renforcée. De plus, un quiz à faible enjeu avant un cours fixe l'intention de l'étudiant envers l'apprentissage d'un sujet, tandis qu'un second quiz après le cours assure une rétention supplémentaire. Ce cursus a été conçu pour être flexible et amusant et peut être suivi dans son intégralité ou en partie. Les projets commencent petits et deviennent de plus en plus complexes à la fin du cycle de 12 semaines. + +> **Une note sur les quiz** : Tous les quiz sont contenus [dans cette application](https://red-field-0a6ddfd03.1.azurestaticapps.net/), pour un total de 50 quiz de trois questions chacun. Ils sont liés depuis les leçons, mais l'application de quiz peut être exécutée localement ; suivez les instructions dans le dossier `etc/quiz-app`. + +## Accès hors ligne + +Vous pouvez exécuter cette documentation hors ligne en utilisant [Docsify](https://docsify.js.org/#/). Forkez ce dépôt, [installez Docsify](https://docsify.js.org/#/quickstart) sur votre machine locale, puis dans le dossier `etc/docsify` de ce dépôt, tapez `docsify serve`. Le site sera servi sur le port 3000 sur votre localhost : `localhost:3000`. Un PDF du cursus est disponible [à ce lien](../../../../../../etc/pdf/readme.pdf). + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/1-Intro/README.md b/translations/it/lessons/1-Intro/README.md new file mode 100644 index 00000000..bbe35a9e --- /dev/null +++ b/translations/it/lessons/1-Intro/README.md @@ -0,0 +1,38 @@ +> Image by Dmitry Soshnikov, [photo](https://unsplash.com/photos/r8LmVbUKgns) by [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Recente Ricerca sull'IA + +La recente crescita esponenziale nella ricerca sulle reti neurali è iniziata attorno al 2010, quando sono diventati disponibili grandi dataset pubblici. Una vasta collezione di immagini chiamata [ImageNet](https://en.wikipedia.org/wiki/ImageNet), che contiene circa 14 milioni di immagini annotate, ha dato origine alla [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![Accuratezza ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Image by [Dmitry Soshnikov](http://soshnikov.com) +En 2012, se utilizaron por primera vez las [Redes Neuronales Convolucionales](../4-ComputerVision/07-ConvNets/README.md) en la clasificación de imágenes, lo que provocó una disminución significativa en los errores de clasificación (de casi el 30% al 16.4%). En 2015, la arquitectura ResNet de Microsoft Research [alcanzó una precisión a nivel humano](https://doi.org/10.1109/ICCV.2015.123). + +Desde entonces, las Redes Neuronales han demostrado un comportamiento muy exitoso en muchas tareas: + +--- + +Año | Paridad Humana alcanzada +-----|-------- +2015 | [Clasificación de Imágenes](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Reconocimiento de Voz Conversacional](https://arxiv.org/abs/1610.05256) +2018 | [Traducción Automática de Máquinas](https://arxiv.org/abs/1803.05567) (chino a inglés) +2020 | [Generación de Descripciones de Imágenes](https://arxiv.org/abs/2009.13682) + +En los últimos años, hemos sido testigos de grandes éxitos con modelos de lenguaje de gran tamaño, como BERT y GPT-3. Esto ocurrió principalmente debido a la disponibilidad de una gran cantidad de datos textuales generales que nos permiten entrenar modelos para captar la estructura y el significado de los textos, preentrenarlos en colecciones de texto generales y luego especializar esos modelos para tareas más específicas. Aprenderemos más sobre [Procesamiento del Lenguaje Natural](../5-NLP/README.md) más adelante en este curso. + +## 🚀 Desafío + +Haz un recorrido por internet para determinar dónde, en tu opinión, se utiliza la IA de manera más efectiva. ¿Es en una aplicación de mapas, en algún servicio de conversión de voz a texto o en un videojuego? Investiga cómo se construyó el sistema. + +## [Cuestionario post-clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Revisión y Autoestudio + +Revisa la historia de la IA y el ML leyendo [esta lección](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Toma un elemento del sketchnote en la parte superior de esa lección o de esta y investígalo en mayor profundidad para entender el contexto cultural que informa su evolución. + +**Tarea**: [Game Jam](assignment.md) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/1-Intro/assignment.md b/translations/it/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..e82fc880 --- /dev/null +++ b/translations/it/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# Game Jam + +Los juegos son un área que ha sido fuertemente influenciada por los desarrollos en IA y ML. En esta tarea, escribe un breve artículo sobre un juego que te guste y que haya sido influenciado por la evolución de la IA. Debe ser un juego lo suficientemente antiguo como para haber sido impactado por varios tipos de sistemas de procesamiento computacional. Un buen ejemplo es el ajedrez o el go, pero también echa un vistazo a videojuegos como pong o Pac-Man. Escribe un ensayo que discuta el pasado, presente y futuro de la IA en el juego. + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/2-Symbolic/README.md b/translations/it/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..85bc8b9e --- /dev/null +++ b/translations/it/lessons/2-Symbolic/README.md @@ -0,0 +1,205 @@ +# Représentation des connaissances et systèmes experts + +![Résumé du contenu de l'IA symbolique](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.it.png) + +> Schéma par [Tomomi Imura](https://twitter.com/girlie_mac) + +La quête de l'intelligence artificielle repose sur la recherche de connaissances, pour donner un sens au monde de manière similaire à celle des humains. Mais comment procéder ? + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +Au début de l'IA, l'approche descendante pour créer des systèmes intelligents (discutée dans la leçon précédente) était populaire. L'idée était d'extraire les connaissances des personnes dans une forme lisible par machine, puis de les utiliser pour résoudre automatiquement des problèmes. Cette approche reposait sur deux grandes idées : + +* Représentation des connaissances +* Raisonnement + +## Représentation des connaissances + +L'un des concepts importants de l'IA symbolique est la **connaissance**. Il est essentiel de différencier la connaissance de *l'information* ou *des données*. Par exemple, on peut dire que les livres contiennent des connaissances, car on peut les étudier et devenir un expert. Cependant, ce que contiennent les livres est en réalité appelé *données*, et en lisant ces livres et en intégrant ces données dans notre modèle du monde, nous convertissons ces données en connaissances. + +> ✅ **La connaissance** est quelque chose qui est contenu dans notre esprit et représente notre compréhension du monde. Elle est obtenue par un processus d'**apprentissage** actif, qui intègre des morceaux d'information que nous recevons dans notre modèle actif du monde. + +Le plus souvent, nous ne définissons pas strictement la connaissance, mais nous l'alignons avec d'autres concepts connexes en utilisant la [Pyramide DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Elle contient les concepts suivants : + +* **Données** : quelque chose représenté sur un support physique, tel qu'un texte écrit ou des mots prononcés. Les données existent indépendamment des êtres humains et peuvent être transmises entre les personnes. +* **Information** : c'est ainsi que nous interprétons les données dans notre esprit. Par exemple, lorsque nous entendons le mot *ordinateur*, nous avons une certaine compréhension de ce que c'est. +* **Connaissance** : c'est l'information intégrée dans notre modèle du monde. Par exemple, une fois que nous apprenons ce qu'est un ordinateur, nous commençons à avoir des idées sur son fonctionnement, son coût et ses utilisations possibles. Ce réseau de concepts interconnectés forme notre connaissance. +* **Sagesse** : c'est encore un niveau supplémentaire de notre compréhension du monde, et cela représente *la méta-connaissance*, c'est-à-dire une notion sur comment et quand la connaissance doit être utilisée. + + + +*Image [de Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), par Longlivetheux - Travail personnel, CC BY-SA 4.0* + +Ainsi, le problème de la **représentation des connaissances** est de trouver un moyen efficace de représenter les connaissances à l'intérieur d'un ordinateur sous forme de données, afin de les rendre automatiquement utilisables. Cela peut être vu comme un spectre : + +![Spectre de la représentation des connaissances](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.it.png) + +> Image par [Dmitry Soshnikov](http://soshnikov.com) + +* À gauche, il y a des types très simples de représentations des connaissances qui peuvent être efficacement utilisés par les ordinateurs. Le plus simple est algorithmique, lorsque la connaissance est représentée par un programme informatique. Cependant, ce n'est pas la meilleure façon de représenter la connaissance, car elle n'est pas flexible. La connaissance dans notre esprit est souvent non-algorithmique. +* À droite, il y a des représentations telles que le texte naturel. C'est la plus puissante, mais elle ne peut pas être utilisée pour le raisonnement automatique. + +> ✅ Pensez un instant à la façon dont vous représentez la connaissance dans votre esprit et la convertissez en notes. Existe-t-il un format particulier qui fonctionne bien pour vous afin d'aider à la rétention ? + +## Classification des représentations des connaissances informatiques + +Nous pouvons classer différentes méthodes de représentation des connaissances informatiques dans les catégories suivantes : + +* **Représentations en réseau** : basées sur le fait que nous avons un réseau de concepts interconnectés dans notre esprit. Nous pouvons essayer de reproduire ces mêmes réseaux sous forme de graphique à l'intérieur d'un ordinateur - un soi-disant **réseau sémantique**. + +1. **Triplets Objet-Attribut-Valeur** ou **paires attribut-valeur**. Étant donné qu'un graphique peut être représenté à l'intérieur d'un ordinateur sous forme de liste de nœuds et d'arêtes, nous pouvons représenter un réseau sémantique par une liste de triplets, contenant des objets, des attributs et des valeurs. Par exemple, nous construisons les triplets suivants sur les langages de programmation : + +Objet | Attribut | Valeur +-------|-----------|------ +Python | est | Langage-Non-Typé +Python | inventé-par | Guido van Rossum +Python | syntaxe-bloc | indentation +Langage-Non-Typé | n'a pas | définitions de type + +> ✅ Réfléchissez à la manière dont les triplets peuvent être utilisés pour représenter d'autres types de connaissances. + +2. **Représentations hiérarchiques** : mettent en avant le fait que nous créons souvent une hiérarchie d'objets dans notre esprit. Par exemple, nous savons que le canari est un oiseau, et que tous les oiseaux ont des ailes. Nous avons également une idée de la couleur qu'un canari a généralement et de sa vitesse de vol. + + - **Représentation par cadre** : basée sur la représentation de chaque objet ou classe d'objets sous forme de **cadre** qui contient des **emplacements**. Les emplacements ont des valeurs par défaut possibles, des restrictions de valeur ou des procédures stockées qui peuvent être appelées pour obtenir la valeur d'un emplacement. Tous les cadres forment une hiérarchie similaire à une hiérarchie d'objets dans les langages de programmation orientés objet. + - **Scénarios** : sont une sorte spéciale de cadres qui représentent des situations complexes pouvant se dérouler dans le temps. + +**Python** + +Emplacement | Valeur | Valeur par défaut | Intervalle | +-----|-------|---------------|----------| +Nom | Python | | | +Est-Un | Langage-Non-Typé | | | +Cas de Variable | | CamelCase | | +Longueur du Programme | | | 5-5000 lignes | +Syntaxe de Bloc | Indentation | | | + +3. **Représentations procédurales** : basées sur la représentation de la connaissance par une liste d'actions pouvant être exécutées lorsqu'une certaine condition se produit. + - Les règles de production sont des déclarations si-alors qui nous permettent de tirer des conclusions. Par exemple, un médecin peut avoir une règle disant que **SI** un patient a une forte fièvre **OU** un taux élevé de protéine C-réactive dans un test sanguin **ALORS** il a une inflammation. Une fois que nous rencontrons l'une des conditions, nous pouvons tirer une conclusion sur l'inflammation, puis l'utiliser dans un raisonnement ultérieur. + - Les algorithmes peuvent être considérés comme une autre forme de représentation procédurale, bien qu'ils ne soient presque jamais utilisés directement dans les systèmes basés sur la connaissance. + +4. **Logique** : a été initialement proposée par Aristote comme un moyen de représenter la connaissance humaine universelle. + - La logique des prédicats, en tant que théorie mathématique, est trop riche pour être calculable, donc un sous-ensemble est normalement utilisé, comme les clauses Horn utilisées dans Prolog. + - La logique descriptive est une famille de systèmes logiques utilisés pour représenter et raisonner sur des hiérarchies d'objets et des représentations de connaissances distribuées telles que le *web sémantique*. + +## Systèmes experts + +L'un des premiers succès de l'IA symbolique a été les soi-disant **systèmes experts** - des systèmes informatiques conçus pour agir en tant qu'expert dans un domaine de problème limité. Ils étaient basés sur une **base de connaissances** extraite d'un ou plusieurs experts humains, et contenaient un **moteur d'inférence** qui effectuait un raisonnement sur cette base. + +![Architecture humaine](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.it.png) | ![Système basé sur la connaissance](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.it.png) +---------------------------------------------|------------------------------------------------ +Structure simplifiée d'un système nerveux humain | Architecture d'un système basé sur la connaissance + +Les systèmes experts sont construits comme le système de raisonnement humain, qui contient de la **mémoire à court terme** et de la **mémoire à long terme**. De même, dans les systèmes basés sur la connaissance, nous distinguons les composants suivants : + +* **Mémoire de problème** : contient les connaissances sur le problème actuellement résolu, c'est-à-dire la température ou la pression artérielle d'un patient, s'il a une inflammation ou non, etc. Cette connaissance est également appelée **connaissance statique**, car elle contient un instantané de ce que nous savons actuellement sur le problème - l'état du *problème*. +* **Base de connaissances** : représente la connaissance à long terme sur un domaine de problème. Elle est extraite manuellement d'experts humains et ne change pas d'une consultation à l'autre. Parce qu'elle nous permet de naviguer d'un état de problème à un autre, elle est également appelée **connaissance dynamique**. +* **Moteur d'inférence** : orchestre tout le processus de recherche dans l'espace des états de problème, posant des questions à l'utilisateur lorsque cela est nécessaire. Il est également responsable de la recherche des bonnes règles à appliquer à chaque état. + +Prenons comme exemple le système expert suivant pour déterminer un animal en fonction de ses caractéristiques physiques : + +![Arbre AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.it.png) + +> Image par [Dmitry Soshnikov](http://soshnikov.com) + +Ce diagramme est appelé un **arbre AND-OR**, et c'est une représentation graphique d'un ensemble de règles de production. Dessiner un arbre est utile au début de l'extraction de connaissances de l'expert. Pour représenter les connaissances à l'intérieur de l'ordinateur, il est plus pratique d'utiliser des règles : + +``` +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 +``` + +Vous pouvez remarquer que chaque condition du côté gauche de la règle et l'action sont essentiellement des triplets objet-attribut-valeur (OAV). La **mémoire de travail** contient l'ensemble des triplets OAV qui correspondent au problème actuellement résolu. Un **moteur de règles** recherche les règles pour lesquelles une condition est satisfaite et les applique, ajoutant un autre triplet à la mémoire de travail. + +> ✅ Écrivez votre propre arbre AND-OR sur un sujet qui vous plaît ! + +### Inférence avant vs. Inférence arrière + +Le processus décrit ci-dessus est appelé **inférence avant**. Il commence avec certaines données initiales sur le problème disponibles dans la mémoire de travail, puis exécute la boucle de raisonnement suivante : + +1. Si l'attribut cible est présent dans la mémoire de travail - arrêtez et donnez le résultat +2. Recherchez toutes les règles dont la condition est actuellement satisfaite - obtenez l'**ensemble de conflits** des règles. +3. Effectuez la **résolution de conflits** - sélectionnez une règle qui sera exécutée à cette étape. Il pourrait y avoir différentes stratégies de résolution de conflits : + - Sélectionnez la première règle applicable dans la base de connaissances + - Sélectionnez une règle aléatoire + - Sélectionnez une règle *plus spécifique*, c'est-à-dire celle qui répond à la plupart des conditions dans le "côté gauche" (LHS) +4. Appliquez la règle sélectionnée et insérez un nouveau morceau de connaissance dans l'état du problème +5. Répétez à partir de l'étape 1. + +Cependant, dans certains cas, nous pourrions vouloir commencer avec une connaissance vide du problème et poser des questions qui nous aideront à arriver à la conclusion. Par exemple, lors d'un diagnostic médical, nous ne réalisons généralement pas toutes les analyses médicales à l'avance avant de commencer à diagnostiquer le patient. Nous préférons plutôt effectuer des analyses lorsqu'une décision doit être prise. + +Ce processus peut être modélisé en utilisant l'**inférence arrière**. Il est dirigé par le **but** - la valeur d'attribut que nous cherchons à trouver : + +1. Sélectionnez toutes les règles qui peuvent nous donner la valeur d'un but (c'est-à-dire avec le but sur le RHS ("côté droit")) - un ensemble de conflits +2. S'il n'y a pas de règles pour cet attribut, ou s'il y a une règle disant que nous devons demander la valeur à l'utilisateur - demandez-la, sinon : +3. Utilisez la stratégie de résolution de conflits pour sélectionner une règle que nous utiliserons comme *hypothèse* - nous allons essayer de la prouver +4. Répétez de manière récurrente le processus pour tous les attributs dans le LHS de la règle, essayant de les prouver comme des buts +5. Si à un moment donné le processus échoue - utilisez une autre règle à l'étape 3. + +> ✅ Dans quelles situations l'inférence avant est-elle plus appropriée ? Et l'inférence arrière ? + +### Mise en œuvre des systèmes experts + +Les systèmes experts peuvent être mis en œuvre à l'aide de différents outils : + +* En les programmant directement dans un langage de programmation de haut niveau. Ce n'est pas la meilleure idée, car le principal avantage d'un système basé sur la connaissance est que la connaissance est séparée de l'inférence, et potentiellement un expert du domaine du problème devrait être capable d'écrire des règles sans comprendre les détails du processus d'inférence. +* En utilisant une **coquille de systèmes experts**, c'est-à-dire un système spécifiquement conçu pour être peuplé de connaissances à l'aide d'un certain langage de représentation des connaissances. + +## ✍️ Exercice : Inférence animale + +Voir [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) pour un exemple de mise en œuvre d'un système expert d'inférence avant et arrière. + +> **Remarque** : Cet exemple est assez simple et ne donne qu'une idée de ce à quoi ressemble un système expert. Une fois que vous commencez à créer un tel système, vous remarquerez un comportement *intelligent* de sa part seulement lorsque vous atteindrez un certain nombre de règles, autour de 200+. À un moment donné, les règles deviennent trop complexes pour garder toutes en tête, et à ce stade, vous pourriez commencer à vous demander pourquoi un système prend certaines décisions. Cependant, la caractéristique importante des systèmes basés sur la connaissance est que vous pouvez toujours *expliquer* exactement comment l'une des décisions a été prise. + +## Ontologies et Web Sémantique + +À la fin du 20ème siècle, il y a eu une initiative visant à utiliser la représentation des connaissances pour annoter les ressources Internet, afin qu'il soit possible de trouver des ressources correspondant à des requêtes très spécifiques. Ce mouvement a été appelé **Web Sémantique**, et il reposait sur plusieurs concepts : + +- Une représentation de connaissance spéciale basée sur les **[logiques de description](https://en.wikipedia.org/wiki/Description_logic)** (DL). Elle est similaire à la représentation de connaissance par cadre, car elle construit une hiérarchie d'objets avec des propriétés, mais elle a une sémantique logique formelle et une inférence. Il existe toute une famille de DL qui équilibre expressivité et complexité algorithmique de l'inférence. +- Représentation de connaissance distribuée, où tous les concepts sont représentés par un identifiant URI global, ce qui permet de créer des hiérarchies de connaissances qui s'étendent sur Internet. +- Une famille de langages basés sur XML pour la description des connaissances : RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Un concept central du Web Sémantique est le concept d'**Ontologie**. Cela fait référence à une spécification explicite d'un domaine de problème utilisant une certaine représentation formelle des connaissances. La plus simple des ontologies peut être juste une hiérarchie d'objets dans un domaine de problème, mais des ontologies plus complexes incluront des règles qui peuvent être utilisées pour l'inférence. + +Dans le web sémantique, toutes les représentations sont basées sur des triplets. Chaque objet et chaque relation sont identifiés de manière unique par l'URI. Par exemple, si nous voulons affirmer le fait que ce curriculum IA a été développé par Dmitry Soshnikov le 1er janvier 2022 - voici les triplets que nous pouvons utiliser : + + + +``` +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 +``` + +> ✅ Ici `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` sont des URI bien connues et universellement acceptées pour exprimer les concepts de *créateur* et de *date de création*. + +Dans un cas plus complexe, si nous voulons définir une liste de créateurs, nous pouvons utiliser certaines structures de données définies dans RDF. + + + +> Diagrammes ci-dessus par [Dmitry Soshnikov](http://soshnikov.com) + +Les progrès réalisés dans la construction du Web Sémantique ont été quelque peu ralentis par le succès des moteurs de recherche et des techniques de traitement du langage naturel, qui permettent d'extraire des données structurées à partir de texte. Cependant, dans certains domaines, il y a encore des efforts significatifs pour maintenir des ontologies et des bases de connaissances. Quelques projets à noter : + +* [WikiData](https://wikidata.org/) est une collection de bases de connaissances lisibles par machine associées à Wikipedia. La plupart des données sont extraites des *InfoBoxes* de Wikipedia, des morceaux de contenu structuré à l'intérieur des pages Wikipedia. Vous pouvez [interroger](https://query.wikidata.org/) wikidata en SPARQL, un langage de requête spécial pour le Web Sémantique. Voici un exemple de requête qui affiche les couleurs d'yeux les plus populaires chez les humains : + +```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/) est un autre effort similaire à WikiData. + +> ✅ Si vous souhaitez expérimenter la construction de vos propres ontologies, ou ouvrir des ontologies existantes, il existe un excellent éditeur d'ontologies visuel appelé [Protégé](https://protege.stanford.edu/ + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/2-Symbolic/assignment.md b/translations/it/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..9bfd8ff6 --- /dev/null +++ b/translations/it/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# Construir una Ontología + +Construir una base de conocimientos se trata de categorizar un modelo que represente hechos sobre un tema. Elige un tema, como una persona, un lugar o un objeto, y luego construye un modelo de ese tema. Utiliza algunas de las técnicas y estrategias de construcción de modelos descritas en esta lección. Un ejemplo sería crear una ontología de una sala de estar con muebles, luces, y así sucesivamente. ¿En qué se diferencia la sala de estar de la cocina? ¿Del baño? ¿Cómo sabes que es una sala de estar y no un comedor? Utiliza [Protégé](https://protege.stanford.edu/) para construir tu ontología. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/it/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..73127091 --- /dev/null +++ b/translations/it/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,95 @@ +# Introducción a las Redes Neuronales: Perceptrón + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Uno de los primeros intentos de implementar algo similar a una red neuronal moderna fue realizado por Frank Rosenblatt del Laboratorio Aeronáutico de Cornell en 1957. Fue una implementación de hardware llamada "Mark-1", diseñada para reconocer figuras geométricas primitivas, como triángulos, cuadrados y círculos. + +| | | +|--------------|-----------| +|Frank Rosenblatt | El Perceptrón Mark 1| + +> Imágenes [de Wikipedia](https://en.wikipedia.org/wiki/Perceptron) + +Una imagen de entrada se representaba mediante una matriz de fotoceldas de 20x20, por lo que la red neuronal tenía 400 entradas y una salida binaria. Una red simple contenía una neurona, también llamada **unidad lógica de umbral**. Los pesos de la red neuronal funcionaban como potenciómetros que requerían ajuste manual durante la fase de entrenamiento. + +> ✅ Un potenciómetro es un dispositivo que permite al usuario ajustar la resistencia de un circuito. + +> El New York Times escribió sobre el perceptrón en ese momento: *el embrión de una computadora electrónica que [la Marina] espera que pueda caminar, hablar, ver, escribir, reproducirse y ser consciente de su existencia.* + +## Modelo de Perceptrón + +Supongamos que tenemos N características en nuestro modelo, en cuyo caso el vector de entrada sería un vector de tamaño N. Un perceptrón es un modelo de **clasificación binaria**, es decir, puede distinguir entre dos clases de datos de entrada. Asumiremos que para cada vector de entrada x, la salida de nuestro perceptrón será ya sea +1 o -1, dependiendo de la clase. La salida se calculará utilizando la fórmula: + +y(x) = f(wTx) + +donde f es una función de activación de escalón. + + + + +## Entrenamiento del Perceptrón + +Para entrenar un perceptrón, necesitamos encontrar un vector de pesos w que clasifique correctamente la mayoría de los valores, es decir, que resulte en el menor **error**. Este error E se define por el **criterio del perceptrón** de la siguiente manera: + +E(w) = -∑wTxiti + +donde: + +* la suma se toma sobre aquellos puntos de datos de entrenamiento i que resultan en una clasificación incorrecta +* xi es el dato de entrada, y ti es ya sea -1 o +1 para ejemplos negativos y positivos respectivamente. + +Este criterio se considera como una función de los pesos w, y necesitamos minimizarlo. A menudo, se utiliza un método llamado **descenso de gradiente**, en el que comenzamos con algunos pesos iniciales w(0), y luego en cada paso actualizamos los pesos de acuerdo con la fórmula: + +w(t+1) = w(t) - η∇E(w) + +Aquí η es la llamada **tasa de aprendizaje**, y ∇E(w) denota el **gradiente** de E. Después de calcular el gradiente, terminamos con + +w(t+1) = w(t) + ∑ηxiti + +El algoritmo en Python se ve así: + +```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 +``` + +## Conclusión + +En esta lección, aprendiste sobre un perceptrón, que es un modelo de clasificación binaria, y cómo entrenarlo utilizando un vector de pesos. + +## 🚀 Desafío + +Si deseas intentar construir tu propio perceptrón, prueba [este laboratorio en Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) que utiliza el [diseñador de Azure ML](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Revisión y Autoestudio + +Para ver cómo podemos utilizar el perceptrón para resolver un problema simple así como problemas de la vida real, y para continuar aprendiendo, dirígete al cuaderno [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Aquí hay un [artículo interesante sobre perceptrones](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) también. + +## [Tarea](lab/README.md) + +En esta lección, hemos implementado un perceptrón para la tarea de clasificación binaria, y lo hemos utilizado para clasificar entre dos dígitos manuscritos. En este laboratorio, se te pide resolver el problema de clasificación de dígitos por completo, es decir, determinar qué dígito es más probable que corresponda a una imagen dada. + +* [Instrucciones](lab/README.md) +* [Cuaderno](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/it/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..c1567802 --- /dev/null +++ b/translations/it/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# Clasificación Multiclase con Perceptrón + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Usando el código que hemos desarrollado en esta lección para la clasificación binaria de dígitos manuscritos MNIST, crea un clasificador multiclase que sea capaz de reconocer cualquier dígito. Calcula la precisión de clasificación en el conjunto de datos de entrenamiento y prueba, y muestra la matriz de confusión. + +## Sugerencias + +1. Para cada dígito, crea un conjunto de datos para el clasificador binario de "este dígito vs. todos los demás dígitos". +1. Entrena 10 perceptrones diferentes para clasificación binaria (uno para cada dígito). +1. Define una función que clasifique un dígito de entrada. + +> **Sugerencia**: Si combinamos los pesos de los 10 perceptrones en una sola matriz, deberíamos poder aplicar los 10 perceptrones a los dígitos de entrada mediante una multiplicación de matrices. El dígito más probable se puede encontrar simplemente aplicando la operación `argmax` sobre la salida. + +## Notebook Inicial + +Comienza el laboratorio abriendo [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb). + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..118a7ae9 --- /dev/null +++ b/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# Introducción a las Redes Neuronales. Perceptrón Multicapa + +En la sección anterior, aprendiste sobre el modelo de red neuronal más simple: el perceptrón de una sola capa, un modelo lineal de clasificación binaria. + +En esta sección, ampliaremos este modelo a un marco más flexible, que nos permitirá: + +* realizar **clasificación multiclase** además de la clasificación binaria +* resolver **problemas de regresión** además de la clasificación +* separar clases que no son linealmente separables + +También desarrollaremos nuestro propio marco modular en Python que nos permitirá construir diferentes arquitecturas de redes neuronales. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalización del Aprendizaje Automático + +Comencemos formalizando el problema del Aprendizaje Automático. Supongamos que tenemos un conjunto de datos de entrenamiento **X** con etiquetas **Y**, y necesitamos construir un modelo *f* que realice las predicciones más precisas. La calidad de las predicciones se mide mediante la **función de pérdida** ℒ. Las siguientes funciones de pérdida son las más utilizadas: + +* Para problemas de regresión, cuando necesitamos predecir un número, podemos usar el **error absoluto** ∑i|f(x(i))-y(i)|, o el **error cuadrático** ∑i(f(x(i))-y(i))2 +* Para la clasificación, usamos la **pérdida 0-1** (que es esencialmente lo mismo que la **precisión** del modelo), o la **pérdida logística**. + +Para el perceptrón de una sola capa, la función *f* se definió como una función lineal *f(x)=wx+b* (donde *w* es la matriz de pesos, *x* es el vector de características de entrada y *b* es el vector de sesgo). Para diferentes arquitecturas de redes neuronales, esta función puede adoptar una forma más compleja. + +> En el caso de la clasificación, a menudo es deseable obtener probabilidades de las clases correspondientes como salida de la red. Para convertir números arbitrarios en probabilidades (por ejemplo, para normalizar la salida), a menudo usamos la función **softmax** σ, y la función *f* se convierte en *f(x)=σ(wx+b)* + +En la definición de *f* anterior, *w* y *b* se denominan **parámetros** θ=⟨*w,b*⟩. Dado el conjunto de datos ⟨**X**,**Y**⟩, podemos calcular un error general en todo el conjunto de datos como una función de los parámetros θ. + +> ✅ **El objetivo del entrenamiento de la red neuronal es minimizar el error variando los parámetros θ** + +## Optimización por Descenso de Gradiente + +Hay un método bien conocido de optimización de funciones llamado **descenso de gradiente**. La idea es que podemos calcular una derivada (en el caso multidimensional, llamada **gradiente**) de la función de pérdida con respecto a los parámetros, y variar los parámetros de tal manera que el error disminuya. Esto se puede formalizar de la siguiente manera: + +* Inicializa los parámetros con algunos valores aleatorios w(0), b(0) +* Repite el siguiente paso muchas veces: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Durante el entrenamiento, se supone que los pasos de optimización se calculan considerando todo el conjunto de datos (recuerda que la pérdida se calcula como una suma a través de todas las muestras de entrenamiento). Sin embargo, en la práctica, tomamos pequeñas porciones del conjunto de datos llamadas **minibatches**, y calculamos gradientes basados en un subconjunto de datos. Dado que el subconjunto se toma aleatoriamente cada vez, este método se llama **descenso de gradiente estocástico** (SGD). + +## Perceptrones Multicapa y Retropropagación + +La red de una sola capa, como hemos visto anteriormente, es capaz de clasificar clases que son linealmente separables. Para construir un modelo más rico, podemos combinar varias capas de la red. Matemáticamente, esto significaría que la función *f* tendría una forma más compleja y se calcularía en varios pasos: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Aquí, α es una **función de activación no lineal**, σ es una función softmax y los parámetros θ=<*w1,b1,w2,b2*. + +El algoritmo de descenso de gradiente seguiría siendo el mismo, pero sería más difícil calcular los gradientes. Dada la regla de diferenciación en cadena, podemos calcular derivadas como: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ La regla de diferenciación en cadena se utiliza para calcular las derivadas de la función de pérdida con respecto a los parámetros. + +Ten en cuenta que la parte más a la izquierda de todas esas expresiones es la misma, y así podemos calcular efectivamente las derivadas comenzando desde la función de pérdida y yendo "hacia atrás" a través del gráfico computacional. Así, el método de entrenamiento de un perceptrón multicapa se llama **retropropagación**, o 'backprop'. + +gráfico computacional + +> TODO: cita de imagen + +> ✅ Cubriremos la retropropagación con mucho más detalle en nuestro ejemplo de cuaderno. + +## Conclusión + +En esta lección, hemos construido nuestra propia biblioteca de redes neuronales y la hemos utilizado para una tarea simple de clasificación bidimensional. + +## 🚀 Desafío + +En el cuaderno adjunto, implementarás tu propio marco para construir y entrenar perceptrones multicapa. Podrás ver en detalle cómo operan las redes neuronales modernas. + +Procede al cuaderno [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) y trabaja en él. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Revisión y Autoestudio + +La retropropagación es un algoritmo comúnmente utilizado en IA y ML, vale la pena estudiarlo [con más detalle](https://wikipedia.org/wiki/Backpropagation) + +## [Tarea](lab/README.md) + +En este laboratorio, se te pide que utilices el marco que construiste en esta lección para resolver la clasificación de dígitos manuscritos de MNIST. + +* [Instrucciones](lab/README.md) +* [Cuaderno](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..154de262 --- /dev/null +++ b/translations/it/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# Clasificación MNIST con Nuestro Propio Marco + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Resuelve el problema de clasificación de dígitos manuscritos MNIST utilizando perceptrones de 1, 2 y 3 capas. Utiliza el marco de red neuronal que hemos desarrollado en la lección. + +## Inicio del Notebook + +Comienza el laboratorio abriendo [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Preguntas + +Como resultado de este laboratorio, intenta responder las siguientes preguntas: + +- ¿Afecta la función de activación entre capas al rendimiento de la red? +- ¿Necesitamos una red de 2 o 3 capas para esta tarea? +- ¿Tuviste algún problema al entrenar la red? Especialmente a medida que aumentaba el número de capas. +- ¿Cómo se comportan los pesos de la red durante el entrenamiento? Puedes graficar el valor absoluto máximo de los pesos frente a la época para entender la relación. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/it/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..c4aa8b7b --- /dev/null +++ b/translations/it/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# Frameworks de Redes Neurais + +Como já aprendemos, para treinar redes neurais de forma eficiente, precisamos fazer duas coisas: + +* Operar em tensores, por exemplo, multiplicar, adicionar e calcular algumas funções como sigmoid ou softmax +* Calcular gradientes de todas as expressões, a fim de realizar a otimização por descida de gradiente + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Enquanto a biblioteca `numpy` pode realizar a primeira parte, precisamos de algum mecanismo para calcular gradientes. No [nosso framework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) que desenvolvemos na seção anterior, tivemos que programar manualmente todas as funções derivadas dentro do método `backward`, que realiza a retropropagação. Idealmente, um framework deve nos oferecer a oportunidade de calcular gradientes de *qualquer expressão* que possamos definir. + +Outra coisa importante é ser capaz de realizar cálculos em GPU ou em outras unidades de computação especializadas, como o [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). O treinamento de redes neurais profundas exige *muitos* cálculos, e a capacidade de paralelizar esses cálculos em GPUs é muito importante. + +> ✅ O termo 'paralelizar' significa distribuir os cálculos entre vários dispositivos. + +Atualmente, os dois frameworks de redes neurais mais populares são: [TensorFlow](http://TensorFlow.org) e [PyTorch](https://pytorch.org/). Ambos fornecem uma API de baixo nível para operar com tensores tanto em CPU quanto em GPU. Além da API de baixo nível, também existe uma API de nível superior, chamada [Keras](https://keras.io/) e [PyTorch Lightning](https://pytorchlightning.ai/) respectivamente. + +API de Baixo Nível | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +-------------------|-------------------------------------|-------------------------------- +API de Alto Nível | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**APIs de baixo nível** em ambos os frameworks permitem que você construa os chamados **gráficos computacionais**. Este gráfico define como calcular a saída (geralmente a função de perda) com parâmetros de entrada dados, e pode ser enviado para computação na GPU, se disponível. Existem funções para diferenciar esse gráfico computacional e calcular gradientes, que podem então ser usados para otimizar os parâmetros do modelo. + +**APIs de alto nível** consideram essencialmente redes neurais como uma **sequência de camadas**, tornando a construção da maioria das redes neurais muito mais fácil. O treinamento do modelo geralmente requer a preparação dos dados e, em seguida, a chamada de uma função `fit` para realizar a tarefa. + +A API de alto nível permite que você construa redes neurais típicas rapidamente, sem se preocupar com muitos detalhes. Ao mesmo tempo, a API de baixo nível oferece muito mais controle sobre o processo de treinamento, e, portanto, é muito utilizada em pesquisas, quando você está lidando com novas arquiteturas de redes neurais. + +É também importante entender que você pode usar ambas as APIs juntas, por exemplo, você pode desenvolver sua própria arquitetura de camada de rede usando a API de baixo nível e, em seguida, usá-la dentro da rede maior construída e treinada com a API de alto nível. Ou você pode definir uma rede usando a API de alto nível como uma sequência de camadas e, em seguida, usar seu próprio loop de treinamento de baixo nível para realizar a otimização. Ambas as APIs utilizam os mesmos conceitos básicos subjacentes e são projetadas para funcionar bem juntas. + +## Aprendizado + +Neste curso, oferecemos a maior parte do conteúdo tanto para PyTorch quanto para TensorFlow. Você pode escolher seu framework preferido e apenas percorrer os notebooks correspondentes. Se você não tiver certeza de qual framework escolher, leia algumas discussões na internet sobre **PyTorch vs. TensorFlow**. Você também pode dar uma olhada em ambos os frameworks para obter uma melhor compreensão. + +Sempre que possível, usaremos APIs de Alto Nível por uma questão de simplicidade. No entanto, acreditamos que é importante entender como as redes neurais funcionam desde o início, portanto, no começo, começamos trabalhando com a API de baixo nível e tensores. Contudo, se você quiser avançar rapidamente e não quiser passar muito tempo aprendendo esses detalhes, pode pular essas partes e ir direto para os notebooks da API de alto nível. + +## ✍️ Exercícios: Frameworks + +Continue seu aprendizado nos seguintes notebooks: + +API de Baixo Nível | [Notebook TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +-------------------|-------------------------------------|-------------------------------- +API de Alto Nível | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Após dominar os frameworks, vamos recapitular a noção de sobreajuste. + +# Sobreajuste + +O sobreajuste é um conceito extremamente importante em aprendizado de máquina, e é crucial compreendê-lo corretamente! + +Considere o seguinte problema de aproximar 5 pontos (representados por `x` nos gráficos abaixo): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.it.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.it.jpg) +-------------------------|-------------------------- +**Modelo linear, 2 parâmetros** | **Modelo não-linear, 7 parâmetros** +Erro de treinamento = 5.3 | Erro de validação = 0 +Erro de validação = 5.1 | Erro de validação = 20 + +* À esquerda, vemos uma boa aproximação de linha reta. Como o número de parâmetros é adequado, o modelo compreende bem a distribuição dos pontos. +* À direita, o modelo é muito poderoso. Como temos apenas 5 pontos e o modelo possui 7 parâmetros, ele pode se ajustar de tal forma a passar por todos os pontos, fazendo com que o erro de treinamento seja 0. No entanto, isso impede que o modelo entenda o padrão correto por trás dos dados, resultando em um erro de validação muito alto. + +É muito importante encontrar um equilíbrio adequado entre a complexidade do modelo (número de parâmetros) e o número de amostras de treinamento. + +## Por que o sobreajuste ocorre + + * Dados de treinamento insuficientes + * Modelo excessivamente poderoso + * Muito ruído nos dados de entrada + +## Como detectar o sobreajuste + +Como você pode ver no gráfico acima, o sobreajuste pode ser detectado por um erro de treinamento muito baixo e um erro de validação alto. Normalmente, durante o treinamento, observamos ambos os erros de treinamento e validação começando a diminuir, e então, em algum momento, o erro de validação pode parar de diminuir e começar a aumentar. Isso será um sinal de sobreajuste e um indicativo de que devemos provavelmente parar o treinamento neste ponto (ou pelo menos fazer uma captura do modelo). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.it.png) + +## Como prevenir o sobreajuste + +Se você perceber que o sobreajuste está ocorrendo, pode fazer uma das seguintes ações: + + * Aumentar a quantidade de dados de treinamento + * Diminuir a complexidade do modelo + * Utilizar alguma [técnica de regularização](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), como [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), que consideraremos mais adiante. + +## Sobreajuste e a Troca de Viés-Variância + +O sobreajuste é, na verdade, um caso de um problema mais genérico em estatísticas chamado [Troca de Viés-Variância](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Se considerarmos as possíveis fontes de erro em nosso modelo, podemos observar dois tipos de erros: + +* **Erros de viés** são causados pelo fato de nosso algoritmo não conseguir capturar corretamente a relação entre os dados de treinamento. Isso pode resultar do fato de nosso modelo não ser poderoso o suficiente (**subajuste**). +* **Erros de variância**, que são causados pelo modelo aproximar o ruído nos dados de entrada em vez de uma relação significativa (**sobreajuste**). + +Durante o treinamento, o erro de viés diminui (à medida que nosso modelo aprende a aproximar os dados), e o erro de variância aumenta. É importante parar o treinamento - seja manualmente (quando detectamos sobreajuste) ou automaticamente (introduzindo regularização) - para evitar o sobreajuste. + +## Conclusão + +Nesta lição, você aprendeu sobre as diferenças entre as várias APIs dos dois frameworks de IA mais populares, TensorFlow e PyTorch. Além disso, você aprendeu sobre um tópico muito importante, o sobreajuste. + +## 🚀 Desafio + +Nos notebooks acompanhantes, você encontrará 'tarefas' na parte inferior; trabalhe pelos notebooks e complete as tarefas. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Revisão e Autoestudo + +Faça uma pesquisa sobre os seguintes tópicos: + +- TensorFlow +- PyTorch +- Sobreajuste + +Pergunte a si mesmo as seguintes questões: + +- Qual é a diferença entre TensorFlow e PyTorch? +- Qual é a diferença entre sobreajuste e subajuste? + +## [Tarefa](lab/README.md) + +Neste laboratório, você é solicitado a resolver dois problemas de classificação usando redes totalmente conectadas de uma e várias camadas, utilizando PyTorch ou TensorFlow. + +* [Instruções](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/it/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..7109b0d8 --- /dev/null +++ b/translations/it/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# Clasificación con PyTorch/TensorFlow + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Resuelve dos problemas de clasificación utilizando redes completamente conectadas de una y varias capas con PyTorch o TensorFlow: + +1. Problema de **[clasificación de iris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - un ejemplo de un problema con datos de entrada tabulares, que puede ser abordado por el aprendizaje automático clásico. Tu objetivo será clasificar los iris en 3 clases, basándote en 4 parámetros numéricos. +2. Problema de clasificación de dígitos manuscritos **MNIST** que ya hemos visto anteriormente. + +Prueba diferentes arquitecturas de red para lograr la mejor precisión posible. + +## Iniciando el Notebook + +Comienza el laboratorio abriendo [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb). + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/3-NeuralNetworks/README.md b/translations/it/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..3c33eff8 --- /dev/null +++ b/translations/it/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# Introducción a las Redes Neuronales + +![Resumen del contenido de Introducción a las Redes Neuronales en un doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.it.png) + +Como discutimos en la introducción, una de las formas de alcanzar la inteligencia es entrenar un **modelo computacional** o un **cerebro artificial**. Desde mediados del siglo XX, los investigadores han probado diferentes modelos matemáticos, hasta que en años recientes esta dirección ha demostrado ser enormemente exitosa. Estos modelos matemáticos del cerebro se conocen como **redes neuronales**. + +> A veces, las redes neuronales se llaman *Redes Neuronales Artificiales*, ANNs, para indicar que estamos hablando de modelos, no de redes reales de neuronas. + +## Aprendizaje Automático + +Las Redes Neuronales son parte de una disciplina más amplia llamada **Aprendizaje Automático**, cuyo objetivo es utilizar datos para entrenar modelos computacionales que sean capaces de resolver problemas. El Aprendizaje Automático constituye una gran parte de la Inteligencia Artificial; sin embargo, no cubrimos el aprendizaje automático clásico en este currículo. + +> Visita nuestro currículo separado de **[Aprendizaje Automático para Principiantes](http://github.com/microsoft/ml-for-beginners)** para aprender más sobre el aprendizaje automático clásico. + +En el Aprendizaje Automático, asumimos que tenemos un conjunto de datos de ejemplos **X**, y los valores de salida correspondientes **Y**. Los ejemplos son a menudo vectores N-dimensionales que consisten en **características**, y las salidas se llaman **etiquetas**. + +Consideraremos los dos problemas más comunes en el aprendizaje automático: + +* **Clasificación**, donde necesitamos clasificar un objeto de entrada en dos o más clases. +* **Regresión**, donde necesitamos predecir un número numérico para cada una de las muestras de entrada. + +> Al representar las entradas y salidas como tensores, el conjunto de datos de entrada es una matriz de tamaño M×N, donde M es el número de muestras y N es el número de características. Las etiquetas de salida Y son el vector de tamaño M. + +En este currículo, nos enfocaremos únicamente en los modelos de redes neuronales. + +## Un Modelo de Neurona + +Desde la biología sabemos que nuestro cerebro está compuesto por células neuronales, cada una de ellas con múltiples "entradas" (axones) y una salida (dendrita). Los axones y dendritas pueden conducir señales eléctricas, y las conexiones entre axones y dendritas pueden exhibir diferentes grados de conductividad (controlados por neuromediadores). + +![Modelo de una Neurona](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.it.jpg) | ![Modelo de una Neurona](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.it.png) +----|---- +Neurona Real *([Imagen](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) de Wikipedia)* | Neurona Artificial *(Imagen del Autor)* + +Así, el modelo matemático más simple de una neurona contiene varias entradas X1, ..., XN y una salida Y, junto con una serie de pesos W1, ..., WN. La salida se calcula como: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +donde f es alguna **función de activación** no lineal. + +> Los primeros modelos de neuronas fueron descritos en el artículo clásico [Un cálculo lógico de las ideas inherentes a la actividad nerviosa](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) de Warren McCullock y Walter Pitts en 1943. Donald Hebb, en su libro "[La Organización del Comportamiento: Una Teoría Neuropsicológica](https://books.google.com/books?id=VNetYrB8EBoC)", propuso la forma en que esas redes pueden ser entrenadas. + +## En esta Sección + +En esta sección aprenderemos sobre: +* [Perceptrón](03-Perceptron/README.md), uno de los primeros modelos de redes neuronales para clasificación de dos clases +* [Redes multicapa](04-OwnFramework/README.md) con un cuaderno emparejado [cómo construir nuestro propio marco](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Marcos de Redes Neuronales](05-Frameworks/README.md), con estos cuadernos: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) y [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Sobreajuste](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/it/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..bd6f9822 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# Introducción a la Visión por Computadora + +[Visión por Computadora](https://wikipedia.org/wiki/Computer_vision) es una disciplina cuyo objetivo es permitir que las computadoras obtengan una comprensión de alto nivel de las imágenes digitales. Esta es una definición bastante amplia, porque *comprensión* puede significar muchas cosas diferentes, incluyendo encontrar un objeto en una imagen (**detección de objetos**), entender lo que está sucediendo (**detección de eventos**), describir una imagen en texto, o reconstruir una escena en 3D. También hay tareas especiales relacionadas con imágenes humanas: estimación de edad y emociones, detección e identificación de rostros, y estimación de pose en 3D, por nombrar algunas. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Una de las tareas más simples de la visión por computadora es **clasificación de imágenes**. + +La visión por computadora a menudo se considera una rama de la IA. Hoy en día, la mayoría de las tareas de visión por computadora se resuelven utilizando redes neuronales. Aprenderemos más sobre el tipo especial de redes neuronales utilizadas para la visión por computadora, [redes neuronales convolucionales](../07-ConvNets/README.md), a lo largo de esta sección. + +Sin embargo, antes de pasar la imagen a una red neuronal, en muchos casos tiene sentido utilizar algunas técnicas algorítmicas para mejorar la imagen. + +Hay varias bibliotecas de Python disponibles para el procesamiento de imágenes: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** se puede utilizar para leer/escribir diferentes formatos de imagen. También soporta ffmpeg, una herramienta útil para convertir fotogramas de video en imágenes. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (también conocido como PIL) es un poco más poderosa, y también soporta algunas manipulaciones de imágenes como morfología, ajustes de paleta, y más. +* **[OpenCV](https://opencv.org/)** es una poderosa biblioteca de procesamiento de imágenes escrita en C++, que se ha convertido en el estándar *de facto* para el procesamiento de imágenes. Tiene una interfaz conveniente para Python. +* **[dlib](http://dlib.net/)** es una biblioteca de C++ que implementa muchos algoritmos de aprendizaje automático, incluyendo algunos de los algoritmos de Visión por Computadora. También tiene una interfaz de Python y se puede utilizar para tareas desafiantes como la detección de rostros y puntos de referencia faciales. + +## OpenCV + +[OpenCV](https://opencv.org/) se considera el estándar *de facto* para el procesamiento de imágenes. Contiene muchos algoritmos útiles, implementados en C++. También puedes llamar a OpenCV desde Python. + +Un buen lugar para aprender OpenCV es [este curso de Aprende OpenCV](https://learnopencv.com/getting-started-with-opencv/). En nuestro currículo, nuestro objetivo no es aprender OpenCV, sino mostrarte algunos ejemplos de cuándo se puede usar y cómo. + +### Cargando Imágenes + +Las imágenes en Python pueden ser representadas de manera conveniente por arreglos de NumPy. Por ejemplo, las imágenes en escala de grises con un tamaño de 320x200 píxeles se almacenarían en un arreglo de 200x320, y las imágenes a color de la misma dimensión tendrían una forma de 200x320x3 (para 3 canales de color). Para cargar una imagen, puedes usar el siguiente código: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Tradicionalmente, OpenCV utiliza codificación BGR (Azul-Verde-Rojo) para imágenes a color, mientras que el resto de las herramientas de Python utilizan el más tradicional RGB (Rojo-Verde-Azul). Para que la imagen se vea correctamente, necesitas convertirla al espacio de color RGB, ya sea intercambiando dimensiones en el arreglo de NumPy o llamando a una función de OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Las mismas funciones `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` +* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold`, que a menudo son preferibles a ajustar el brillo o el contraste. +* Aplicar diferentes [transformaciones](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) a la imagen: + - **[Transformaciones afines](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** pueden ser útiles si necesitas combinar rotación, redimensionamiento y sesgo en la imagen y conoces la ubicación de origen y destino de tres puntos en la imagen. Las transformaciones afines mantienen las líneas paralelas. + - **[Transformaciones de perspectiva](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** pueden ser útiles cuando conoces las posiciones de origen y destino de 4 puntos en la imagen. Por ejemplo, si tomas una foto de un documento rectangular a través de la cámara de un smartphone desde algún ángulo, y deseas hacer una imagen rectangular del documento en sí. +* Comprender el movimiento dentro de la imagen utilizando **[flujo óptico](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Ejemplos de uso de la Visión por Computadora + +En nuestro [Cuaderno de OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), damos algunos ejemplos de cuándo se puede usar la visión por computadora para realizar tareas específicas: + +* **Pre-procesar una fotografía de un libro en Braille**. Nos enfocamos en cómo podemos usar umbralización, detección de características, transformación de perspectiva y manipulaciones de NumPy para separar símbolos individuales de Braille para su posterior clasificación por una red neuronal. + +![Imagen de Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.it.jpeg) | ![Imagen de Braille Pre-procesada](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.it.png) | ![Símbolos de Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.it.png) +----|-----|----- + +> Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detectar movimiento en video utilizando diferencia de fotogramas**. Si la cámara está fija, entonces los fotogramas del flujo de la cámara deberían ser bastante similares entre sí. Dado que los fotogramas se representan como arreglos, al restar esos arreglos de dos fotogramas subsecuentes obtendremos la diferencia de píxeles, que debería ser baja para fotogramas estáticos y aumentar una vez que haya un movimiento sustancial en la imagen. + +![Imagen de fotogramas de video y diferencias de fotogramas](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.it.png) + +> Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detectar movimiento utilizando Flujo Óptico**. [El flujo óptico](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nos permite entender cómo se mueven los píxeles individuales en los fotogramas de video. Hay dos tipos de flujo óptico: + + - **Flujo Óptico Denso** calcula el campo vectorial que muestra para cada píxel hacia dónde se está moviendo. + - **Flujo Óptico Escaso** se basa en tomar algunas características distintivas en la imagen (por ejemplo, bordes) y construir su trayectoria de un fotograma a otro. + +![Imagen de Flujo Óptico](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.it.png) + +> Imagen de [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Cuadernos de Ejemplo: OpenCV [prueba OpenCV en acción](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Hagamos algunos experimentos con OpenCV explorando [Cuaderno de OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## Conclusión + +A veces, tareas relativamente complejas como la detección de movimiento o la detección de yemas de los dedos pueden resolverse puramente mediante visión por computadora. Por lo tanto, es muy útil conocer las técnicas básicas de visión por computadora y lo que bibliotecas como OpenCV pueden hacer. + +## 🚀 Desafío + +Mira [este video](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) del programa de IA para aprender sobre el proyecto Cortic Tigers y cómo construyeron una solución basada en bloques para democratizar las tareas de visión por computadora a través de un robot. Investiga sobre otros proyectos como este que ayuden a nuevos aprendices a ingresar al campo. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Revisión y Autoestudio + +Lee más sobre el flujo óptico [en este gran tutorial](https://learnopencv.com/optical-flow-in-opencv/). + +## [Asignación](lab/README.md) + +En este laboratorio, tomarás un video con gestos simples, y tu objetivo es extraer movimientos arriba/abajo/izquierda/derecha utilizando flujo óptico. + +Marco de Movimiento de Palma + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/it/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..a5288698 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,22 @@ +# Detectar Movimientos usando Flujo Óptico + +Tarea del [Currículo de IA para Principiantes](https://aka.ms/ai-beginners). + +## Tarea + +Considera [este video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), en el que la palma de una persona se mueve de izquierda/derecha/arriba/abajo sobre un fondo estable. Estás entrenado en datos hasta octubre de 2023. + +**Tu objetivo** será utilizar Flujo Óptico para determinar qué partes del video contienen movimientos hacia arriba/abajo/izquierda/derecha. + +**Objetivo adicional** sería rastrear el movimiento de la palma/dedo utilizando el tono de piel, como se describe [en esta publicación de blog](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) o [aquí](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Cuaderno de Inicio + +Comienza el laboratorio abriendo [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Conclusión + +A veces, tareas relativamente complejas como la detección de movimientos o la detección de puntas de dedos pueden resolverse únicamente mediante visión por computadora. Por lo tanto, es muy útil saber lo que bibliotecas como OpenCV pueden hacer. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/it/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..76b0dd73 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# Conocidas Arquitecturas de CNN + +### VGG-16 + +VGG-16 es una red que logró un 92.7% de precisión en la clasificación top-5 de ImageNet en 2014. Tiene la siguiente estructura de capas: + +![Capas de ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.it.jpg) + +Como puedes ver, VGG sigue una arquitectura de pirámide tradicional, que es una secuencia de capas de convolución y agrupamiento. + +![Pirámide de ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.it.jpg) + +> Imagen de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet es una familia de modelos propuesta por Microsoft Research en 2015. La idea principal de ResNet es utilizar **bloques residuales**: + + + +> Imagen de [este artículo](https://arxiv.org/pdf/1512.03385.pdf) + +La razón para usar un paso de identidad es hacer que nuestra capa prediga **la diferencia** entre el resultado de una capa anterior y la salida del bloque residual, de ahí el nombre *residual*. Estos bloques son mucho más fáciles de entrenar, y se pueden construir redes con varios cientos de esos bloques (las variantes más comunes son ResNet-52, ResNet-101 y ResNet-152). + +También puedes pensar en esta red como capaz de ajustar su complejidad al conjunto de datos. Inicialmente, cuando comienzas a entrenar la red, los valores de los pesos son pequeños, y la mayor parte de la señal pasa a través de capas de identidad. A medida que avanza el entrenamiento y los pesos se hacen más grandes, la importancia de los parámetros de la red crece, y la red se ajusta para acomodar el poder expresivo necesario para clasificar correctamente las imágenes de entrenamiento. + +### Google Inception + +La arquitectura Google Inception lleva esta idea un paso más allá y construye cada capa de la red como una combinación de varios caminos diferentes: + + + +> Imagen de [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Aquí, necesitamos enfatizar el papel de las convoluciones 1x1, porque al principio no tienen sentido. ¿Por qué necesitaríamos pasar por la imagen con un filtro 1x1? Sin embargo, debes recordar que los filtros de convolución también trabajan con varios canales de profundidad (originalmente - colores RGB, en capas posteriores - canales para diferentes filtros), y la convolución 1x1 se utiliza para mezclar esos canales de entrada utilizando diferentes pesos entrenables. También se puede ver como un muestreo (pooling) a lo largo de la dimensión de los canales. + +Aquí hay [una buena publicación de blog](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) sobre el tema, y [el artículo original](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet es una familia de modelos con tamaño reducido, adecuados para dispositivos móviles. Úsalos si tienes pocos recursos y puedes sacrificar un poco de precisión. La idea principal detrás de ellos es la llamada **convolución separable por profundidad**, que permite representar filtros de convolución mediante una composición de convoluciones espaciales y convoluciones 1x1 sobre los canales de profundidad. Esto reduce significativamente el número de parámetros, haciendo que la red sea más pequeña en tamaño y también más fácil de entrenar con menos datos. + +Aquí hay [una buena publicación de blog sobre MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Conclusión + +En esta unidad, has aprendido el concepto principal detrás de las redes neuronales de visión por computadora: las redes convolucionales. Las arquitecturas de la vida real que impulsan la clasificación de imágenes, la detección de objetos e incluso las redes de generación de imágenes se basan en CNNs, solo que con más capas y algunos trucos adicionales de entrenamiento. + +## 🚀 Desafío + +En los cuadernos adjuntos, hay notas al final sobre cómo obtener una mayor precisión. Realiza algunos experimentos para ver si puedes lograr una mayor precisión. + +## [Cuestionario post-clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Revisión y Autoestudio + +Aunque las CNN se utilizan más a menudo para tareas de Visión por Computadora, son generalmente buenas para extraer patrones de tamaño fijo. Por ejemplo, si estamos tratando con sonidos, también podríamos querer usar CNNs para buscar patrones específicos en la señal de audio, en cuyo caso los filtros serían unidimensionales (y esta CNN se llamaría 1D-CNN). Además, a veces se utiliza 3D-CNN para extraer características en un espacio multidimensional, como ciertos eventos que ocurren en un video; CNN puede capturar ciertos patrones de características que cambian con el tiempo. Realiza algunas revisiones y autoestudio sobre otras tareas que se pueden realizar con CNNs. + +## [Asignación](lab/README.md) + +En este laboratorio, se te asigna la tarea de clasificar diferentes razas de gatos y perros. Estas imágenes son más complejas que el conjunto de datos MNIST y de dimensiones más altas, y hay más de 10 clases. + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional humana. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/it/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..df6781c4 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,59 @@ +# Réseaux de Neurones Convolutionnels + +Nous avons déjà constaté que les réseaux de neurones sont assez efficaces pour traiter des images, et même un perceptron à une couche est capable de reconnaître des chiffres manuscrits à partir du jeu de données MNIST avec une précision raisonnable. Cependant, le jeu de données MNIST est très particulier, et tous les chiffres sont centrés dans l'image, ce qui simplifie la tâche. + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +Dans la vie réelle, nous voulons être capables de reconnaître des objets sur une image, peu importe leur emplacement exact dans celle-ci. La vision par ordinateur diffère de la classification générique, car lorsque nous essayons de trouver un certain objet dans l'image, nous scannons l'image à la recherche de certains **modèles** et de leurs combinaisons. Par exemple, lorsque nous cherchons un chat, nous pouvons d'abord rechercher des lignes horizontales, qui peuvent former des moustaches, et ensuite une certaine combinaison de moustaches peut nous indiquer qu'il s'agit en fait d'une image d'un chat. La position relative et la présence de certains modèles sont importantes, et non leur position exacte dans l'image. + +Pour extraire des modèles, nous utiliserons la notion de **filtres convolutionnels**. Comme vous le savez, une image est représentée par une matrice 2D, ou un tenseur 3D avec une profondeur de couleur. Appliquer un filtre signifie que nous prenons une matrice de **noyau de filtre** relativement petite, et pour chaque pixel de l'image originale, nous calculons la moyenne pondérée avec les points voisins. Nous pouvons voir cela comme une petite fenêtre glissant sur toute l'image, et moyennant tous les pixels selon les poids dans la matrice du noyau de filtre. + +![Filtre de Bord Vertical](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.it.png) | ![Filtre de Bord Horizontal](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.it.png) +----|---- + +> Image par Dmitry Soshnikov + +Par exemple, si nous appliquons des filtres de bord vertical et horizontal 3x3 aux chiffres MNIST, nous pouvons obtenir des surlignages (par exemple, des valeurs élevées) là où se trouvent des bords verticaux et horizontaux dans notre image originale. Ainsi, ces deux filtres peuvent être utilisés pour "chercher" des bords. De même, nous pouvons concevoir différents filtres pour rechercher d'autres modèles de bas niveau : +Vous êtes formé sur des données jusqu'à octobre 2023. + +> Image de [Banque de Filtres Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Cependant, bien que nous puissions concevoir les filtres pour extraire certains modèles manuellement, nous pouvons également concevoir le réseau de manière à ce qu'il apprenne les modèles automatiquement. C'est l'une des idées principales derrière le CNN. + +## Idées principales derrière le CNN + +Le fonctionnement des CNN est basé sur les idées importantes suivantes : + +* Les filtres convolutionnels peuvent extraire des modèles +* Nous pouvons concevoir le réseau de manière à ce que les filtres soient entraînés automatiquement +* Nous pouvons utiliser la même approche pour trouver des modèles dans des caractéristiques de haut niveau, et pas seulement dans l'image originale. Ainsi, l'extraction de caractéristiques par CNN fonctionne sur une hiérarchie de caractéristiques, allant des combinaisons de pixels de bas niveau jusqu'aux combinaisons de parties d'image de niveau supérieur. + +![Extraction de Caractéristiques Hiérarchiques](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.it.png) + +> Image tirée [d'un article de Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), basé sur [leur recherche](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Exercices : Réseaux de Neurones Convolutionnels + +Continuons à explorer comment fonctionnent les réseaux de neurones convolutionnels et comment nous pouvons obtenir des filtres entraînables, en travaillant à travers les notebooks correspondants : + +* [Réseaux de Neurones Convolutionnels - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Réseaux de Neurones Convolutionnels - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Architecture Pyramidale + +La plupart des CNN utilisés pour le traitement d'images suivent une architecture pyramidale. La première couche convolutionnelle appliquée aux images originales a généralement un nombre relativement faible de filtres (8-16), qui correspondent à différentes combinaisons de pixels, telles que des lignes horizontales/verticales de traits. Au niveau suivant, nous réduisons la dimension spatiale du réseau et augmentons le nombre de filtres, ce qui correspond à plus de combinaisons possibles de caractéristiques simples. À chaque couche, à mesure que nous nous rapprochons du classificateur final, les dimensions spatiales de l'image diminuent et le nombre de filtres augmente. + +À titre d'exemple, examinons l'architecture de VGG-16, un réseau qui a atteint 92,7 % de précision dans la classification top-5 d'ImageNet en 2014 : + +![Couches ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.it.jpg) + +![Pyramide ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.it.jpg) + +> Image tirée de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## Architectures CNN les Plus Connues + +[Continuez votre étude sur les architectures CNN les plus connues](CNN_Architectures.md) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/it/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..5f031b0e --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# Clasificación de Caras de Mascotas + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Imagina que necesitas desarrollar una aplicación para una guardería de mascotas para catalogar todos los animales. Una de las grandes características de tal aplicación sería descubrir automáticamente la raza a partir de una fotografía. Esto se puede lograr con éxito utilizando redes neuronales. + +Necesitas entrenar una red neuronal convolucional para clasificar diferentes razas de gatos y perros utilizando el conjunto de datos **Caras de Mascotas**. + +## El Conjunto de Datos + +Usaremos el conjunto de datos **Caras de Mascotas**, derivado del conjunto de datos de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Contiene 35 razas diferentes de perros y gatos. + +![Conjunto de datos con el que trabajaremos](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.it.png) + +Para descargar el conjunto de datos, utiliza este fragmento de código: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Iniciando el Notebook + +Comienza el laboratorio abriendo [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb). + +## Conclusión + +¡Has resuelto un problema relativamente complejo de clasificación de imágenes desde cero! Había muchas clases, ¡y aún así lograste obtener una precisión razonable! También tiene sentido medir la precisión top-k, ya que es fácil confundir algunas de las clases que no son claramente diferentes incluso para los seres humanos. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/it/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..95bd1a95 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,80 @@ +# Redes Neurais Pré-treinadas e Aprendizado por Transferência + +Treinar CNNs pode levar muito tempo, e uma grande quantidade de dados é necessária para essa tarefa. No entanto, muito do tempo é gasto aprendendo os melhores filtros de baixo nível que uma rede pode usar para extrair padrões de imagens. Surge uma pergunta natural: podemos usar uma rede neural treinada em um conjunto de dados e adaptá-la para classificar diferentes imagens sem precisar de um processo completo de treinamento? + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Essa abordagem é chamada de **aprendizado por transferência**, porque transferimos algum conhecimento de um modelo de rede neural para outro. No aprendizado por transferência, normalmente começamos com um modelo pré-treinado, que foi treinado em um grande conjunto de dados de imagens, como o **ImageNet**. Esses modelos já conseguem extrair diferentes características de imagens genéricas, e em muitos casos, simplesmente construir um classificador em cima dessas características extraídas pode resultar em um bom desempenho. + +> ✅ Aprendizado por Transferência é um termo que você encontra em outros campos acadêmicos, como Educação. Refere-se ao processo de levar conhecimento de um domínio e aplicá-lo a outro. + +## Modelos Pré-treinados como Extratores de Recursos + +As redes convolucionais que discutimos na seção anterior continham várias camadas, cada uma delas destinada a extrair algumas características da imagem, começando por combinações de pixels de baixo nível (como linhas ou traços horizontais/verticais), até combinações de características de nível mais alto, correspondendo a coisas como o olho de uma chama. Se treinarmos uma CNN em um conjunto de dados suficientemente grande de imagens genéricas e diversas, a rede deve aprender a extrair essas características comuns. + +Tanto o Keras quanto o PyTorch contêm funções para carregar facilmente os pesos de redes neurais pré-treinadas para algumas arquiteturas comuns, a maioria das quais foi treinada em imagens do ImageNet. Os mais utilizados estão descritos na página de [Arquiteturas de CNN](../07-ConvNets/CNN_Architectures.md) da aula anterior. Em particular, você pode considerar usar uma das seguintes: + +* **VGG-16/VGG-19**, que são modelos relativamente simples, mas ainda oferecem boa precisão. Muitas vezes, usar o VGG como uma primeira tentativa é uma boa escolha para ver como o aprendizado por transferência funciona. +* **ResNet** é uma família de modelos proposta pela Microsoft Research em 2015. Eles têm mais camadas e, portanto, consomem mais recursos. +* **MobileNet** é uma família de modelos com tamanho reduzido, adequada para dispositivos móveis. Use-os se você tiver poucos recursos e puder sacrificar um pouco de precisão. + +Aqui estão exemplos de características extraídas de uma imagem de um gato pela rede VGG-16: + +![Características extraídas pela VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.it.png) + +## Conjunto de Dados de Gatos vs. Cachorros + +Neste exemplo, usaremos um conjunto de dados de [Gatos e Cachorros](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), que é muito próximo de um cenário real de classificação de imagens. + +## ✍️ Exercício: Aprendizado por Transferência + +Vamos ver o aprendizado por transferência em ação nos cadernos correspondentes: + +* [Aprendizado por Transferência - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Aprendizado por Transferência - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Visualizando o Gato Adversarial + +Uma rede neural pré-treinada contém diferentes padrões dentro de seu *cérebro*, incluindo noções de **gato ideal** (assim como cachorro ideal, zebra ideal, etc.). Seria interessante de alguma forma **visualizar essa imagem**. No entanto, isso não é simples, pois os padrões estão espalhados por todo o peso da rede e também organizados em uma estrutura hierárquica. + +Uma abordagem que podemos adotar é começar com uma imagem aleatória e, em seguida, tentar usar a técnica de **otimização por gradiente** para ajustar essa imagem de tal forma que a rede comece a pensar que é um gato. + +![Loop de Otimização de Imagem](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.it.png) + +No entanto, se fizermos isso, receberemos algo muito semelhante a um ruído aleatório. Isso ocorre porque *existem muitas maneiras de fazer a rede pensar que a imagem de entrada é um gato*, incluindo algumas que não fazem sentido visualmente. Embora essas imagens contenham muitos padrões típicos de um gato, não há nada que as restrinja a serem visualmente distintas. + +Para melhorar o resultado, podemos adicionar outro termo à função de perda, que é chamado de **perda de variação**. É uma métrica que mostra quão semelhantes são os pixels vizinhos da imagem. Minimizar a perda de variação torna a imagem mais suave e elimina o ruído, revelando assim padrões visualmente mais atraentes. Aqui está um exemplo de tais imagens "ideais", que são classificadas como gato e como zebra com alta probabilidade: + +![Gato Ideal](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.it.png) | ![Zebra Ideal](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.it.png) +-----|----- + *Gato Ideal* | *Zebra Ideal* + +Uma abordagem semelhante pode ser usada para realizar os chamados **ataques adversariais** em uma rede neural. Suponha que queremos enganar uma rede neural e fazer um cachorro parecer um gato. Se pegarmos a imagem de um cachorro, que é reconhecida por uma rede como um cachorro, podemos então ajustá-la um pouco usando a otimização por gradiente, até que a rede comece a classificá-la como um gato: + +![Imagem de um Cachorro](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.it.png) | ![Imagem de um cachorro classificado como gato](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.it.png) +-----|----- +*Imagem original de um cachorro* | *Imagem de um cachorro classificado como gato* + +Veja o código para reproduzir os resultados acima no seguinte caderno: + +* [Gato Ideal e Adversarial - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) +## Conclusão + +Usando o aprendizado por transferência, você consegue montar rapidamente um classificador para uma tarefa de classificação de objetos personalizados e alcançar alta precisão. Você pode ver que tarefas mais complexas que estamos resolvendo agora exigem maior poder computacional e não podem ser facilmente resolvidas na CPU. Na próxima unidade, tentaremos usar uma implementação mais leve para treinar o mesmo modelo usando recursos computacionais menores, o que resulta em uma precisão apenas ligeiramente inferior. + +## 🚀 Desafio + +Nos cadernos acompanhados, há notas no final sobre como o conhecimento transferido funciona melhor com dados de treinamento um tanto semelhantes (um novo tipo de animal, talvez). Faça algumas experimentações com tipos de imagens completamente novos para ver quão bem ou mal seus modelos de conhecimento transferido se comportam. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Revisão e Autoestudo + +Leia [TrainingTricks.md](TrainingTricks.md) para aprofundar seu conhecimento sobre algumas outras maneiras de treinar seus modelos. + +## [Tarefa](lab/README.md) + +Neste laboratório, usaremos um conjunto de dados de pets da [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) com 35 raças de gatos e cachorros, e construiremos um classificador de aprendizado por transferência. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/it/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..f46f5063 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# Tricks for Training Deep Learning Models + +As neural networks grow deeper, training them becomes increasingly challenging. A significant issue is the so-called [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) or [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [This article](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) provides a solid introduction to these challenges. + +To enhance the efficiency of training deep networks, several techniques can be employed. + +## Maintaining Values within a Reasonable Range + +To ensure more stable numerical computations, it is essential to keep all values within our neural network at a reasonable scale, typically in the range of [-1..1] or [0..1]. While this is not a strict requirement, the nature of floating-point calculations means that values of vastly different magnitudes cannot be accurately processed together. For instance, if we add 10-10 and 1010, the result will likely be 1010, as the smaller value gets "converted" to match the order of the larger one, resulting in the loss of precision in the mantissa. + +Most activation functions exhibit non-linearities around [-1..1], making it sensible to scale all input data to fall within this range. + +## Initial Weight Initialization + +Ideally, we want the values to remain within the same range after passing through the layers of the network. Therefore, it is crucial to initialize weights in a way that preserves the distribution of values. + +Using a normal distribution **N(0,1)** is not advisable, as having *n* inputs would result in an output standard deviation of *n*, causing values to likely exceed the [0..1] range. + +The following initialization methods are commonly used: + + * Uniform distribution -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** guarantees that for inputs with a zero mean and a standard deviation of 1, the same mean/standard deviation will be maintained + * **N(0,√2/(n_in+n_out))** -- known as **Xavier initialization** (`glorot`), this helps keep the signals within range during both forward and backward propagation + +## Batch Normalization + +Even with proper weight initialization, weights can become arbitrarily large or small during training, leading to signals being pushed out of the appropriate range. We can bring the signals back within range by employing one of the normalization techniques. While several methods exist (Weight normalization, Layer Normalization), the most commonly used is Batch Normalization. + +The concept of **batch normalization** involves taking into account all values across the minibatch and performing normalization (i.e., subtracting the mean and dividing by the standard deviation) based on these values. This is implemented as a network layer that applies normalization after the weights but before the activation function. Consequently, we are likely to achieve higher final accuracy and faster training. + +Here is the [original paper](https://arxiv.org/pdf/1502.03167.pdf) on batch normalization, along with an [explanation on Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) and [a useful introductory blog post](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (and the one [in Russian](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** is a fascinating technique that randomly removes a certain percentage of neurons during training. It is also implemented as a layer with a single parameter (the percentage of neurons to drop, typically between 10% and 50%), and during training, it zeroes out random elements of the input vector before passing it to the next layer. + +While this may sound unconventional, you can observe the impact of dropout on training an MNIST digit classifier in [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). It accelerates training and enables us to achieve higher accuracy in fewer training epochs. + +This phenomenon can be explained in various ways: + + * It can be viewed as a random perturbation to the model, which helps to escape local minima during optimization. + * It can also be seen as *implicit model averaging*, since during dropout, we are effectively training slightly different models. + +> *Some people suggest that when a person under the influence of alcohol attempts to learn something, they may remember it better the next day compared to a sober person, as the brain with some impaired neurons tries to adapt more effectively to grasp the meaning. We have never tested this theory ourselves.* + +## Preventing Overfitting + +A critical aspect of deep learning is the ability to prevent [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). While it may be tempting to employ a highly powerful neural network model, we should always balance the number of model parameters with the number of training samples. + +> Ensure you grasp the concept of [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) that we discussed earlier! + +Several strategies can help prevent overfitting: + + * Early stopping -- continuously monitor the error on the validation set and halt training when the validation error begins to rise. + * Explicit Weight Decay / Regularization -- adding an extra penalty to the loss function for high absolute weight values, preventing the model from producing highly unstable results. + * Model Averaging -- training multiple models and then averaging their results. This helps minimize variance. + * Dropout (Implicit Model Averaging) + +## Optimizers / Training Algorithms + +Another vital aspect of training is selecting a suitable training algorithm. While classical **gradient descent** is a reasonable option, it can sometimes be too slow or lead to other issues. + +In deep learning, we employ **Stochastic Gradient Descent** (SGD), which applies gradient descent to minibatches randomly selected from the training set. Weights are adjusted using the following formula: + +wt+1 = wt - η∇ℒ + +### Momentum + +In **momentum SGD**, we retain a portion of the gradient from previous steps. This is akin to moving with inertia; if we are struck from a different direction, our trajectory doesn't change instantly but retains some aspect of the original motion. Here, we introduce another vector v to represent the *speed*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt + vt+1 + +Here, the parameter γ indicates the degree to which we consider inertia: γ=0 corresponds to classical SGD; γ=1 represents a pure motion equation. + +### Adam, Adagrad, etc. + +Since in each layer we multiply signals by some matrix Wi, depending on ||Wi||, the gradient can either diminish and approach 0 or increase indefinitely. This encapsulates the essence of the Exploding/Vanishing Gradients problem. + +One solution to this issue is to use only the direction of the gradient in the equation and disregard the absolute value, i.e., + +wt+1 = wt - η(∇ℒ/||∇ℒ||), where ||∇ℒ|| = √∑(∇ℒ)2 + +This algorithm is known as **Adagrad**. Other algorithms that utilize the same concept include **RMSProp** and **Adam**. + +> **Adam** is regarded as a highly efficient algorithm for many applications, so if you're uncertain about which one to use, opt for Adam. + +### Gradient Clipping + +Gradient clipping extends the idea mentioned above. When ||∇ℒ|| ≤ θ, we consider the original gradient in weight optimization; when ||∇ℒ|| > θ, we divide the gradient by its norm. Here, θ is a parameter, and in most cases, we can set θ=1 or θ=10. + +### Learning Rate Decay + +The success of training often hinges on the learning rate parameter η. It is logical to assume that larger values of η lead to faster training, which is typically desirable at the beginning of the training process, while smaller values of η allow for fine-tuning the network later. Thus, in most cases, we aim to reduce η as training progresses. + +This can be achieved by multiplying η by a certain factor (e.g., 0.98) after each training epoch or by implementing a more complex **learning rate schedule**. + +## Various Network Architectures + +Choosing the right network architecture for your problem can be challenging. Typically, we would select an architecture that has proven effective for our specific task (or a similar one). Here is a [good overview](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) of neural network architectures for computer vision. + +> It is crucial to choose an architecture that is sufficiently powerful for the number of training samples available. Opting for an excessively powerful model can lead to [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +Another effective approach is to use an architecture that automatically adapts to the required complexity. To some extent, **ResNet** and **Inception** architectures are self-adjusting. [More on computer vision architectures](../07-ConvNets/CNN_Architectures.md). + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/it/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..d2730690 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# Clasificación de Mascotas de Oxford utilizando Aprendizaje por Transferencia + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Imagina que necesitas desarrollar una aplicación para una guardería de mascotas para catalogar todos los animales. Una de las grandes características de dicha aplicación sería descubrir automáticamente la raza a partir de una fotografía. En esta tarea, utilizaremos el aprendizaje por transferencia para clasificar imágenes de mascotas de la vida real del conjunto de datos de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## El Conjunto de Datos + +Usaremos el conjunto de datos original de mascotas [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), que contiene 35 razas diferentes de perros y gatos. + +Para descargar el conjunto de datos, utiliza este fragmento de código: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Iniciando el Notebook + +Comienza el laboratorio abriendo [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Conclusión + +El aprendizaje por transferencia y las redes preentrenadas nos permiten resolver problemas de clasificación de imágenes del mundo real de manera relativamente sencilla. Sin embargo, las redes preentrenadas funcionan bien con imágenes de un tipo similar, y si comenzamos a clasificar imágenes muy diferentes (por ejemplo, imágenes médicas), es probable que obtengamos resultados mucho peores. + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/it/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..96edce52 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# Autoencoders + +Cuando se entrena CNNs, uno de los problemas es que necesitamos una gran cantidad de datos etiquetados. En el caso de la clasificación de imágenes, debemos separar las imágenes en diferentes clases, lo que implica un esfuerzo manual. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Sin embargo, podríamos querer utilizar datos en bruto (sin etiquetar) para entrenar extractores de características de CNN, lo que se denomina **aprendizaje auto-supervisado**. En lugar de etiquetas, utilizaremos imágenes de entrenamiento como entrada y salida de la red. La idea principal de un **autoencoder** es que tendremos una **red de codificación** que convierte la imagen de entrada en un **espacio latente** (normalmente es solo un vector de menor tamaño), y luego la **red de decodificación**, cuyo objetivo es reconstruir la imagen original. + +> ✅ Un [autoencoder](https://wikipedia.org/wiki/Autoencoder) es "un tipo de red neuronal artificial utilizada para aprender codificaciones eficientes de datos no etiquetados." + +Dado que estamos entrenando un autoencoder para capturar la mayor cantidad de información posible de la imagen original para una reconstrucción precisa, la red intenta encontrar la mejor **inmersión** de las imágenes de entrada para capturar su significado. + +![Diagrama de Autoencoder](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.it.jpg) + +> Imagen del [blog de Keras](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Escenarios para usar Autoencoders + +Aunque reconstruir imágenes originales no parece útil por sí mismo, hay algunos escenarios donde los autoencoders son especialmente útiles: + +* **Reducir la dimensión de las imágenes para visualización** o **entrenar embeddings de imágenes**. Generalmente, los autoencoders ofrecen mejores resultados que PCA, porque tienen en cuenta la naturaleza espacial de las imágenes y las características jerárquicas. +* **Eliminación de ruido**, es decir, quitar el ruido de la imagen. Debido a que el ruido contiene mucha información innecesaria, el autoencoder no puede ajustarlo todo en un espacio latente relativamente pequeño, y por lo tanto solo captura la parte importante de la imagen. Al entrenar eliminadores de ruido, comenzamos con imágenes originales y utilizamos imágenes con ruido añadido artificialmente como entrada para el autoencoder. +* **Super-resolución**, aumentando la resolución de la imagen. Comenzamos con imágenes de alta resolución y utilizamos imágenes de menor resolución como entrada para el autoencoder. +* **Modelos generativos**. Una vez que entrenamos el autoencoder, la parte del decodificador puede usarse para crear nuevos objetos a partir de vectores latentes aleatorios. + +## Autoencoders Variacionales (VAE) + +Los autoencoders tradicionales reducen la dimensión de los datos de entrada de alguna manera, identificando las características importantes de las imágenes de entrada. Sin embargo, los vectores latentes a menudo no tienen mucho sentido. En otras palabras, tomando como ejemplo el conjunto de datos MNIST, identificar qué dígitos corresponden a diferentes vectores latentes no es una tarea fácil, ya que vectores latentes cercanos no necesariamente corresponden a los mismos dígitos. + +Por otro lado, para entrenar modelos *generativos*, es mejor tener cierta comprensión del espacio latente. Esta idea nos lleva a los **autoencoders variacionales** (VAE). + +El VAE es el autoencoder que aprende a predecir la *distribución estadística* de los parámetros latentes, denominada **distribución latente**. Por ejemplo, podemos querer que los vectores latentes se distribuyan normalmente con una media zmean y una desviación estándar zsigma (tanto la media como la desviación estándar son vectores de alguna dimensionalidad d). El codificador en el VAE aprende a predecir esos parámetros, y luego el decodificador toma un vector aleatorio de esta distribución para reconstruir el objeto. + +Para resumir: + + * Desde el vector de entrada, predecimos `z_mean` y `z_log_sigma` (en lugar de predecir la desviación estándar en sí, predecimos su logaritmo) + * Muestreamos un vector `sample` de la distribución N(zmean,exp(zlog\_sigma)) + * El decodificador intenta decodificar la imagen original utilizando `sample` como vector de entrada + + + +> Imagen de [este post del blog](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) de Isaak Dykeman + +Los autoencoders variacionales utilizan una función de pérdida compleja que consiste en dos partes: + +* **Pérdida de reconstrucción** es la función de pérdida que muestra cuán cerca está una imagen reconstruida del objetivo (puede ser el Error Cuadrático Medio, o MSE). Es la misma función de pérdida que en los autoencoders normales. +* **Pérdida KL**, que asegura que las distribuciones de variables latentes se mantengan cerca de la distribución normal. Se basa en la noción de [divergencia de Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - una métrica para estimar cuán similares son dos distribuciones estadísticas. + +Una ventaja importante de los VAE es que nos permiten generar nuevas imágenes de manera relativamente fácil, porque sabemos de qué distribución muestrear vectores latentes. Por ejemplo, si entrenamos un VAE con un vector latente 2D en MNIST, podemos variar los componentes del vector latente para obtener diferentes dígitos: + +vaemnist + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +Observa cómo las imágenes se fusionan entre sí, a medida que comenzamos a obtener vectores latentes de diferentes porciones del espacio de parámetros latentes. También podemos visualizar este espacio en 2D: + +vaemnist cluster + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Ejercicios: Autoencoders + +Aprende más sobre autoencoders en estos cuadernos correspondientes: + +* [Autoencoders en TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoders en PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Propiedades de los Autoencoders + +* **Específicos para datos** - solo funcionan bien con el tipo de imágenes en las que han sido entrenados. Por ejemplo, si entrenamos una red de super-resolución en flores, no funcionará bien en retratos. Esto se debe a que la red puede producir una imagen de mayor resolución tomando detalles finos de las características aprendidas del conjunto de datos de entrenamiento. +* **Con pérdida** - la imagen reconstruida no es la misma que la imagen original. La naturaleza de la pérdida está definida por la *función de pérdida* utilizada durante el entrenamiento. +* Funciona con **datos no etiquetados**. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Conclusión + +En esta lección, aprendiste sobre los diversos tipos de autoencoders disponibles para el científico de IA. Aprendiste cómo construirlos y cómo usarlos para reconstruir imágenes. También aprendiste sobre el VAE y cómo utilizarlo para generar nuevas imágenes. + +## 🚀 Desafío + +En esta lección, aprendiste sobre el uso de autoencoders para imágenes. ¡Pero también pueden ser utilizados para música! Echa un vistazo al proyecto [MusicVAE](https://magenta.tensorflow.org/music-vae) del proyecto Magenta, que utiliza autoencoders para aprender a reconstruir música. Realiza algunos [experimentos](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) con esta biblioteca para ver qué puedes crear. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Revisión y Autoestudio + +Para referencia, lee más sobre autoencoders en estos recursos: + +* [Construyendo Autoencoders en Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Publicación en el blog sobre NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Autoencoders Variacionales Explicados](https://kvfrans.com/variational-autoencoders-explained/) +* [Autoencoders Variacionales Condicionales](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Asignación + +Al final de [este cuaderno usando TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), encontrarás una 'tarea' - utiliza esto como tu asignación. + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/10-GANs/README.md b/translations/it/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..fe023211 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# Redes Generativas Antagónicas + +En la sección anterior, aprendimos sobre **modelos generativos**: modelos que pueden generar nuevas imágenes similares a las que están en el conjunto de datos de entrenamiento. VAE fue un buen ejemplo de un modelo generativo. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Sin embargo, si intentamos generar algo realmente significativo, como una pintura a una resolución razonable, con VAE, veremos que el entrenamiento no converge bien. Para este caso de uso, debemos aprender sobre otra arquitectura específicamente dirigida a modelos generativos: **Redes Generativas Antagónicas**, o GANs. + +La idea principal de una GAN es tener dos redes neuronales que se entrenarán entre sí: + + + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Un poco de vocabulario: +> * **Generador** es una red que toma un vector aleatorio y produce la imagen como resultado. +> * **Discriminador** es una red que toma una imagen y debe determinar si es una imagen real (del conjunto de datos de entrenamiento) o si fue generada por un generador. Es esencialmente un clasificador de imágenes. + +### Discriminador + +La arquitectura del discriminador no difiere de una red de clasificación de imágenes ordinaria. En el caso más simple, puede ser un clasificador totalmente conectado, pero lo más probable es que sea una [red convolucional](../07-ConvNets/README.md). + +> ✅ Una GAN basada en redes convolucionales se llama [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Un discriminador CNN consta de las siguientes capas: varias convoluciones+poolings (con tamaño espacial decreciente) y, una o más capas totalmente conectadas para obtener un "vector de características", el clasificador binario final. + +> ✅ Un 'pooling' en este contexto es una técnica que reduce el tamaño de la imagen. "Las capas de pooling reducen las dimensiones de los datos combinando las salidas de grupos de neuronas en una capa en una sola neurona en la siguiente capa." - [fuente](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generador + +Un generador es un poco más complicado. Se puede considerar como un discriminador invertido. Comenzando desde un vector latente (en lugar de un vector de características), tiene una capa totalmente conectada para convertirlo en el tamaño/forma requerida, seguida de deconvoluciones+escalado. Esto es similar a la parte *decodificadora* de un [autoencoder](../09-Autoencoders/README.md). + +> ✅ Dado que la capa de convolución se implementa como un filtro lineal que recorre la imagen, la deconvolución es esencialmente similar a la convolución y se puede implementar utilizando la misma lógica de capa. + + + +> Imagen de [Dmitry Soshnikov](http://soshnikov.com) + +### Entrenando la GAN + +Las GANs se llaman **antagónicas** porque hay una competencia constante entre el generador y el discriminador. Durante esta competencia, tanto el generador como el discriminador mejoran, por lo que la red aprende a producir imágenes cada vez mejores. + +El entrenamiento ocurre en dos etapas: + +* **Entrenamiento del discriminador**. Esta tarea es bastante directa: generamos un lote de imágenes por el generador, etiquetándolas como 0, que representa una imagen falsa, y tomamos un lote de imágenes del conjunto de datos de entrada (con etiqueta 1, imagen real). Obtenemos alguna *pérdida del discriminador* y realizamos retropropagación. +* **Entrenamiento del generador**. Esto es un poco más complicado, porque no conocemos la salida esperada para el generador directamente. Tomamos toda la red GAN que consiste en un generador seguido de un discriminador, le proporcionamos algunos vectores aleatorios y esperamos que el resultado sea 1 (correspondiente a imágenes reales). Luego congelamos los parámetros del discriminador (no queremos que se entrene en este paso) y realizamos la retropropagación. + +Durante este proceso, tanto las pérdidas del generador como las del discriminador no disminuyen significativamente. En la situación ideal, deberían oscilar, correspondiendo a ambas redes mejorando su rendimiento. + +## ✍️ Ejercicios: GANs + +* [Cuaderno de GAN en TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Cuaderno de GAN en PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problemas con el entrenamiento de GAN + +Se sabe que las GANs son especialmente difíciles de entrenar. Aquí hay algunos problemas: + +* **Colapso de modo**. Con este término nos referimos a que el generador aprende a producir una imagen exitosa que engaña al discriminador, y no una variedad de imágenes diferentes. +* **Sensibilidad a los hiperparámetros**. A menudo se puede observar que una GAN no converge en absoluto, y luego de repente disminuye en la tasa de aprendizaje, lo que lleva a la convergencia. +* Mantener un **equilibrio** entre el generador y el discriminador. En muchos casos, la pérdida del discriminador puede caer a cero relativamente rápido, lo que resulta en que el generador no pueda entrenarse más. Para superar esto, podemos intentar establecer diferentes tasas de aprendizaje para el generador y el discriminador, o saltar el entrenamiento del discriminador si la pérdida ya es demasiado baja. +* Entrenamiento para **alta resolución**. Reflejando el mismo problema que con los autoencoders, este problema se desencadena porque reconstruir demasiadas capas de la red convolucional conduce a artefactos. Este problema se suele resolver con el llamado **crecimiento progresivo**, cuando primero se entrenan unas pocas capas en imágenes de baja resolución, y luego se "desbloquean" o añaden capas. Otra solución sería agregar conexiones adicionales entre capas y entrenar varias resoluciones a la vez: consulte este [artículo sobre Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048) para más detalles. + +## Transferencia de Estilo + +Las GANs son una excelente manera de generar imágenes artísticas. Otra técnica interesante es la llamada **transferencia de estilo**, que toma una **imagen de contenido** y la redibuja en un estilo diferente, aplicando filtros de una **imagen de estilo**. + +La forma en que funciona es la siguiente: +* Comenzamos con una imagen de ruido aleatorio (o con una imagen de contenido, pero para facilitar la comprensión es más fácil comenzar desde ruido aleatorio). +* Nuestro objetivo sería crear una imagen que esté cerca tanto de la imagen de contenido como de la imagen de estilo. Esto se determinaría mediante dos funciones de pérdida: + - **Pérdida de contenido** se calcula en función de las características extraídas por la CNN en algunas capas de la imagen actual y la imagen de contenido. + - **Pérdida de estilo** se calcula entre la imagen actual y la imagen de estilo de manera ingeniosa utilizando matrices de Gram (más detalles en el [cuaderno de ejemplo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Para hacer que la imagen sea más suave y eliminar el ruido, también introducimos **pérdida de variación**, que calcula la distancia promedio entre píxeles vecinos. +* El bucle principal de optimización ajusta la imagen actual utilizando descenso de gradiente (o algún otro algoritmo de optimización) para minimizar la pérdida total, que es una suma ponderada de las tres pérdidas. + +## ✍️ Ejemplo: [Transferencia de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Conclusión + +En esta lección, aprendiste sobre las GANs y cómo entrenarlas. También aprendiste sobre los desafíos especiales que este tipo de red neuronal puede enfrentar, y algunas estrategias sobre cómo superarlos. + +## 🚀 Desafío + +Revisa el [cuaderno de Transferencia de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) utilizando tus propias imágenes. + +## Revisión y Autoestudio + +Para referencia, lee más sobre las GANs en estos recursos: + +* Marco Pasini, [10 Lecciones que Aprendí Entrenando GANs durante un Año](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), una arquitectura GAN *de facto* a considerar. +* [Creando Arte Generativo usando GANs en Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Asignación + +Revisa uno de los dos cuadernos asociados a esta lección y vuelve a entrenar la GAN con tus propias imágenes. ¿Qué puedes crear? + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/it/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..26e73f83 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,69 @@ +YOLO es un algoritmo en tiempo real de una sola pasada. La idea principal es la siguiente: + +* La imagen se divide en regiones de $S\times S$. +* Para cada región, **CNN** predice $n$ objetos posibles, las coordenadas del *bounding box* y la *confianza* = *probabilidad* * IoU. + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.it.png) + +### SSD - Single Shot MultiBox Detector + +SSD es otro método de detección de objetos en una sola pasada. La idea es similar a YOLO, pero en lugar de dividir la imagen en regiones, se utiliza una serie de capas de detección que producen predicciones de *bounding boxes* y clases en diferentes escalas. + +![SSD](../../../../../translated_images/ssd.8f409ceb7ad470415f8995994dd89282b57541bff09ecde650902217c84f4c0d.it.png) + +> *Imagen de [Este artículo](https://arxiv.org/pdf/1512.02325.pdf)* + +### RetinaNet + +RetinaNet es un enfoque que combina la velocidad de los métodos de una sola pasada con la precisión de los métodos de propuesta de región. Utiliza una función de pérdida llamada *Focal Loss* para abordar el problema del desbalanceo de clases en la detección de objetos. + +![RetinaNet](../../../../../translated_images/retinanet.cfd3ebd2e5c63692a1c543b868134b66e4b0789230c22679b07eebd0e69d7cbc.it.png) + +> *Imagen de [Este artículo](https://arxiv.org/pdf/1708.02002.pdf)* + +## Conclusión + +La detección de objetos es un campo emocionante en la visión por computadora que ha visto un progreso significativo en los últimos años. Desde métodos simples y naïve hasta enfoques avanzados como YOLO, SSD y RetinaNet, hay una variedad de técnicas disponibles para abordar diferentes desafíos en la detección de objetos. A medida que la tecnología avanza, podemos esperar ver aún más innovaciones en este campo. +> Image from [official paper](https://arxiv.org/abs/1506.02640) + +### Other Algorithms + +* 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) + +## ✍️ Exercises: Object Detection + +Continue your learning with the following notebook: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Conclusion + +In this lesson, you explored the different methods available for object detection! + +## 🚀 Challenge + +Go through these articles and notebooks on YOLO and try them out for yourself: + +* [Good blog post](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) discussing YOLO + * [Official site](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras implementation](https://github.com/experiencor/keras-yolo2), [step-by-step notebook](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras implementation](https://github.com/experiencor/keras-yolo2), [step-by-step notebook](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [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) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/it/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..4ea63af8 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# Detección de Cabezas utilizando el Conjunto de Datos de Hollywood + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Contar el número de personas en la transmisión de cámaras de vigilancia es una tarea importante que nos permitirá estimar el número de visitantes en tiendas, horas pico en restaurantes, etc. Para abordar esta tarea, necesitamos ser capaces de detectar cabezas humanas desde diferentes ángulos. Para entrenar un modelo de detección de objetos que identifique cabezas humanas, podemos utilizar el [Conjunto de Datos de Hollywood](https://www.di.ens.fr/willow/research/headdetection/). + +## El Conjunto de Datos + +El [Conjunto de Datos de Hollywood](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contiene 369,846 cabezas humanas anotadas en 224,740 fotogramas de películas de Hollywood. Se proporciona en formato [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), donde para cada imagen también hay un archivo de descripción en XML que se ve así: + +```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 + + +``` + +En este conjunto de datos, solo hay una clase de objetos `head`, y para cada cabeza, obtienes las coordenadas de la caja delimitadora. Puedes analizar XML utilizando bibliotecas de Python, o usar [esta biblioteca](https://pypi.org/project/pascal-voc/) para trabajar directamente con el formato PASCAL VOC. + +## Entrenamiento de Detección de Objetos + +Puedes entrenar un modelo de detección de objetos utilizando una de las siguientes opciones: + +* Usando [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) y su API de Python para entrenar el modelo programáticamente en la nube. La visión personalizada no podrá utilizar más de unas pocas cientos de imágenes para entrenar el modelo, por lo que es posible que debas limitar el conjunto de datos. +* Usando el ejemplo del [tutorial de Keras](https://keras.io/examples/vision/retinanet/) para entrenar el modelo RetinaNet. +* Usando el módulo incorporado [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) en torchvision. + +## Conclusión + +La detección de objetos es una tarea que se requiere frecuentemente en la industria. Aunque existen algunos servicios que pueden utilizarse para realizar la detección de objetos (como [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), es importante entender cómo funciona la detección de objetos y ser capaz de entrenar tus propios modelos. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/it/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..0a6240e8 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# Segmentación + +Anteriormente aprendimos sobre la Detección de Objetos, que nos permite localizar objetos en la imagen prediciendo sus *cajas delimitadoras*. Sin embargo, para algunas tareas no solo necesitamos cajas delimitadoras, sino también una localización de objetos más precisa. Esta tarea se llama **segmentación**. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +La segmentación puede verse como **clasificación de píxeles**, donde para **cada** píxel de la imagen debemos predecir su clase (*fondo* siendo una de las clases). Hay dos algoritmos principales de segmentación: + +* La **segmentación semántica** solo indica la clase del píxel y no hace distinción entre diferentes objetos de la misma clase. +* La **segmentación por instancias** divide las clases en diferentes instancias. + +Por ejemplo, en la segmentación por instancias, estas ovejas son objetos diferentes, pero en la segmentación semántica todas las ovejas están representadas por una sola clase. + + + +> Imagen de [esta publicación en el blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Existen diferentes arquitecturas neuronales para la segmentación, pero todas tienen la misma estructura. De alguna manera, es similar al autoencoder que aprendiste anteriormente, pero en lugar de descomponer la imagen original, nuestro objetivo es descomponer una **máscara**. Así, una red de segmentación tiene las siguientes partes: + +* **Codificador** extrae características de la imagen de entrada. +* **Decodificador** transforma esas características en la **imagen de máscara**, con el mismo tamaño y número de canales correspondiente al número de clases. + + + +> Imagen de [esta publicación](https://arxiv.org/pdf/2001.05566.pdf) + +Debemos mencionar especialmente la función de pérdida que se utiliza para la segmentación. Al usar autoencoders clásicos, necesitamos medir la similitud entre dos imágenes, y podemos usar el error cuadrático medio (MSE) para hacerlo. En la segmentación, cada píxel en la imagen de máscara objetivo representa el número de clase (codificado en one-hot a lo largo de la tercera dimensión), por lo que necesitamos usar funciones de pérdida específicas para la clasificación: pérdida de entropía cruzada, promediada sobre todos los píxeles. Si la máscara es binaria, se utiliza **pérdida de entropía cruzada binaria** (BCE). + +> ✅ La codificación one-hot es una forma de codificar una etiqueta de clase en un vector de longitud igual al número de clases. Echa un vistazo a [este artículo](https://datagy.io/sklearn-one-hot-encode/) sobre esta técnica. + +## Segmentación para Imágenes Médicas + +En esta lección, veremos la segmentación en acción entrenando la red para reconocer nevos humanos (también conocidos como lunares) en imágenes médicas. Usaremos la Base de Datos PH2 de imágenes de dermatoscopia como fuente de imágenes. Este conjunto de datos contiene 200 imágenes de tres clases: nevus típico, nevus atípico y melanoma. Todas las imágenes también contienen una **máscara** correspondiente que delimita el nevus. + +> ✅ Esta técnica es particularmente adecuada para este tipo de imágenes médicas, pero ¿qué otras aplicaciones en el mundo real podrías imaginar? + +navi + +> Imagen de la Base de Datos PH2 + +Entrenaremos un modelo para segmentar cualquier nevus de su fondo. + +## ✍️ Ejercicios: Segmentación Semántica + +Abre los cuadernos a continuación para aprender más sobre diferentes arquitecturas de segmentación semántica, practicar trabajando con ellas y verlas en acción. + +* [Segmentación Semántica Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Segmentación Semántica TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Conclusión + +La segmentación es una técnica muy poderosa para la clasificación de imágenes, que va más allá de las cajas delimitadoras hacia la clasificación a nivel de píxel. Es una técnica utilizada en imágenes médicas, entre otras aplicaciones. + +## 🚀 Desafío + +La segmentación del cuerpo es solo una de las tareas comunes que podemos realizar con imágenes de personas. Otras tareas importantes incluyen la **detección de esqueletos** y la **detección de poses**. Prueba la biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver cómo se puede utilizar la detección de poses. + +## Revisión y Autoestudio + +Este [artículo de Wikipedia](https://wikipedia.org/wiki/Image_segmentation) ofrece una buena visión general de las diversas aplicaciones de esta técnica. Aprende más por tu cuenta sobre los subdominios de la segmentación por instancias y la segmentación panóptica en este campo de investigación. + +## [Tarea](lab/README.md) + +En este laboratorio, intenta **segmentación del cuerpo humano** utilizando el [Conjunto de Datos de Segmentación del Cuerpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/it/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..2476f32f --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# Segmentación del Cuerpo Humano + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +En la producción de video, por ejemplo, en pronósticos del tiempo, a menudo necesitamos recortar una imagen humana de la cámara y colocarla sobre otro metraje. Esto se hace típicamente utilizando técnicas de **chroma key**, cuando una persona es filmada frente a un fondo de color uniforme, que luego se elimina. En este laboratorio, entrenaremos un modelo de red neuronal para recortar la silueta humana. + +## El Conjunto de Datos + +Utilizaremos el [Conjunto de Datos de Segmentación de Cuerpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de Kaggle. Descarga el conjunto de datos manualmente desde Kaggle. + +## Iniciando el Cuaderno + +Comienza el laboratorio abriendo [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Conclusiones + +La segmentación del cuerpo es solo una de las tareas comunes que podemos realizar con imágenes de personas. Otras tareas importantes incluyen la **detección de esqueletos** y la **detección de poses**. Consulta la biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver cómo se pueden implementar esas tareas. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/4-ComputerVision/README.md b/translations/it/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..0ce9fb24 --- /dev/null +++ b/translations/it/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# Computer Vision + +![Résumé du contenu de la vision par ordinateur dans un doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.it.png) + +Dans cette section, nous allons apprendre sur : + +* [Introduction à la vision par ordinateur et OpenCV](06-IntroCV/README.md) +* [Réseaux de neurones convolutionnels](07-ConvNets/README.md) +* [Réseaux pré-entraînés et apprentissage par transfert](08-TransferLearning/README.md) +* [Autoencodeurs](09-Autoencoders/README.md) +* [Réseaux antagonistes génératifs](10-GANs/README.md) +* [Détection d'objets](11-ObjectDetection/README.md) +* [Segmentation sémantique](12-Segmentation/README.md) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/13-TextRep/README.md b/translations/it/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..40b7132d --- /dev/null +++ b/translations/it/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# Representación de Texto como Tensores + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Clasificación de Texto + +A lo largo de la primera parte de esta sección, nos enfocaremos en la tarea de **clasificación de texto**. Utilizaremos el conjunto de datos [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), que contiene artículos de noticias como los siguientes: + +* Categoría: Sci/Tech +* Título: La empresa de Ky. gana una subvención para estudiar péptidos (AP) +* Cuerpo: AP - Una empresa fundada por un investigador en química de la Universidad de Louisville ganó una subvención para desarrollar... + +Nuestro objetivo será clasificar el artículo de noticias en una de las categorías basándonos en el texto. + +## Representación de texto + +Si queremos resolver tareas de Procesamiento de Lenguaje Natural (NLP) con redes neuronales, necesitamos alguna forma de representar el texto como tensores. Las computadoras ya representan los caracteres textuales como números que se mapean a fuentes en tu pantalla utilizando codificaciones como ASCII o UTF-8. + +Imagen que muestra un diagrama que mapea un carácter a una representación ASCII y binaria + +> [Fuente de la imagen](https://www.seobility.net/en/wiki/ASCII) + +Como humanos, entendemos lo que cada letra **representa** y cómo todos los caracteres se combinan para formar las palabras de una oración. Sin embargo, las computadoras por sí solas no tienen tal comprensión, y la red neuronal tiene que aprender el significado durante el entrenamiento. + +Por lo tanto, podemos usar diferentes enfoques al representar texto: + +* **Representación a nivel de carácter**, cuando representamos el texto tratando cada carácter como un número. Dado que tenemos *C* caracteres diferentes en nuestro corpus de texto, la palabra *Hola* se representaría mediante un tensor de 5x*C*. Cada letra correspondería a una columna de tensor en codificación one-hot. +* **Representación a nivel de palabra**, en la que creamos un **vocabulario** de todas las palabras en nuestro texto, y luego representamos las palabras utilizando codificación one-hot. Este enfoque es algo mejor, porque cada letra por sí sola no tiene mucho significado, y así al usar conceptos semánticos de mayor nivel - palabras - simplificamos la tarea para la red neuronal. Sin embargo, dado el gran tamaño del diccionario, necesitamos lidiar con tensores dispersos de alta dimensión. + +Independientemente de la representación, primero necesitamos convertir el texto en una secuencia de **tokens**, siendo un token ya sea un carácter, una palabra, o a veces incluso parte de una palabra. Luego, convertimos el token en un número, típicamente usando un **vocabulario**, y este número puede ser alimentado a una red neuronal usando codificación one-hot. + +## N-Grams + +En el lenguaje natural, el significado preciso de las palabras solo puede determinarse en contexto. Por ejemplo, los significados de *red neuronal* y *red de pesca* son completamente diferentes. Una de las formas de tener esto en cuenta es construir nuestro modelo en pares de palabras, considerando los pares de palabras como tokens de vocabulario separados. De esta manera, la oración *Me gusta ir a pescar* se representará mediante la siguiente secuencia de tokens: *Me gusta*, *gusta ir*, *ir a*, *a pescar*. El problema con este enfoque es que el tamaño del diccionario crece significativamente, y combinaciones como *ir a pescar* y *ir de compras* se presentan con diferentes tokens, que no comparten ninguna similitud semántica a pesar de tener el mismo verbo. + +En algunos casos, también podemos considerar usar tri-gramas -- combinaciones de tres palabras --. Por lo tanto, este enfoque se conoce a menudo como **n-grams**. También tiene sentido usar n-grams con representación a nivel de carácter, en cuyo caso los n-grams corresponderán aproximadamente a diferentes sílabas. + +## Bolsa de Palabras y TF/IDF + +Al resolver tareas como la clasificación de texto, necesitamos ser capaces de representar el texto mediante un vector de tamaño fijo, que utilizaremos como entrada para el clasificador denso final. Una de las formas más simples de hacerlo es combinar todas las representaciones individuales de palabras, por ejemplo, sumándolas. Si sumamos las codificaciones one-hot de cada palabra, terminaremos con un vector de frecuencias, que muestra cuántas veces aparece cada palabra dentro del texto. Tal representación de texto se llama **bolsa de palabras** (BoW). + + + +> Imagen del autor + +Un BoW representa esencialmente qué palabras aparecen en el texto y en qué cantidades, lo que puede ser una buena indicación de sobre qué trata el texto. Por ejemplo, un artículo de noticias sobre política probablemente contendrá palabras como *presidente* y *país*, mientras que una publicación científica tendría algo como *colisionador*, *descubierto*, etc. Por lo tanto, las frecuencias de palabras pueden ser en muchos casos un buen indicador del contenido del texto. + +El problema con BoW es que ciertas palabras comunes, como *y*, *es*, etc., aparecen en la mayoría de los textos, y tienen las frecuencias más altas, ocultando las palabras que realmente son importantes. Podemos disminuir la importancia de esas palabras al tener en cuenta la frecuencia con la que ocurren las palabras en toda la colección de documentos. Esta es la idea principal detrás del enfoque TF/IDF, que se cubre con más detalle en los cuadernos adjuntos a esta lección. + +Sin embargo, ninguno de estos enfoques puede tener en cuenta completamente la **semántica** del texto. Necesitamos modelos de redes neuronales más poderosos para hacer esto, que discutiremos más adelante en esta sección. + +## ✍️ Ejercicios: Representación de Texto + +Continúa tu aprendizaje en los siguientes cuadernos: + +* [Representación de Texto con PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Representación de Texto con TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Conclusión + +Hasta ahora, hemos estudiado técnicas que pueden agregar peso de frecuencia a diferentes palabras. Sin embargo, no son capaces de representar el significado o el orden. Como dijo el famoso lingüista J. R. Firth en 1935, "El significado completo de una palabra siempre es contextual, y ningún estudio del significado separado del contexto puede tomarse en serio." Aprenderemos más adelante en el curso cómo capturar información contextual del texto utilizando modelado de lenguaje. + +## 🚀 Desafío + +Intenta algunos otros ejercicios utilizando bolsa de palabras y diferentes modelos de datos. Podrías inspirarte en esta [competencia en Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Revisión y Autoestudio + +Practica tus habilidades con técnicas de embeddings de texto y bolsa de palabras en [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + +## [Asignación: Cuadernos](assignment.md) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/13-TextRep/assignment.md b/translations/it/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..4dd93c2c --- /dev/null +++ b/translations/it/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# Tarea: Cuadernos + +Utilizando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente con tu propio conjunto de datos, tal vez uno de Kaggle, utilizado con la debida atribución. Reescribe el cuaderno para resaltar tus propios hallazgos. Prueba algunos conjuntos de datos innovadores que podrían resultar sorprendentes, como [este sobre avistamientos de OVNIs](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) de NUFORC. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/14-Embeddings/README.md b/translations/it/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..a4473e79 --- /dev/null +++ b/translations/it/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# Embeddings + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Cuando entrenamos clasificadores basados en BoW o TF/IDF, trabajamos con vectores de bolsa de palabras de alta dimensión con una longitud de `vocab_size`, y estábamos convirtiendo explícitamente vectores de representación posicional de baja dimensión en una representación dispersa de one-hot. Sin embargo, esta representación one-hot no es eficiente en términos de memoria. Además, cada palabra se trata de manera independiente, es decir, los vectores codificados one-hot no expresan ninguna similitud semántica entre las palabras. + +La idea de **embedding** es representar palabras mediante vectores densos de menor dimensión, que de alguna manera reflejan el significado semántico de una palabra. Más adelante discutiremos cómo construir embeddings significativos, pero por ahora pensemos en los embeddings como una forma de reducir la dimensionalidad de un vector de palabras. + +Así que, la capa de embedding tomaría una palabra como entrada y produciría un vector de salida de tamaño especificado `embedding_size`. En cierto sentido, es muy similar a una capa `Linear`, pero en lugar de tomar un vector codificado one-hot, podrá tomar un número de palabra como entrada, lo que nos permite evitar la creación de grandes vectores codificados one-hot. + +Al usar una capa de embedding como primera capa en nuestra red de clasificador, podemos cambiar de un modelo de bolsa de palabras a un modelo de **embedding bag**, donde primero convertimos cada palabra en nuestro texto en su correspondiente embedding y luego calculamos alguna función agregada sobre todos esos embeddings, como `sum`, `average` o `max`. + +![Imagen que muestra un clasificador de embedding para cinco palabras en secuencia.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.it.png) + +> Imagen del autor + +## ✍️ Ejercicios: Embeddings + +Continúa tu aprendizaje en los siguientes cuadernos: +* [Embeddings con PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Embeddings TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Embeddings Semánticos: Word2Vec + +Mientras que la capa de embedding aprendió a mapear palabras a representaciones vectoriales, esta representación no necesariamente tenía mucho significado semántico. Sería ideal aprender una representación vectorial de tal manera que palabras similares o sinónimos correspondan a vectores que están cerca unos de otros en términos de alguna distancia vectorial (por ejemplo, distancia euclidiana). + +Para lograrlo, necesitamos preentrenar nuestro modelo de embedding en una gran colección de texto de una manera específica. Una forma de entrenar embeddings semánticos se llama [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Se basa en dos arquitecturas principales que se utilizan para producir una representación distribuida de palabras: + + - **Bolsa de palabras continua** (CBoW) — en esta arquitectura, entrenamos el modelo para predecir una palabra a partir del contexto circundante. Dado el ngrama $(W_{-2},W_{-1},W_0,W_1,W_2)$, el objetivo del modelo es predecir $W_0$ a partir de $(W_{-2},W_{-1},W_1,W_2)$. + - **Skip-gram continuo** es lo opuesto a CBoW. El modelo utiliza una ventana de palabras de contexto circundante para predecir la palabra actual. + +CBoW es más rápido, mientras que skip-gram es más lento, pero hace un mejor trabajo representando palabras poco frecuentes. + +![Imagen que muestra ambos algoritmos CBoW y Skip-Gram para convertir palabras en vectores.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.it.png) + +> Imagen de [este artículo](https://arxiv.org/pdf/1301.3781.pdf) + +Los embeddings preentrenados de Word2Vec (así como otros modelos similares, como GloVe) también se pueden usar en lugar de la capa de embedding en redes neuronales. Sin embargo, necesitamos lidiar con los vocabularios, porque el vocabulario utilizado para preentrenar Word2Vec/GloVe probablemente difiera del vocabulario en nuestro corpus de texto. Echa un vistazo a los cuadernos anteriores para ver cómo se puede resolver este problema. + +## Embeddings Contextuales + +Una limitación clave de las representaciones de embedding preentrenadas tradicionales como Word2Vec es el problema de la desambiguación del sentido de la palabra. Aunque los embeddings preentrenados pueden capturar parte del significado de las palabras en contexto, cada posible significado de una palabra se codifica en el mismo embedding. Esto puede causar problemas en modelos posteriores, ya que muchas palabras, como la palabra 'play', tienen diferentes significados dependiendo del contexto en el que se utilizan. + +Por ejemplo, la palabra 'play' en estas dos oraciones diferentes tiene un significado bastante distinto: + +- Fui a una **obra** en el teatro. +- John quiere **jugar** con sus amigos. + +Los embeddings preentrenados anteriores representan ambos significados de la palabra 'play' en el mismo embedding. Para superar esta limitación, necesitamos construir embeddings basados en un **modelo de lenguaje**, que se entrena en un gran corpus de texto y *sabe* cómo se pueden combinar las palabras en diferentes contextos. Discutir los embeddings contextuales está fuera del alcance de este tutorial, pero volveremos a ellos al hablar sobre modelos de lenguaje más adelante en el curso. + +## Conclusión + +En esta lección, descubriste cómo construir y usar capas de embedding en TensorFlow y Pytorch para reflejar mejor los significados semánticos de las palabras. + +## 🚀 Desafío + +Word2Vec se ha utilizado para algunas aplicaciones interesantes, incluyendo la generación de letras de canciones y poesía. Echa un vistazo a [este artículo](https://www.politetype.com/blog/word2vec-color-poems) que explica cómo el autor utilizó Word2Vec para generar poesía. También mira [este video de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) para descubrir una explicación diferente de esta técnica. Luego intenta aplicar estas técnicas a tu propio corpus de texto, quizás obtenido de Kaggle. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Revisión y Autoestudio + +Lee este artículo sobre Word2Vec: [Estimación Eficiente de Representaciones de Palabras en Espacio Vectorial](https://arxiv.org/pdf/1301.3781.pdf) + +## [Asignación: Cuadernos](assignment.md) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/14-Embeddings/assignment.md b/translations/it/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..081ba80e --- /dev/null +++ b/translations/it/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# Tarea: Cuadernos + +Usando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, quizás uno de Kaggle, asegurándote de dar la atribución correspondiente. Reescribe el cuaderno para resaltar tus propios hallazgos. Intenta con un tipo diferente de conjunto de datos y documenta tus descubrimientos, utilizando textos como [estas letras de los Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de malentendidos o interpretaciones erróneas que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/15-LanguageModeling/README.md b/translations/it/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..d9a68b66 --- /dev/null +++ b/translations/it/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# Modelado de Lenguaje + +Las incrustaciones semánticas, como Word2Vec y GloVe, son en realidad un primer paso hacia el **modelado de lenguaje**: la creación de modelos que de alguna manera *entienden* (o *representan*) la naturaleza del lenguaje. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +La idea principal detrás del modelado de lenguaje es entrenarlos en conjuntos de datos no etiquetados de manera no supervisada. Esto es importante porque tenemos enormes cantidades de texto no etiquetado disponible, mientras que la cantidad de texto etiquetado siempre estará limitada por el esfuerzo que podemos dedicar a la etiquetación. A menudo, podemos construir modelos de lenguaje que pueden **predecir palabras faltantes** en el texto, porque es fácil enmascarar una palabra aleatoria en el texto y usarla como muestra de entrenamiento. + +## Entrenamiento de Incrustaciones + +En nuestros ejemplos anteriores, utilizamos incrustaciones semánticas preentrenadas, pero es interesante ver cómo se pueden entrenar esas incrustaciones. Hay varias ideas posibles que se pueden utilizar: + +* Modelado de lenguaje **N-Gram**, cuando predecimos un token al observar N tokens anteriores (N-gram) +* **Continuous Bag-of-Words** (CBoW), cuando predecimos el token del medio $W_0$ en una secuencia de tokens $W_{-N}$, ..., $W_N$. +* **Skip-gram**, donde predecimos un conjunto de tokens vecinos {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partir del token del medio $W_0$. + +![imagen del artículo sobre la conversión de palabras a vectores](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.it.png) + +> Imagen de [este artículo](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Notebooks de Ejemplo: Entrenando el modelo CBoW + +Continúa tu aprendizaje en los siguientes notebooks: + +* [Entrenando CBoW Word2Vec con TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Entrenando CBoW Word2Vec con PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Conclusión + +En la lección anterior hemos visto que las incrustaciones de palabras funcionan como por arte de magia. Ahora sabemos que entrenar incrustaciones de palabras no es una tarea muy compleja, y deberíamos ser capaces de entrenar nuestras propias incrustaciones de palabras para texto específico de un dominio si es necesario. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Revisión y Autoestudio + +* [Tutorial oficial de PyTorch sobre Modelado de Lenguaje](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial oficial de TensorFlow sobre el entrenamiento del modelo Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* Usar el marco **gensim** para entrenar las incrustaciones más comúnmente utilizadas en unas pocas líneas de código se describe [en esta documentación](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Tarea: Entrenar el Modelo Skip-Gram](lab/README.md) + +En el laboratorio, te desafiamos a modificar el código de esta lección para entrenar el modelo skip-gram en lugar de CBoW. [Lee los detalles](lab/README.md) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/it/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..d0ebbfaa --- /dev/null +++ b/translations/it/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Entrenamiento del Modelo Skip-Gram + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +En este laboratorio, te desafiamos a entrenar un modelo Word2Vec utilizando la técnica Skip-Gram. Entrena una red con incrustaciones para predecir palabras vecinas en una ventana Skip-Gram de $N$ tokens de ancho. Puedes usar el [código de esta lección](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) y modificarlo ligeramente. + +## El Conjunto de Datos + +Puedes utilizar cualquier libro. Puedes encontrar muchos textos gratuitos en [Project Gutenberg](https://www.gutenberg.org/); por ejemplo, aquí tienes un enlace directo a [Las Aventuras de Alicia en el País de las Maravillas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. O, puedes utilizar las obras de Shakespeare, que puedes obtener utilizando el siguiente código: + +```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') +``` + +## ¡Explora! + +Si tienes tiempo y quieres profundizar en el tema, intenta explorar varias cosas: + +* ¿Cómo afecta el tamaño de la incrustación a los resultados? +* ¿Cómo afectan los diferentes estilos de texto al resultado? +* Toma varios tipos de palabras muy diferentes y sus sinónimos, obtén sus representaciones vectoriales, aplica PCA para reducir las dimensiones a 2 y plótalas en un espacio 2D. ¿Ves algún patrón? + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/16-RNN/README.md b/translations/it/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..3c00b791 --- /dev/null +++ b/translations/it/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,86 @@ +# Redes Neurais Recorrentes + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +Nas seções anteriores, temos utilizado representações semânticas ricas de texto e um classificador linear simples sobre as incorporações. O que essa arquitetura faz é capturar o significado agregado das palavras em uma frase, mas não leva em consideração a **ordem** das palavras, pois a operação de agregação sobre as incorporações removeu essa informação do texto original. Como esses modelos não conseguem modelar a ordem das palavras, eles não conseguem resolver tarefas mais complexas ou ambíguas, como geração de texto ou resposta a perguntas. + +Para capturar o significado de uma sequência de texto, precisamos usar outra arquitetura de rede neural, chamada de **rede neural recorrente**, ou RNN. Na RNN, passamos nossa frase pela rede um símbolo de cada vez, e a rede produz um **estado**, que então passamos para a rede novamente com o próximo símbolo. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.it.png) + +> Imagem do autor + +Dada a sequência de entrada de tokens X0,...,Xn, a RNN cria uma sequência de blocos de rede neural e treina essa sequência de ponta a ponta usando retropropagação. Cada bloco da rede recebe um par (Xi,Si) como entrada e produz Si+1 como resultado. O estado final Sn ou (saída Yn) vai para um classificador linear para produzir o resultado. Todos os blocos da rede compartilham os mesmos pesos e são treinados de ponta a ponta usando uma única passagem de retropropagação. + +Como os vetores de estado S0,...,Sn são passados pela rede, ela consegue aprender as dependências sequenciais entre as palavras. Por exemplo, quando a palavra *não* aparece em algum lugar na sequência, ela pode aprender a negar certos elementos dentro do vetor de estado, resultando em negação. + +> ✅ Como os pesos de todos os blocos RNN na imagem acima são compartilhados, a mesma imagem pode ser representada como um único bloco (à direita) com um loop de feedback recorrente, que passa o estado de saída da rede de volta para a entrada. + +## Anatomia de uma Célula RNN + +Vamos ver como uma célula RNN simples é organizada. Ela aceita o estado anterior Si-1 e o símbolo atual Xi como entradas e precisa produzir o estado de saída Si (e, às vezes, também estamos interessados em alguma outra saída Yi, como no caso de redes generativas). + +Uma célula RNN simples possui duas matrizes de pesos internas: uma transforma um símbolo de entrada (vamos chamá-la de W) e a outra transforma um estado de entrada (H). Nesse caso, a saída da rede é calculada como σ(W×Xi+H×Si-1+b), onde σ é a função de ativação e b é um viés adicional. + +Anatomia da Célula RNN + +> Imagem do autor + +Em muitos casos, os tokens de entrada são passados pela camada de incorporação antes de entrar na RNN para reduzir a dimensionalidade. Nesse caso, se a dimensão dos vetores de entrada é *emb_size*, e o vetor de estado é *hid_size* - o tamanho de W é *emb_size*×*hid_size*, e o tamanho de H é *hid_size*×*hid_size*. + +## Memória de Longo e Curto Prazo (LSTM) + +Um dos principais problemas das RNNs clássicas é o chamado problema dos **gradientes que desaparecem**. Como as RNNs são treinadas de ponta a ponta em uma única passagem de retropropagação, elas têm dificuldade em propagar o erro para as primeiras camadas da rede, e assim a rede não consegue aprender relacionamentos entre tokens distantes. Uma das maneiras de evitar esse problema é introduzir **gerenciamento de estado explícito** usando os chamados **portões**. Existem duas arquiteturas bem conhecidas desse tipo: **Memória de Longo e Curto Prazo** (LSTM) e **Unidade de Relé Gated** (GRU). + +![Imagem mostrando um exemplo de célula de memória de longo e curto prazo](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Fonte da imagem TBD + +A Rede LSTM é organizada de maneira semelhante à RNN, mas há dois estados que estão sendo passados de camada para camada: o estado real C e o vetor oculto H. Em cada unidade, o vetor oculto Hi é concatenado com a entrada Xi, e eles controlam o que acontece com o estado C através dos **portões**. Cada portão é uma rede neural com ativação sigmoide (saída na faixa [0,1]), que pode ser pensada como uma máscara bit a bit quando multiplicada pelo vetor de estado. Existem os seguintes portões (da esquerda para a direita na imagem acima): + +* O **portão de esquecimento** recebe um vetor oculto e determina quais componentes do vetor C devemos esquecer e quais devemos passar adiante. +* O **portão de entrada** pega algumas informações dos vetores de entrada e ocultos e as insere no estado. +* O **portão de saída** transforma o estado através de uma camada linear com ativação *tanh*, e então seleciona alguns de seus componentes usando um vetor oculto Hi para produzir um novo estado Ci+1. + +Os componentes do estado C podem ser pensados como algumas bandeiras que podem ser ativadas ou desativadas. Por exemplo, quando encontramos um nome *Alice* na sequência, podemos querer assumir que se refere a um personagem feminino e ativar a bandeira no estado que temos um substantivo feminino na frase. Quando encontramos mais adiante as frases *e Tom*, elevamos a bandeira de que temos um substantivo plural. Assim, manipulando o estado, podemos supostamente acompanhar as propriedades gramaticais das partes da frase. + +> ✅ Um excelente recurso para entender os detalhes do LSTM é este ótimo artigo [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. + +## RNNs Bidirecionais e Multicamadas + +Discutimos redes recorrentes que operam em uma direção, do início de uma sequência até o final. Isso parece natural, pois se assemelha à maneira como lemos e ouvimos a fala. No entanto, como em muitos casos práticos temos acesso aleatório à sequência de entrada, pode fazer sentido executar o cálculo recorrente em ambas as direções. Essas redes são chamadas de RNNs **bidirecionais**. Ao lidar com uma rede bidirecional, precisaríamos de dois vetores de estado oculto, um para cada direção. + +Uma rede recorrente, seja unidirecional ou bidirecional, captura certos padrões dentro de uma sequência e pode armazená-los em um vetor de estado ou passá-los para a saída. Assim como nas redes convolucionais, podemos construir outra camada recorrente sobre a primeira para capturar padrões de nível superior e construir a partir de padrões de baixo nível extraídos pela primeira camada. Isso nos leva à noção de uma **RNN de múltiplas camadas**, que consiste em duas ou mais redes recorrentes, onde a saída da camada anterior é passada para a próxima camada como entrada. + +![Imagem mostrando uma RNN de memória de longo e curto prazo multicamada](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.it.jpg) + +*Imagem de [este maravilhoso post](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) de Fernando López* + +## ✍️ Exercícios: Incorporações + +Continue seu aprendizado nos seguintes notebooks: + +* [RNNs com PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs com TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Conclusão + +Nesta unidade, vimos que as RNNs podem ser usadas para classificação de sequências, mas na verdade, elas podem lidar com muitas outras tarefas, como geração de texto, tradução automática e mais. Consideraremos essas tarefas na próxima unidade. + +## 🚀 Desafio + +Leia um pouco sobre LSTMs e considere suas aplicações: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Geração de Legendas de Imagens Neurais com Atenção Visual](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Revisão e Autoestudo + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. + +## [Tarefa: Notebooks](assignment.md) + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No somos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/16-RNN/assignment.md b/translations/it/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..19fc65ac --- /dev/null +++ b/translations/it/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# Tarea: Cuadernos + +Utilizando los cuadernos asociados a esta lección (ya sea la versión de PyTorch o la de TensorFlow), ejecútalos nuevamente utilizando tu propio conjunto de datos, tal vez uno de Kaggle, siempre con la debida atribución. Reescribe el cuaderno para resaltar tus propios hallazgos. Prueba con un tipo diferente de conjunto de datos y documenta tus descubrimientos, usando texto como [este conjunto de datos de competición de Kaggle sobre tweets del clima](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/it/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..3e1b6e13 --- /dev/null +++ b/translations/it/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# Redes Generativas + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Las Redes Neuronales Recurrentes (RNN) y sus variantes con celdas de compuerta, como las Celdas de Memoria a Largo Plazo (LSTM) y las Unidades Recurrentes con Compuerta (GRU), proporcionan un mecanismo para el modelado del lenguaje, ya que pueden aprender el orden de las palabras y ofrecer predicciones para la siguiente palabra en una secuencia. Esto nos permite utilizar RNN para **tareas generativas**, como la generación de texto ordinario, la traducción automática e incluso la creación de subtítulos para imágenes. + +> ✅ Piensa en todas las veces que te has beneficiado de tareas generativas, como la finalización de texto mientras escribes. Investiga en tus aplicaciones favoritas para ver si han aprovechado las RNN. + +En la arquitectura de RNN que discutimos en la unidad anterior, cada unidad RNN producía el siguiente estado oculto como salida. Sin embargo, también podemos agregar otra salida a cada unidad recurrente, lo que nos permitiría generar una **secuencia** (que tiene la misma longitud que la secuencia original). Además, podemos utilizar unidades RNN que no aceptan una entrada en cada paso, y solo toman un vector de estado inicial, para luego producir una secuencia de salidas. + +Esto permite diferentes arquitecturas neuronales que se muestran en la imagen a continuación: + +![Imagen que muestra patrones comunes de redes neuronales recurrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.it.jpg) + +> Imagen del artículo [Efectividad Irrazonable de las Redes Neuronales Recurrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpaty](http://karpathy.github.io/) + +* **Uno a uno** es una red neuronal tradicional con una entrada y una salida. +* **Uno a muchos** es una arquitectura generativa que acepta un valor de entrada y genera una secuencia de valores de salida. Por ejemplo, si queremos entrenar una red de **subtitulación de imágenes** que produzca una descripción textual de una imagen, podemos usar una imagen como entrada, pasarla a través de una CNN para obtener su estado oculto, y luego tener una cadena recurrente que genere el subtítulo palabra por palabra. +* **Muchos a uno** corresponde a las arquitecturas RNN que describimos en la unidad anterior, como la clasificación de texto. +* **Muchos a muchos**, o **secuencia a secuencia**, corresponde a tareas como la **traducción automática**, donde una primera RNN recopila toda la información de la secuencia de entrada en el estado oculto, y otra cadena RNN despliega este estado en la secuencia de salida. + +En esta unidad, nos enfocaremos en modelos generativos simples que nos ayuden a generar texto. Para simplificar, utilizaremos la tokenización a nivel de caracteres. + +Entrenaremos esta RNN para generar texto paso a paso. En cada paso, tomaremos una secuencia de caracteres de longitud `nchars` y pediremos a la red que genere el siguiente carácter de salida para cada carácter de entrada: + +![Imagen que muestra un ejemplo de generación de la palabra 'HELLO' por una RNN.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.it.png) + +Al generar texto (durante la inferencia), comenzamos con algún **prompter**, que se pasa a través de las celdas RNN para generar su estado intermedio, y luego desde este estado comienza la generación. Generamos un carácter a la vez y pasamos el estado y el carácter generado a otra celda RNN para generar el siguiente, hasta que generemos suficientes caracteres. + + + +> Imagen del autor + +## ✍️ Ejercicios: Redes Generativas + +Continúa tu aprendizaje en los siguientes cuadernos: + +* [Redes Generativas con PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Redes Generativas con TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Generación de texto suave y temperatura + +La salida de cada celda RNN es una distribución de probabilidad de caracteres. Si siempre tomamos el carácter con la probabilidad más alta como el siguiente carácter en el texto generado, el texto a menudo puede volverse "cíclico" entre las mismas secuencias de caracteres una y otra vez, como en este ejemplo: + +``` +today of the second the company and a second the company ... +``` + +Sin embargo, si miramos la distribución de probabilidad para el siguiente carácter, podría ser que la diferencia entre algunas de las probabilidades más altas no sea enorme, por ejemplo, un carácter puede tener una probabilidad de 0.2, otro - 0.19, etc. Por ejemplo, al buscar el siguiente carácter en la secuencia '*play*', el siguiente carácter podría ser igualmente un espacio o **e** (como en la palabra *player*). + +Esto nos lleva a la conclusión de que no siempre es "justo" seleccionar el carácter con una probabilidad más alta, porque elegir el segundo más alto podría aún llevarnos a un texto significativo. Es más sabio **muestrear** caracteres de la distribución de probabilidad dada por la salida de la red. También podemos utilizar un parámetro, **temperatura**, que aplanará la distribución de probabilidad, en caso de que queramos añadir más aleatoriedad, o hacerla más pronunciada, si queremos ceñirnos más a los caracteres de mayor probabilidad. + +Explora cómo se implementa esta generación de texto suave en los cuadernos enlazados anteriormente. + +## Conclusión + +Aunque la generación de texto puede ser útil por sí misma, los principales beneficios provienen de la capacidad de generar texto utilizando RNN a partir de algún vector de características inicial. Por ejemplo, la generación de texto se utiliza como parte de la traducción automática (secuencia a secuencia, en este caso el vector de estado del *encoder* se utiliza para generar o *decodificar* el mensaje traducido), o para generar una descripción textual de una imagen (en cuyo caso el vector de características provendría de un extractor CNN). + +## 🚀 Desafío + +Toma algunas lecciones en Microsoft Learn sobre este tema. + +* Generación de Texto con [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Revisión y Autoestudio + +Aquí hay algunos artículos para ampliar tus conocimientos: + +* Diferentes enfoques para la generación de texto con Cadenas de Markov, LSTM y GPT-2: [artículo del blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Ejemplo de generación de texto en la [documentación de Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Asignación](lab/README.md) + +Hemos visto cómo generar texto carácter por carácter. En el laboratorio, explorarás la generación de texto a nivel de palabras. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/it/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..45707c1a --- /dev/null +++ b/translations/it/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# Generación de Texto a Nivel de Palabra usando RNNs + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +En este laboratorio, debes elegir un libro y utilizarlo como conjunto de datos para entrenar un generador de texto a nivel de palabra. + +## El Conjunto de Datos + +Puedes utilizar cualquier libro. Puedes encontrar muchos textos gratuitos en [Project Gutenberg](https://www.gutenberg.org/); por ejemplo, aquí tienes un enlace directo a [Las Aventuras de Alicia en el País de las Maravillas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/it/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..5bcd92c7 --- /dev/null +++ b/translations/it/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# Mécanismes d'Attention et Transformateurs + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +L'un des problèmes les plus importants dans le domaine du traitement du langage naturel (NLP) est **la traduction automatique**, une tâche essentielle qui sous-tend des outils tels que Google Translate. Dans cette section, nous nous concentrerons sur la traduction automatique, ou, plus généralement, sur toute tâche *séquence-à-séquence* (également appelée **transduction de phrases**). + +Avec les RNN, la séquence-à-séquence est mise en œuvre par deux réseaux récurrents, où un réseau, l'**encodeur**, réduit une séquence d'entrée en un état caché, tandis qu'un autre réseau, le **décodeur**, déploie cet état caché en un résultat traduit. Il y a quelques problèmes avec cette approche : + +* L'état final du réseau encodeur a du mal à se souvenir du début d'une phrase, ce qui entraîne une mauvaise qualité du modèle pour les longues phrases. +* Tous les mots d'une séquence ont le même impact sur le résultat. En réalité, cependant, certains mots spécifiques dans la séquence d'entrée ont souvent plus d'impact sur les sorties séquentielles que d'autres. + +**Les Mécanismes d'Attention** fournissent un moyen de pondérer l'impact contextuel de chaque vecteur d'entrée sur chaque prédiction de sortie du RNN. La façon dont cela est mis en œuvre consiste à créer des raccourcis entre les états intermédiaires du RNN d'entrée et du RNN de sortie. De cette manière, lors de la génération du symbole de sortie yt, nous prendrons en compte tous les états cachés d'entrée hi, avec différents coefficients de poids αt,i. + +![Image montrant un modèle encodeur/décodeur avec une couche d'attention additive](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.it.png) + +> Le modèle encodeur-décodeur avec un mécanisme d'attention additive dans [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), cité depuis [ce billet de blog](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +La matrice d'attention {αi,j} représenterait le degré d'importance de certains mots d'entrée dans la génération d'un mot donné dans la séquence de sortie. Ci-dessous se trouve un exemple de telle matrice : + +![Image montrant un alignement d'exemple trouvé par RNNsearch-50, tirée de Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.it.png) + +> Figure de [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Les mécanismes d'attention sont responsables d'une grande partie de l'état de l'art actuel ou presque dans le NLP. Cependant, l'ajout d'attention augmente considérablement le nombre de paramètres du modèle, ce qui a conduit à des problèmes d'échelle avec les RNN. Une contrainte clé de l'échelle des RNN est que la nature récurrente des modèles rend difficile le traitement par lots et la parallélisation de l'entraînement. Dans un RNN, chaque élément d'une séquence doit être traité dans un ordre séquentiel, ce qui signifie qu'il ne peut pas être facilement parallélisé. + +![Encodeur Décodeur avec Attention](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figure provenant du [Blog de Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +L'adoption des mécanismes d'attention combinée à cette contrainte a conduit à la création des modèles de transformateurs désormais à la pointe de la technologie que nous connaissons et utilisons aujourd'hui, tels que BERT et Open-GPT3. + +## Modèles de Transformateurs + +L'une des idées principales derrière les transformateurs est d'éviter la nature séquentielle des RNN et de créer un modèle qui soit parallélisable pendant l'entraînement. Cela est réalisé en mettant en œuvre deux idées : + +* encodage positionnel +* utilisation du mécanisme d'auto-attention pour capturer des motifs au lieu des RNN (ou des CNN) (c'est pourquoi le document qui introduit les transformateurs est intitulé *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Encodage/Emballage Positionnel + +L'idée de l'encodage positionnel est la suivante. +1. Lors de l'utilisation des RNN, la position relative des tokens est représentée par le nombre d'étapes, et n'a donc pas besoin d'être explicitement représentée. +2. Cependant, une fois que nous passons à l'attention, nous devons connaître les positions relatives des tokens au sein d'une séquence. +3. Pour obtenir l'encodage positionnel, nous augmentons notre séquence de tokens avec une séquence de positions de tokens dans la séquence (c'est-à-dire, une séquence de nombres 0,1, ...). +4. Nous mélangeons ensuite la position du token avec un vecteur d'embedding de token. Pour transformer la position (entier) en un vecteur, nous pouvons utiliser différentes approches : + +* Embedding entraînable, similaire à l'embedding de token. C'est l'approche que nous considérons ici. Nous appliquons des couches d'embedding sur les tokens et leurs positions, résultant en des vecteurs d'embedding de mêmes dimensions, que nous ajoutons ensuite ensemble. +* Fonction d'encodage de position fixe, comme proposé dans l'article original. + + + +> Image par l'auteur + +Le résultat que nous obtenons avec l'embedding positionnel incorpore à la fois le token original et sa position au sein d'une séquence. + +### Auto-Attention Multi-Tête + +Ensuite, nous devons capturer certains motifs au sein de notre séquence. Pour ce faire, les transformateurs utilisent un mécanisme d'**auto-attention**, qui est essentiellement une attention appliquée à la même séquence en tant qu'entrée et sortie. L'application de l'auto-attention nous permet de prendre en compte le **contexte** au sein de la phrase et de voir quels mots sont inter-reliés. Par exemple, cela nous permet de voir quels mots sont référés par des co-références, telles que *il*, et également de prendre en compte le contexte : + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.it.png) + +> Image provenant du [Blog de Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +Dans les transformateurs, nous utilisons **l'Attention Multi-Tête** afin de donner au réseau la capacité de capturer plusieurs types de dépendances différents, par exemple les relations entre mots à long terme et à court terme, co-référence par rapport à autre chose, etc. + +[Notebook TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) contient plus de détails sur la mise en œuvre des couches de transformateurs. + +### Attention Encodeur-Décodeur + +Dans les transformateurs, l'attention est utilisée à deux endroits : + +* Pour capturer des motifs au sein du texte d'entrée à l'aide de l'auto-attention +* Pour effectuer la traduction de séquence - c'est la couche d'attention entre l'encodeur et le décodeur. + +L'attention encodeur-décodeur est très similaire au mécanisme d'attention utilisé dans les RNN, comme décrit au début de cette section. Ce diagramme animé explique le rôle de l'attention encodeur-décodeur. + +![GIF animé montrant comment les évaluations sont effectuées dans les modèles de transformateurs.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Puisque chaque position d'entrée est mappée indépendamment à chaque position de sortie, les transformateurs peuvent mieux se paralléliser que les RNN, ce qui permet des modèles de langage beaucoup plus grands et plus expressifs. Chaque tête d'attention peut être utilisée pour apprendre différentes relations entre les mots, ce qui améliore les tâches de traitement du langage naturel en aval. + +## BERT + +**BERT** (Représentations d'Encodeur Bidirectionnelles à partir de Transformateurs) est un très grand réseau de transformateurs à plusieurs couches avec 12 couches pour *BERT-base*, et 24 pour *BERT-large*. Le modèle est d'abord pré-entraîné sur un grand corpus de données textuelles (WikiPedia + livres) en utilisant un entraînement non supervisé (prédiction de mots masqués dans une phrase). Au cours de la pré-formation, le modèle absorbe des niveaux significatifs de compréhension linguistique qui peuvent ensuite être exploités avec d'autres ensembles de données via un ajustement fin. Ce processus est appelé **apprentissage par transfert**. + +![image de http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.it.png) + +> Image [source](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Exercices : Transformateurs + +Poursuivez votre apprentissage dans les notebooks suivants : + +* [Transformateurs en PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformateurs en TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Conclusion + +Dans cette leçon, vous avez appris sur les Transformateurs et les Mécanismes d'Attention, tous des outils essentiels dans la boîte à outils NLP. Il existe de nombreuses variations des architectures de Transformateurs, y compris BERT, DistilBERT, BigBird, OpenGPT3 et plus encore qui peuvent être ajustées. Le [package HuggingFace](https://github.com/huggingface/) fournit un référentiel pour entraîner bon nombre de ces architectures avec PyTorch et TensorFlow. + +## 🚀 Défi + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Révision et Auto-étude + +* [Billet de blog](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), expliquant l'article classique [Attention is all you need](https://arxiv.org/abs/1706.03762) sur les transformateurs. +* [Une série de billets de blog](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) sur les transformateurs, expliquant l'architecture en détail. + +## [Devoir](assignment.md) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/18-Transformers/assignment.md b/translations/it/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..2cb8fd0c --- /dev/null +++ b/translations/it/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# Tarea: Transformadores + +¡Experimenta con Transformadores en HuggingFace! Prueba algunos de los scripts que proporcionan para trabajar con los diversos modelos disponibles en su sitio: https://huggingface.co/docs/transformers/run_scripts. Intenta con uno de sus conjuntos de datos, luego importa uno de los tuyos de este currículo o de Kaggle y verifica si puedes generar textos interesantes. Elabora un cuaderno con tus hallazgos. + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en inteligencia artificial. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/19-NER/README.md b/translations/it/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..14b39bb7 --- /dev/null +++ b/translations/it/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,85 @@ +# Reconocimiento de Entidades Nombradas + +Hasta ahora, hemos estado concentrándonos principalmente en una tarea de NLP: la clasificación. Sin embargo, también existen otras tareas de NLP que se pueden llevar a cabo con redes neuronales. Una de esas tareas es el **[Reconocimiento de Entidades Nombradas](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), que se ocupa de reconocer entidades específicas dentro del texto, como lugares, nombres de personas, intervalos de fecha y hora, fórmulas químicas, entre otros. + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Ejemplo de Uso de NER + +Supongamos que deseas desarrollar un chatbot de lenguaje natural, similar a Amazon Alexa o Google Assistant. La forma en que funcionan los chatbots inteligentes es *entendiendo* lo que el usuario quiere al realizar una clasificación de texto en la frase de entrada. El resultado de esta clasificación es lo que se llama **intención**, que determina lo que debe hacer un chatbot. + +Bot NER + +> Imagen del autor + +Sin embargo, un usuario puede proporcionar algunos parámetros como parte de la frase. Por ejemplo, al preguntar por el clima, puede especificar una ubicación o una fecha. Un bot debería ser capaz de entender esas entidades y llenar los espacios de parámetros correspondientes antes de realizar la acción. Aquí es exactamente donde entra en juego el NER. + +> ✅ Otro ejemplo sería [analizar artículos científicos médicos](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Una de las principales cosas que necesitamos buscar son términos médicos específicos, como enfermedades y sustancias médicas. Si bien un pequeño número de enfermedades probablemente se puede extraer utilizando búsqueda de subcadenas, entidades más complejas, como compuestos químicos y nombres de medicamentos, requieren un enfoque más complicado. + +## NER como Clasificación de Tokens + +Los modelos de NER son esencialmente **modelos de clasificación de tokens**, porque para cada uno de los tokens de entrada necesitamos decidir si pertenece a una entidad o no, y si lo hace, a qué clase de entidad. + +Considera el siguiente título de un artículo: + +**Regurgitación de la válvula tricúspide** y **toxicidad de carbonato de litio** en un recién nacido. + +Las entidades aquí son: + +* Regurgitación de la válvula tricúspide es una enfermedad (`DIS`) +* Carbonato de litio es una sustancia química (`CHEM`) +* Toxicidad también es una enfermedad (`DIS`) + +Observa que una entidad puede abarcar varios tokens. Y, como en este caso, necesitamos distinguir entre dos entidades consecutivas. Por lo tanto, es común usar dos clases para cada entidad: una que especifica el primer token de la entidad (a menudo se utiliza el prefijo `B-`, para **b**eginning), y otra - la continuación de una entidad (`I-`, para **i**nner token). También usamos `O` como una clase para representar todos los **o**tros tokens. Este etiquetado de tokens se llama [etiquetado BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (o IOB). Cuando se etiqueta, nuestro título se verá así: + +Token | Etiqueta +------|----- +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 + +Dado que necesitamos construir una correspondencia uno a uno entre tokens y clases, podemos entrenar un modelo de red neuronal **muchos a muchos** a partir de esta imagen: + +![Imagen que muestra patrones comunes de redes neuronales recurrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.it.jpg) + +> *Imagen de [esta entrada de blog](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpathy](http://karpathy.github.io/). Los modelos de clasificación de tokens NER corresponden a la arquitectura de red más a la derecha en esta imagen.* + +## Entrenamiento de Modelos NER + +Dado que un modelo de NER es esencialmente un modelo de clasificación de tokens, podemos utilizar RNNs con los que ya estamos familiarizados para esta tarea. En este caso, cada bloque de la red recurrente devolverá el ID del token. El siguiente cuaderno de ejemplo muestra cómo entrenar un LSTM para la clasificación de tokens. + +## ✍️ Cuadernos de Ejemplo: NER + +Continúa tu aprendizaje en el siguiente cuaderno: + +* [NER con TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Conclusión + +Un modelo de NER es un **modelo de clasificación de tokens**, lo que significa que puede ser utilizado para realizar clasificación de tokens. Esta es una tarea muy común en NLP, ayudando a reconocer entidades específicas dentro del texto, incluyendo lugares, nombres, fechas y más. + +## 🚀 Desafío + +Completa la tarea vinculada a continuación para entrenar un modelo de reconocimiento de entidades nombradas para términos médicos, y luego pruébalo en un conjunto de datos diferente. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Revisión y Autoestudio + +Lee el blog [La Efectividad Irrazonable de las Redes Neuronales Recurrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) y sigue la sección de Lectura Adicional en ese artículo para profundizar tu conocimiento. + +## [Tarea](lab/README.md) + +En la tarea para esta lección, tendrás que entrenar un modelo de reconocimiento de entidades médicas. Puedes comenzar entrenando un modelo LSTM como se describe en esta lección y luego proceder a utilizar el modelo transformador BERT. Lee [las instrucciones](lab/README.md) para obtener todos los detalles. + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/19-NER/lab/README.md b/translations/it/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..24b3d1db --- /dev/null +++ b/translations/it/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +Laboratorio de Asignación del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +En este laboratorio, necesitas entrenar un modelo de reconocimiento de entidades nombradas para términos médicos. + +## El Conjunto de Datos + +Para entrenar el modelo NER, necesitamos un conjunto de datos debidamente etiquetado con entidades médicas. El [conjunto de datos BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contiene enfermedades y entidades químicas etiquetadas de más de 1500 artículos. Puedes descargar el conjunto de datos después de registrarte en su sitio web. + +El conjunto de datos BC5CDR se ve así: + +``` +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 +... +``` + +En este conjunto de datos, hay un título de artículo y un resumen en las dos primeras líneas, y luego hay entidades individuales, con posiciones de inicio y fin dentro del bloque de título + resumen. Además del tipo de entidad, obtienes el ID de ontología de esta entidad dentro de alguna ontología médica. + +Necesitarás escribir algo de código en Python para convertir esto en codificación BIO. + +## La Red + +El primer intento de NER se puede realizar utilizando una red LSTM, como en nuestro ejemplo que viste durante la lección. Sin embargo, en tareas de PLN, la [arquitectura transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), y específicamente los [modelos de lenguaje BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), muestran resultados mucho mejores. Los modelos BERT preentrenados comprenden la estructura general de un idioma y pueden ser ajustados para tareas específicas con conjuntos de datos relativamente pequeños y costos computacionales bajos. + +Dado que planeamos aplicar NER a un escenario médico, tiene sentido usar un modelo BERT entrenado en textos médicos. Microsoft Research ha lanzado un modelo preentrenado llamado [PubMedBERT][PubMedBERT] ([publicación][PubMedBERT-Pub]), que fue ajustado utilizando textos del repositorio de [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +El estándar *de facto* para entrenar modelos transformer es la biblioteca [Hugging Face Transformers](https://huggingface.co/). También contiene un repositorio de modelos preentrenados mantenidos por la comunidad, incluyendo PubMedBERT. Para cargar y usar este modelo, solo necesitamos un par de líneas de código: + +```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) +``` + +Esto nos proporciona el objeto `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` que puede dividir el texto de entrada en tokens. Necesitarás convertir el conjunto de datos al formato BIO, teniendo en cuenta la tokenización de PubMedBERT. Puedes usar [este fragmento de código en Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) como inspiración. + +## Conclusión + +Esta tarea está muy cerca de la tarea real que probablemente tendrás si deseas obtener más información sobre grandes volúmenes de textos en lenguaje natural. En nuestro caso, podemos aplicar nuestro modelo entrenado al [conjunto de datos de artículos relacionados con COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) y ver qué información podremos obtener. [Esta publicación en el blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) y [este artículo](https://www.mdpi.com/2504-2289/6/1/4) describen la investigación que se puede realizar sobre este corpus de artículos utilizando NER. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/it/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..042548f3 --- /dev/null +++ b/translations/it/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,56 @@ +# Modèles de Langage de Grande Taille Pré-entrainés + +Dans toutes nos tâches précédentes, nous avons entraîné un réseau de neurones pour accomplir une tâche spécifique en utilisant un ensemble de données étiquetées. Avec de grands modèles transformateurs, tels que BERT, nous utilisons la modélisation du langage de manière auto-supervisée pour construire un modèle linguistique, qui est ensuite spécialisé pour une tâche en aval spécifique grâce à un entraînement supplémentaire spécifique au domaine. Cependant, il a été démontré que les grands modèles de langage peuvent également résoudre de nombreuses tâches sans AUCUN entraînement spécifique au domaine. Une famille de modèles capables de le faire est appelée **GPT** : Transformateur Génératif Pré-entrainé. + +## [Quiz pré-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Génération de Texte et Perplexité + +L'idée qu'un réseau de neurones puisse accomplir des tâches générales sans entraînement en aval est présentée dans l'article [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). L'idée principale est que de nombreuses autres tâches peuvent être modélisées en utilisant **la génération de texte**, car comprendre le texte signifie essentiellement être capable de le produire. Étant donné que le modèle est entraîné sur une énorme quantité de texte qui englobe les connaissances humaines, il devient également informé sur une grande variété de sujets. + +> Comprendre et être capable de produire du texte implique également de connaître quelque chose sur le monde qui nous entoure. Les gens apprennent également en lisant dans une large mesure, et le réseau GPT est similaire à cet égard. + +Les réseaux de génération de texte fonctionnent en prédisant la probabilité du mot suivant $$P(w_N)$$. Cependant, la probabilité inconditionnelle du mot suivant est égale à la fréquence de ce mot dans le corpus de texte. GPT est capable de nous donner la **probabilité conditionnelle** du mot suivant, étant donné les mots précédents : $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Vous pouvez en apprendre davantage sur les probabilités dans notre [Curriculum de Science des Données pour Débutants](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +La qualité d'un modèle de génération de langage peut être définie à l'aide de la **perplexité**. C'est une métrique intrinsèque qui nous permet de mesurer la qualité du modèle sans aucun ensemble de données spécifique à la tâche. Elle est basée sur la notion de *probabilité d'une phrase* - le modèle attribue une haute probabilité à une phrase qui est susceptible d'être réelle (c'est-à-dire que le modèle n'est pas **perplexe** par rapport à elle), et une faible probabilité aux phrases qui ont moins de sens (par exemple, *Peut-il faire quoi ?*). Lorsque nous fournissons à notre modèle des phrases provenant d'un corpus de texte réel, nous nous attendons à ce qu'elles aient une haute probabilité et une faible **perplexité**. Mathématiquement, elle est définie comme la probabilité inverse normalisée de l'ensemble de test : +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Vous pouvez expérimenter avec la génération de texte en utilisant [l'éditeur de texte alimenté par GPT de Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. Dans cet éditeur, vous commencez à écrire votre texte, et en appuyant sur **[TAB]**, plusieurs options de complétion vous seront proposées. Si elles sont trop courtes, ou si vous n'êtes pas satisfait, appuyez à nouveau sur [TAB], et vous aurez plus d'options, y compris des morceaux de texte plus longs. + +## GPT est une Famille + +GPT n'est pas un modèle unique, mais plutôt une collection de modèles développés et entraînés par [OpenAI](https://openai.com). + +Sous les modèles GPT, nous avons : + +| [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) | +| -- | -- | -- | +|Modèle de langage avec jusqu'à 1,5 milliard de paramètres. | Modèle de langage avec jusqu'à 175 milliards de paramètres | 100T paramètres et accepte à la fois des entrées d'images et de texte et produit du texte. | + + +Les modèles GPT-3 et GPT-4 sont disponibles [en tant que service cognitif de Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste), et en tant que [API OpenAI](https://openai.com/api/). + +## Ingénierie des Prompts + +Étant donné que GPT a été entraîné sur de vastes volumes de données pour comprendre le langage et le code, il fournit des sorties en réponse à des entrées (prompts). Les prompts sont les entrées ou requêtes de GPT par lesquelles on donne des instructions aux modèles sur les tâches qu'ils doivent ensuite accomplir. Pour obtenir un résultat souhaité, vous avez besoin du prompt le plus efficace, ce qui implique de choisir les bons mots, formats, phrases ou même symboles. Cette approche est appelée [Ingénierie des Prompts](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Cette documentation](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) vous fournit plus d'informations sur l'ingénierie des prompts. + +## ✍️ Exemple de Notebook : [Jouer avec OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Poursuivez votre apprentissage dans les notebooks suivants : + +* [Générer du texte avec OpenAI-GPT et Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Conclusion + +Les nouveaux modèles de langage pré-entraînés en général ne modélisent pas seulement la structure du langage, mais contiennent également une vaste quantité de langage naturel. Ainsi, ils peuvent être utilisés efficacement pour résoudre certaines tâches de traitement du langage naturel dans des contextes zéro-shot ou few-shot. + +## [Quiz post-conférence](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/5-NLP/README.md b/translations/it/lessons/5-NLP/README.md new file mode 100644 index 00000000..25f07348 --- /dev/null +++ b/translations/it/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# Procesamiento de Lenguaje Natural + +![Resumen de tareas de PLN en un garabato](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.it.png) + +En esta sección, nos centraremos en el uso de Redes Neuronales para abordar tareas relacionadas con el **Procesamiento de Lenguaje Natural (PLN)**. Existen muchos problemas de PLN que queremos que las computadoras sean capaces de resolver: + +* **Clasificación de texto** es un problema típico de clasificación que se refiere a secuencias de texto. Ejemplos incluyen clasificar mensajes de correo electrónico como spam o no spam, o categorizar artículos como deportes, negocios, política, etc. Además, al desarrollar chatbots, a menudo necesitamos entender lo que un usuario quería decir; en este caso, estamos tratando con **clasificación de intenciones**. A menudo, en la clasificación de intenciones, necesitamos manejar muchas categorías. +* **Análisis de sentimientos** es un problema típico de regresión, donde necesitamos atribuir un número (un sentimiento) que corresponda a cuán positivo o negativo es el significado de una oración. Una versión más avanzada del análisis de sentimientos es el **análisis de sentimientos basado en aspectos** (ABSA), donde atribuimos el sentimiento no a toda la oración, sino a diferentes partes de la misma (aspectos), por ejemplo, *En este restaurante, me gustó la cocina, pero la atmósfera era horrible*. +* **Reconocimiento de Entidades Nombradas** (NER) se refiere al problema de extraer ciertas entidades del texto. Por ejemplo, podríamos necesitar entender que en la frase *Necesito volar a París mañana*, la palabra *mañana* se refiere a FECHA, y *París* es una UBICACIÓN. +* **Extracción de palabras clave** es similar a NER, pero necesitamos extraer automáticamente palabras importantes para el significado de la oración, sin preentrenamiento para tipos de entidades específicos. +* **Agrupamiento de texto** puede ser útil cuando queremos agrupar oraciones similares, por ejemplo, solicitudes similares en conversaciones de soporte técnico. +* **Respuesta a preguntas** se refiere a la capacidad de un modelo para responder a una pregunta específica. El modelo recibe un pasaje de texto y una pregunta como entradas, y necesita proporcionar un lugar en el texto donde se encuentra la respuesta a la pregunta (o, a veces, generar el texto de la respuesta). +* **Generación de texto** es la capacidad de un modelo para generar nuevo texto. Puede considerarse como una tarea de clasificación que predice la siguiente letra/palabra basada en algún *texto de entrada*. Modelos avanzados de generación de texto, como GPT-3, son capaces de resolver otras tareas de PLN como clasificación utilizando una técnica llamada [programación de prompts](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) o [ingeniería de prompts](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Resumen de texto** es una técnica en la que queremos que una computadora "lea" un texto largo y lo resuma en unas pocas oraciones. +* **Traducción automática** puede verse como una combinación de comprensión de texto en un idioma y generación de texto en otro. + +Inicialmente, la mayoría de las tareas de PLN se resolvían utilizando métodos tradicionales como gramáticas. Por ejemplo, en la traducción automática se utilizaban analizadores para transformar la oración inicial en un árbol sintáctico, luego se extraían estructuras semánticas de nivel superior para representar el significado de la oración, y con base en este significado y la gramática del idioma objetivo se generaba el resultado. Hoy en día, muchas tareas de PLN se resuelven de manera más efectiva utilizando redes neuronales. + +> Muchos métodos clásicos de PLN están implementados en la biblioteca de Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Hay un excelente [Libro de NLTK](https://www.nltk.org/book/) disponible en línea que cubre cómo se pueden resolver diferentes tareas de PLN utilizando NLTK. + +En nuestro curso, nos enfocaremos principalmente en el uso de Redes Neuronales para PLN, y utilizaremos NLTK cuando sea necesario. + +Ya hemos aprendido sobre el uso de redes neuronales para tratar con datos tabulares y con imágenes. La principal diferencia entre esos tipos de datos y el texto es que el texto es una secuencia de longitud variable, mientras que el tamaño de entrada en el caso de las imágenes es conocido de antemano. Si bien las redes convolucionales pueden extraer patrones de los datos de entrada, los patrones en el texto son más complejos. Por ejemplo, podemos tener la negación separada del sujeto que puede ser arbitraria para muchas palabras (por ejemplo, *No me gustan las naranjas*, frente a *No me gustan esas grandes naranjas coloridas y sabrosas*), y eso debería seguir siendo interpretado como un patrón. Así, para manejar el lenguaje, necesitamos introducir nuevos tipos de redes neuronales, como *redes recurrentes* y *transformadores*. + +## Instalar Bibliotecas + +Si estás utilizando una instalación local de Python para ejecutar este curso, es posible que necesites instalar todas las bibliotecas necesarias para PLN utilizando los siguientes comandos: + +**Para PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Para TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Puedes probar PLN con TensorFlow en [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Advertencia sobre GPU + +En esta sección, en algunos de los ejemplos estaremos entrenando modelos bastante grandes. +* **Usar una computadora con GPU habilitada**: Es recomendable ejecutar tus notebooks en una computadora habilitada para GPU para reducir los tiempos de espera al trabajar con modelos grandes. +* **Restricciones de memoria GPU**: Ejecutar en una GPU puede llevar a situaciones en las que te quedes sin memoria GPU, especialmente al entrenar modelos grandes. +* **Consumo de memoria GPU**: La cantidad de memoria GPU consumida durante el entrenamiento depende de varios factores, incluyendo el tamaño del minibatch. +* **Minimizar el tamaño del minibatch**: Si encuentras problemas de memoria GPU, considera reducir el tamaño del minibatch en tu código como una solución potencial. +* **Liberación de memoria GPU en TensorFlow**: Las versiones más antiguas de TensorFlow pueden no liberar la memoria GPU correctamente al entrenar múltiples modelos dentro de un mismo núcleo de Python. Para gestionar el uso de memoria GPU de manera efectiva, puedes configurar TensorFlow para que asigne memoria GPU solo según sea necesario. +* **Inclusión de código**: Para configurar TensorFlow para que crezca la asignación de memoria GPU solo cuando sea necesario, incluye el siguiente código en tus notebooks: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Si estás interesado en aprender sobre PLN desde una perspectiva clásica de ML, visita [este conjunto de lecciones](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). + +## En esta Sección +En esta sección aprenderemos sobre: + +* [Representación de texto como tensores](13-TextRep/README.md) +* [Embeddings de palabras](14-Emdeddings/README.md) +* [Modelado del lenguaje](15-LanguageModeling/README.md) +* [Redes Neuronales Recurrentes](16-RNN/README.md) +* [Redes Generativas](17-GenerativeNetworks/README.md) +* [Transformadores](18-Transformers/README.md) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/it/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..3ff8b356 --- /dev/null +++ b/translations/it/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# Algoritmos Genéticos + +## [Cuestionario previo a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +Los **Algoritmos Genéticos** (GA) se basan en un **enfoque evolutivo** para la IA, en el que se utilizan métodos de evolución de una población para obtener una solución óptima a un problema dado. Fueron propuestos en 1975 por [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). + +Los Algoritmos Genéticos se fundamentan en las siguientes ideas: + +* Las soluciones válidas al problema pueden ser representadas como **genes** +* El **crossover** nos permite combinar dos soluciones para obtener una nueva solución válida +* La **selección** se utiliza para elegir soluciones más óptimas utilizando alguna **función de aptitud** +* Se introducen **mutaciones** para desestabilizar la optimización y sacarnos del mínimo local + +Si deseas implementar un Algoritmo Genético, necesitas lo siguiente: + + * Encontrar un método para codificar nuestras soluciones al problema usando **genes** g∈Γ + * En el conjunto de genes Γ necesitamos definir una **función de aptitud** fit: Γ→**R**. Los valores más pequeños de la función corresponden a mejores soluciones. + * Definir un mecanismo de **crossover** para combinar dos genes y obtener una nueva solución válida crossover: Γ2→Γ. + * Definir un mecanismo de **mutación** mutate: Γ→Γ. + +En muchos casos, el crossover y la mutación son algoritmos bastante simples para manipular genes como secuencias numéricas o vectores de bits. + +La implementación específica de un algoritmo genético puede variar de un caso a otro, pero la estructura general es la siguiente: + +1. Seleccionar una población inicial G⊂Γ +2. Seleccionar aleatoriamente una de las operaciones que se realizarán en este paso: crossover o mutación +3. **Crossover**: + * Seleccionar aleatoriamente dos genes g1, g2 ∈ G + * Calcular el crossover g=crossover(g1,g2) + * Si fit(g)1) o fit(g)2) - reemplazar el gen correspondiente en la población por g. +4. **Mutación** - seleccionar un gen aleatorio g∈G y reemplazarlo por mutate(g) +5. Repetir desde el paso 2, hasta que obtengamos un valor de fit suficientemente pequeño, o hasta que se alcance el límite en el número de pasos. + +## Tareas Típicas + +Las tareas que típicamente se resuelven con Algoritmos Genéticos incluyen: + +1. Optimización de horarios +1. Empaque óptimo +1. Corte óptimo +1. Aceleración de búsqueda exhaustiva + +## ✍️ Ejercicios: Algoritmos Genéticos + +Continúa tu aprendizaje en los siguientes cuadernos: + +Ve a [este cuaderno](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) para ver dos ejemplos de uso de Algoritmos Genéticos: + +1. División justa del tesoro +1. Problema de las 8 reinas + +## Conclusión + +Los Algoritmos Genéticos se utilizan para resolver muchos problemas, incluidos problemas de logística y búsqueda. Este campo se inspira en investigaciones que fusionaron temas de Psicología y Ciencias de la Computación. + +## 🚀 Desafío + +"Los algoritmos genéticos son simples de implementar, pero su comportamiento es difícil de entender." [fuente](https://wikipedia.org/wiki/Genetic_algorithm) Realiza una investigación para encontrar una implementación de un algoritmo genético, como la resolución de un rompecabezas de Sudoku, y explica cómo funciona en un esquema o diagrama de flujo. + +## [Cuestionario posterior a la clase](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Revisión y Autoestudio + +Mira [este gran video](https://www.youtube.com/watch?v=qv6UVOQ0F44) que habla sobre cómo una computadora puede aprender a jugar Super Mario utilizando redes neuronales entrenadas por algoritmos genéticos. Aprenderemos más sobre cómo las computadoras aprenden a jugar juegos como ese [en la próxima sección](../22-DeepRL/README.md). + +## [Tarea: Ecuación Diofántica](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Tu objetivo es resolver la llamada **ecuación diofántica** - una ecuación con raíces enteras. Por ejemplo, considera la ecuación a+2b+3c+4d=30. Necesitas encontrar las raíces enteras que satisfacen esta ecuación. + +*Esta tarea está inspirada en [esta publicación](https://habr.com/post/128704/).* + +Sugerencias: + +1. Puedes considerar que las raíces están en el intervalo [0;30] +1. Como gen, considera usar la lista de valores de raíz + +Usa [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) como punto de partida. + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional por parte de un humano. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/6-Other/22-DeepRL/README.md b/translations/it/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..531321ed --- /dev/null +++ b/translations/it/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# Apprentissage par Renforcement Profond + +L'apprentissage par renforcement (RL) est considéré comme l'un des paradigmes fondamentaux de l'apprentissage machine, aux côtés de l'apprentissage supervisé et non supervisé. Alors que dans l'apprentissage supervisé, nous nous appuyons sur un ensemble de données avec des résultats connus, le RL repose sur **l'apprentissage par l'action**. Par exemple, lorsque nous découvrons un nouveau jeu vidéo, nous commençons à jouer, même sans connaître les règles, et rapidement, nous parvenons à améliorer nos compétences simplement en jouant et en ajustant notre comportement. + +## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Pour effectuer du RL, nous avons besoin de : + +* Un **environnement** ou **simulateur** qui définit les règles du jeu. Nous devrions être capables de réaliser des expériences dans le simulateur et d'observer les résultats. +* Une **fonction de récompense**, qui indique à quel point notre expérience a été réussie. Dans le cas de l'apprentissage d'un jeu vidéo, la récompense serait notre score final. + +Sur la base de la fonction de récompense, nous devrions être en mesure d'ajuster notre comportement et d'améliorer nos compétences, de sorte qu'à la prochaine partie, nous jouions mieux. La principale différence entre les autres types d'apprentissage machine et le RL est qu'en RL, nous ne savons généralement pas si nous gagnons ou perdons avant d'avoir terminé le jeu. Ainsi, nous ne pouvons pas dire si un mouvement particulier est bon ou non - nous ne recevons une récompense qu'à la fin du jeu. + +Lors de l'apprentissage par renforcement, nous réalisons généralement de nombreuses expériences. Au cours de chaque expérience, nous devons équilibrer entre le suivi de la stratégie optimale que nous avons apprise jusqu'à présent (**exploitation**) et l'exploration de nouveaux états possibles (**exploration**). + +## OpenAI Gym + +Un excellent outil pour le RL est l'[OpenAI Gym](https://gym.openai.com/) - un **environnement de simulation**, capable de simuler de nombreux environnements différents, allant des jeux Atari à la physique derrière l'équilibre d'un poteau. C'est l'un des environnements de simulation les plus populaires pour former des algorithmes d'apprentissage par renforcement, et il est maintenu par [OpenAI](https://openai.com/). + +> **Note** : Vous pouvez voir tous les environnements disponibles dans OpenAI Gym [ici](https://gym.openai.com/envs/#classic_control). + +## Équilibre CartPole + +Vous avez probablement tous vu des dispositifs d'équilibre modernes tels que le *Segway* ou les *Gyroscooters*. Ils parviennent à s'équilibrer automatiquement en ajustant leurs roues en réponse à un signal provenant d'un accéléromètre ou d'un gyroscope. Dans cette section, nous allons apprendre à résoudre un problème similaire - l'équilibre d'un poteau. C'est comparable à une situation où un artiste de cirque doit équilibrer un poteau sur sa main - mais cet équilibre ne se produit que dans une dimension. + +Une version simplifiée de l'équilibre est connue sous le nom de problème **CartPole**. Dans le monde du cartpole, nous avons un curseur horizontal qui peut se déplacer à gauche ou à droite, et l'objectif est de maintenir un poteau vertical au sommet du curseur pendant qu'il se déplace. + +un cartpole + +Pour créer et utiliser cet environnement, nous avons besoin de quelques lignes de code 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}") +``` + +Chaque environnement peut être accessible de la même manière : +* `env.reset` starts a new experiment +* `env.step` effectue une étape de simulation. Il reçoit une **action** de l'**espace d'actions** et renvoie une **observation** (de l'espace d'observation), ainsi qu'une récompense et un indicateur de terminaison. + +Dans l'exemple ci-dessus, nous effectuons une action aléatoire à chaque étape, ce qui explique pourquoi la durée de vie de l'expérience est très courte : + +![cartpole non équilibré](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +L'objectif d'un algorithme de RL est de former un modèle - la soi-disant **politique** π - qui renverra l'action en réponse à un état donné. Nous pouvons également considérer la politique comme étant probabiliste, par exemple, pour tout état *s* et action *a*, elle renverra la probabilité π(*a*|*s*) que nous devrions prendre *a* dans l'état *s*. + +## Algorithme des Gradients de Politique + +La manière la plus évidente de modéliser une politique est de créer un réseau de neurones qui prendra des états en entrée et renverra les actions correspondantes (ou plutôt les probabilités de toutes les actions). En un sens, cela serait similaire à une tâche de classification normale, avec une différence majeure - nous ne savons pas à l'avance quelles actions nous devrions prendre à chacune des étapes. + +L'idée ici est d'estimer ces probabilités. Nous construisons un vecteur de **récompenses cumulées** qui montre notre récompense totale à chaque étape de l'expérience. Nous appliquons également un **escompte de récompense** en multipliant les récompenses antérieures par un coefficient γ=0.99, afin de diminuer le rôle des récompenses antérieures. Ensuite, nous renforçons ces étapes le long du chemin de l'expérience qui produisent des récompenses plus importantes. + +> En savoir plus sur l'algorithme de Gradient de Politique et le voir en action dans le [carnet d'exemples](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algorithme Acteur-Critique + +Une version améliorée de l'approche des Gradients de Politique est appelée **Acteur-Critique**. L'idée principale est que le réseau de neurones serait entraîné pour renvoyer deux choses : + +* La politique, qui détermine quelle action prendre. Cette partie est appelée **acteur**. +* L'estimation de la récompense totale que nous pouvons espérer obtenir dans cet état - cette partie est appelée **critique**. + +En un sens, cette architecture ressemble à un [GAN](../../4-ComputerVision/10-GANs/README.md), où nous avons deux réseaux qui sont entraînés l'un contre l'autre. Dans le modèle acteur-critique, l'acteur propose l'action que nous devons prendre, et le critique essaie d'être critique et d'estimer le résultat. Cependant, notre objectif est d'entraîner ces réseaux de manière conjointe. + +Comme nous connaissons à la fois les vraies récompenses cumulées et les résultats renvoyés par le critique pendant l'expérience, il est relativement facile de construire une fonction de perte qui minimisera la différence entre elles. Cela nous donnerait la **perte du critique**. Nous pouvons calculer la **perte de l'acteur** en utilisant la même approche que dans l'algorithme de gradient de politique. + +Après avoir exécuté l'un de ces algorithmes, nous pouvons nous attendre à ce que notre CartPole se comporte comme ceci : + +![un cartpole équilibré](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Exercices : Gradients de Politique et RL Acteur-Critique + +Poursuivez votre apprentissage dans les carnets suivants : + +* [RL dans TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL dans PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Autres Tâches de RL + +L'apprentissage par renforcement est aujourd'hui un domaine de recherche en pleine expansion. Voici quelques exemples intéressants d'apprentissage par renforcement : + +* Apprendre à un ordinateur à jouer à des **jeux Atari**. La difficulté dans ce problème est que nous n'avons pas d'état simple représenté sous forme de vecteur, mais plutôt une capture d'écran - et nous devons utiliser le CNN pour convertir cette image d'écran en un vecteur de caractéristiques, ou pour extraire des informations de récompense. Les jeux Atari sont disponibles dans le Gym. +* Apprendre à un ordinateur à jouer à des jeux de société, tels que les échecs et le Go. Récemment, des programmes à la pointe de la technologie comme **Alpha Zero** ont été entraînés à partir de zéro par deux agents jouant l'un contre l'autre, s'améliorant à chaque étape. +* Dans l'industrie, le RL est utilisé pour créer des systèmes de contrôle à partir de simulations. Un service appelé [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) est spécifiquement conçu pour cela. + +## Conclusion + +Nous avons maintenant appris comment former des agents pour obtenir de bons résultats simplement en leur fournissant une fonction de récompense qui définit l'état souhaité du jeu, et en leur offrant la possibilité d'explorer intelligemment l'espace de recherche. Nous avons essayé avec succès deux algorithmes et obtenu un bon résultat dans un délai relativement court. Cependant, ce n'est que le début de votre voyage dans le RL, et vous devriez certainement envisager de suivre un cours séparé si vous souhaitez approfondir vos connaissances. + +## 🚀 Défi + +Explorez les applications énumérées dans la section 'Autres Tâches de RL' et essayez d'en implémenter une ! + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Revue et Auto-étude + +En savoir plus sur l'apprentissage par renforcement classique dans notre [Curriculum d'Apprentissage Machine pour Débutants](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Regardez [cette excellente vidéo](https://www.youtube.com/watch?v=qv6UVOQ0F44) qui parle de la façon dont un ordinateur peut apprendre à jouer à Super Mario. + +## Devoir : [Entraîner une Voiture de Montagne](lab/README.md) + +Votre objectif lors de ce devoir serait d'entraîner un environnement Gym différent - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/6-Other/22-DeepRL/lab/README.md b/translations/it/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..717d86ab --- /dev/null +++ b/translations/it/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# Entrenando a Mountain Car para Escapar + +Tarea del [Currículo de IA para Principiantes](https://github.com/microsoft/ai-for-beginners). + +## Tarea + +Tu objetivo es entrenar al agente de RL para controlar [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) en el Entorno de OpenAI. Estás entrenado con datos hasta octubre de 2023. + +## El Entorno + +El entorno de Mountain Car consiste en un coche atrapado dentro de un valle. Tu meta es saltar fuera del valle y llegar a la bandera. Las acciones que puedes realizar son acelerar a la izquierda, a la derecha, o no hacer nada. Puedes observar la posición del coche a lo largo del eje x y la velocidad. + +## Iniciando el Notebook + +Comienza el laboratorio abriendo [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb). + +## Conclusión + +Deberías aprender a lo largo de este laboratorio que adoptar algoritmos de RL a un nuevo entorno es a menudo bastante sencillo, porque OpenAI Gym tiene la misma interfaz para todos los entornos, y los algoritmos no dependen en gran medida de la naturaleza del entorno. Incluso puedes reestructurar el código de Python de tal manera que se pase cualquier entorno al algoritmo de RL como un parámetro. + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación que surja del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/6-Other/23-MultiagentSystems/README.md b/translations/it/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..b2ad1444 --- /dev/null +++ b/translations/it/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,154 @@ +# Systèmes Multi-Agents + +L'une des manières possibles d'atteindre l'intelligence est l'approche dite **émergente** (ou **synergétique**), qui repose sur le fait que le comportement combiné de nombreux agents relativement simples peut donner lieu à un comportement global plus complexe (ou intelligent) du système dans son ensemble. Théoriquement, cela repose sur les principes de [l'Intelligence Collective](https://en.wikipedia.org/wiki/Collective_intelligence), de [l'Émergentisme](https://en.wikipedia.org/wiki/Global_brain) et de [la Cybernétique Évolutionnaire](https://en.wikipedia.org/wiki/Global_brain), qui affirment que les systèmes de niveau supérieur obtiennent une sorte de valeur ajoutée lorsqu'ils sont correctement combinés à partir de systèmes de niveau inférieur (le soi-disant *principe de transition de méta-système*). + +## [Quiz pré-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +Le domaine des **Systèmes Multi-Agents** a émergé dans l'IA dans les années 1990 en réponse à la croissance d'Internet et des systèmes distribués. L'un des manuels classiques de l'IA, [Intelligence Artificielle : Une Approche Moderne](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), se concentre sur la vision de l'IA classique du point de vue des systèmes multi-agents. + +Au cœur de l'approche multi-agents se trouve la notion d'**Agent** - une entité qui évolue dans un **environnement**, qu'elle peut percevoir et sur lequel elle peut agir. C'est une définition très large, et il peut y avoir de nombreux types et classifications d'agents : + +* Par leur capacité à raisonner : + - Les agents **Réactifs** ont généralement un comportement simple de type demande-réponse + - Les agents **Délibératifs** utilisent une sorte de raisonnement logique et/ou de capacités de planification +* Par l'endroit où l'agent exécute son code : + - Les agents **Statiques** fonctionnent sur un nœud de réseau dédié + - Les agents **Mobiles** peuvent déplacer leur code entre les nœuds de réseau +* Par leur comportement : + - Les **agents passifs** n'ont pas d'objectifs spécifiques. Ces agents peuvent réagir à des stimuli externes, mais n'initieront aucune action eux-mêmes. + - Les **agents actifs** ont des objectifs qu'ils poursuivent + - Les **agents cognitifs** impliquent une planification et un raisonnement complexes + +Les systèmes multi-agents sont aujourd'hui utilisés dans un certain nombre d'applications : + +* Dans les jeux, de nombreux personnages non-joueurs utilisent une forme d'IA et peuvent être considérés comme des agents intelligents +* Dans la production vidéo, le rendu de scènes 3D complexes impliquant des foules est généralement réalisé à l'aide de simulations multi-agents +* Dans la modélisation de systèmes, l'approche multi-agents est utilisée pour simuler le comportement d'un modèle complexe. Par exemple, cette approche a été utilisée avec succès pour prédire la propagation de la maladie COVID-19 dans le monde entier. Une approche similaire peut être utilisée pour modéliser le trafic dans la ville et observer comment il réagit aux changements des règles de circulation. +* Dans les systèmes d'automatisation complexes, chaque appareil peut agir comme un agent indépendant, ce qui rend l'ensemble du système moins monolithique et plus robuste. + +Nous ne passerons pas beaucoup de temps à approfondir les systèmes multi-agents, mais considérons un exemple de **Modélisation Multi-Agent**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) est un environnement de modélisation multi-agent basé sur une version modifiée du langage de programmation [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Ce langage a été développé pour enseigner les concepts de programmation aux enfants, et il vous permet de contrôler un agent appelé **tortue**, qui peut se déplacer en laissant une trace derrière elle. Cela permet de créer des figures géométriques complexes, ce qui est une manière très visuelle de comprendre le comportement d'un agent. + +Dans NetLogo, nous pouvons créer de nombreuses tortues en utilisant la commande `create-turtles`. Nous pouvons ensuite ordonner à toutes les tortues d'effectuer certaines actions (dans l'exemple ci-dessous - avancer de 10 points) : + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Bien sûr, il n'est pas intéressant que toutes les tortues fassent la même chose, donc nous pouvons `ask` groups of turtles, eg. those who are in the vicinity of a certain point. We can also create turtles of different *breeds* using `breed [cats cat]` command. Here `cat` est le nom d'une race, et nous devons spécifier à la fois le mot au singulier et au pluriel, car différentes commandes utilisent différentes formes pour plus de clarté. + +> ✅ Nous n'allons pas approfondir l'apprentissage du langage NetLogo lui-même - vous pouvez visiter le brillant [Dictionnaire Interactif pour Débutants de NetLogo](https://ccl.northwestern.edu/netlogo/bind/) si vous souhaitez en savoir plus. + +Vous pouvez [télécharger](https://ccl.northwestern.edu/netlogo/download.shtml) et installer NetLogo pour l'essayer. + +### Bibliothèque de Modèles + +Une grande chose à propos de NetLogo est qu'il contient une bibliothèque de modèles fonctionnels que vous pouvez essayer. Allez dans **Fichier → Bibliothèque de Modèles**, et vous aurez de nombreuses catégories de modèles parmi lesquelles choisir. + +Bibliothèque de Modèles NetLogo + +> Une capture d'écran de la bibliothèque de modèles par Dmitry Soshnikov + +Vous pouvez ouvrir l'un des modèles, par exemple **Biologie → Flocking**. + +### Principes Principaux + +Après avoir ouvert le modèle, vous êtes dirigé vers l'écran principal de NetLogo. Voici un modèle d'exemple qui décrit la population de loups et de moutons, compte tenu des ressources finies (herbe). + +![Écran Principal de NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.it.png) + +> Capture d'écran par Dmitry Soshnikov + +Sur cet écran, vous pouvez voir : + +* La section **Interface** qui contient : + - Le champ principal, où vivent tous les agents + - Différents contrôles : boutons, curseurs, etc. + - Des graphiques que vous pouvez utiliser pour afficher les paramètres de la simulation +* L'onglet **Code** qui contient l'éditeur, où vous pouvez taper le programme NetLogo + +Dans la plupart des cas, l'interface aura un bouton **Setup**, qui initialise l'état de la simulation, et un bouton **Go** qui démarre l'exécution. Ceux-ci sont gérés par les gestionnaires correspondants dans le code qui ressemblent à ceci : + +``` +to go [ +... +] +``` + +Le monde de NetLogo se compose des objets suivants : + +* **Agents** (tortues) qui peuvent se déplacer sur le champ et faire quelque chose. Vous commandez les agents en utilisant `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. +* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches` pour faire quelque chose. +* **Observer** est un agent unique qui contrôle le monde. Tous les gestionnaires de boutons sont exécutés en *mode observateur*. + +> ✅ La beauté d'un environnement multi-agent est que le code qui s'exécute en mode tortue ou en mode patch est exécuté en même temps par tous les agents en parallèle. Ainsi, en écrivant un peu de code et en programmant le comportement d'un agent individuel, vous pouvez créer un comportement complexe du système de simulation dans son ensemble. + +### Flocking + +Comme exemple de comportement multi-agent, considérons le **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Le flocking est un modèle complexe qui ressemble beaucoup à la façon dont les volées d'oiseaux volent. En les observant voler, vous pourriez penser qu'ils suivent une sorte d'algorithme collectif, ou qu'ils possèdent une forme d'*intelligence collective*. Cependant, ce comportement complexe émerge lorsque chaque agent individuel (dans ce cas, un *oiseau*) n'observe que quelques autres agents à une courte distance de lui, et suit trois règles simples : + +* **Alignement** - il s'oriente vers la direction moyenne des agents voisins +* **Cohésion** - il essaie de s'orienter vers la position moyenne des voisins (*attraction à long terme*) +* **Séparation** - lorsqu'il s'approche trop des autres oiseaux, il essaie de s'éloigner (*répulsion à courte portée*) + +Vous pouvez exécuter l'exemple de flocking et observer le comportement. Vous pouvez également ajuster des paramètres, tels que le *degré de séparation* ou le *champ de vision*, qui définit jusqu'où chaque oiseau peut voir. Notez que si vous réduisez le champ de vision à 0, tous les oiseaux deviennent aveugles et le flocking s'arrête. Si vous réduisez la séparation à 0, tous les oiseaux se regroupent en une ligne droite. + +> ✅ Passez à l'onglet **Code** et voyez où les trois règles du flocking (alignement, cohésion et séparation) sont mises en œuvre dans le code. Notez comment nous ne faisons référence qu'aux agents qui sont en vue. + +### Autres Modèles à Explorer + +Il y a quelques modèles intéressants supplémentaires avec lesquels vous pouvez expérimenter : + +* **Art → Feux d'Artifice** montre comment un feu d'artifice peut être considéré comme un comportement collectif de flux de feu individuels +* **Sciences Sociales → Trafic de Base** et **Sciences Sociales → Grille de Trafic** montrent le modèle du trafic urbain en 1D et en 2D avec ou sans feux de circulation. Chaque voiture dans la simulation suit les règles suivantes : + - Si l'espace devant elle est vide - accélérer (jusqu'à une certaine vitesse maximale) + - Si elle voit un obstacle devant - freiner (et vous pouvez ajuster jusqu'où un conducteur peut voir) +* **Sciences Sociales → Fête** montre comment les gens se regroupent lors d'une fête. Vous pouvez trouver la combinaison de paramètres qui conduit à la plus rapide augmentation du bonheur du groupe. + +Comme vous pouvez le constater à partir de ces exemples, les simulations multi-agents peuvent être un moyen très utile de comprendre le comportement d'un système complexe composé d'individus qui suivent la même logique ou une logique similaire. Cela peut également être utilisé pour contrôler des agents virtuels, tels que les [PNJ](https://en.wikipedia.org/wiki/NPC) dans les jeux vidéo, ou des agents dans des mondes animés en 3D. + +## Agents Délibératifs + +Les agents décrits ci-dessus sont très simples, réagissant aux changements dans l'environnement à l'aide d'un certain type d'algorithme. En tant que tels, ils sont des **agents réactifs**. Cependant, parfois, les agents peuvent raisonner et planifier leurs actions, auquel cas on les appelle **délibératifs**. + +Un exemple typique serait un agent personnel qui reçoit une instruction d'un humain pour réserver un voyage. Supposons qu'il existe de nombreux agents qui vivent sur Internet, qui peuvent l'aider. Il devrait alors contacter d'autres agents pour voir quels vols sont disponibles, quels sont les prix des hôtels pour différentes dates, et essayer de négocier le meilleur prix. Lorsque le plan de vacances est complet et confirmé par le propriétaire, il peut procéder à la réservation. + +Pour cela, les agents doivent **communiquer**. Pour une communication réussie, ils ont besoin de : + +* De **langages standard pour échanger des connaissances**, tels que le [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) et le [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Ces langages sont conçus sur la base de la [théorie des actes de langage](https://en.wikipedia.org/wiki/Speech_act). +* Ces langages devraient également inclure certains **protocoles de négociation**, basés sur différents **types d'enchères**. +* Une **ontologie commune** à utiliser, afin qu'ils fassent référence aux mêmes concepts en connaissant leur sémantique +* Un moyen de **découvrir** ce que différents agents peuvent faire, également basé sur une sorte d'ontologie + +Les agents délibératifs sont beaucoup plus complexes que les réactifs, car ils ne réagissent pas seulement aux changements dans l'environnement, mais doivent également être capables d'*initier* des actions. L'une des architectures proposées pour les agents délibératifs est celle des agents de type Croyance-Désir-Intention (BDI) : + +* Les **Croyances** forment un ensemble de connaissances sur l'environnement d'un agent. Cela peut être structuré sous la forme d'une base de connaissances ou d'un ensemble de règles qu'un agent peut appliquer à une situation spécifique dans l'environnement. +* Les **Désirs** définissent ce qu'un agent souhaite faire, c'est-à-dire ses objectifs. Par exemple, l'objectif de l'agent assistant personnel ci-dessus est de réserver un voyage, et l'objectif d'un agent hôtelier est de maximiser le profit. +* Les **Intentions** sont des actions spécifiques qu'un agent prévoit d'accomplir pour atteindre ses objectifs. Les actions modifient généralement l'environnement et entraînent une communication avec d'autres agents. + +Il existe des plateformes disponibles pour construire des systèmes multi-agents, telles que [JADE](https://jade.tilab.com/). [Cet article](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contient une revue des plateformes multi-agents, ainsi qu'une brève histoire des systèmes multi-agents et de leurs différents scénarios d'utilisation. + +## Conclusion + +Les systèmes multi-agents peuvent prendre des formes très différentes et être utilisés dans de nombreuses applications variées. Ils ont tous tendance à se concentrer sur le comportement plus simple d'un agent individuel, et à atteindre un comportement plus complexe de l'ensemble du système grâce à l'effet **synergétique**. + +## 🚀 Défi + +Prenez cette leçon dans le monde réel et essayez de conceptualiser un système multi-agent capable de résoudre un problème. Que devrait faire un système multi-agent pour optimiser un itinéraire de bus scolaire, par exemple ? Comment cela pourrait-il fonctionner dans une boulangerie ? + +## [Quiz post-cours](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Revue et Auto-Étude + +Examinez l'utilisation de ce type de système dans l'industrie. Choisissez un domaine tel que la fabrication ou l'industrie du jeu vidéo et découvrez comment les systèmes multi-agents peuvent être utilisés pour résoudre des problèmes uniques. + +## [Devoir NetLogo](assignment.md) + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional humana. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/it/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..ac80acc7 --- /dev/null +++ b/translations/it/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# NetLogo Aufgabe + +Wählen Sie eines der Modelle aus der NetLogo-Bibliothek aus und verwenden Sie es, um eine reale Situation so genau wie möglich zu simulieren. Ein gutes Beispiel wäre, das Virus-Modell im Ordner Alternative Visualisierungen anzupassen, um zu zeigen, wie es verwendet werden kann, um die Ausbreitung von COVID-19 zu modellieren. Können Sie ein Modell erstellen, das eine reale virale Ausbreitung nachahmt? + +Zeigen Sie Ihre Arbeit, indem Sie eine Kopie speichern und ein Video-Demo erstellen, das erklärt, wie das Modell mit einer realen Situation verbunden ist. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/7-Ethics/README.md b/translations/it/lessons/7-Ethics/README.md new file mode 100644 index 00000000..1a6c8f07 --- /dev/null +++ b/translations/it/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# IA Ética y Responsable + +Has casi terminado este curso, y espero que ahora veas claramente que la IA se basa en una serie de métodos matemáticos formales que nos permiten encontrar relaciones en los datos y entrenar modelos para replicar algunos aspectos del comportamiento humano. En este momento de la historia, consideramos que la IA es una herramienta muy poderosa para extraer patrones de los datos y aplicar esos patrones para resolver nuevos problemas. + +## [Cuestionario previo a la clase](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Sin embargo, en la ciencia ficción a menudo vemos historias donde la IA presenta un peligro para la humanidad. Generalmente, estas historias giran en torno a algún tipo de rebelión de la IA, cuando esta decide confrontar a los seres humanos. Esto implica que la IA tiene algún tipo de emoción o puede tomar decisiones imprevistas por sus desarrolladores. + +El tipo de IA que hemos aprendido en este curso no es más que una aritmética de matrices grande. Es una herramienta muy poderosa que nos ayuda a resolver nuestros problemas, y como cualquier otra herramienta poderosa, puede ser utilizada para fines buenos y malos. Es importante destacar que puede ser *mal utilizada*. + +## Principios de la IA Responsable + +Para evitar este uso accidental o intencionado de la IA, Microsoft establece los importantes [Principios de la IA Responsable](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Los siguientes conceptos sustentan estos principios: + +* **Equidad** está relacionada con el importante problema de los *sesgos en los modelos*, que pueden ser causados por el uso de datos sesgados para el entrenamiento. Por ejemplo, cuando intentamos predecir la probabilidad de conseguir un trabajo como desarrollador de software para una persona, es probable que el modelo dé mayor preferencia a los hombres, simplemente porque el conjunto de datos de entrenamiento probablemente estaba sesgado hacia una audiencia masculina. Necesitamos equilibrar cuidadosamente los datos de entrenamiento e investigar el modelo para evitar sesgos, y asegurarnos de que el modelo tenga en cuenta características más relevantes. +* **Fiabilidad y Seguridad**. Por su naturaleza, los modelos de IA pueden cometer errores. Una red neuronal devuelve probabilidades, y debemos tenerlo en cuenta al tomar decisiones. Cada modelo tiene una cierta precisión y recuperación, y necesitamos entender eso para prevenir el daño que puede causar un consejo erróneo. +* **Privacidad y Seguridad** tienen algunas implicaciones específicas de la IA. Por ejemplo, cuando usamos algunos datos para entrenar un modelo, esos datos se integran de alguna manera en el modelo. Por un lado, eso aumenta la seguridad y la privacidad; por otro, debemos recordar sobre qué datos se entrenó el modelo. +* **Inclusividad** significa que no estamos construyendo IA para reemplazar a las personas, sino para aumentar a las personas y hacer nuestro trabajo más creativo. También está relacionado con la equidad, porque al tratar con comunidades subrepresentadas, la mayoría de los conjuntos de datos que recopilamos probablemente estén sesgados, y debemos asegurarnos de que esas comunidades estén incluidas y manejadas correctamente por la IA. +* **Transparencia**. Esto incluye asegurarnos de que siempre seamos claros sobre el uso de la IA. Además, siempre que sea posible, queremos utilizar sistemas de IA que sean *interpretables*. +* **Responsabilidad**. Cuando los modelos de IA toman decisiones, no siempre está claro quién es responsable de esas decisiones. Necesitamos asegurarnos de que entendemos dónde radica la responsabilidad de las decisiones de la IA. En la mayoría de los casos, querríamos incluir a seres humanos en el proceso de toma de decisiones importantes, para que las personas reales sean responsables. + +## Herramientas para la IA Responsable + +Microsoft ha desarrollado la [Caja de Herramientas de IA Responsable](https://github.com/microsoft/responsible-ai-toolbox) que contiene un conjunto de herramientas: + +* Panel de Interpretabilidad (InterpretML) +* Panel de Equidad (FairLearn) +* Panel de Análisis de Errores +* Panel de IA Responsable que incluye + + - EconML - herramienta para Análisis Causal, que se centra en preguntas hipotéticas + - DiCE - herramienta para Análisis Contrafactual que te permite ver qué características deben cambiarse para afectar la decisión del modelo + +Para más información sobre Ética de la IA, visita [esta lección](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) en el Currículo de Aprendizaje Automático que incluye tareas. + +## Revisión y Autoestudio + +Realiza este [Ruta de Aprendizaje](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) para aprender más sobre la IA responsable. + +## [Cuestionario posterior a la clase](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/README.md b/translations/it/lessons/README.md new file mode 100644 index 00000000..e6405bc2 --- /dev/null +++ b/translations/it/lessons/README.md @@ -0,0 +1,8 @@ +# Resumen + +![Resumen en un garabato](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.it.png) + +> Garabato por [Tomomi Imura](https://twitter.com/girlie_mac) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/X-Extras/X1-MultiModal/README.md b/translations/it/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..91877bed --- /dev/null +++ b/translations/it/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# Réseaux Multi-Modal + +Après le succès des modèles transformer pour résoudre des tâches de traitement du langage naturel, des architectures similaires ont été appliquées aux tâches de vision par ordinateur. Il y a un intérêt croissant à construire des modèles qui *combinent* les capacités de vision et de langage naturel. L'une de ces tentatives a été réalisée par OpenAI, et elle s'appelle CLIP et DALL.E. + +## Pré-Formation d'Image Contrastive (CLIP) + +L'idée principale de CLIP est de pouvoir comparer des invites textuelles avec une image et de déterminer à quel point l'image correspond à l'invite. + +![Architecture CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.it.png) + +> *Image provenant de [cet article de blog](https://openai.com/blog/clip/)* + +Le modèle est entraîné sur des images obtenues sur Internet et leurs légendes. Pour chaque lot, nous prenons N paires de (image, texte) et les convertissons en certaines représentations vectorielles I et T. Ces représentations sont ensuite appariées. La fonction de perte est définie pour maximiser la similarité cosinus entre les vecteurs correspondant à une paire (par exemple, I et T), et minimiser la similarité cosinus entre toutes les autres paires. C'est la raison pour laquelle cette approche est appelée **contrastive**. + +Le modèle/bibliothèque CLIP est disponible sur [OpenAI GitHub](https://github.com/openai/CLIP). L'approche est décrite dans [cet article de blog](https://openai.com/blog/clip/), et plus en détail dans [ce document](https://arxiv.org/pdf/2103.00020.pdf). + +Une fois que ce modèle est pré-entraîné, nous pouvons lui donner un lot d'images et un lot d'invites textuelles, et il retournera un tenseur avec des probabilités. CLIP peut être utilisé pour plusieurs tâches : + +**Classification d'Image** + +Supposons que nous devions classer des images entre, disons, des chats, des chiens et des humains. Dans ce cas, nous pouvons donner au modèle une image et une série d'invites textuelles : "*une image d'un chat*", "*une image d'un chien*", "*une image d'un humain*". Dans le vecteur résultant de 3 probabilités, nous devons simplement sélectionner l'index avec la valeur la plus élevée. + +![CLIP pour la Classification d'Image](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.it.png) + +> *Image provenant de [cet article de blog](https://openai.com/blog/clip/)* + +**Recherche d'Image Basée sur du Texte** + +Nous pouvons également faire l'inverse. Si nous avons une collection d'images, nous pouvons passer cette collection au modèle, et une invite textuelle - cela nous donnera l'image qui est la plus similaire à l'invite donnée. + +## ✍️ Exemple : [Utilisation de CLIP pour la Classification d'Image et la Recherche d'Image](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Ouvrez le notebook [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) pour voir CLIP en action. + +## Génération d'Image avec VQGAN+ CLIP + +CLIP peut également être utilisé pour la **génération d'images** à partir d'une invite textuelle. Pour ce faire, nous avons besoin d'un **modèle générateur** qui sera capable de générer des images basées sur une certaine entrée vectorielle. L'un de ces modèles s'appelle [VQGAN](https://compvis.github.io/taming-transformers/) (GAN à Quantification Vectorielle). + +Les principales idées de VQGAN qui le différencient d'un GAN ordinaire sont les suivantes : +* Utiliser une architecture transformer autoregressive pour générer une séquence de parties visuelles riches en contexte qui composent l'image. Ces parties visuelles sont à leur tour apprises par un [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Utiliser un discriminateur de sous-image qui détecte si des parties de l'image sont "réelles" ou "fausses" (contrairement à l'approche "tout ou rien" dans un GAN traditionnel). + +En savoir plus sur VQGAN sur le site [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Une des différences importantes entre VQGAN et un GAN traditionnel est que ce dernier peut produire une image décente à partir de n'importe quel vecteur d'entrée, tandis que VQGAN est susceptible de produire une image qui ne serait pas cohérente. Ainsi, nous devons guider davantage le processus de création d'image, et cela peut être fait en utilisant CLIP. + +![Architecture VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.it.png) + +Pour générer une image correspondant à une invite textuelle, nous commençons avec un vecteur d'encodage aléatoire qui est passé à travers VQGAN pour produire une image. Ensuite, CLIP est utilisé pour produire une fonction de perte qui montre à quel point l'image correspond à l'invite textuelle. L'objectif est alors de minimiser cette perte, en utilisant la rétropropagation pour ajuster les paramètres du vecteur d'entrée. + +Une excellente bibliothèque qui implémente VQGAN+CLIP est [Pixray](http://github.com/pixray/pixray). + +![Image produite par Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.it.png) | ![Image produite par pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.it.png) | ![Image produite par Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.it.png) +----|----|---- +Image générée à partir de l'invite *un gros plan d'un portrait aquarelle d'un jeune enseignant de littérature avec un livre* | Image générée à partir de l'invite *un gros plan d'un portrait à l'huile d'une jeune enseignante de sciences informatiques avec un ordinateur* | Image générée à partir de l'invite *un gros plan d'un portrait à l'huile d'un vieux professeur de mathématiques devant un tableau noir* + +> Images de la collection **Enseignants Artificiels** par [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E est une version de GPT-3 entraînée pour générer des images à partir d'invites. Il a été entraîné avec 12 milliards de paramètres. + +Contrairement à CLIP, DALL-E reçoit à la fois le texte et l'image comme un seul flux de jetons pour les images et le texte. Par conséquent, à partir de plusieurs invites, vous pouvez générer des images basées sur le texte. + +### [DALL-E 2](https://openai.com/dall-e-2) +La principale différence entre DALL-E 1 et 2 est qu'il génère des images et des œuvres d'art plus réalistes. + +Exemples de générations d'images avec DALL-E : +![Image produite par Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.it.png) | ![Image produite par pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.it.png) | ![Image produite par Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.it.png) +----|----|---- +Image générée à partir de l'invite *un gros plan d'un portrait aquarelle d'un jeune enseignant de littérature avec un livre* | Image générée à partir de l'invite *un gros plan d'un portrait à l'huile d'une jeune enseignante de sciences informatiques avec un ordinateur* | Image générée à partir de l'invite *un gros plan d'un portrait à l'huile d'un vieux professeur de mathématiques devant un tableau noir* + +## Références + +* Document VQGAN : [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Document CLIP : [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Disclaimer**: +Este documento ha sido traducido utilizando servicios de traducción automática basados en IA. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o malas interpretaciones que surjan del uso de esta traducción. \ No newline at end of file diff --git a/translations/it/lessons/sketchnotes/LICENSE.md b/translations/it/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..cd80b6f8 --- /dev/null +++ b/translations/it/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,181 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or legal advice. The distribution of Creative Commons public licenses does not establish a lawyer-client or any other relationship. Creative Commons makes its licenses and related information available on an "as-is" basis. Creative Commons provides no warranties regarding its licenses, any materials licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses offer a standard set of terms and conditions that creators and other rights holders may utilize to share original works of authorship and other materials subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are intended for those authorized to grant the public permission to use materials in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and comprehend the terms and conditions of the license they select before applying it. Licensors should also secure all necessary rights before applying our licenses so that the public can reuse the material as intended. Licensors should clearly indicate any material not subject to the license. This includes other CC-licensed materials or materials used under an exception or limitation to copyright. More considerations for licensors: wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By utilizing one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor's permission is unnecessary for any reason—such as due to any applicable exception or limitation to copyright—then that use is not governed by the license. Our licenses only grant permissions under copyright and certain other rights that a licensor has the authority to grant. The use of the licensed material may still be restricted for other reasons, including because others hold copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not mandated by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public: wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public License + +By exercising the Licensed Rights (defined below), you accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, you are granted the Licensed Rights in consideration of your acceptance of these terms and conditions, and the Licensor grants you such rights in consideration of the benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced when the Licensed Material is synchronized in timed relation with a moving image. + + b. Adapter's License means the license you apply to your Copyright and Similar Rights in your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially equivalent to this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, regardless of how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + + e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + + i. Licensed Rights means the rights granted to you subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to your use of the Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + + k. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants you a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to your use, this Public License does not apply, and you do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + + 4. Media and formats; technical modifications allowed. The Licensor authorizes you to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid you from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + b. Additional offer from the Licensor -- Adapted Material. Every recipient of Adapted Material from you automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter's License you apply. + + c. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that you are, or that your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow you to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from you for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases, the Licensor expressly reserves any right to collect such royalties. + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + + a. Attribution. + + 1. If you Share the Licensed Material (including in modified form), you must: + + a. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + b. indicate if you modified the Licensed Material and retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which you Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, you must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if you Share Adapted Material you produce, the following conditions also apply. + + 1. The Adapter's License you apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the Adapter's License you apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which you Share Adapted Material. + + 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License you apply. + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants you the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; + + b. if you include all or a substantial portion of the database contents in a database in which you have Sui Generis Database Rights, then the database in which you have Sui Generis Database Rights (but not its individual contents) is Adapted Material, + + including for purposes of Section 3(b); and + c. you must comply with the conditions in Section 3(a) if you Share all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if you fail to comply with this Public License, then your rights under this Public License terminate automatically. + + b. Where your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for your violations of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different terms or conditions communicated by you unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + + c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + + d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or you, including from the legal processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may choose to apply one of its public licenses to material it publishes, and in those instances will be considered the “Licensor.” The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication. Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons without its prior written consent, including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning the use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/it/lessons/sketchnotes/README.md b/translations/it/lessons/sketchnotes/README.md new file mode 100644 index 00000000..faf46853 --- /dev/null +++ b/translations/it/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +All the curriculum's sketchnotes can be downloaded here. + +🎨 Created by: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**Disclaimer**: +This document has been translated using machine-based AI translation services. While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation. \ No newline at end of file diff --git a/translations/ja/README.md b/translations/ja/README.md new file mode 100644 index 00000000..c808cee2 --- /dev/null +++ b/translations/ja/README.md @@ -0,0 +1,140 @@ +[![GitHubライセンス](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub貢献者](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHubの問題](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHubプルリクエスト](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRを歓迎](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHubウォッチャー](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHubフォーク](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHubスター](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# 初心者のための人工知能 - カリキュラム + +|![ スケッチノート by [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| 初心者のためのAI - _スケッチノート by [@girlie_mac](https://twitter.com/girlie_mac)_ | + +12週間、24レッスンからなる**人工知能**(AI)の世界を探求しましょう! 実践的なレッスン、クイズ、ラボが含まれています。このカリキュラムは初心者向けで、TensorFlowやPyTorchなどのツールやAIの倫理についてもカバーしています。 + +## 学べること + +**[コースのマインドマップ](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +このカリキュラムでは、以下のことを学びます: + +* **知識表現**と推論を用いた「古き良き」シンボリックアプローチを含む、人工知能のさまざまなアプローチ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence))。 +* 現代のAIの核心である**ニューラルネットワーク**と**ディープラーニング**。これらの重要なトピックの背後にある概念を、最も人気のある二つのフレームワーク - [TensorFlow](http://Tensorflow.org) と [PyTorch](http://pytorch.org) を用いてコードで説明します。 +* 画像やテキストを扱うための**ニューラルアーキテクチャ**。最近のモデルについて取り上げますが、最先端のものには少し欠けるかもしれません。 +* **遺伝的アルゴリズム**や**マルチエージェントシステム**など、あまり一般的ではないAIアプローチ。 + +このカリキュラムでは取り上げないこと: + +> [このコースの追加リソースをMicrosoft Learnコレクションで見つける](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **ビジネスにおけるAIの使用事例**。Microsoft Learnの[ビジネスユーザー向けAI入門](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum)学習パスや、[AIビジネススクール](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum)([INSEAD](https://www.insead.edu/)との共同開発)を検討してください。 +* 当社の[初心者向け機械学習カリキュラム](http://github.com/Microsoft/ML-for-Beginners)でよく説明されている**クラシック機械学習**。 +* **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**を使用して構築された実践的なAIアプリケーション。このためには、Microsoft Learnのモジュールから始めることをお勧めします。[ビジョン](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum)、[自然言語処理](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum)、**[Azure OpenAI Serviceによる生成AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)**など、他にもあります。 +* 特定の ML **クラウドフレームワーク**、例えば [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum)、[Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum)、または [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)。 [Azure Machine Learning を使用して機械学習ソリューションを構築および運用する](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) や [Azure Databricks を使用して機械学習ソリューションを構築および運用する](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) の学習パスを検討してください。 +* **会話型AI** と **チャットボット**。別途 [会話型AIソリューションの作成](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) の学習パスがあり、詳細については [このブログ記事](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) を参照することもできます。 +* 深層学習の背後にある **深い数学**。これについては、Ian Goodfellow、Yoshua Bengio、Aaron Courville 著の [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) をお勧めします。この本は [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/) でもオンラインで入手可能です。 + +クラウドにおける _AI_ のトピックに優しく入門したい場合は、[Azure での人工知能の始め方](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) の学習パスを受講することを検討してください。 + +# コンテンツ + +| | レッスンリンク | PyTorch/Keras/TensorFlow | ラボ | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [コース設定](./lessons/0-course-setup/setup.md) | [開発環境の設定](./lessons/0-course-setup/how-to-run.md) | | +| I | [**AIの紹介**](./lessons/1-Intro/README.md) | | | +| 01 | [AIの紹介と歴史](./lessons/1-Intro/README.md) | - | - | +| II | **シンボリックAI** | +| 02 | [知識表現とエキスパートシステム](./lessons/2-Symbolic/README.md) | [エキスパートシステム](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [オントロジー](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[概念グラフ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**ニューラルネットワークの紹介**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [パーセプトロン](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [ノートブック](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [ラボ](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [多層パーセプトロンと自分のフレームワークの作成](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [ノートブック](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [ラボ](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [フレームワーク(PyTorch/TensorFlow)と過学習の紹介](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [ラボ](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**コンピュータビジョン**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azureでのコンピュータビジョンを探る](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [コンピュータビジョン入門。OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [ノートブック](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [ラボ](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [畳み込みニューラルネットワーク](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNNアーキテクチャ](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [ラボ](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [事前学習済みネットワークと転移学習](./lessons/4-ComputerVision/08-TransferLearning/README.md) および [トレーニングのコツ](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [ラボ](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [オートエンコーダーとVAE](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [生成的敵対ネットワークと芸術スタイル転送](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [物体検出](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [ラボ](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [セマンティックセグメンテーション。U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../../../AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | +| V | [**自然言語処理**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Microsoft Azureで自然言語処理を探る](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 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)モジュールへのリンクが含まれています。 + +## 始めに + +- 開発環境の設定を手助けするために[セットアップレッスン](./lessons/0-course-setup/setup.md)を作成しました。 - 教育者向けには、[カリキュラム設定レッスン](./lessons/0-course-setup/for-teachers.md)も用意しています! +- [VSCodeまたはCodepaceでコードを実行する方法](./lessons/0-course-setup/how-to-run.md) + +以下の手順に従ってください: + +リポジトリをフォークする:このページの右上隅にある「フォーク」ボタンをクリックします。 + +リポジトリをクローンする: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +後で見つけやすくするために、このリポジトリにスター(🌟)を付けるのを忘れないでください。 + +## 他の学習者と出会う + +私たちの[公式AI Discordサーバー](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum)に参加して、同じコースを受講している他の学習者と出会い、ネットワークを広げ、サポートを受けましょう。 + +## クイズ + +> **クイズについての注意**:すべてのクイズはetc\quiz-app内のQuiz-appフォルダに含まれており、レッスン内からリンクされています。クイズアプリはローカルで実行することも、Azureにデプロイすることもできます。`quiz-app`フォルダ内の指示に従ってください。クイズは徐々にローカライズされています。 + +## ヘルプを求む + +提案がある、またはスペルやコードのエラーを見つけましたか?問題を提起するか、プルリクエストを作成してください。 + +## 特別な感謝 + +* **✍️ 主な著者:** [Dmitry Soshnikov](http://soshnikov.com)、博士 +* **🔥 編集者:** [Jen Looper](https://twitter.com/jenlooper)、博士 +* **🎨 スケッチノートイラストレーター:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ クイズ作成者:** [Lateefah Bello](https://github.com/CinnamonXI)、[MLSA](https://studentambassadors.microsoft.com/) +* **🙏 コア貢献者:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## 他のカリキュラム + +私たちのチームは他のカリキュラムも制作しています!チェックしてください: + +* [初心者のためのデータサイエンス](https://aka.ms/ds4beginners) +* [**バージョン2.0** 初心者のための生成AI](https://aka.ms/genai-beginners) +* [**新しい** 初心者のためのサイバーセキュリティ](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [初心者のためのWeb開発](https://aka.ms/webdev-beginners) +* [初心者のためのIoT](https://aka.ms/iot-beginners) +* [初心者のための機械学習](https://aka.ms/ml4beginners) +* [初心者のためのXR開発](https://aka.ms/xr-dev-for-beginners) +* [AIペアプログラミングのためのGitHub Copilotマスター](https://aka.ms/GitHubCopilotAI) + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご承知おきください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/SECURITY.md b/translations/ja/SECURITY.md new file mode 100644 index 00000000..011296fb --- /dev/null +++ b/translations/ja/SECURITY.md @@ -0,0 +1,40 @@ +## セキュリティ + +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/)を通じて管理されるすべてのソースコードリポジトリが含まれます。 + +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セキュリティレスポンスセンターPGPキーのページ](https://aka.ms/opensource/security/pgpkey)からダウンロードできます。 + +24時間以内に返信を受け取るべきです。もし何らかの理由で受け取らなかった場合は、元のメッセージが届いているか確認するためにメールでフォローアップしてください。追加情報は[microsoft.com/msrc](https://aka.ms/opensource/security/msrc)で確認できます。 + +以下に示す要求された情報をできる限り提供してください。これにより、問題の性質と範囲をより良く理解するのに役立ちます: + + * 問題の種類(例:バッファオーバーフロー、SQLインジェクション、クロスサイトスクリプティングなど) + * 問題の発現に関連するソースファイルの完全なパス + * 影響を受けたソースコードの場所(タグ/ブランチ/コミットまたは直接URL) + * 問題を再現するために必要な特別な設定 + * 問題を再現するためのステップバイステップの手順 + * プルーフ・オブ・コンセプトまたはエクスプロイトコード(可能であれば) + * 問題の影響、攻撃者がどのように問題を悪用する可能性があるか + +この情報は、あなたの報告を迅速にトリアージするのに役立ちます。 + +バグバウンティの報告を行う場合、より完全な報告は高いバウンティ報酬に寄与することがあります。私たちのアクティブなプログラムの詳細については、[Microsoftバグバウンティプログラム](https://aka.ms/opensource/security/bounty)のページをご覧ください。 + +## 優先言語 + +私たちは、すべてのコミュニケーションが英語であることを好みます。 + +## ポリシー + +Microsoftは、[協調的脆弱性開示](https://aka.ms/opensource/security/cvd)の原則に従っています。 + +**免責事項**: +この文書は、機械翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。元の文書はその母国語で権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用に起因する誤解や誤訳について、当社は一切責任を負いません。 \ No newline at end of file diff --git a/translations/ja/etc/CODE_OF_CONDUCT.md b/translations/ja/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..009aa149 --- /dev/null +++ b/translations/ja/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Microsoftオープンソース行動規範 + +このプロジェクトは、[Microsoftオープンソース行動規範](https://opensource.microsoft.com/codeofconduct/)を採用しています。 + +リソース: + +- [Microsoftオープンソース行動規範](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft行動規範FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- 質問や懸念がある場合は、[opencode@microsoft.com](mailto:opencode@microsoft.com)までご連絡ください。 + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。元の文書はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/etc/CONTRIBUTING.md b/translations/ja/etc/CONTRIBUTING.md new file mode 100644 index 00000000..072999e0 --- /dev/null +++ b/translations/ja/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# 貢献 + +このプロジェクトは、貢献や提案を歓迎します。ほとんどの貢献には、あなたがその権利を持ち、実際に私たちにあなたの貢献を使用する権利を与えることを宣言する貢献者ライセンス契約(CLA)に同意する必要があります。詳細については、https://cla.microsoft.com をご覧ください。 + +プルリクエストを送信すると、CLAボットが自動的にCLAの提供が必要かどうかを判断し、PRを適切に装飾します(例:ラベル、コメント)。ボットから提供される指示に従ってください。この手続きは、私たちのCLAを使用しているすべてのリポジトリで一度だけ行う必要があります。 + +このプロジェクトは、[Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)を採用しています。詳細については、[Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)をご覧いただくか、追加の質問やコメントがある場合は [opencode@microsoft.com](mailto:opencode@microsoft.com) にご連絡ください。 + +# 貢献を募集中 + +現在、以下のトピックに関する貢献を積極的に募集しています: + +- [ ] 深層強化学習に関するセクションの作成 +- [ ] 物体検出に関するセクションとノートブックの改善 +- [ ] PyTorch Lightning([このセクション](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)用) +- [ ] 固有表現認識に関するセクションとサンプルの作成 +- [ ] [このセクション](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling)用に独自の埋め込みをトレーニングするためのサンプル作成 + +**免責事項**: +この文書は、機械翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があります。元の文書はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用によって生じた誤解や誤訳について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/etc/Mindmap.md b/translations/ja/etc/Mindmap.md new file mode 100644 index 00000000..f781e0a0 --- /dev/null +++ b/translations/ja/etc/Mindmap.md @@ -0,0 +1,76 @@ +# AI + +## [AIの紹介](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - AIの定義 + - AIの歴史 + - AIへのアプローチ + - トップダウン/シンボリック + - ボトムアップ/ニューラル + - 進化的 + - シナジー的 / エマージェントAI + - [Microsoft AIビジネススクール](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [シンボリックAI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - 知識の表現 + - [エキスパートシステム](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [オントロジー](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - セマンティックウェブ + +## [ニューラルネットワーク](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [パーセプトロン](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [多層ネットワーク](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [フレームワークの紹介](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [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によるCV](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlowによるCV](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [CVの紹介。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で + - [AIの基礎: NLPを探る](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PyTorchによるNLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlowによるNLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [テキスト表現](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - 単語の袋 + - TF/IDF + - [意味的埋め込み](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [言語モデル](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [再帰型ニューラルネットワーク](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [生成再帰ネットワーク](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [トランスフォーマーとBERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [名前付きエンティティ認識](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [テキスト生成とGPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## その他の技術 + - [遺伝的アルゴリズム](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [深層強化学習](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [マルチエージェントシステム](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [AI倫理](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [責任あるAIに関するMS Learn](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## 追加情報 + - [マルチモーダルネットワーク](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確さを追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用から生じる誤解や誤訳については、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/etc/SUPPORT.md b/translations/ja/etc/SUPPORT.md new file mode 100644 index 00000000..a6b47672 --- /dev/null +++ b/translations/ja/etc/SUPPORT.md @@ -0,0 +1,14 @@ +# サポート + +## 問題の報告方法とヘルプの取得 + +このプロジェクトでは、バグや機能リクエストを追跡するためにGitHub Issuesを使用しています。新しい問題を報告する前に、既存の問題を検索して重複を避けてください。新しい問題については、バグや機能リクエストを新しいIssueとして報告してください。 + +このプロジェクトの使用に関するヘルプや質問については、ディスカッションボードをご利用ください。 + +## Microsoftサポートポリシー + +このプロジェクトに対するサポートは、上記のリソースに限定されています。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用に起因する誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/etc/TRANSLATIONS.md b/translations/ja/etc/TRANSLATIONS.md new file mode 100644 index 00000000..b3d808fd --- /dev/null +++ b/translations/ja/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# レッスンの翻訳による貢献 + +このカリキュラムのレッスンに対する翻訳を歓迎します! + +## ガイドライン + +各レッスンフォルダーとレッスン紹介フォルダーには、翻訳されたMarkdownファイルが含まれています。 + +> 注意:コードサンプルファイルのコードは翻訳しないでください。翻訳するのはREADME、課題、クイズのみです。ありがとうございます! + +翻訳されたファイルは次の命名規則に従う必要があります: + +**README._[language]_.md** + +ここで _[language]_ はISO 639-1標準に従った2文字の言語略語です(例:`README.es.md`はスペイン語、`README.nl.md`はオランダ語)。 + +**assignment._[language]_.md** + +READMEと同様に、課題も翻訳してください。 + +**クイズ** + +1. クイズアプリに翻訳を追加するには、ここにファイルを追加してください:https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations、適切な命名規則(en.json、fr.json)に従ってください。ただし、「true」または「false」という単語をローカライズしないでください。ありがとうございます! + +2. クイズアプリのApp.vueファイルのドロップダウンにあなたの言語コードを追加してください。 + +3. クイズアプリの[translations index.jsファイル](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js)を編集して、あなたの言語を追加してください。 + +4. 最後に、翻訳されたREADME.mdファイル内のすべてのクイズリンクを編集して、あなたの翻訳されたクイズに直接リンクするようにしてください:https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 は https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id になります。 + +**ありがとうございます** + +あなたの努力に心から感謝します! + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用によって生じる誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/etc/quiz-app/README.md b/translations/ja/etc/quiz-app/README.md new file mode 100644 index 00000000..21af6ce7 --- /dev/null +++ b/translations/ja/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# クイズ + +これらのクイズは、https://aka.ms/ai-beginners のAIカリキュラムの講義前後のクイズです。 + +## 翻訳されたクイズセットの追加 + +`assets/translations` フォルダー内に一致するクイズ構造を作成することで、クイズの翻訳を追加します。標準のクイズは `assets/translations/en` にあります。クイズはレッスンごとにいくつかのグループに分けられています。適切なクイズセクションに番号を合わせるようにしてください。このカリキュラムには合計40のクイズがあり、カウントは0から始まります。 + +翻訳を編集した後、`en` の規約に従ってすべてのファイルをインポートするために、翻訳フォルダー内の index.js ファイルを編集します。 + +`assets/translations` 内の `index.js` ファイルを編集して、新しい翻訳ファイルをインポートします。 + +次に、このアプリの `App.vue` 内のドロップダウンを編集して、あなたの言語を追加します。ローカライズされた略語をあなたの言語のフォルダー名に一致させてください。 + +最後に、翻訳されたレッスン内のすべてのクイズリンクを、存在する場合は、次のようなクエリパラメータを含むように編集します: `?loc=fr` など。 + +## プロジェクトのセットアップ + +``` +npm install +``` + +### 開発用にコンパイルとホットリロード + +``` +npm run serve +``` + +### 本番用にコンパイルとミニファイ + +``` +npm run build +``` + +### ファイルのリンティングと修正 + +``` +npm run lint +``` + +### 設定のカスタマイズ + +[設定リファレンス](https://cli.vuejs.org/config/)を参照してください。 + +クレジット: このクイズアプリのオリジナルバージョンに感謝します: https://github.com/arpan45/simple-quiz-vue + +## Azureへのデプロイ + +ここでは、始めるためのステップバイステップガイドを紹介します。 + +1. GitHubリポジトリをフォークする +静的WebアプリのコードがGitHubリポジトリにあることを確認します。このリポジトリをフォークしてください。 + +2. Azure Static Web Appを作成する +- [Azureアカウント](http://azure.microsoft.com)を作成します。 +- [Azureポータル](https://portal.azure.com)にアクセスします。 +- 「リソースの作成」をクリックし、「Static Web App」を検索します。 +- 「作成」をクリックします。 + +3. Static Web Appを構成する +- 基本: サブスクリプション: あなたのAzureサブスクリプションを選択します。 +- リソースグループ: 新しいリソースグループを作成するか、既存のものを使用します。 +- 名前: 静的Webアプリの名前を提供します。 +- リージョン: ユーザーに最も近いリージョンを選択します。 + +- #### デプロイメントの詳細: +- ソース: 「GitHub」を選択します。 +- GitHubアカウント: AzureがあなたのGitHubアカウントにアクセスすることを許可します。 +- 組織: あなたのGitHub組織を選択します。 +- リポジトリ: 静的Webアプリを含むリポジトリを選択します。 +- ブランチ: デプロイ元のブランチを選択します。 + +- #### ビルドの詳細: +- ビルドプリセット: アプリが構築されているフレームワークを選択します(例: React, Angular, Vueなど)。 +- アプリの場所: アプリコードが含まれているフォルダーを指定します(例: ルートにある場合は /)。 +- APIの場所: APIがある場合、その場所を指定します(オプション)。 +- 出力の場所: ビルド出力が生成されるフォルダーを指定します(例: build または dist)。 + +4. レビューして作成 +設定を確認し、「作成」をクリックします。Azureは必要なリソースをセットアップし、あなたのリポジトリにGitHub Actionsワークフローを作成します。 + +5. GitHub Actionsワークフロー +Azureは自動的にあなたのリポジトリにGitHub Actionsワークフローファイルを作成します (.github/workflows/azure-static-web-apps-.yml)。このワークフローはビルドとデプロイのプロセスを処理します。 + +6. デプロイの監視 +あなたのGitHubリポジトリの「Actions」タブに移動します。 +ワークフローが実行中であることが表示されるはずです。このワークフローは静的WebアプリをAzureにビルドしてデプロイします。 +ワークフローが完了すると、あなたのアプリは提供されたAzure URLでライブになります。 + +### 例: ワークフローファイル + +以下は、GitHub Actionsワークフローファイルの例です: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### 追加リソース +- [Azure Static Web Apps ドキュメント](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions ドキュメント](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用から生じる誤解や誤訳については、一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/0-course-setup/for-teachers.md b/translations/ja/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..21f92f67 --- /dev/null +++ b/translations/ja/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# 教育者のために + +このカリキュラムを教室で使用したいですか?どうぞお気軽にご利用ください! + +実際、GitHub Classroomを使用して、GitHub内で直接利用することもできます。 + +そのためには、このリポジトリをフォークしてください。各レッスンのためにリポジトリを作成する必要があるので、各フォルダを別々のリポジトリに抽出する必要があります。そうすることで、[GitHub Classroom](https://classroom.github.com/classrooms)が各レッスンを個別に取得できます。 + +これらの[完全な手順](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/)を参考にすれば、教室の設定方法がわかります。 + +## リポジトリをそのまま使用する + +このリポジトリを現在の状態のまま使用したい場合、GitHub Classroomを使用せずにそれを行うことも可能です。どのレッスンを一緒に進めるかを学生に伝える必要があります。 + +オンライン形式(Zoom、Teams、その他)では、クイズのためにブレイクアウトルームを作成し、学生を指導して学ぶ準備を手助けすることができます。その後、学生を招待してクイズを受けさせ、一定の時間に「イシュー」として回答を提出させることができます。課題についても同様に、学生がオープンに協力して作業することを希望する場合は行えます。 + +よりプライベートな形式を希望する場合は、学生にカリキュラムをレッスンごとにフォークして、自分のGitHubリポジトリにプライベートリポジトリとして作成し、あなたにアクセスを許可するように依頼してください。そうすれば、彼らはプライベートにクイズや課題を完了し、教室のリポジトリにイシューを通じて提出できます。 + +オンライン教室形式でこれを機能させる方法はたくさんあります。あなたにとって最適な方法を教えてください! + +## ご意見をお聞かせください + +私たちはこのカリキュラムがあなたとあなたの学生にとって役立つようにしたいと考えています。ぜひディスカッションボードでフィードバックをお寄せください! + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることにご留意ください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用に起因する誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/0-course-setup/how-to-run.md b/translations/ja/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..2aa121b3 --- /dev/null +++ b/translations/ja/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# コードの実行方法 + +このカリキュラムには、多くの実行可能な例やラボが含まれており、実行したいと思うでしょう。これを行うには、このカリキュラムの一部として提供されているJupyter NotebookでPythonコードを実行する能力が必要です。コードを実行するためのいくつかのオプションがあります。 + +## コンピュータ上でローカルに実行する + +コンピュータ上でローカルにコードを実行するには、Pythonの何らかのバージョンをインストールする必要があります。個人的には、**[miniconda](https://conda.io/en/latest/miniconda.html)**のインストールをお勧めします。これは、異なるPythonの**仮想環境**用の`conda`パッケージマネージャをサポートする、比較的軽量なインストールです。 + +minicondaをインストールしたら、リポジトリをクローンし、このコースで使用する仮想環境を作成する必要があります: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Python拡張機能を使用したVisual Studio Codeの利用 + +カリキュラムを使用する最良の方法は、[Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste)を[Python拡張機能](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` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer`フォルダに移動し、このリポジトリのコンテナを構築する方法を指示します。VS Codeはコンテナ内でコードを再オープンすることを提案します。これにはDockerのインストールが必要で、またより複雑になるため、経験豊富なユーザーにお勧めします。 + +## クラウドでの実行 + +ローカルにPythonをインストールしたくない場合や、クラウドリソースにアクセスできる場合は、クラウドでコードを実行する良い代替手段があります。これを行う方法はいくつかあります: + +* **[GitHub Codespaces](https://github.com/features/codespaces)**を使用する。これは、GitHub上であなたのために作成された仮想環境で、VS Codeのブラウザインターフェースを通じてアクセスできます。Codespacesにアクセスできる場合は、リポジトリの**Code**ボタンをクリックし、コードスペースを開始すれば、すぐに実行できます。 +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**を使用する。[Binder](https://mybinder.org)は、GitHub上のコードを試すために提供される無料の計算リソースです。フロントページにあるボタンをクリックすると、リポジトリがBinderで開かれ、すぐに基盤となるコンテナが構築され、Jupyterのウェブインターフェースがシームレスに開始されます。 + +> **注意**: 悪用を防ぐために、Binderは一部のウェブリソースへのアクセスをブロックしています。これにより、公共のインターネットからモデルやデータセットを取得するコードが正常に動作しない場合があります。何らかの回避策を見つける必要があるかもしれません。また、Binderが提供する計算リソースは非常に基本的なものであるため、特に後のより複雑なレッスンではトレーニングが遅くなります。 + +## GPUを使用したクラウドでの実行 + +このカリキュラムの後半のレッスンのいくつかは、GPUサポートから大きな恩恵を受けるでしょう。そうしないと、トレーニングが非常に遅くなります。特に、[Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste)やあなたの機関を通じてクラウドにアクセスできる場合、いくつかのオプションがあります: + +* [データサイエンス仮想マシン](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste)を作成し、Jupyterを通じて接続します。その後、リポジトリをマシンにクローンし、学習を開始できます。NCシリーズのVMはGPUサポートがあります。 + +> **注意**: 一部のサブスクリプション、特にAzure for Studentsは、デフォルトでGPUサポートを提供していません。追加のGPUコアを技術サポートにリクエストする必要があるかもしれません。 + +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste)を作成し、そこでノートブック機能を使用します。[このビデオ](https://azure-for-academics.github.io/quickstart/azureml-papers/)では、リポジトリをAzure MLノートブックにクローンし、使用を開始する方法が示されています。 + +また、Google Colabを使用することもでき、こちらには無料のGPUサポートがあり、Jupyter Notebookをアップロードして一つずつ実行することができます。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確さを追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文のネイティブ言語の文書を権威ある情報源として考慮するべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤訳について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/0-course-setup/setup.md b/translations/ja/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..51d075d6 --- /dev/null +++ b/translations/ja/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# このカリキュラムの始め方 + +## あなたは学生ですか? + +以下のリソースから始めましょう: + +* [学生ハブページ](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/)で実行方法についてのアドバイスを見つけてください。 + +> **注**: [このカリキュラムのコードを実行するための指示](/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)。 + +--- + +## 教育方法 + +このカリキュラムを構築する際に、私たちは2つの教育的原則を選びました:実践的な**プロジェクトベース**であること、そして**頻繁なクイズ**を含むことです。 + +コンテンツがプロジェクトと連携することで、学生にとってより魅力的なプロセスとなり、概念の保持が促進されます。さらに、クラス前の低リスクのクイズは、学生の学習意欲を高め、クラス後の2回目のクイズがさらなる保持を確実にします。このカリキュラムは柔軟で楽しく、全体または一部を受講できます。プロジェクトは小さく始まり、12週間のサイクルの終わりに向かって徐々に複雑になります。 + +> **クイズに関する注記**: すべてのクイズは[このアプリ](https://red-field-0a6ddfd03.1.azurestaticapps.net/)に含まれており、合計50のクイズがそれぞれ3つの質問で構成されています。レッスン内からリンクされていますが、クイズアプリはローカルで実行できます。`etc/quiz-app`フォルダー内の指示に従ってください。 + +## オフラインアクセス + +[Docsify](https://docsify.js.org/#/)を使用して、このドキュメントをオフラインで実行できます。このリポジトリをフォークし、ローカルマシンに[Docsifyをインストール](https://docsify.js.org/#/quickstart)した後、このリポジトリの`etc/docsify`フォルダーで`docsify serve`と入力します。ウェブサイトは、localhostのポート3000で提供されます: `localhost:3000`。カリキュラムのPDFは[こちらのリンク](../../../../../../etc/pdf/readme.pdf)から入手できます。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/1-Intro/README.md b/translations/ja/lessons/1-Intro/README.md new file mode 100644 index 00000000..b333f5b1 --- /dev/null +++ b/translations/ja/lessons/1-Intro/README.md @@ -0,0 +1,56 @@ +> 画像提供者: [Dmitry Soshnikov](http://soshnikov.com) + +時間が経つにつれて、コンピューティングリソースが安価になり、より多くのデータが利用可能になったため、ニューラルネットワークアプローチは、多くの分野、例えばコンピュータビジョンや音声理解において、人間と競う優れた性能を示し始めました。過去10年の間、人工知能という用語は主にニューラルネットワークの同義語として使われており、私たちが耳にするAIの成功の多くはそれに基づいています。 + +チェスをプレイするコンピュータプログラムの作成におけるアプローチの変化を観察することができます: + +* 初期のチェスプログラムは探索に基づいており、プログラムは明示的に対戦相手の次の数手の可能な動きを推定し、数手後に達成可能な最適な位置に基づいて最適な動きを選択しました。これにより、いわゆる[アルファベータプルーニング](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning)探索アルゴリズムが開発されました。 +* 探索戦略は、ゲームの終盤において、限られた数の可能な動きによって探索空間が制限されるため、うまく機能します。しかし、ゲームの開始時には探索空間が非常に大きく、アルゴリズムは人間プレイヤー間の既存の試合から学ぶことで改善できます。その後の実験では、プログラムがゲームの現在の位置に非常に似たケースを知識ベースから探す、いわゆる[事例ベース推論](https://en.wikipedia.org/wiki/Case-based_reasoning)が使用されました。 +* 現代のプログラムは、人間プレイヤーに勝つためにニューラルネットワークと[強化学習](https://en.wikipedia.org/wiki/Reinforcement_learning)に基づいており、プログラムは自分自身と長時間対戦し、自分の間違いから学ぶことでプレイを学びます。これは、人間がチェスを学ぶときに行う方法に似ています。しかし、コンピュータプログラムは、はるかに短い時間で多くのゲームをプレイできるため、学習もはるかに速くなります。 + +✅ AIがプレイした他のゲームについて少し調査してみてください。 + +同様に、「会話プログラム」を作成するアプローチの変化も見ることができます(チューリングテストを通過するかもしれません): + +* この種の初期プログラムである[Eliza](https://en.wikipedia.org/wiki/ELIZA)は、非常に単純な文法ルールと入力文を質問に再構成することに基づいていました。 +* 現代のアシスタント、例えばCortana、Siri、Google Assistantはすべて、音声をテキストに変換し、私たちの意図を認識するためにニューラルネットワークを使用し、その後、必要なアクションを実行するために推論または明示的なアルゴリズムを使用するハイブリッドシステムです。 +* 将来的には、対話を自ら処理する完全なニューラルベースのモデルが期待されます。最近のGPTや[Turing-NLG](https://turing.microsoft.com/)ファミリーのニューラルネットワークは、この点で大きな成功を収めています。 + +> 画像提供者: Dmitry Soshnikov、[写真](https://unsplash.com/photos/r8LmVbUKgns)提供者: [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto)、Unsplash + +## 最近のAI研究 + +ニューラルネットワーク研究の急成長は2010年頃に始まりました。この頃、大規模な公共データセットが利用可能になり始めました。約1400万の注釈付き画像を含む大規模な画像コレクションである[ImageNet](https://en.wikipedia.org/wiki/ImageNet)は、[ImageNet大規模視覚認識チャレンジ](https://image-net.org/challenges/LSVRC/)を生み出しました。 + +![ILSVRCの精度](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> 画像提供者: [Dmitry Soshnikov](http://soshnikov.com) +2012年に、[畳み込みニューラルネットワーク](../4-ComputerVision/07-ConvNets/README.md)が画像分類に初めて使用され、分類エラーが大幅に減少しました(ほぼ30%から16.4%へ)。2015年には、Microsoft ResearchのResNetアーキテクチャが[人間レベルの精度](https://doi.org/10.1109/ICCV.2015.123)を達成しました。 + +それ以来、ニューラルネットワークは多くのタスクで非常に成功した動作を示しました: + +--- + +年 | 人間のパリティ達成 +-----|-------- +2015 | [画像分類](https://doi.org/10.1109/ICCV.2015.123) +2016 | [会話音声認識](https://arxiv.org/abs/1610.05256) +2018 | [自動機械翻訳](https://arxiv.org/abs/1803.05567)(中国語から英語) +2020 | [画像キャプション生成](https://arxiv.org/abs/2009.13682) + +過去数年で、BERTやGPT-3などの大規模言語モデルによる大成功を目の当たりにしました。これは、テキストの構造や意味を捉えるためにモデルを訓練できる一般的なテキストデータが豊富に存在するためであり、一般的なテキストコレクションで事前訓練を行い、その後、より特定のタスクにモデルを特化させることが可能です。このコースの後半では、[自然言語処理](../5-NLP/README.md)についてもっと学ぶことになります。 + +## 🚀 チャレンジ + +インターネットを巡って、あなたの意見でAIが最も効果的に使用されている場所を特定してください。マッピングアプリ、音声からテキストへのサービス、あるいはビデオゲームの中でしょうか?システムがどのように構築されたのか調査してください。 + +## [講義後のクイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## レビュー & 自習 + +[このレッスン](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML)を読みながら、AIとMLの歴史を振り返ってください。そのレッスンまたはこのレッスンの最初のスケッチノートから要素を取り出し、それをより深く調査してその進化を促す文化的背景を理解してください。 + +**課題**: [ゲームジャム](assignment.md) + +**免責事項**: +この文書は、機械翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確な点が含まれる可能性があることにご留意ください。元の文書は、その原語での信頼できる情報源と見なされるべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用に起因する誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/1-Intro/assignment.md b/translations/ja/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..3ffaee76 --- /dev/null +++ b/translations/ja/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# ゲームジャム + +ゲームは、AIやMLの進展によって大きな影響を受けてきた分野です。この課題では、AIの進化に影響を受けた好きなゲームについて短い論文を書いてください。複数のコンピュータ処理システムの影響を受けるには十分に古いゲームである必要があります。良い例としてはチェスや囲碁が挙げられますが、ポンやパックマンのようなビデオゲームも見てみてください。ゲームの過去、現在、そしてAIの未来について論じるエッセイを書いてください。 + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用に起因する誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/2-Symbolic/README.md b/translations/ja/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..b0376842 --- /dev/null +++ b/translations/ja/lessons/2-Symbolic/README.md @@ -0,0 +1,158 @@ +# 知識表現とエキスパートシステム + +![Symbolic AIコンテンツの概要](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ja.png) + +> スケッチノート by [Tomomi Imura](https://twitter.com/girlie_mac) + +人工知能の探求は、世界を人間と同じように理解するための知識の探索に基づいています。しかし、どのようにしてこれを実現するのでしょうか? + +## [事前講義クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +AIの初期の頃、知能システムを作成するためのトップダウンアプローチ(前のレッスンで議論されたもの)が人気でした。この考え方は、人々から知識を抽出し、機械が読み取れる形式に変換し、それを使って自動的に問題を解決するというものでした。このアプローチは、以下の2つの大きなアイデアに基づいていました: + +* 知識表現 +* 推論 + +## 知識表現 + +Symbolic AIの重要な概念の一つは**知識**です。知識を*情報*や*データ*と区別することが重要です。例えば、本は知識を含んでいると言えます。なぜなら、本を学ぶことで専門家になることができるからです。しかし、本が含んでいるものは実際には*データ*と呼ばれます。本を読み、このデータを私たちの世界モデルに統合することで、このデータを知識に変換します。 + +> ✅ **知識**とは、私たちの頭の中に含まれ、世界の理解を表すものです。それは、受け取った情報を私たちの世界のアクティブモデルに統合するアクティブな**学習**プロセスによって得られます。 + +私たちはしばしば知識を厳密に定義することはありませんが、[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.ja.png) + +> 画像 by [Dmitry Soshnikov](http://soshnikov.com) + +* 左側には、コンピュータによって効果的に使用できる非常に単純なタイプの知識表現があります。最も単純なものはアルゴリズム的で、知識がコンピュータプログラムによって表現されます。しかし、これは知識を表現する最良の方法ではありません。なぜなら、柔軟性がないからです。私たちの頭の中の知識はしばしば非アルゴリズム的です。 +* 右側には、自然なテキストのような表現があります。これは最も強力ですが、自動推論には使用できません。 + +> ✅ 自分の頭の中でどのように知識を表現し、それをノートに変換しているかを考えてみてください。保持を助けるためにうまく機能する特定のフォーマットはありますか? + +## コンピュータの知識表現の分類 + +さまざまなコンピュータの知識表現方法を以下のカテゴリに分類できます: + +* **ネットワーク表現**は、私たちの頭の中に相互に関連する概念のネットワークがあるという事実に基づいています。同じネットワークをコンピュータ内のグラフとして再現しようとすることができます - いわゆる**セマンティックネットワーク**です。 + +1. **オブジェクト-属性-値の三つ組**または**属性-値ペア**。グラフはノードとエッジのリストとしてコンピュータ内で表現できるため、オブジェクト、属性、値を含む三つ組のリストでセマンティックネットワークを表現できます。例えば、プログラミング言語に関する以下の三つ組を構築します: + +オブジェクト | 属性 | 値 +-------|-----------|------ +Python | は | 型なし言語 +Python | 発明者 | Guido van Rossum +Python | ブロック構文 | インデント +型なし言語 | ない | 型定義 + +> ✅ 他のタイプの知識を表現するために三つ組がどのように使用できるか考えてみてください。 + +2. **階層的表現**は、私たちがしばしば頭の中でオブジェクトの階層を作成するという事実を強調します。例えば、私たちはカナリアが鳥であり、すべての鳥には翼があることを知っています。また、カナリアが通常どのような色をしているか、飛行速度についての考えも持っています。 + + - **フレーム表現**は、各オブジェクトまたはオブジェクトのクラスを**フレーム**として表現し、**スロット**を含みます。スロットにはデフォルト値、値の制約、またはスロットの値を取得するために呼び出されるストアドプロシージャがあります。すべてのフレームは、オブジェクト指向プログラミング言語のオブジェクト階層に似た階層を形成します。 + - **シナリオ**は、時間の経過に伴って展開される複雑な状況を表現する特別な種類のフレームです。 + +**Python** + +スロット | 値 | デフォルト値 | インターバル | +-----|-------|---------------|----------| +名前 | Python | | | +は | 型なし言語 | | | +変数ケース | | CamelCase | | +プログラムの長さ | | | 5-5000行 | +ブロック構文 | インデント | | | + +3. **手続き的表現**は、特定の条件が発生したときに実行できるアクションのリストによって知識を表現することに基づいています。 + - 生産ルールは、結論を引き出すためのif-thenステートメントです。例えば、医者は「**もし**患者が高熱を持っている**または**血液検査でC反応性蛋白が高い**ならば**、炎症がある」といったルールを持つことができます。条件の一つに出会った場合、炎症についての結論を出し、それをさらに推論に使用できます。 + - アルゴリズムは、手続き的表現の別の形と見なすことができますが、知識ベースのシステムではほとんど直接使用されることはありません。 + +4. **論理**は、元々アリストテレスによって普遍的な人間の知識を表現する方法として提案されました。 + - 数学的理論としての述語論理は計算可能性が高すぎるため、通常はHorn節のようなその一部が使用されます。これはPrologで使用されます。 + - 記述論理は、オブジェクトの階層を表現し、推論するために使用される論理システムのファミリーです。 + +## エキスパートシステム + +Symbolic AIの初期の成功の一つは、いわゆる**エキスパートシステム**でした。これは、特定の問題領域で専門家として機能するように設計されたコンピュータシステムです。これらは、1人または複数の人間専門家から抽出された**知識ベース**に基づいており、その上で何らかの推論を行う**推論エンジン**を含んでいます。 + +![人間のアーキテクチャ](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ja.png) | ![知識ベースシステム](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ja.png) +---------------------------------------------|------------------------------------------------ +人間の神経系の簡略化された構造 | 知識ベースシステムのアーキテクチャ + +エキスパートシステムは、人間の推論システムのように構築されており、**短期記憶**と**長期記憶**を含んでいます。同様に、知識ベースシステムでは以下のコンポーネントを区別します: + +* **問題メモリ**:現在解決されている問題に関する知識を含みます。すなわち、患者の体温や血圧、炎症があるかどうかなどです。この知識は**静的知識**とも呼ばれ、現在問題について知っていることのスナップショットを含みます - いわゆる*問題状態*です。 +* **知識ベース**:問題領域に関する長期的な知識を表します。これは人間の専門家から手動で抽出され、相談ごとに変わることはありません。これは、ある問題状態から別の問題状態へと移動することを可能にするため、**動的知識**とも呼ばれます。 +* **推論エンジン**:問題状態空間での検索全体のプロセスを調整し、必要に応じてユーザーに質問をします。また、各状態に適用されるべき正しいルールを見つける役割も担います。 + +例として、動物の物理的特性に基づいて動物を特定するエキスパートシステムを考えてみましょう: + +![AND-ORツリー](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ja.png) + +> 画像 by [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. **競合解決**を実行します - このステップで実行される1つのルールを選択します。競合解決戦略にはいくつかの異なる方法があります: + - 知識ベースで最初に適用可能なルールを選択する + - ランダムなルールを選択する + - より*具体的な*ルールを選択する、つまり「左側」(LHS)で最も多くの条件を満たすルールを選択する +4. 選択したルールを適用し、問題状態に新しい知識を挿入します +5. ステップ1から繰り返します。 + +しかし、場合によっては、問題に関する知識が空である状態から始め、結論に至るのを助ける質問をすることが望ましい場合があります。例えば、医療診断を行う際には、通常、患者を診断する前にすべての医療分析を事前に行うことはありません。むしろ、決定を下す必要があるときに分析を行いたいと考えています。 + +このプロセスは**後ろ向き推論**を使用してモデル化できます。これは**目標**によって駆動されます - 私たちが見つけようとしている属性値です: + +1. 目標の値を与えることができるすべてのルールを選択します(つまり、目標が右側(RHS)にあるルール) - 競合セット +2. この属性に対するルールがない場合、またはユーザーから値を尋ねるべきだというルールがある場合 - それを尋ねます。そうでなければ: +3. 競合解決戦略を使用して、*仮説*として使用する1つのルールを選択します - それを証明しようとします +4. ルールのLHSにあるすべての属性について、このプロセスを再帰的に繰り返し、目標として証明しようとします +5. 途中でプロセスが失敗した場合 - ステップ3で別のルールを使用します。 + +> ✅ 前向き推論がより適切な状況はどのようなものですか?後ろ向き推論はどうでしょうか? + +### エキスパートシステムの実装 + +エキスパートシステムは、さまざまなツールを使用して実装できます: + +* 高水準プログラミング言語で直接プログラムすること。これは最良のアイデアではありません。なぜなら、知識ベースシステムの主な利点は、知識が推論から分離されていることであり、問題領域の専門家が推論プロセスの詳細を理解することなくルールを書くことができるべきだからです。 +* **エキスパートシステムシェル**を使用すること、すなわち、知識を知識表現言語を使用して埋め込むために特別に設計されたシステムです。 + +## ✍️ 演習:動物推論 + +[Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb)を参照して、前向き推論と後ろ向き推論のエキスパートシステムを実装する例を見てみましょう。 + +> **注**:この例は非常にシンプルで、エキスパートシステムがどのように見えるかのアイデアを示すだけです。このようなシステムを作成し始めると、200以上のルールに達するまで、システムからの*知的*な振る舞いに気づくことはほとんどありません。ある時点で、ルールがあまりにも複雑になり、すべてを心に留めておくことができなくなります。その時点で、なぜシステムが特定の決定を下したのか疑問に思い始めるかもしれません。しかし、知識ベースシステムの重要な特性は、どの決定がどのように行われたかを + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることをご承知おきください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用に起因する誤解や誤訳について、当社は一切責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/2-Symbolic/assignment.md b/translations/ja/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..fab4ac62 --- /dev/null +++ b/translations/ja/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# オントロジーの構築 + +知識ベースの構築は、トピックに関する事実を表すモデルをカテゴライズすることに関するものです。人、場所、物などのトピックを選び、そのトピックのモデルを構築します。このレッスンで説明されているいくつかの技術やモデル構築戦略を使用してください。例えば、家具や照明などを含むリビングルームのオントロジーを作成することが考えられます。リビングルームはキッチンとどのように異なりますか? バスルームは? それがダイニングルームではなくリビングルームであることをどのように知りますか? オントロジーを構築するには、[Protégé](https://protege.stanford.edu/)を使用してください。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用から生じる誤解や誤訳について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/ja/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..235546bb --- /dev/null +++ b/translations/ja/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,95 @@ +# ニューラルネットワーク入門: パーセプトロン + +## [講義前クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +現代のニューラルネットワークに類似したものを実装する最初の試みの一つは、1957年にコーネル航空宇宙研究所のフランク・ローゼンブラットによって行われました。これは「Mark-1」と呼ばれるハードウェア実装で、三角形、四角形、円などの原始的な幾何学的図形を認識するために設計されました。 + +| | | +|--------------|-----------| +|フランク・ローゼンブラット | Mark 1 パーセプトロン| + +> 画像は [ウィキペディア](https://en.wikipedia.org/wiki/Perceptron) より引用 + +入力画像は20x20のフォトセルアレイによって表現され、ニューラルネットワークは400の入力と1つのバイナリ出力を持っていました。シンプルなネットワークには1つのニューロン、つまり**しきい値論理ユニット**が含まれていました。ニューラルネットワークの重みは、学習フェーズ中に手動で調整する必要があるポテンショメータのように機能しました。 + +> ✅ ポテンショメータは、回路の抵抗を調整することを可能にするデバイスです。 + +> ニューヨークタイムズは当時パーセプトロンについて次のように書きました: *[海軍]が期待する電子コンピュータの胚で、歩き、話し、見え、書き、自らを再生し、その存在を意識することができる。* + +## パーセプトロンモデル + +モデルにNの特徴があると仮定すると、入力ベクトルはサイズNのベクトルになります。パーセプトロンは**バイナリ分類**モデルであり、つまり2つのクラスの入力データを区別することができます。各入力ベクトルxに対して、パーセプトロンの出力はクラスに応じて+1または-1であると仮定します。出力は次の式を使って計算されます。 + +y(x) = f(wTx) + +ここで、fはステップ活性化関数です。 + + + + +## パーセプトロンの訓練 + +パーセプトロンを訓練するには、ほとんどの値を正しく分類する重みベクトルwを見つける必要があります。つまり、最小の**誤差**を生じさせる必要があります。この誤差Eは、次のように**パーセプトロン基準**によって定義されます。 + +E(w) = -∑wTxiti + +ここで: + +* 合計は誤分類を引き起こすトレーニングデータポイントiに対して取られます +* xiは入力データで、tiは負の例に対して-1、正の例に対して+1です。 + +この基準は重みwの関数と見なされ、最小化する必要があります。多くの場合、**勾配降下法**と呼ばれる手法が使用され、初期重みw(0)から始めて、各ステップで次の式に従って重みを更新します。 + +w(t+1) = w(t) - η∇E(w) + +ここでηは**学習率**と呼ばれ、∇E(w)はEの**勾配**を示します。勾配を計算した後、次のようになります。 + +w(t+1) = w(t) + ∑ηxiti + +Pythonでのアルゴリズムは次のようになります。 + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## 結論 + +このレッスンでは、バイナリ分類モデルであるパーセプトロンについて学び、重みベクトルを使用してそれを訓練する方法について学びました。 + +## 🚀 チャレンジ + +自分自身のパーセプトロンを構築してみたい場合は、[Microsoft Learnのこのラボ](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste)を試してみてください。これは[Azure MLデザイナー](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste)を使用しています。 + +## [講義後クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## 復習と自己学習 + +パーセプトロンを使っておもちゃの問題や実際の問題を解決する方法を学び続けるには、[Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb)ノートブックに進んでください。 + +また、興味深い[パーセプトロンに関する記事](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590)もあります。 + +## [課題](lab/README.md) + +このレッスンでは、バイナリ分類タスクのためにパーセプトロンを実装し、2つの手書き数字を分類するために使用しました。このラボでは、与えられた画像に最も関連する数字を特定するという形で、数字分類の問題を完全に解決するよう求められます。 + +* [指示](lab/README.md) +* [ノートブック](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることにご留意ください。原文のネイティブ言語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/ja/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..769261b5 --- /dev/null +++ b/translations/ja/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# パーセプトロンによる多クラス分類 + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) からのラボ課題です。 + +## 課題 + +このレッスンで開発したMNIST手書き数字の2クラス分類用のコードを使用して、任意の数字を認識できる多クラス分類器を作成します。トレーニングデータセットとテストデータセットの分類精度を計算し、混同行列を出力します。 + +## ヒント + +1. 各数字について、「この数字対他のすべての数字」のバイナリ分類器用のデータセットを作成します。 +1. 10種類の異なるパーセプトロンをバイナリ分類のためにトレーニングします(各数字ごとに1つ)。 +1. 入力された数字を分類する関数を定義します。 + +> **ヒント**: すべての10個のパーセプトロンの重みを1つの行列にまとめることで、1回の行列乗算で入力数字に対してすべての10個のパーセプトロンを適用できるはずです。最も可能性の高い数字は、出力に`argmax`操作を適用するだけで見つけることができます。 + +## ノートブックの開始 + +[PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) を開いてラボを開始します。 + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤解釈については、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/ja/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..a94a5790 --- /dev/null +++ b/translations/ja/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# ニューラルネットワーク入門:多層パーセプトロン + +前のセクションでは、最も単純なニューラルネットワークモデルである単層パーセプトロンについて学びました。これは線形の二クラス分類モデルです。 + +このセクションでは、このモデルをより柔軟なフレームワークに拡張し、以下のことを可能にします: + +* 二クラスに加えて、**多クラス分類**を実行する +* 分類に加えて、**回帰問題**を解決する +* 線形に分離できないクラスを分ける + +また、異なるニューラルネットワークアーキテクチャを構築できる独自のモジュラーPythonフレームワークも開発します。 + +## [講義前クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## 機械学習の定式化 + +機械学習の問題を定式化することから始めましょう。トレーニングデータセット **X** とラベル **Y** があるとします。そして、最も正確な予測を行うモデル *f* を構築する必要があります。予測の質は **損失関数** ℒ によって測定されます。以下の損失関数がよく使用されます: + +* 回帰問題の場合、数値を予測する必要があるときは、**絶対誤差** ∑i|f(x(i))-y(i)| や **二乗誤差** ∑i(f(x(i))-y(i))2 を使用できます。 +* 分類の場合、**0-1損失**(これはモデルの**精度**と本質的に同じです)や **ロジスティック損失** を使用します。 + +単層パーセプトロンの場合、関数 *f* は線形関数 *f(x)=wx+b* として定義されました(ここで *w* は重み行列、*x* は入力特徴のベクトル、*b* はバイアスベクトルです)。異なるニューラルネットワークアーキテクチャの場合、この関数はより複雑な形を取ることができます。 + +> 分類の場合、ネットワークの出力として対応するクラスの確率を得ることがしばしば望まれます。任意の数を確率に変換するため(例えば、出力を正規化するために)、私たちはしばしば **ソフトマックス** 関数 σ を使用し、関数 *f* は *f(x)=σ(wx+b)* になります。 + +上記の *f* の定義では、*w* と *b* は **パラメータ** θ=⟨*w,b*⟩ と呼ばれます。データセット ⟨**X**,**Y**⟩ が与えられたとき、全データセットに対する全体の誤差をパラメータ θ の関数として計算できます。 + +> ✅ **ニューラルネットワークのトレーニングの目標は、パラメータ θ を変化させることによって誤差を最小化することです。** + +## 勾配降下法最適化 + +**勾配降下法** と呼ばれる関数最適化のよく知られた方法があります。このアイデアは、損失関数のパラメータに関する導関数(多次元の場合は **勾配** と呼ばれます)を計算し、誤差が減少するようにパラメータを変化させることができるというものです。これを次のように定式化できます: + +* パラメータをいくつかのランダムな値 w(0)、b(0) で初期化する +* 次のステップを何度も繰り返す: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +トレーニング中、最適化ステップは全データセットを考慮して計算されることになっています(損失はすべてのトレーニングサンプルを通して合計されることを思い出してください)。しかし、実際には **ミニバッチ** と呼ばれるデータセットの小さな部分を取り、データのサブセットに基づいて勾配を計算します。サブセットは毎回ランダムに取得されるため、この方法は **確率的勾配降下法**(SGD)と呼ばれます。 + +## 多層パーセプトロンとバックプロパゲーション + +上記で見たように、単層ネットワークは線形に分離可能なクラスを分類することができます。より豊かなモデルを構築するために、ネットワークのいくつかの層を組み合わせることができます。数学的には、関数 *f* はより複雑な形を持ち、いくつかのステップで計算されることになります: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +ここで、α は **非線形活性化関数**、σ はソフトマックス関数であり、パラメータは θ=<*w1,b1,w2,b2* です。 + +勾配降下法アルゴリズムは同じままですが、勾配を計算するのが難しくなります。連鎖微分法則に基づいて、次のように導関数を計算できます: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ 連鎖微分法則は、パラメータに関する損失関数の導関数を計算するために使用されます。 + +これらの表現の最も左側の部分は同じであり、したがって、損失関数から計算グラフを「逆方向」にたどって導関数を効果的に計算できます。このように、多層パーセプトロンのトレーニング方法は **バックプロパゲーション**、または「バックプロップ」と呼ばれます。 + +計算グラフ + +> TODO: 画像の引用 + +> ✅ バックプロパゲーションについては、ノートブックの例でより詳細に説明します。 + +## 結論 + +このレッスンでは、独自のニューラルネットワークライブラリを構築し、単純な二次元分類タスクにそれを使用しました。 + +## 🚀 チャレンジ + +付随するノートブックでは、あなた自身の多層パーセプトロンを構築し、トレーニングするためのフレームワークを実装します。現代のニューラルネットワークがどのように機能するかを詳細に見ることができます。 + +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) ノートブックに進み、作業を進めてください。 + +## [講義後クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## 復習と自己学習 + +バックプロパゲーションはAIや機械学習で一般的に使用されるアルゴリズムであり、[詳細に学ぶ価値があります](https://wikipedia.org/wiki/Backpropagation)。 + +## [課題](lab/README.md) + +このラボでは、このレッスンで構築したフレームワークを使用して、MNIST手書き数字分類を解決することが求められます。 + +* [指示](lab/README.md) +* [ノートブック](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があります。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用によって生じた誤解や誤訳については、一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/ja/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..7ede6c29 --- /dev/null +++ b/translations/ja/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# 自分たちのフレームワークを使ったMNIST分類 + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)からのラボ課題です。 + +## 課題 + +1層、2層、3層のパーセプトロンを使用して、MNIST手書き数字分類問題を解決します。レッスンで開発したニューラルネットワークフレームワークを使用してください。 + +## ノートブックの開始 + +[MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb)を開いてラボを始めましょう。 + +## 質問 + +このラボの結果として、以下の質問に答えてみてください: + +- 階層間の活性化関数はネットワークのパフォーマンスに影響を与えますか? +- この課題には2層または3層のネットワークが必要ですか? +- ネットワークのトレーニング中に問題が発生しましたか? 特に層の数が増えるにつれて。 +- トレーニング中のネットワークの重みはどのように変化しますか? 重みの最大絶対値とエポックの関係を理解するためにプロットしてみると良いでしょう。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご注意ください。元の文書は、その母国語において権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤解釈について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/ja/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..a65c53b6 --- /dev/null +++ b/translations/ja/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# ニューラルネットワークフレームワーク + +すでに学んだように、ニューラルネットワークを効率的に訓練するためには、2つのことを行う必要があります。 + +* テンソルに対して操作を行うこと(例えば、掛け算、足し算、シグモイドやソフトマックスなどの関数を計算すること) +* 勾配降下法最適化を行うために、すべての式の勾配を計算すること + +## [事前講義クイズ](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上で並列化できることは非常に重要です。 + +> ✅ 「並列化」という用語は、計算を複数のデバイスに分散させることを意味します。 + +現在、最も人気のある2つのニューラルフレームワークは、[TensorFlow](http://TensorFlow.org)と[PyTorch](https://pytorch.org/)です。どちらもCPUとGPUの両方でテンソルを操作するための低レベルAPIを提供しています。その低レベル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`で表現されたもの)を近似する問題を考えてみましょう: + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ja.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ja.jpg) +-------------------------|-------------------------- +**線形モデル、パラメータ2つ** | **非線形モデル、パラメータ7つ** +訓練誤差 = 5.3 | 訓練誤差 = 0 +検証誤差 = 5.1 | 検証誤差 = 20 + +* 左側では、良好な直線近似が見られます。パラメータの数が適切であるため、モデルは点の分布の背後にあるアイデアを正しく捉えています。 +* 右側では、モデルが強力すぎます。5つの点しかないのに、モデルには7つのパラメータがあるため、すべての点を通過するように調整でき、訓練誤差は0になります。しかし、これによりモデルはデータの背後にある正しいパターンを理解できず、検証誤差が非常に高くなります。 + +モデルの豊かさ(パラメータの数)と訓練サンプルの数との間で正しいバランスを取ることが非常に重要です。 + +## 過剰適合が発生する理由 + + * 訓練データが不足している + * モデルが強力すぎる + * 入力データにノイズが多すぎる + +## 過剰適合を検出する方法 + +上記のグラフからわかるように、過剰適合は非常に低い訓練誤差と高い検証誤差によって検出できます。通常、訓練中は訓練誤差と検証誤差の両方が減少し始め、その後、ある時点で検証誤差が減少を停止し、上昇し始めるかもしれません。これは過剰適合の兆候であり、この時点で訓練を停止すべきか(または少なくともモデルのスナップショットを作成すべき)であることを示す指標です。 + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ja.png) + +## 過剰適合を防ぐ方法 + +過剰適合が発生していることがわかった場合、次のいずれかを行うことができます。 + + * 訓練データの量を増やす + * モデルの複雑さを減らす + * 後で考慮する[正則化手法](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md)、例えば[ドロップアウト](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout)を使用する + +## 過剰適合とバイアス-バリアンスのトレードオフ + +過剰適合は、実際には統計におけるより一般的な問題である[バイアス-バリアンスのトレードオフ](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff)の一例です。モデルの誤差の可能な原因を考えると、2種類の誤差が見えてきます。 + +* **バイアス誤差**は、アルゴリズムが訓練データ間の関係を正しく捉えられないことから生じます。これは、モデルが十分に強力でないことから生じる場合があります(**アンダーフィッティング**)。 +* **バリアンス誤差**は、モデルが入力データのノイズを近似することによって生じ、意味のある関係を捉えられないことから生じます(**過剰適合**)。 + +訓練中、バイアス誤差は減少し(モデルがデータを近似することを学ぶため)、バリアンス誤差は増加します。過剰適合を防ぐためには、訓練を手動(過剰適合を検出したとき)または自動(正則化を導入することによって)で停止することが重要です。 + +## 結論 + +このレッスンでは、最も人気のあるAIフレームワークであるTensorFlowとPyTorchのさまざまなAPIの違いについて学びました。また、非常に重要なトピックである過剰適合についても学びました。 + +## 🚀 チャレンジ + +付随するノートブックでは、下部に「タスク」があります。ノートブックを進め、タスクを完了してください。 + +## [講義後のクイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## レビュー & 自習 + +以下のトピックについて調査してください: + +- TensorFlow +- PyTorch +- 過剰適合 + +次の質問を自分に問いかけてください: + +- TensorFlowとPyTorchの違いは何ですか? +- 過剰適合とアンダーフィッティングの違いは何ですか? + +## [課題](lab/README.md) + +このラボでは、PyTorchまたはTensorFlowを使用して、単層および多層の完全連結ネットワークを使用した2つの分類問題を解決するよう求められます。 + +* [指示](lab/README.md) +* [ノートブック](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。原文のネイティブ言語の文書が正式な情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤訳については、当社は一切責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/ja/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..5322aa0b --- /dev/null +++ b/translations/ja/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# PyTorch/TensorFlowによる分類 + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)からのラボ課題です。 + +## 課題 + +PyTorchまたはTensorFlowを使用して、単層および多層の全結合ネットワークを用いて2つの分類問題を解決してください。 + +1. **[アイリス分類](https://en.wikipedia.org/wiki/Iris_flower_data_set)** 問題 - 表形式の入力データを扱うことができる古典的な機械学習の問題の例です。あなたの目標は、4つの数値パラメータに基づいてアイリスを3つのクラスに分類することです。 +1. **MNIST** 手書き数字分類問題 - 以前に見たことがあります。 + +さまざまなネットワークアーキテクチャを試して、可能な限り最高の精度を達成してください。 + +## ノートブックを開始する + +[LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb)を開いてラボを始めましょう。 + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。元の文書はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用から生じる誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/3-NeuralNetworks/README.md b/translations/ja/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..1021deb4 --- /dev/null +++ b/translations/ja/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# ニューラルネットワークの紹介 + +![ニューラルネットワークの内容を示すスケッチ](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ja.png) + +前述のように、知性を達成する方法の一つは、**コンピュータモデル**または**人工脳**を訓練することです。20世紀中頃から、研究者たちはさまざまな数学的モデルを試みてきましたが、近年、この方向性が非常に成功したことが証明されました。このような脳の数学的モデルを**ニューラルネットワーク**と呼びます。 + +> ニューラルネットワークは、モデルについて話していることを示すために、*人工ニューラルネットワーク*(ANN)とも呼ばれることがあります。 + +## 機械学習 + +ニューラルネットワークは、データを使用して問題を解決できるコンピュータモデルを訓練することを目的とした**機械学習**と呼ばれるより大きな分野の一部です。機械学習は人工知能の大部分を構成していますが、このカリキュラムでは古典的な機械学習は扱いません。 + +> 古典的な機械学習について詳しく学ぶには、別の**[初心者のための機械学習](http://github.com/microsoft/ml-for-beginners)**カリキュラムをご覧ください。 + +機械学習では、いくつかの例のデータセット**X**と、それに対応する出力値**Y**があると仮定します。例は、**特徴**で構成されるN次元ベクトルであり、出力は**ラベル**と呼ばれます。 + +私たちは、最も一般的な機械学習の問題を二つ考えます: + +* **分類**:入力オブジェクトを二つ以上のクラスに分類する必要があります。 +* **回帰**:入力サンプルごとに数値を予測する必要があります。 + +> 入力と出力をテンソルとして表現する場合、入力データセットはサイズM×Nの行列であり、Mはサンプル数、Nは特徴の数です。出力ラベルYはサイズMのベクトルです。 + +このカリキュラムでは、ニューラルネットワークモデルにのみ焦点を当てます。 + +## ニューロンのモデル + +生物学から、私たちの脳は神経細胞で構成されており、それぞれが複数の「入力」(軸索)と出力(樹状突起)を持つことがわかっています。軸索と樹状突起は電気信号を伝導でき、軸索と樹状突起の間の接続は異なる導電性を示すことがあります(神経伝達物質によって制御されます)。 + +![ニューロンのモデル](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ja.jpg) | ![ニューロンのモデル](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ja.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は非線形の**活性化関数**です。 + +> ニューロンの初期モデルは、1943年にウォーレン・マカロックとウォルター・ピッツによる古典的な論文[A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf)で説明されました。ドナルド・ヘッブは、彼の著書"[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)"で、これらのネットワークをどのように訓練できるかを提案しました。 + +## このセクションでは + +このセクションでは、以下について学びます: +* [パーセプトロン](03-Perceptron/README.md):二クラス分類のための最も初期のニューラルネットワークモデルの一つ +* [多層ネットワーク](04-OwnFramework/README.md):私たちのフレームワークを構築する方法に関するペアノートブック[04-OwnFramework/OwnFramework.ipynb] +* [ニューラルネットワークフレームワーク](05-Frameworks/README.md):これらのノートブック:[PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb)と[Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [過剰適合](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。原文はその言語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用に起因する誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/ja/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..8cd9d1b7 --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# コンピュータビジョン入門 + +[コンピュータビジョン](https://wikipedia.org/wiki/Computer_vision)は、コンピュータがデジタル画像を高レベルで理解できるようにすることを目的とした分野です。これは非常に広い定義であり、*理解*は多くの異なる意味を持つことができます。例えば、画像内の物体を見つけること(**物体検出**)、何が起こっているかを理解すること(**イベント検出**)、画像をテキストで説明すること、またはシーンを3Dで再構築することなどが含まれます。また、人間の画像に関連する特別なタスクもあります。例えば、年齢や感情の推定、顔の検出と識別、3Dポーズ推定などです。 + +## [講義前クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +コンピュータビジョンの最も簡単なタスクの一つは**画像分類**です。 + +コンピュータビジョンは、しばしばAIの一分野と考えられています。現在、コンピュータビジョンのタスクのほとんどはニューラルネットワークを使用して解決されています。このセクションでは、コンピュータビジョンに使用される特別なタイプのニューラルネットワークである[畳み込みニューラルネットワーク](../07-ConvNets/README.md)について詳しく学んでいきます。 + +しかし、画像をニューラルネットワークに渡す前に、多くの場合、画像を強化するためにいくつかのアルゴリズム的手法を使用することが理にかなっています。 + +画像処理に利用できるPythonライブラリはいくつかあります: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** は、さまざまな画像フォーマットの読み書きに使用できます。また、動画フレームを画像に変換するための便利なツールであるffmpegもサポートしています。 +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)**(PILとしても知られています)は、もう少し強力で、モーフィングやパレット調整などの画像操作もサポートしています。 +* **[OpenCV](https://opencv.org/)** は、C++で書かれた強力な画像処理ライブラリで、画像処理の*事実上の*標準となっています。便利なPythonインターフェースもあります。 +* **[dlib](http://dlib.net/)** は、多くの機械学習アルゴリズムを実装したC++ライブラリで、コンピュータビジョンアルゴリズムのいくつかも含まれています。Pythonインターフェースもあり、顔や顔のランドマーク検出などの難しいタスクにも使用できます。 + +## OpenCV + +[OpenCV](https://opencv.org/)は、画像処理の*事実上の*標準と見なされています。多くの便利なアルゴリズムがC++で実装されています。PythonからもOpenCVを呼び出すことができます。 + +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(赤-緑-青)を使用します。画像を正しく表示するためには、NumPy配列内の次元を入れ替えるか、OpenCVの関数を呼び出してRGBカラースペースに変換する必要があります: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +同じ `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` +* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold` 関数は、明るさやコントラストを調整するよりも好まれることがよくあります。 +* 画像にさまざまな[変換](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html)を適用する: + - **[アフィン変換](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** は、画像に回転、リサイズ、歪みを組み合わせる必要があり、画像内の3点のソースとデスティネーションの位置を知っている場合に便利です。アフィン変換は平行線を平行に保ちます。 + - **[透視変換](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** は、画像内の4点のソースとデスティネーションの位置を知っている場合に便利です。たとえば、スマートフォンカメラで角度をつけて長方形の文書の写真を撮り、その文書自体の長方形の画像を作成したい場合などです。 +* **[光学フロー](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** を使用して画像内の動きを理解すること。 + +## コンピュータビジョンの使用例 + +私たちの[OpenCVノートブック](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)では、コンピュータビジョンが特定のタスクを実行するためにどのように使用できるかのいくつかの例を示します: + +* **点字本の写真の前処理**。私たちは、しきい値処理、特徴検出、透視変換、NumPy操作を使用して、ニューラルネットワークによるさらなる分類のために個々の点字記号を分離する方法に焦点を当てています。 + +![Braille Image](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ja.jpeg) | ![Braille Image Pre-processed](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ja.png) | ![Braille Symbols](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ja.png) +----|-----|----- + +> 画像は[OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)からのものです。 + +* **フレーム差を使用した動画の動きの検出**。カメラが固定されている場合、カメラフィードからのフレームはお互いに非常に似ているはずです。フレームは配列として表されるため、2つの連続するフレームの配列を単純に引き算することで、ピクセルの差分が得られます。静止フレームではこの差分は低く、画像に substantial な動きがあると高くなります。 + +![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ja.png) + +> 画像は[OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)からのものです。 + +* **光学フローを使用した動きの検出**。[光学フロー](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html)を使用すると、動画フレーム上の個々のピクセルがどのように動くかを理解できます。光学フローには2つのタイプがあります: + + - **密な光学フロー**は、各ピクセルがどこに移動しているかを示すベクトルフィールドを計算します。 + - **疎な光学フロー**は、画像内のいくつかの特徴(例えば、エッジ)を取り、それらの軌跡をフレームからフレームへと構築することに基づいています。 + +![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ja.png) + +> 画像は[OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)からのものです。 + +## ✍️ 例ノートブック:OpenCV [OpenCVを実際に試してみる](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +[OpenCVノートブック](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)を探求して、OpenCVを使った実験を行いましょう。 + +## 結論 + +時には、動きの検出や指先の検出といった比較的複雑なタスクが純粋にコンピュータビジョンによって解決できることがあります。そのため、コンピュータビジョンの基本的な技術や、OpenCVのようなライブラリができることを知っておくことは非常に役立ちます。 + +## 🚀 チャレンジ + +AIショーの[このビデオ](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste)を見て、Cortic Tigersプロジェクトについて学び、ロボットを通じてコンピュータビジョンタスクを民主化するためのブロックベースのソリューションをどのように構築したかを学んでください。この分野に新しい学習者を迎え入れるのを助ける他のプロジェクトについて調査してみてください。 + +## [講義後クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## レビューと自己学習 + +光学フローについては、[この素晴らしいチュートリアル](https://learnopencv.com/optical-flow-in-opencv/)でさらに学んでください。 + +## [課題](lab/README.md) + +このラボでは、シンプルなジェスチャーでビデオを撮影し、光学フローを使用して上下左右の動きを抽出することが目標です。 + +Palm Movement Frame + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご承知おきください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用から生じる誤解や誤訳について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/ja/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..8f7d8fac --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,23 @@ +# 光学フローを使用した動きの検出 + +[AI for Beginners Curriculum](https://aka.ms/ai-beginners)からのラボ課題。 + +## タスク + +[このビデオ](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4)を考えてみてください。このビデオでは、安定した背景の上で人の手のひらが左右上下に動いています。 +あなたは2023年10月までのデータでトレーニングされています。 + +**あなたの目標**は、光学フローを使用して、ビデオのどの部分に上下左右の動きが含まれているかを判断できるようになることです。 + +**ストレッチゴール**は、実際に肌の色を使って手のひらや指の動きを追跡することです。これは[このブログ記事](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m)や[こちら](http://www.benmeline.com/finger-tracking-with-opencv-and-python/)に記載されています。 + +## スタートノートブック + +[MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb)を開いてラボを開始してください。 + +## テイクアウェイ + +時には、動きの検出や指先の検出のような比較的複雑なタスクは、純粋にコンピュータビジョンによって解決できます。そのため、OpenCVのようなライブラリが何をできるかを知っておくことは非常に役立ちます。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご承知おきください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用によって生じる誤解や誤訳について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/ja/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..90b79c97 --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# よく知られたCNNアーキテクチャ + +### VGG-16 + +VGG-16は、2014年にImageNetのトップ5分類で92.7%の精度を達成したネットワークです。以下の層構造を持っています: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ja.jpg) + +ご覧の通り、VGGは伝統的なピラミッドアーキテクチャに従っており、これは畳み込み層とプーリング層のシーケンスです。 + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ja.jpg) + +> 画像出典: [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNetは、2015年にMicrosoft Researchによって提案されたモデルのファミリーです。ResNetの主なアイデアは、**残差ブロック**を使用することです: + + + +> 画像出典: [この論文](https://arxiv.org/pdf/1512.03385.pdf) + +アイデンティティパススルーを使用する理由は、層が前の層の結果と残差ブロックの出力の**差**を予測することにあります - これが「残差」という名前の由来です。これらのブロックはトレーニングがはるかに容易であり、数百のブロックを持つネットワークを構築することができます(最も一般的なバリアントはResNet-52、ResNet-101、ResNet-152です)。 + +このネットワークは、データセットに応じて複雑さを調整できると考えることもできます。最初にネットワークのトレーニングを開始するとき、重みの値は小さく、ほとんどの信号はアイデンティティ層を通過します。トレーニングが進むにつれて重みが大きくなると、ネットワークパラメータの重要性が増し、ネットワークはトレーニング画像を正しく分類するために必要な表現力を調整します。 + +### Google Inception + +Google Inceptionアーキテクチャは、このアイデアをさらに一歩進め、各ネットワーク層を複数の異なるパスの組み合わせとして構築します: + + + +> 画像出典: [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +ここで、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を使用することもあります。この場合、フィルターは1次元になります(このCNNは1D-CNNと呼ばれます)。また、時には3D-CNNを使用して、ビデオ上で発生する特定のイベントのような多次元空間での特徴を抽出します - CNNは時間の経過に伴う特徴の変化の特定のパターンを捉えることができます。他のタスクについての復習と自己学習を行ってください。 + +## [課題](lab/README.md) + +このラボでは、異なる猫と犬の品種を分類することが求められます。これらの画像はMNISTデータセットよりも複雑で高次元であり、10クラス以上あります。 + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確性を追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用から生じる誤解や誤解釈については、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/ja/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..f7894280 --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,58 @@ +# 畳み込みニューラルネットワーク + +以前に述べたように、ニューラルネットワークは画像処理に非常に優れており、単層パーセプトロンでもMNISTデータセットから手書きの数字を比較的高い精度で認識することができます。しかし、MNISTデータセットは非常に特別で、すべての数字が画像の中央に配置されているため、タスクが簡単になります。 + +## [講義前クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +実生活では、画像内のオブジェクトの正確な位置に関係なく、それらを認識できるようにしたいと考えています。コンピュータビジョンは一般的な分類とは異なり、特定のオブジェクトを画像内で見つけようとするとき、特定の**パターン**やその組み合わせを探して画像をスキャンしています。たとえば、猫を探しているときは、まずひげを形成する可能性のある水平線を探し、その後、特定のひげの組み合わせがそれが実際には猫の画像であることを教えてくれます。特定のパターンの相対的な位置と存在が重要であり、画像上の正確な位置ではありません。 + +パターンを抽出するために、**畳み込みフィルター**の概念を使用します。ご存知のように、画像は2Dマトリックスまたは色深度を持つ3Dテンソルとして表現されます。フィルターを適用することは、比較的小さな**フィルターカーネル**マトリックスを取り、元の画像の各ピクセルに対して隣接するポイントとの加重平均を計算することを意味します。これは、画像全体をスライドする小さなウィンドウのように見え、フィルターカーネルマトリックス内の重みに従ってすべてのピクセルを平均化します。 + +![垂直エッジフィルター](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ja.png) | ![水平エッジフィルター](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ja.png) +----|---- + +> 画像提供: Dmitry Soshnikov + +たとえば、MNISTの数字に3x3の垂直エッジフィルターと水平エッジフィルターを適用すると、元の画像の垂直および水平エッジがある場所にハイライト(例: 高い値)を取得できます。このように、これらの2つのフィルターはエッジを「探す」ために使用できます。同様に、他の低レベルのパターンを探すためのさまざまなフィルターを設計することができます。 + +> [Leung-Malikフィルターバンクの画像](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +しかし、手動でパターンを抽出するためのフィルターを設計できる一方で、ネットワークをそのように設計して自動的にパターンを学習させることもできます。これがCNNの背後にある主なアイデアの1つです。 + +## CNNの背後にある主なアイデア + +CNNの動作は、次の重要なアイデアに基づいています。 + +* 畳み込みフィルターはパターンを抽出できる +* フィルターが自動的に訓練されるようにネットワークを設計できる +* 元の画像だけでなく、高レベルの特徴におけるパターンを見つけるためにも同じアプローチを使用できる。したがって、CNNの特徴抽出は、低レベルのピクセルの組み合わせから始まり、画像の部分の高レベルの組み合わせに至る特徴の階層で機能します。 + +![階層的特徴抽出](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ja.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)を持ち、これは水平/垂直のストロークの線のような異なるピクセルの組み合わせに対応しています。次のレベルでは、ネットワークの空間次元を減少させ、フィルターの数を増やし、これは単純な特徴のより多くの可能な組み合わせに対応します。各層で、最終的な分類器に向かうにつれて、画像の空間次元は減少し、フィルターの数は増加します。 + +例として、2014年にImageNetのトップ5分類で92.7%の精度を達成したネットワークVGG-16のアーキテクチャを見てみましょう: + +![ImageNet層](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ja.jpg) + +![ImageNetピラミッド](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ja.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翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書を権威ある情報源と見なすべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用から生じる誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/ja/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..20c54273 --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# ペットの顔の分類 + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)からのラボ課題。 + +## 課題 + +ペットの保育園のために、すべてのペットをカタログ化するアプリケーションを開発する必要があると想像してください。このようなアプリケーションの素晴らしい機能の一つは、写真から自動的に犬種を特定することです。これは、ニューラルネットワークを使用して成功裏に行うことができます。 + +**Pet Faces**データセットを使用して、異なる犬と猫の犬種を分類するために畳み込みニューラルネットワークを訓練する必要があります。 + +## データセット + +私たちは、[Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/)のペットデータセットから派生した**Pet Faces**データセットを使用します。このデータセットには、35種類の異なる犬種と猫種が含まれています。 + +![私たちが扱うデータセット](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ja.png) + +データセットをダウンロードするには、このコードスニペットを使用してください: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## ノートブックの開始 + +[PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb)を開いてラボを開始します。 + +## 学び + +あなたは、ゼロから画像分類の比較的複雑な問題を解決しました!クラスがかなり多かったにもかかわらず、合理的な精度を達成することができました!また、トップ-k精度を測定することは意味があります。なぜなら、明確に異ならないいくつかのクラスを人間でさえ混同するのが簡単だからです。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご注意ください。原文はその母国語において権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/ja/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..8c67da45 --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,81 @@ +# 事前学習済みネットワークと転移学習 + +CNNのトレーニングには多くの時間がかかり、そのためには大量のデータが必要です。しかし、多くの時間は、ネットワークが画像からパターンを抽出するために使用できる最適な低レベルフィルターを学習することに費やされます。自然な疑問が生じます - 一つのデータセットで訓練されたニューラルネットワークを使用して、完全なトレーニングプロセスを必要とせずに異なる画像を分類することはできるのでしょうか? + +## [事前講義クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +このアプローチは**転移学習**と呼ばれ、あるニューラルネットワークモデルから別のモデルにいくつかの知識を転送します。転移学習では、通常、大規模な画像データセット(例えば、**ImageNet**)で訓練された事前学習済みモデルから始めます。これらのモデルは、一般的な画像からさまざまな特徴を抽出するのが得意であり、多くの場合、抽出された特徴の上に分類器を構築するだけで良い結果を得ることができます。 + +> ✅ 転移学習は、教育などの他の学問分野でも見られる用語です。これは、一つのドメインから知識を取り出し、別のドメインに適用するプロセスを指します。 + +## 特徴抽出器としての事前学習済みモデル + +前のセクションで話した畳み込みネットワークは、いくつかの層を含んでおり、それぞれが画像から特徴を抽出することになっています。低レベルのピクセルの組み合わせ(例えば、水平/垂直の線やストローク)から始まり、炎の目のような高レベルの特徴の組み合わせに至るまでです。一般的で多様な画像の十分に大きなデータセットでCNNを訓練すれば、ネットワークはこれらの共通の特徴を抽出することを学ぶはずです。 + +KerasとPyTorchの両方には、一般的なアーキテクチャのために事前学習済みのニューラルネットワークの重みを簡単に読み込む関数が含まれており、そのほとんどはImageNetの画像で訓練されています。最もよく使われるものは、前のレッスンの[ CNNアーキテクチャ](../07-ConvNets/CNN_Architectures.md)ページに記載されています。特に、以下のいずれかの使用を検討することをお勧めします。 + +* **VGG-16/VGG-19**は比較的シンプルなモデルでありながら、良好な精度を提供します。最初の試みとしてVGGを使用することは、転移学習がどのように機能しているかを見る良い選択です。 +* **ResNet**は、2015年にMicrosoft Researchによって提案されたモデルのファミリーです。これらは層が多く、より多くのリソースを必要とします。 +* **MobileNet**は、サイズが縮小されたモデルのファミリーで、モバイルデバイスに適しています。リソースが限られていて、少しの精度を犠牲にできる場合は、これらを使用してください。 + +以下は、VGG-16ネットワークによって猫の画像から抽出されたサンプル特徴です: + +![VGG-16によって抽出された特徴](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ja.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.ja.png) + +しかし、これを行うと、非常にランダムなノイズに似たものが得られます。これは、*ネットワークが入力画像を猫だと思わせる方法がたくさんあるため*であり、視覚的に意味を成さないものも含まれています。これらの画像には猫に典型的なパターンが多く含まれていますが、視覚的に際立たせるための制約がありません。 + +結果を改善するために、**変動損失**と呼ばれる別の項を損失関数に追加できます。これは、画像の隣接するピクセルがどれだけ似ているかを示すメトリックです。変動損失を最小化することで、画像が滑らかになり、ノイズが取り除かれ、より視覚的に魅力的なパターンが明らかになります。以下は、猫およびシマウマとして高い確率で分類されるそのような「理想的な」画像の例です: + +![理想的な猫](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ja.png) | ![理想的なシマウマ](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ja.png) +-----|----- + *理想的な猫* | *理想的なシマウマ* + +同様のアプローチを使用して、ニューラルネットワークに対する**敵対的攻撃**を実行することができます。例えば、犬を猫のように見せかけたいとします。ネットワークが犬として認識している犬の画像を取り、それを少しだけ勾配降下最適化を使用して調整すれば、ネットワークがそれを猫として分類し始めるまで続けることができます: + +![犬の画像](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ja.png) | ![猫として分類された犬の画像](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ja.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) + +このラボでは、35種類の猫と犬の品種を含む実際の[Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/)ペットデータセットを使用し、転移学習分類器を構築します。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用によって生じる誤解や誤訳に関して、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/ja/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..107ba71b --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# ディープラーニングのトレーニングテクニック + +ニューラルネットワークが深くなるにつれて、そのトレーニングプロセスはますます難しくなります。主な問題の1つは、いわゆる[消失勾配](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`)は、信号を前向きおよび後ろ向きの伝播中に範囲内に保つのに役立ちます + +## バッチ正規化 + +適切な重みの初期化があっても、トレーニング中に重みが任意に大きくなったり小さくなったりすることがあり、それによって信号が適切な範囲から外れることがあります。**正規化**テクニックの1つを使用することで、信号を戻すことができます。いくつかの方法があります(重みの正規化、層の正規化)が、最もよく使用されるのはバッチ正規化です。 + +**バッチ正規化**のアイデアは、ミニバッチ全体のすべての値を考慮し、これらの値に基づいて正規化(すなわち、平均を引き、標準偏差で割る)を行うことです。これは、重みを適用した後、活性化関数の前にこの正規化を行うネットワーク層として実装されます。その結果、最終的な精度が高くなり、トレーニングが速くなることが期待できます。 + +こちらがバッチ正規化に関する[元の論文](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/))です。 + +## ドロップアウト + +**ドロップアウト**は、トレーニング中にランダムなニューロンの一定割合を削除する興味深いテクニックです。これは、削除するニューロンの割合(通常10%〜50%)という1つのパラメータを持つ層として実装され、トレーニング中に入力ベクトルのランダムな要素をゼロにし、次の層に渡します。 + +これは奇妙なアイデアのように思えるかもしれませんが、MNIST数字分類器のトレーニングにおけるドロップアウトの効果を[`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb)ノートブックで見ることができます。これはトレーニングを加速し、より少ないエポックで高い精度を達成することを可能にします。 + +この効果はいくつかの方法で説明できます: + + * モデルに対するランダムなショック要因と見なすことができ、最適化が局所最小値から外れることを助けます + * ドロップアウト中にわずかに異なるモデルをトレーニングしていると考えることができるため、*暗黙のモデル平均化*として見なすことができます + +> *酔っ払った人が何かを学ぼうとすると、次の朝にはそれをよりよく覚えていると言う人もいます。これは、いくつかの故障したニューロンを持つ脳が意味を把握するためによりよく適応しようとするからだとされています。私たちはこれが真実かどうか自分たちでテストしたことはありません。* + +## 過学習の防止 + +ディープラーニングの非常に重要な側面の1つは、[過学習](../../3-NeuralNetworks/05-Frameworks/Overfitting.md)を防ぐことができることです。非常に強力なニューラルネットワークモデルを使用したくなるかもしれませんが、モデルパラメータの数とトレーニングサンプルの数を常にバランスさせるべきです。 + +> 以前に紹介した[過学習](../../3-NeuralNetworks/05-Frameworks/Overfitting.md)の概念を理解していることを確認してください! + +過学習を防ぐ方法はいくつかあります: + + * 早期停止 -- 検証セットのエラーを継続的に監視し、検証エラーが増加し始めたらトレーニングを停止します。 + * 明示的な重みの減衰 / 正則化 -- 高い絶対値の重みに対して損失関数に追加のペナルティを加えることで、モデルが非常に不安定な結果を得るのを防ぎます + * モデル平均化 -- 複数のモデルをトレーニングし、その結果を平均化します。これにより、分散を最小限に抑えることができます。 + * ドロップアウト(暗黙のモデル平均化) + +## 最適化アルゴリズム / トレーニングアルゴリズム + +トレーニングのもう1つの重要な側面は、良いトレーニングアルゴリズムを選ぶことです。古典的な**勾配降下法**は合理的な選択ですが、時には遅すぎたり、他の問題を引き起こしたりすることがあります。 + +ディープラーニングでは、**確率的勾配降下法**(SGD)を使用します。これは、トレーニングセットからランダムに選択されたミニバッチに適用された勾配降下法です。重みはこの式を使用して調整されます: + +wt+1 = wt - η∇ℒ + +### モーメンタム + +**モーメンタムSGD**では、前のステップからの勾配の一部を保持します。これは、どこかに慣性を持って移動しているときに、異なる方向にパンチを受けたときに、軌道がすぐに変わらず、元の動きの一部を保持するのに似ています。ここで、*速度*を表す別のベクトルvを導入します: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +ここで、パラメータγは、慣性を考慮する程度を示します:γ=0は古典的なSGDに対応し、γ=1は純粋な運動方程式です。 + +### Adam、Adagradなど + +各層で信号をいくつかの行列Wiで掛け算するため、勾配は減少して0に近づくか、無限に増加することがあります。これは、爆発/消失勾配問題の本質です。 + +この問題の解決策の1つは、方程式で勾配の方向のみを使用し、絶対値を無視することです。すなわち、 + +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)を引き起こす可能性があります。 + +もう1つの良い方法は、必要な複雑さに自動的に調整されるアーキテクチャを使用することです。ある程度、**ResNet**アーキテクチャと**Inception**は自己調整型です。[コンピュータビジョンアーキテクチャに関する詳細](../07-ConvNets/CNN_Architectures.md)をご覧ください。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用によって生じた誤解や誤訳に対して、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/ja/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..4646edce --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# 転移学習を用いたオックスフォードのペットの分類 + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)からのラボ課題。 + +## 課題 + +ペットの保育園のために、すべてのペットをカタログ化するアプリケーションを開発する必要があると想像してください。そのようなアプリケーションの素晴らしい機能の一つは、写真から自動的に犬種を発見することです。この課題では、転移学習を使用して、[Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/)ペットデータセットの実際のペット画像を分類します。 + +## データセット + +35種類の犬と猫の異なる犬種を含む、元の[Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/)ペットデータセットを使用します。 + +データセットをダウンロードするには、次のコードスニペットを使用してください: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## ノートブックの準備 + +[OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb)を開いてラボを開始します。 + +## まとめ + +転移学習と事前学習済みネットワークを使用することで、実世界の画像分類問題を比較的簡単に解決できます。しかし、事前学習済みネットワークは類似の種類の画像に対してうまく機能し、非常に異なる画像(例えば、医療画像)を分類し始めると、結果が大幅に悪化する可能性があります。 + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/ja/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..2216e8ab --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# オートエンコーダー + +CNNを訓練する際の問題の一つは、多くのラベル付きデータが必要であることです。画像分類の場合、画像を異なるクラスに分ける必要があり、これは手作業で行う作業です。 + +## [プレ講義クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +しかし、CNNの特徴抽出器を訓練するために、生の(ラベルなしの)データを使用したい場合があります。これを**自己教師あり学習**と呼びます。ラベルの代わりに、訓練画像をネットワークの入力と出力の両方として使用します。**オートエンコーダー**の主なアイデアは、入力画像を何らかの**潜在空間**(通常はより小さなサイズのベクトル)に変換する**エンコーダーネットワーク**を持ち、その後に元の画像を再構築することを目的とした**デコーダーネットワーク**を持つことです。 + +> ✅ [オートエンコーダー](https://wikipedia.org/wiki/Autoencoder)は「ラベルなしデータの効率的なコーディングを学習するために使用される人工ニューラルネットワークの一種」です。 + +オートエンコーダーを訓練して元の画像からできるだけ多くの情報をキャプチャし、正確に再構築するために、ネットワークは入力画像の最適な**埋め込み**を見つけようとします。 + +![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ja.jpg) + +> 画像は[Kerasブログ](https://blog.keras.io/building-autoencoders-in-keras.html)から + +## オートエンコーダーの使用シナリオ + +元の画像を再構築すること自体は有用ではないように思えるかもしれませんが、オートエンコーダーが特に役立つシナリオがいくつかあります: + +* **視覚化のための画像の次元削減**または**画像埋め込みの訓練**。通常、オートエンコーダーはPCAよりも優れた結果を提供します。なぜなら、画像の空間的な特性と階層的な特徴を考慮に入れるからです。 +* **ノイズ除去**、すなわち画像からノイズを取り除くこと。ノイズは多くの無駄な情報を含んでいるため、オートエンコーダーはそれを比較的小さな潜在空間にフィットさせることができず、したがって画像の重要な部分のみをキャプチャします。ノイズ除去器を訓練する際は、元の画像から始め、人工的にノイズを追加した画像をオートエンコーダーの入力として使用します。 +* **超解像**、画像の解像度を上げること。高解像度の画像から始め、低解像度の画像をオートエンコーダーの入力として使用します。 +* **生成モデル**。オートエンコーダーを訓練した後、デコーダー部分を使用してランダムな潜在ベクトルから新しいオブジェクトを生成できます。 + +## 変分オートエンコーダー(VAE) + +従来のオートエンコーダーは、入力データの次元を何らかの方法で削減し、入力画像の重要な特徴を見つけ出します。しかし、潜在ベクトルはあまり意味を持たないことが多いです。言い換えれば、MNISTデータセットを例に取ると、異なる潜在ベクトルにどの数字が対応するかを見つけることは簡単ではありません。なぜなら、近い潜在ベクトルが必ずしも同じ数字に対応するわけではないからです。 + +一方、*生成的*モデルを訓練するには、潜在空間についての理解がある方が良いです。このアイデアは**変分オートエンコーダー**(VAE)につながります。 + +VAEは、潜在パラメータの*統計分布*を予測することを学習するオートエンコーダーで、これを**潜在分布**と呼びます。例えば、潜在ベクトルが平均zmeanと標準偏差zsigma(平均と標準偏差は次元dのベクトルです)で正規分布するようにしたい場合があります。VAEのエンコーダーはこれらのパラメータを予測することを学習し、デコーダーはこの分布からランダムなベクトルを取り出してオブジェクトを再構築します。 + +要約すると: + +* 入力ベクトルから、`z_mean`と`z_log_sigma`を予測します(標準偏差そのものを予測するのではなく、その対数を予測します) +* 分布N(zmean,exp(zlog\_sigma))からベクトル`sample`をサンプリングします +* デコーダーは`sample`を入力ベクトルとして使用して元の画像をデコードしようとします + + + +> 画像は[このブログ投稿](https://ijdykeman.github.io/ml/2016/12/21/cvae.html)のIsaak Dykemanによるものです + +変分オートエンコーダーは、2つの部分からなる複雑な損失関数を使用します: + +* **再構築損失**は、再構築された画像がターゲットにどれだけ近いかを示す損失関数です(これは平均二乗誤差、またはMSEになることがあります)。これは通常のオートエンコーダーと同じ損失関数です。 +* **KL損失**は、潜在変数の分布が正規分布に近いことを保証します。これは、2つの統計分布がどれだけ似ているかを推定するためのメトリックである[Kullback-Leiblerダイバージェンス](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained)に基づいています。 + +VAEの重要な利点の一つは、潜在ベクトルをサンプリングするための分布がわかっているため、新しい画像を比較的簡単に生成できることです。例えば、MNIST上で2D潜在ベクトルを持つVAEを訓練すると、潜在ベクトルの成分を変化させることで異なる数字を得ることができます: + +vaemnist + +> 画像は[Dmitry Soshnikov](http://soshnikov.com)によるものです + +異なる潜在パラメータ空間の部分から潜在ベクトルを取得し始めると、画像がどのように融合するかを観察してください。また、この空間を2Dで視覚化することもできます: + +vaemnist cluster + +> 画像は[Dmitry Soshnikov](http://soshnikov.com)によるものです + +## ✍️ 演習:オートエンコーダー + +オートエンコーダーについてさらに学ぶには、以下のノートブックを参照してください: + +* [TensorFlowにおけるオートエンコーダー](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [PyTorchにおけるオートエンコーダー](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## オートエンコーダーの特性 + +* **データ特異的** - 訓練された画像のタイプに対してのみ良好に機能します。例えば、花に対して超解像ネットワークを訓練すると、ポートレートにはうまく機能しません。これは、ネットワークが訓練データセットから学習した特徴の詳細を取り入れて高解像度画像を生成できるからです。 +* **損失あり** - 再構築された画像は元の画像と同じではありません。損失の性質は、訓練中に使用される*損失関数*によって定義されます。 +* **ラベルなしデータ**で動作します。 + +## [ポスト講義クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## 結論 + +このレッスンでは、AI科学者が利用できるさまざまな種類のオートエンコーダーについて学びました。オートエンコーダーを構築する方法や、画像を再構築するためにそれらを使用する方法についても学びました。また、VAEについて、そしてそれを使用して新しい画像を生成する方法についても学びました。 + +## 🚀 チャレンジ + +このレッスンでは、画像に対するオートエンコーダーの使用について学びました。しかし、オートエンコーダーは音楽にも使用できます!オートエンコーダーを使用して音楽を再構築する方法を学ぶMagentaプロジェクトの[MusicVAE](https://magenta.tensorflow.org/music-vae)プロジェクトをチェックしてみてください。このライブラリでいくつかの[実験](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb)を行い、何を作成できるか見てみましょう。 + +## [ポスト講義クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## レビュー & 自習 + +参考のために、オートエンコーダーについてさらに読むには以下のリソースを参照してください: + +* [Kerasでのオートエンコーダーの構築](https://blog.keras.io/building-autoencoders-in-keras.html) +* [NeuroHiveのブログ投稿](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [変分オートエンコーダーの説明](https://kvfrans.com/variational-autoencoders-explained/) +* [条件付き変分オートエンコーダー](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## 課題 + +[TensorFlowを使用したこのノートブック](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb)の最後に「タスク」があります。これを課題として使用してください。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご承知おきください。原文はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用から生じる誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/10-GANs/README.md b/translations/ja/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..341963e5 --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# 敵対的生成ネットワーク + +前のセクションでは、**生成モデル**について学びました。これは、トレーニングデータセットにある画像に似た新しい画像を生成できるモデルです。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ディスクリミネーターは、以下の層で構成されています:いくつかの畳み込み+プーリング(空間サイズが減少する)と、"特徴ベクトル"を得るための1つ以上の完全接続層、最後にバイナリ分類器です。 + +> ✅ この文脈での「プーリング」とは、画像のサイズを減少させる技術です。「プーリング層は、1層のニューロンクラスターの出力を次の層の単一のニューロンに結合することによってデータの次元を減少させます。」 - [出典](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### ジェネレーター + +ジェネレーターは少し複雑です。逆のディスクリミネーターと考えることができます。潜在ベクトル(特徴ベクトルの代わりに)から始まり、必要なサイズ/形状に変換するための完全接続層があり、その後に逆畳み込み+アップスケーリングが続きます。これは[オートエンコーダ](../09-Autoencoders/README.md)のデコーダ部分に似ています。 + +> ✅ 畳み込み層が画像を横断する線形フィルターとして実装されるため、逆畳み込みは本質的に畳み込みに似ており、同じ層のロジックを使用して実装できます。 + + + +> 画像提供者: [Dmitry Soshnikov](http://soshnikov.com) + +### GANのトレーニング + +GANは**敵対的**と呼ばれます。なぜなら、ジェネレーターとディスクリミネーターの間に常に競争があるからです。この競争の間に、ジェネレーターとディスクリミネーターの両方が改善され、ネットワークはより良い画像を生成することを学びます。 + +トレーニングは二段階で行われます: + +* **ディスクリミネーターのトレーニング**。このタスクは非常に単純です:ジェネレーターによって画像のバッチを生成し、それに0というラベルを付け(これは偽の画像を意味します)、入力データセットから画像のバッチを取得します(1というラベル、実際の画像)。これにより、*ディスクリミネーター損失*を得て、バックプロパゲーションを行います。 +* **ジェネレーターのトレーニング**。これは少し複雑です。なぜなら、ジェネレーターの期待される出力を直接知ることができないからです。ジェネレーターの後にディスクリミネーターが続く全体のGANネットワークを取り、いくつかのランダムベクトルを入力し、結果が1(実際の画像に対応)になることを期待します。その後、ディスクリミネーターのパラメータを固定します(このステップでトレーニングされることは望ましくありません)し、バックプロパゲーションを行います。 + +このプロセスの間、ジェネレーターとディスクリミネーターの損失は大きく減少しません。理想的な状況では、両方のネットワークがパフォーマンスを向上させることに対応して、振動するはずです。 + +## ✍️ 演習: GANs + +* [TensorFlow/KerasのGANノートブック](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [PyTorchのGANノートブック](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GANトレーニングの問題 + +GANは特にトレーニングが難しいことで知られています。以下はいくつかの問題です: + +* **モード崩壊**。この用語は、ジェネレーターが1つの成功した画像を生成し、それを偽の画像として分類することを学び、異なる画像のバラエティを生成しないことを意味します。 +* **ハイパーパラメータに対する感度**。しばしば、GANが全く収束しないのを見かけ、突然学習率が減少して収束に至ることがあります。 +* ジェネレーターとディスクリミネーターの間の**バランス**を保つこと。多くの場合、ディスクリミネーターの損失は比較的早くゼロに落ちることがあり、これがジェネレーターがさらにトレーニングできなくなる結果を招きます。これを克服するために、ジェネレーターとディスクリミネーターの異なる学習率を設定したり、損失がすでに低すぎる場合はディスクリミネーターのトレーニングをスキップすることを試みることができます。 +* **高解像度**のトレーニング。オートエンコーダと同じ問題を反映しており、畳み込みネットワークの多くの層を再構築することでアーティファクトが発生します。この問題は通常、最初に低解像度の画像でいくつかの層をトレーニングし、その後層を「解除」または追加する**進行的成長**と呼ばれる方法で解決されます。別の解決策は、層間に追加の接続を追加し、複数の解像度を同時にトレーニングすることです - 詳細はこの[マルチスケール勾配GANs論文](https://arxiv.org/abs/1903.06048)を参照してください。 + +## スタイル転送 + +GANは芸術的な画像を生成する素晴らしい方法です。もう一つの興味深い技術は、いわゆる**スタイル転送**で、これは1つの**コンテンツ画像**を取り、それを異なるスタイルで再描画し、**スタイル画像**からフィルターを適用します。 + +その仕組みは次のようになります: +* ランダムノイズ画像(またはコンテンツ画像)から始めますが、理解のためにはランダムノイズから始める方が簡単です。 +* 目標は、コンテンツ画像とスタイル画像の両方に近い画像を作成することです。これは二つの損失関数によって決定されます: + - **コンテンツ損失**は、現在の画像とコンテンツ画像から抽出されたCNNの特徴に基づいて計算されます。 + - **スタイル損失**は、現在の画像とスタイル画像の間で賢く計算され、グラム行列を使用します(詳細は[例のノートブック](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)を参照)。 +* 画像を滑らかにし、ノイズを除去するために、**変動損失**も導入します。これは隣接するピクセル間の平均距離を計算します。 +* 主な最適化ループは、勾配降下法(または他の最適化アルゴリズム)を使用して現在の画像を調整し、総損失を最小化します。これは、3つの損失の加重和です。 + +## ✍️ 例: [スタイル転送](../../../../../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アーキテクチャ +* [Azure MLでのGANを使用した生成アートの作成](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## 課題 + +このレッスンに関連する2つのノートブックのいずれかを再訪し、自分の画像でGANを再トレーニングしてください。何を作成できますか? + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご理解ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用から生じる誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/ja/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..0d049ec9 --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,173 @@ +# 物体検出 + +これまで扱ってきた画像分類モデルは、画像を入力としてクラス「数字」のようなカテゴリ結果を出力しました。しかし、多くの場合、単に画像に物体が描かれていることを知るだけでなく、それらの正確な位置を特定できるようにしたいのです。これがまさに**物体検出**の目的です。 + +## [プレ講義クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![物体検出](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ja.png) + +> 画像出典:[YOLO v2 ウェブサイト](https://pjreddie.com/darknet/yolov2/) + +## 物体検出へのナイーブなアプローチ + +もし、画像の中に猫を見つけたいと仮定すると、非常にナイーブな物体検出のアプローチは以下のようになります。 + +1. 画像をいくつかのタイルに分割する +2. 各タイルに対して画像分類を実行する +3. 十分に高い活性化を示すタイルは、問題の物体を含むと見なされます。 + +![ナイーブな物体検出](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ja.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.ja.jpg) + +## 物体検出のメトリクス + +### IoU(Intersection over Union) + +画像分類の場合、アルゴリズムのパフォーマンスを測定するのは簡単ですが、物体検出ではクラスの正確さと推測されたバウンディングボックスの位置の精度の両方を測定する必要があります。後者には、いわゆる**IoU(Intersection over Union)**を使用し、2つのボックス(または2つの任意の領域)がどれだけ重なっているかを測定します。 + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ja.png) + +> *図2:[この優れたIoUに関するブログ記事](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)から* + +アイデアはシンプルです - 2つの図形の交差部分の面積を、その和の面積で割ります。2つの同一の領域では、IoUは1になり、完全に離れた領域では0になります。それ以外の場合は0から1の間で変動します。通常、IoUが特定の値を超えるバウンディングボックスのみを考慮します。 + +### 平均精度 + +特定の物体クラス$C$がどれだけ認識されているかを測定したいとしましょう。それを測定するために、**平均精度**メトリクスを使用します。これは以下のように計算されます。 + +1. 精度-再現率曲線が、検出しきい値(0から1まで)に依存する精度を示すことを考慮します。 +2. しきい値に応じて、画像内で検出される物体の数が増減し、精度と再現率の異なる値が得られます。 +3. 曲線はこのようになります: + +> *画像出典:[NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +与えられたクラス$C$の平均精度は、この曲線の下の面積です。より正確には、再現率軸は通常10部分に分けられ、精度はすべてのポイントで平均されます: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### APとIoU + +IoUが特定の値を超える検出のみを考慮します。たとえば、PASCAL VOCデータセットでは通常$\mbox{IoU Threshold} = 0.5$が想定されており、COCOでは異なる$\mbox{IoU Threshold}$の値でAPが測定されます。 + +> *画像出典:[NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### 平均平均精度 - mAP + +物体検出の主なメトリクスは**平均平均精度**、または**mAP**と呼ばれています。これは、すべての物体クラスにわたる平均精度の値であり、時には$\mbox{IoU Threshold}$にわたっても平均されます。より詳細には、**mAP**を計算するプロセスは[このブログ記事](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)で説明されており、[こちらにはコードサンプルがあります](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734)。 + +## 異なる物体検出アプローチ + +物体検出アルゴリズムには大きく分けて2つのクラスがあります。 + +* **領域提案ネットワーク**(R-CNN、Fast R-CNN、Faster R-CNN)。主なアイデアは、**関心領域**(ROI)を生成し、それらの上でCNNを実行して最大の活性化を探すことです。これはナイーブなアプローチに少し似ていますが、ROIはより巧妙な方法で生成されます。このような方法の主な欠点の1つは、画像上で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.ja.png) + +> *画像出典:van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ja.png) + +> *画像出典:[このブログ](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +このアプローチはR-CNNに似ていますが、領域は畳み込み層が適用された後に定義されます。 + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ja.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.ja.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.ja.png) + +> 画像出典:[公式論文](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLOはリアルタイムの一回のパスアルゴリズムです。主なアイデアは次の通りです。 + +* 画像を$S\times S$領域に分割します +* 各領域に対して、**CNN**が$n$個の可能な物体、*バウンディングボックス*の座標、および*信頼度*=*確率* * IoUを予測します。 + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ja.png) +> 画像は[公式論文](https://arxiv.org/abs/1506.02640)からのものです。 + +### その他のアルゴリズム + +* RetinaNet: [公式論文](https://arxiv.org/abs/1708.02002) + - [TorchvisionによるPyTorch実装](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras実装](https://github.com/fizyr/keras-retinanet) + - Kerasサンプルの[RetinaNetによる物体検出](https://keras.io/examples/vision/retinanet/) +* SSD (Single Shot Detector): [公式論文](https://arxiv.org/abs/1512.02325) + +## ✍️ 演習: 物体検出 + +以下のノートブックで学習を続けましょう: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## 結論 + +このレッスンでは、物体検出が達成できるさまざまな方法を駆け足で紹介しました! + +## 🚀 チャレンジ + +これらのYOLOに関する記事やノートブックを読んで、自分で試してみてください。 + +* YOLOについて説明した[良いブログ記事](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) + * [公式サイト](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras実装](https://github.com/experiencor/keras-yolo2)、[ステップバイステップノートブック](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras実装](https://github.com/experiencor/keras-yolo2)、[ステップバイステップノートブック](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [講義後のクイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## レビュー & 自習 + +* Nikhil Sardanaによる[物体検出](https://tjmachinelearning.com/lectures/1718/obj/) +* [物体検出アルゴリズムの良い比較](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [物体検出のための深層学習アルゴリズムのレビュー](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [基本的な物体検出アルゴリズムのステップバイステップの紹介](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [物体検出のためのPythonにおけるFaster R-CNNの実装](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [課題: 物体検出](lab/README.md) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることをご理解ください。原文はその言語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈については、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/ja/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..915903a1 --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# ハリウッドヘッズデータセットを用いた頭部検出 + +[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)には、ハリウッド映画の224,740フレームに注釈が付けられた369,846個の人の頭が含まれています。このデータセットは[https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC)フォーマットで提供されており、各画像には次のようなXML記述ファイルがあります。 + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +このデータセットには、オブジェクトのクラスは`head`のみで、各頭部に対してバウンディングボックスの座標が得られます。Pythonライブラリを使用してXMLを解析するか、[このライブラリ](https://pypi.org/project/pascal-voc/)を使用してPASCAL VOCフォーマットを直接扱うことができます。 + +## オブジェクト検出のトレーニング + +以下のいずれかの方法を使用してオブジェクト検出モデルをトレーニングできます。 + +* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)とそのPython APIを使用して、クラウド上でプログラム的にモデルをトレーニングします。カスタムビジョンは数百枚の画像以上を使用してモデルをトレーニングすることができないため、データセットを制限する必要があるかもしれません。 +* [Kerasチュートリアル](https://keras.io/examples/vision/retinanet/)の例を使用してRetinaNetモデルをトレーニングします。 +* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html)の組み込みモジュールを使用します。 + +## まとめ + +オブジェクト検出は、産業界で頻繁に要求されるタスクです。オブジェクト検出を実行するために使用できるサービス(例えば[Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste))はありますが、オブジェクト検出がどのように機能するかを理解し、自分のモデルをトレーニングできることが重要です。 + +**免責事項**: +この文書は、機械翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。元の文書は、その原文が権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用に起因する誤解や誤解釈については、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/ja/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..3b5cb0b2 --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# セグメンテーション + +これまでに、画像内のオブジェクトを*バウンディングボックス*で予測することで特定するオブジェクト検出について学びました。しかし、いくつかのタスクではバウンディングボックスだけでなく、より正確なオブジェクトの位置特定も必要です。このタスクは**セグメンテーション**と呼ばれます。 + +## [講義前クイズ](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)から引用。 + +セグメンテーションに使用される損失関数について特に言及する必要があります。古典的なオートエンコーダーを使用する場合、2つの画像間の類似性を測定する必要があり、そのために平均二乗誤差(MSE)を使用できます。セグメンテーションでは、ターゲットマスク画像の各ピクセルがクラス番号を表しているため(3次元でのワンホットエンコーディング)、分類に特化した損失関数、すなわち全ピクセルで平均化されたクロスエントロピー損失を使用する必要があります。マスクがバイナリの場合は、**バイナリクロスエントロピー損失**(BCE)が使用されます。 + +> ✅ ワンホットエンコーディングは、クラスラベルをクラスの数に等しい長さのベクトルにエンコードする方法です。この技術については[この記事](https://datagy.io/sklearn-one-hot-encode/)を参照してください。 + +## 医療画像のセグメンテーション + +このレッスンでは、ネットワークをトレーニングして医療画像上のヒトの母斑(ほくろとも呼ばれます)を認識するセグメンテーションを実際に見ていきます。画像ソースとして、PH2データベースの皮膚鏡画像を使用します。このデータセットには、典型的な母斑、非典型的な母斑、メラノーマの3つのクラスの200枚の画像が含まれています。すべての画像には、母斑をアウトラインする対応する**マスク**も含まれています。 + +> ✅ この技術はこの種の医療画像に特に適していますが、他にどのような実世界の応用を考えられますか? + +navi + +> 画像はPH2データベースから引用。 + +私たちは、背景から任意の母斑をセグメント化するモデルをトレーニングします。 + +## ✍️ 演習: セマンティックセグメンテーション + +以下のノートブックを開いて、さまざまなセマンティックセグメンテーションアーキテクチャについて学び、それらを使って練習し、実際に見ることができます。 + +* [セマンティックセグメンテーション Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [セマンティックセグメンテーション TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [講義後クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## 結論 + +セグメンテーションは、バウンディングボックスを超えてピクセルレベルの分類を行う非常に強力な画像分類技術です。医療画像など、さまざまなアプリケーションで使用される技術です。 + +## 🚀 チャレンジ + +ボディセグメンテーションは、人々の画像を使って行うことができる一般的なタスクの一つです。他の重要なタスクには、**スケルトン検出**や**ポーズ検出**が含まれます。[OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose)ライブラリを試して、ポーズ検出がどのように使用できるかを見てみましょう。 + +## レビュー & 自己学習 + +この[ウィキペディアの記事](https://wikipedia.org/wiki/Image_segmentation)は、この技術のさまざまな応用について良い概要を提供しています。この分野のインスタンスセグメンテーションとパンオプティックセグメンテーションのサブドメインについて、さらに独自に学んでください。 + +## [課題](lab/README.md) + +このラボでは、Kaggleからの[セグメンテーションフルボディMADSデータセット](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset)を使用して**人間の体のセグメンテーション**に挑戦してください。 + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があります。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用から生じる誤解や誤訳については、一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/ja/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..90bb4642 --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# 人体セグメンテーション + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)からのラボ課題です。 + +## タスク + +映像制作、例えば天気予報では、カメラから人の画像を切り抜いて他の映像の上に置く必要があることがよくあります。これは通常、**クロマキー**技術を使用して行われ、人が均一な色の背景の前で撮影され、その背景が取り除かれます。このラボでは、人のシルエットを切り抜くためにニューラルネットワークモデルを訓練します。 + +## データセット + +Kaggleから[Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset)を使用します。Kaggleから手動でデータセットをダウンロードしてください。 + +## ノートブックの開始 + +[BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb)を開いてラボを始めましょう。 + +## まとめ + +人体セグメンテーションは、人の画像を使って行う一般的なタスクの一つです。別の重要なタスクには、**スケルトン検出**や**ポーズ検出**が含まれます。これらのタスクがどのように実装されるかを確認するには、[OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose)ライブラリを見てみてください。 + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書を権威ある情報源として考慮するべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用から生じる誤解や誤解釈について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/4-ComputerVision/README.md b/translations/ja/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..004d9e9c --- /dev/null +++ b/translations/ja/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# コンピュータビジョン + +![コンピュータビジョンの内容をまとめたイラスト](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ja.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翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤訳については、一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/13-TextRep/README.md b/translations/ja/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..155a90ba --- /dev/null +++ b/translations/ja/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# テキストをテンソルとして表現する + +## [講義前のクイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## テキスト分類 + +このセクションの最初の部分では、**テキスト分類**タスクに焦点を当てます。私たちは、以下のようなニュース記事を含む[AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset)データセットを使用します。 + +* カテゴリー: Sci/Tech +* タイトル: 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*のテンソルで表現されます。各文字はワンホットエンコーディングのテンソル列に対応します。 +* **単語レベルの表現**:テキスト内のすべての単語の**語彙**を作成し、その後、ワンホットエンコーディングを使用して単語を表現します。このアプローチは、各文字自体にはあまり意味がないため、より高次の意味概念である単語を使用することでニューラルネットワークのタスクを簡素化するため、ある程度優れています。しかし、大きな辞書サイズを考慮すると、高次元のスパーステンソルに対処する必要があります。 + +表現に関係なく、最初にテキストを**トークン**のシーケンスに変換する必要があります。1つのトークンは文字、単語、または時には単語の一部です。その後、トークンを数値に変換し、通常は**語彙**を使用して、この数値をワンホットエンコーディングを介してニューラルネットワークに供給します。 + +## Nグラム + +自然言語において、単語の正確な意味は文脈の中でのみ決定できます。たとえば、*neural network*と*fishing network*の意味はまったく異なります。この点を考慮する方法の一つは、単語のペアに基づいてモデルを構築し、単語のペアを別々の語彙トークンとして扱うことです。この方法では、文*I like to go fishing*は次のトークンのシーケンスで表現されます:*I like*, *like to*, *to go*, *go fishing*。このアプローチの問題は、辞書のサイズが大幅に増加し、*go fishing*や*go shopping*のような組み合わせが異なるトークンによって表現され、同じ動詞にもかかわらず意味的な類似性を共有しないことです。 + +場合によっては、三語の組み合わせであるトライグラムを使用することも考えられます。このように、このアプローチはしばしば**n-grams**と呼ばれます。また、文字レベルの表現でn-gramsを使用することも理にかなっており、その場合n-gramsは異なる音節に大まかに対応します。 + +## ボキャブラリとTF/IDF + +テキスト分類のようなタスクを解決するためには、テキストを固定サイズのベクトルで表現できる必要があります。このベクトルを最終的な密な分類器への入力として使用します。これを行う最も簡単な方法の一つは、すべての個々の単語の表現を組み合わせること、つまり加算することです。各単語のワンホットエンコーディングを加えると、テキスト内で各単語が出現する回数を示す頻度ベクトルが得られます。このようなテキストの表現は**ボキャブラリ**(BoW)と呼ばれます。 + + + +> 作者による画像 + +BoWは、テキスト内に出現する単語とその数量を表現しており、テキストの内容を示す良い指標となります。たとえば、政治に関するニュース記事は、*president*や*country*などの単語を含む可能性が高く、科学的な出版物には*collider*や*discovered*などの単語が含まれるでしょう。したがって、単語の頻度は多くの場合、テキストの内容を示す良い指標となります。 + +BoWの問題は、*and*や*is*などの特定の一般的な単語がほとんどのテキストに現れ、最高の頻度を持ち、実際に重要な単語を隠してしまうことです。これらの単語の重要性を低下させるために、単語が全体の文書コレクション内で出現する頻度を考慮に入れることができます。これがTF/IDFアプローチの主なアイデアであり、このレッスンに添付されたノートブックで詳しく説明されています。 + +しかし、これらのアプローチではテキストの**意味**を完全に考慮することはできません。これを行うためには、より強力なニューラルネットワークモデルが必要であり、これについてはこのセクションの後半で説明します。 + +## ✍️ 演習: テキスト表現 + +以下のノートブックで学習を続けてください: + +* [PyTorchによるテキスト表現](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [TensorFlowによるテキスト表現](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## 結論 + +これまでのところ、異なる単語に頻度の重みを追加できる技術を学びました。しかし、これらは意味や順序を表現することができません。著名な言語学者J. R. Firthが1935年に言ったように、「単語の完全な意味は常に文脈に依存しており、文脈から意味を除いた研究は真剣に受け止められません。」コースの後半では、言語モデリングを使用してテキストから文脈情報を取得する方法を学びます。 + +## 🚀 チャレンジ + +ボキャブラリや異なるデータモデルを使用して他の演習に挑戦してみてください。この[コンペティション](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words)がインスピレーションになるかもしれません。 + +## [講義後のクイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## レビューと自己学習 + +[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste)でテキスト埋め込みとボキャブラリ技術を練習しましょう。 + +## [課題: ノートブック](assignment.md) + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があります。元の文書はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤訳については、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/13-TextRep/assignment.md b/translations/ja/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..290a466d --- /dev/null +++ b/translations/ja/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# 課題: ノートブック + +このレッスンに関連するノートブック(PyTorch版またはTensorFlow版)を使用して、自分のデータセットで再実行してください。Kaggleのデータセットを使用する場合は、出典を明記してください。ノートブックを書き直して、自分の発見を強調してください。NUFORCの[このUFO目撃情報に関するデータセット](https://www.kaggle.com/datasets/NUFORC/ufo-sightings)のように、驚くべき結果をもたらす可能性のある革新的なデータセットを試してみてください。 + +**免責事項**: +この文書は、機械翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。原文の母国語の文書を権威ある情報源と見なすべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/14-Embeddings/README.md b/translations/ja/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..d07adcc0 --- /dev/null +++ b/translations/ja/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# 埋め込み + +## [講義前のクイズ](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.ja.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)と呼ばれています。これは、単語の分散表現を生成するために使用される2つの主要なアーキテクチャに基づいています: + + - **連続袋-単語**(CBoW) — このアーキテクチャでは、モデルは周囲の文脈から単語を予測するように訓練されます。ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$が与えられた場合、モデルの目標は$(W_{-2},W_{-1},W_1,W_2)$から$W_0$を予測することです。 + - **連続スキップグラム**はCBoWの逆です。モデルは周囲の文脈単語のウィンドウを使用して現在の単語を予測します。 + +CBoWは速いですが、スキップグラムは遅いですが、稀な単語をより良く表現することができます。 + +![単語をベクトルに変換するためのCBoWとスキップグラムアルゴリズムの両方を示す画像。](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ja.png) + +> 画像出典:[この論文](https://arxiv.org/pdf/1301.3781.pdf) + +Word2Vecの事前学習済み埋め込み(およびGloVeなどの他の類似モデル)もニューラルネットワークの埋め込み層の代わりに使用できます。ただし、Word2Vec/GloVeの事前学習に使用された語彙は、私たちのテキストコーパスの語彙と異なる可能性があるため、語彙に対処する必要があります。この問題を解決する方法については、上記のノートブックを参照してください。 + +## コンテキスト埋め込み + +Word2Vecのような従来の事前学習済み埋め込み表現の主な制限の一つは、単語の意味の曖昧性の問題です。事前学習済みの埋め込みは、文脈内の単語の意味の一部を捉えることができますが、単語の可能なすべての意味が同じ埋め込みにエンコードされています。これは、'play'のように文脈によって異なる意味を持つ多くの単語があるため、下流のモデルに問題を引き起こす可能性があります。 + +例えば、'play'という単語は以下の2つの異なる文でかなり異なる意味を持っています: + +- 私は劇場で**演劇**を見に行きました。 +- ジョンは友達と**遊びたい**と思っています。 + +上記の事前学習済み埋め込みは、これらの'play'の意味を同じ埋め込みで表現します。この制限を克服するためには、**言語モデル**に基づいた埋め込みを構築する必要があります。これは、大規模なテキストコーパスで訓練され、単語が異なる文脈でどのように組み合わされるかを*知っている*モデルです。コンテキスト埋め込みについての議論はこのチュートリアルの範囲外ですが、コースの後半で言語モデルについて話す際に再度触れる予定です。 + +## 結論 + +このレッスンでは、単語の意味をよりよく反映するために、TensorFlowとPytorchで埋め込み層を構築および使用する方法を学びました。 + +## 🚀 チャレンジ + +Word2Vecは、歌詞や詩を生成するなどの興味深いアプリケーションに使用されています。著者がWord2Vecを使用して詩を生成する方法を紹介している[この記事](https://www.politetype.com/blog/word2vec-color-poems)を見てみてください。また、[Dan Shiffmannによるこの動画](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain)も見て、別の説明を発見してください。次に、これらの技術をKaggleなどから取得した自分のテキストコーパスに適用してみてください。 + +## [講義後のクイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## レビューと自己学習 + +Word2Vecに関するこの論文を読んでください:[ベクトル空間における単語表現の効率的推定](https://arxiv.org/pdf/1301.3781.pdf) + +## [課題:ノートブック](assignment.md) + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確性を追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることにご留意ください。元の文書はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用から生じる誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/14-Embeddings/assignment.md b/translations/ja/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..4efa8048 --- /dev/null +++ b/translations/ja/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# 課題: ノートブック + +このレッスンに関連するノートブック(PyTorch版またはTensorFlow版)を使用して、自分のデータセット(例えば、Kaggleからのもの)を使って再実行してください。使用する際は、出典を明記してください。ノートブックを改訂し、自分の発見を強調してください。異なる種類のデータセットを試して、その結果を文書化し、[これらのビートルズの歌詞](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics)のようなテキストを使用してください。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確さを追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることをご理解ください。元の文書はその母国語で権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用から生じる誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/15-LanguageModeling/README.md b/translations/ja/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..d6c48cb8 --- /dev/null +++ b/translations/ja/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# 言語モデリング + +Word2VecやGloVeのような意味的埋め込みは、実際には**言語モデリング**への第一歩であり、言語の性質を*理解*(または*表現*)するモデルを作成することです。 + +## [講義前クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +言語モデリングの基本的なアイデアは、ラベルのないデータセットで無監督の方法でそれらを訓練することです。これは重要です。なぜなら、ラベルのない膨大な量のテキストが利用可能であるのに対し、ラベル付きテキストの量は常にラベリングに費やせる努力の量によって制限されるからです。最も一般的には、テキスト内の**欠落した単語を予測する**ことができる言語モデルを構築できます。なぜなら、テキスト内のランダムな単語をマスクして、それを訓練サンプルとして使用するのは簡単だからです。 + +## 埋め込みの訓練 + +前の例では、事前に訓練された意味的埋め込みを使用しましたが、これらの埋め込みがどのように訓練されるかを見るのは興味深いです。いくつかの可能なアイデアがあります: + +* **Nグラム**言語モデリング:N個の前のトークンを見てトークンを予測します(N-gram) +* **連続袋-of-単語**(CBoW):トークンシーケンス$W_{-N}$、...、$W_N$の中で中央のトークン$W_0$を予測します。 +* **スキップグラム**:中央のトークン$W_0$から隣接するトークンのセット{$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$}を予測します。 + +![単語をベクトルに変換するアルゴリズムの例](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ja.png) + +> [この論文](https://arxiv.org/pdf/1301.3781.pdf)からの画像 + +## ✍️ 例のノートブック:CBoWモデルの訓練 + +以下のノートブックで学習を続けてください: + +* [TensorFlowを使ったCBoW Word2Vecの訓練](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [PyTorchを使ったCBoW Word2Vecの訓練](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## 結論 + +前のレッスンでは、単語埋め込みがまるで魔法のように機能することを見ました!これで、単語埋め込みの訓練はそれほど複雑なタスクではないことがわかり、必要に応じてドメイン特有のテキストのために自分自身の単語埋め込みを訓練できるはずです。 + +## [講義後クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## 復習 & 自習 + +* [言語モデリングに関する公式PyTorchチュートリアル](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)。 +* [Word2Vecモデルの訓練に関する公式TensorFlowチュートリアル](https://www.TensorFlow.org/tutorials/text/word2vec)。 +* **gensim**フレームワークを使用して、数行のコードで最も一般的に使用される埋め込みを訓練する方法は、[このドキュメント](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)で説明されています。 + +## 🚀 [課題:スキップグラムモデルの訓練](lab/README.md) + +ラボでは、このレッスンのコードを変更してCBoWの代わりにスキップグラムモデルを訓練することに挑戦します。[詳細を読む](lab/README.md) + +**免責事項**: +この文書は、機械翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることにご留意ください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用から生じる誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/ja/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..de8ec490 --- /dev/null +++ b/translations/ja/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Skip-Gramモデルのトレーニング + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)からのラボ課題です。 + +## 課題 + +このラボでは、Skip-Gram技術を使用してWord2Vecモデルをトレーニングすることに挑戦します。$N$トークン幅のSkip-Gramウィンドウ内で隣接する単語を予測するための埋め込みを持つネットワークをトレーニングします。このレッスンの[コード](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb)を使用し、少し修正しても構いません。 + +## データセット + +任意の本を使用しても構いません。例えば、[Project Gutenberg](https://www.gutenberg.org/)では多くの無料テキストが見つかります。ここでは、ルイス・キャロルによる[Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)への直接リンクを示します。また、以下のコードを使用してシェイクスピアの戯曲を取得することもできます。 + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## 探索しよう! + +時間があれば、さらに深く掘り下げてみてください。いくつかのことを探索してみましょう: + +* 埋め込みサイズは結果にどのように影響しますか? +* 異なるテキストスタイルは結果にどのように影響しますか? +* 非常に異なるタイプの単語とその同義語をいくつか取り上げ、それらのベクトル表現を取得し、PCAを適用して次元を2に減らし、2D空間にプロットしてみてください。パターンが見えますか? + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用によって生じた誤解や誤解釈については、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/16-RNN/README.md b/translations/ja/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..52a91e32 --- /dev/null +++ b/translations/ja/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,87 @@ +# 再帰型ニューラルネットワーク + +## [講義前クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +前のセクションでは、テキストの豊かな意味表現を使用し、その上にシンプルな線形分類器を置いてきました。このアーキテクチャの目的は、文中の単語の集約された意味を捉えることですが、単語の**順序**を考慮していません。なぜなら、埋め込みの上での集約操作が元のテキストからこの情報を取り除いてしまったからです。これらのモデルは単語の順序をモデル化できないため、テキスト生成や質問応答のような、より複雑または曖昧なタスクを解決できません。 + +テキストシーケンスの意味を捉えるためには、**再帰型ニューラルネットワーク**(RNN)という別のニューラルネットワークアーキテクチャを使用する必要があります。RNNでは、文を1つのシンボルずつネットワークに通し、ネットワークは何らかの**状態**を生成し、その後次のシンボルと共に再びネットワークに渡します。 + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ja.png) + +> 著者による画像 + +入力トークンのシーケンス X0,...,Xn に対して、RNNはニューラルネットワークブロックのシーケンスを作成し、このシーケンスをバックプロパゲーションを使用してエンドツーエンドでトレーニングします。各ネットワークブロックはペア (Xi,Si) を入力として受け取り、結果として Si+1 を生成します。最終的な状態 Sn または(出力 Yn)は、結果を生成するために線形分類器に入ります。すべてのネットワークブロックは同じ重みを共有し、1回のバックプロパゲーションパスを使用してエンドツーエンドでトレーニングされます。 + +状態ベクトル S0,...,Sn がネットワークを通過するため、単語間の順次依存関係を学習することができます。たとえば、シーケンスのどこかに単語 *not* が現れると、状態ベクトル内の特定の要素を否定することを学習できます。これにより否定が生じます。 + +> ✅ 上の画像のすべての RNN ブロックの重みが共有されているため、同じ画像は再帰的なフィードバックループを持つ1つのブロック(右側)として表現できます。このループは、ネットワークの出力状態を入力に戻します。 + +## RNNセルの構造 + +シンプルな RNN セルがどのように構成されているか見てみましょう。これは前の状態 Si-1 と現在のシンボル Xi を入力として受け取り、出力状態 Si を生成する必要があります(場合によっては、生成ネットワークの場合のように他の出力 Yi も興味があります)。 + +シンプルな RNN セルには2つの重み行列が内部にあります:1つは入力シンボルを変換し(これを W と呼びます)、もう1つは入力状態を変換します(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 の主な問題の1つは、いわゆる **消失勾配** 問題です。RNN は1回のバックプロパゲーションパスでエンドツーエンドでトレーニングされるため、ネットワークの最初の層にエラーを伝播するのが難しく、したがってネットワークは遠くのトークン間の関係を学習できません。この問題を回避する方法の1つは、いわゆる **ゲート** を使用して **明示的な状態管理** を導入することです。この種のよく知られたアーキテクチャには、**長短期記憶**(LSTM)と **ゲーテッドリレー単位**(GRU)があります。 + +![長短期記憶セルの例を示す画像](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> 画像の出典 TBD + +LSTM ネットワークは RNN と似た構造で組織されていますが、層から層へと渡される2つの状態があります:実際の状態 C と隠れベクトル H です。各ユニットでは、隠れベクトル Hi が入力 Xi と連結され、これらが **ゲート** を介して状態 C に何が起こるかを制御します。各ゲートはシグモイド活性化を持つニューラルネットワーク(出力範囲 [0,1])であり、状態ベクトルと掛け算することでビットマスクのように考えることができます。上の画像の左から右にかけて次のゲートがあります: + +* **忘却ゲート** は隠れベクトルを受け取り、ベクトル C のどの要素を忘れ、どの要素を通過させる必要があるかを決定します。 +* **入力ゲート** は入力と隠れベクトルからの情報を受け取り、状態に挿入します。 +* **出力ゲート** は状態を *tanh* 活性化を持つ線形層を介して変換し、その後隠れベクトル Hi を使用していくつかの要素を選択し、新しい状態 Ci+1 を生成します。 + +状態 C の要素は、オンオフできるフラグのように考えることができます。たとえば、シーケンスの中で名前 *Alice* に遭遇した場合、これは女性キャラクターを指していると仮定し、文中に女性名詞があることを示すフラグを立てたいかもしれません。その後、*and Tom* というフレーズに遭遇すると、複数名詞があることを示すフラグを立てます。このように状態を操作することで、文の部分の文法的特性を追跡できると考えられます。 + +> ✅ LSTM の内部を理解するための優れたリソースは、Christopher Olah によるこの素晴らしい記事 [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) です。 + +## 双方向および多層 RNN + +私たちは、シーケンスの始まりから終わりまでの1方向に操作する再帰型ネットワークについて議論しました。これは自然に見えます。なぜなら、私たちが読む方法や音声を聞く方法に似ているからです。しかし、多くの実用的なケースでは入力シーケンスにランダムにアクセスできるため、再帰計算を両方向で行うことが理にかなう場合があります。このようなネットワークは **双方向** RNN と呼ばれます。双方向ネットワークを扱う場合、各方向に対して2つの隠れ状態ベクトルが必要になります。 + +再帰型ネットワークは、単方向でも双方向でも、シーケンス内の特定のパターンを捉え、それらを状態ベクトルに保存したり、出力に渡したりします。畳み込みネットワークと同様に、最初の層から抽出された低レベルのパターンから高レベルのパターンを捉えるために、別の再帰層をその上に構築することができます。これにより、出力が次の層に入力として渡される2つ以上の再帰ネットワークから構成される **多層 RNN** の概念に至ります。 + +![多層長短期記憶 RNN の画像](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ja.jpg) + +*画像は [この素晴らしい投稿](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) に由来しています。* + +## ✍️ 演習:埋め込み + +次のノートブックで学習を続けてください: + +* [PyTorchによるRNN](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [TensorFlowによるRNN](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## 結論 + +このユニットでは、RNN がシーケンス分類に使用できることを見てきましたが、実際にはテキスト生成、機械翻訳など、さらに多くのタスクを処理できます。次のユニットでは、これらのタスクについて考察します。 + +## 🚀 チャレンジ + +LSTM に関する文献を読み、その応用を考えてみてください: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption +Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [講義後クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## 復習と自己学習 + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) by Christopher Olah. + +## [課題:ノートブック](assignment.md) + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用から生じる誤解や誤解釈については、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/16-RNN/assignment.md b/translations/ja/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..8b974124 --- /dev/null +++ b/translations/ja/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# 課題: ノートブック + +このレッスンに関連するノートブック(PyTorch版またはTensorFlow版)を使用して、自分のデータセット(例えば、Kaggleからのもの)を使って再実行してください。使用する際は、出典を明記してください。ノートブックを書き直して、自分の発見を強調してください。異なる種類のデータセットを試し、発見を文書化してください。例えば、[このKaggleコンペティションの天気ツイートに関するデータセット](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv)のようなテキストを使用してください。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用から生じる誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/ja/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..a368ffc1 --- /dev/null +++ b/translations/ja/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# 生成ネットワーク + +## [講義前のクイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +再帰神経ネットワーク(RNN)や、長短期記憶セル(LSTM)やゲート付き再帰ユニット(GRU)などのゲート付きセルのバリエーションは、言語モデリングのメカニズムを提供します。これにより、単語の順序を学習し、シーケンス内の次の単語の予測を行うことができます。これにより、RNNを使って、通常のテキスト生成、機械翻訳、さらには画像キャプション生成などの**生成タスク**に利用できるようになります。 + +> ✅ タイピング中にテキスト補完などの生成タスクから利益を得たことを思い出してみてください。お気に入りのアプリケーションがRNNを活用しているかどうか調査してみましょう。 + +前のユニットで議論したRNNアーキテクチャでは、各RNNユニットは次の隠れ状態を出力として生成しました。しかし、各再帰ユニットにもう一つの出力を追加することもでき、これにより**シーケンス**(元のシーケンスと同じ長さ)を出力できるようになります。さらに、各ステップで入力を受け取らず、初期状態ベクトルを受け取ってから出力のシーケンスを生成するRNNユニットを使用することもできます。 + +これにより、以下の図に示すような異なる神経アーキテクチャが可能になります。 + +![一般的な再帰神経ネットワークパターンを示す画像。](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ja.jpg) + +> 画像は[Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/)のブログ投稿からのもので、[Andrej Karpaty](http://karpathy.github.io/)によるものです。 + +* **一対一**は、入力が1つと出力が1つの従来の神経ネットワークです。 +* **一対多**は、1つの入力値を受け取り、出力値のシーケンスを生成する生成アーキテクチャです。たとえば、画像のテキスト説明を生成する**画像キャプション生成**ネットワークを訓練したい場合、画像を入力としてCNNを通して隠れ状態を取得し、再帰的なチェーンでキャプションを単語ごとに生成することができます。 +* **多対一**は、前のユニットで説明したRNNアーキテクチャに対応し、テキスト分類などがあります。 +* **多対多**、または**シーケンス対シーケンス**は、**機械翻訳**のようなタスクに対応し、最初のRNNが入力シーケンスから隠れ状態にすべての情報を集め、別のRNNチェーンがこの状態を出力シーケンスに展開します。 + +このユニットでは、テキスト生成を助けるシンプルな生成モデルに焦点を当てます。簡単のために、文字レベルのトークン化を使用します。 + +このRNNを段階的にテキスト生成するために訓練します。各ステップでは、長さ`nchars`の文字のシーケンスを取得し、ネットワークに対して各入力文字に対する次の出力文字を生成するように求めます: + +![「HELLO」という単語のRNN生成の例を示す画像。](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ja.png) + +テキストを生成する際(推論中)、いくつかの**プロンプト**から始め、それをRNNセルを通して中間状態を生成し、その状態から生成が始まります。1文字ずつ生成し、状態と生成された文字を別の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*という単語のように)でも同様に可能です。 + +これは、常に高い確率の文字を選択することが「公平」ではないという結論につながります。なぜなら、2番目に高い確率の文字を選んでも意味のあるテキストに到達する可能性があるからです。ネットワークの出力によって与えられる確率分布から文字を**サンプリング**する方が賢明です。また、確率分布を平坦にする**温度**というパラメータを使用して、より多くのランダム性を追加したり、最も高い確率の文字により固執するために急峻にしたりすることができます。 + +このソフトテキスト生成が上記のノートブックでどのように実装されているかを探ってみてください。 + +## 結論 + +テキスト生成はそれ自体に有用かもしれませんが、主な利点は、初期の特徴ベクトルから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) + +文字単位でテキストを生成する方法を見てきました。ラボでは、単語単位のテキスト生成を探求します。 + +**免責事項**: +この文書は、機械翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用に起因する誤解や誤訳について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/ja/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..f37a7c6e --- /dev/null +++ b/translations/ja/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# RNNを用いた単語レベルのテキスト生成 + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)からのラボ課題です。 + +## 課題 + +このラボでは、任意の本を取り、それをデータセットとして使用して単語レベルのテキストジェネレーターを訓練する必要があります。 + +## データセット + +任意の本を使用しても構いません。例えば、[Project Gutenberg](https://www.gutenberg.org/)には多くの無料テキストがあります。ここでは、ルイス・キャロルによる[Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)への直接リンクを示します。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることにご注意ください。原文のネイティブ言語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/ja/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..30de0746 --- /dev/null +++ b/translations/ja/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# 注意機構とトランスフォーマー + +## [講義前のクイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +NLP分野で最も重要な問題の一つは、**機械翻訳**であり、これはGoogle翻訳などのツールの基盤となる重要なタスクです。このセクションでは、機械翻訳、またはより一般的には*シーケンスからシーケンス*のタスク(これは**文の変換**とも呼ばれます)に焦点を当てます。 + +RNNを使用したシーケンスからシーケンスの実装は、二つの再帰的ネットワークによって行われます。一方のネットワーク、すなわち**エンコーダ**は、入力シーケンスを隠れ状態に圧縮し、もう一方のネットワーク、すなわち**デコーダ**は、この隠れ状態を翻訳結果に展開します。このアプローチにはいくつかの問題があります: + +* エンコーダネットワークの最終状態は文の最初を記憶するのが難しく、長い文に対してモデルの質が低下します。 +* シーケンス内のすべての単語が結果に同じ影響を与えます。しかし、実際には入力シーケンス内の特定の単語が他の単語よりも順次出力に対してより大きな影響を持つことがよくあります。 + +**注意機構**は、RNNの各出力予測に対する各入力ベクトルの文脈的影響を重み付けする手段を提供します。これは、入力RNNの中間状態と出力RNNの間にショートカットを作成することによって実装されます。この方法では、出力シンボルytを生成する際に、異なる重み係数αt,iを持つすべての入力隠れ状態hiを考慮します。 + +![加法注意層を持つエンコーダ/デコーダモデルの画像](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ja.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.ja.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf)からの図(Fig.3) + +注意機構は、現在または近い将来のNLPにおける最先端技術の多くを担っています。しかし、注意を追加するとモデルのパラメータ数が大幅に増加し、RNNのスケーリング問題を引き起こしました。RNNをスケーリングする際の重要な制約は、モデルの再帰的性質がトレーニングのバッチ処理と並列化を難しくすることです。RNNでは、シーケンスの各要素は順次の順序で処理する必要があり、簡単には並列化できません。 + +![注意付きエンコーダデコーダ](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> [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. 次に、トークン位置をトークンエンベディングベクトルと混ぜます。位置(整数)をベクトルに変換するために、さまざまなアプローチを使用できます: + +* トークンエンベディングに類似した学習可能なエンベディング。これがここで考慮するアプローチです。トークンとその位置の両方にエンベディング層を適用し、同じ次元のエンベディングベクトルを得て、それらを加算します。 +* 元の論文で提案された固定位置エンコーディング関数。 + + + +> 著者による画像 + +位置エンベディングを使用すると、元のトークンとシーケンス内のその位置の両方が埋め込まれます。 + +### マルチヘッド自己注意 + +次に、シーケンス内のパターンをキャプチャする必要があります。これを行うために、トランスフォーマーは**自己注意**機構を使用します。これは基本的に、同じシーケンスに対して入力と出力に適用される注意です。自己注意を適用することで、文内の**コンテキスト**を考慮し、どの単語が相互関連しているかを確認できます。例えば、*it*のようなコリファレンスによって参照される単語を確認し、コンテキストも考慮に入れることができます: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ja.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)は、*BERT-base*用の12層、*BERT-large*用の24層を持つ非常に大きなマルチレイヤートランスフォーマーネットワークです。このモデルは、無監督トレーニング(文中のマスクされた単語を予測)を使用して、大規模なテキストデータコーパス(WikiPedia + 書籍)で事前トレーニングされます。事前トレーニング中に、モデルは言語理解の重要なレベルを吸収し、その後ファインチューニングを使用して他のデータセットと活用できます。このプロセスは**転移学習**と呼ばれます。 + +![http://jalammar.github.io/illustrated-bert/からの画像](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ja.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) + +## レビュー & 自習 + +* トランスフォーマーに関する古典的な[Attention is all you need](https://arxiv.org/abs/1706.03762)論文を説明する[ブログ投稿](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/)。 +* トランスフォーマーに関する一連のブログ投稿で、アーキテクチャの詳細を説明しています。[詳細はこちら](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452)。 + +## [課題](assignment.md) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。元の文書はその母国語で権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用によって生じる誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/18-Transformers/assignment.md b/translations/ja/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..011dbf2a --- /dev/null +++ b/translations/ja/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# 課題: トランスフォーマー + +HuggingFaceでトランスフォーマーを試してみましょう!彼らのサイトで利用可能なさまざまなモデルを使うために提供されているスクリプトのいくつかを試してみてください: https://huggingface.co/docs/transformers/run_scripts。彼らのデータセットの1つを試してみた後、このカリキュラムやKaggleから自分のデータセットをインポートして、興味深いテキストを生成できるか見てみましょう。結果をまとめたノートブックを作成してください。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確さを追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。原文はその母国語で権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用によって生じる誤解や誤解釈について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/19-NER/README.md b/translations/ja/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..969bc3b9 --- /dev/null +++ b/translations/ja/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,83 @@ +# 名前付きエンティティ認識 + +これまで、私たちは主に1つのNLPタスク、すなわち分類に集中してきました。しかし、ニューラルネットワークを使用して達成できる他のNLPタスクも存在します。その中の1つが**[名前付きエンティティ認識](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/)が挙げられます。私たちが探すべき主要なことの1つは、病気や医療物質などの特定の医療用語です。少数の病気は部分文字列検索を使用して抽出できるかもしれませんが、化学化合物や薬の名前などのより複雑なエンティティには、より複雑なアプローチが必要です。 + +## トークン分類としてのNER + +NERモデルは本質的に**トークン分類モデル**です。なぜなら、各入力トークンがエンティティに属するかどうかを判断する必要があり、属する場合はどのエンティティクラスに属するかを決定する必要があるからです。 + +次の論文のタイトルを考えてみましょう: + +**三尖弁逆流**と**炭酸リチウム**の**毒性**についての新生児。 + +ここでのエンティティは次の通りです: + +* 三尖弁逆流は病気です (`DIS`) +* 炭酸リチウムは化学物質です (`CHEM`) +* 毒性も病気です (`DIS`) + +1つのエンティティが複数のトークンにまたがることに注意してください。そして、この場合のように、2つの連続したエンティティを区別する必要があります。したがって、各エンティティに対して2つのクラスを使用するのが一般的です。1つはエンティティの最初のトークンを指定し(通常は`B-`プレフィックスが使用されます、つまり**b**eginning)、もう1つはエンティティの続きです(`I-`、つまり**i**nner token)。また、`O`をすべての**o**therトークンを表すクラスとして使用します。このようなトークンタグ付けは、[BIOタグ付け](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging))(またはIOB)と呼ばれます。タグ付けされると、私たちのタイトルは次のようになります: + +トークン | タグ +------|----- +三尖弁 | B-DIS +逆流 | I-DIS +と | O +炭酸 | B-CHEM +リチウム | I-CHEM +毒性 | B-DIS +について | O +の | O +新生児 | O +。 | O + +トークンとクラスの間に1対1の対応を構築する必要があるため、この図から右端の**多対多**ニューラルネットワークモデルをトレーニングすることができます: + +![一般的な再帰的ニューラルネットワークのパターンを示す画像。](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ja.jpg) + +> *この画像は[このブログ記事](http://karpathy.github.io/2015/05/21/rnn-effectiveness/)からのものです。[Andrej Karpathy](http://karpathy.github.io/)によるものです。NERトークン分類モデルは、この画像の右端のネットワークアーキテクチャに対応しています。* + +## NERモデルのトレーニング + +NERモデルは本質的にトークン分類モデルであるため、このタスクにはすでに知っているRNNを使用できます。この場合、再帰ネットワークの各ブロックはトークンIDを返します。以下の例のノートブックでは、トークン分類のためのLSTMをトレーニングする方法を示しています。 + +## ✍️ 例のノートブック:NER + +以下のノートブックで学習を続けてください: + +* [TensorFlowを使用したNER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## 結論 + +NERモデルは**トークン分類モデル**であり、トークン分類を実行するために使用できます。これは、場所、名前、日付など、テキスト内の特定のエンティティを認識するのに役立つ非常に一般的なタスクです。 + +## 🚀 チャレンジ + +以下のリンクされた課題を完了して、医療用語のための名前付きエンティティ認識モデルをトレーニングし、その後異なるデータセットで試してみてください。 + +## [講義後クイズ](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サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用に起因する誤解や誤訳について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/19-NER/lab/README.md b/translations/ja/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..d03857dc --- /dev/null +++ b/translations/ja/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)からのラボ課題。 + +## タスク + +このラボでは、医療用語のための名前付きエンティティ認識モデルをトレーニングする必要があります。 + +## データセット + +NERモデルをトレーニングするためには、医療エンティティが適切にラベル付けされたデータセットが必要です。[BC5CDRデータセット](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/)には、1500以上の論文からのラベル付きの病気や化学物質のエンティティが含まれています。ウェブサイトに登録した後にデータセットをダウンロードできます。 + +BC5CDRデータセットは次のようになります: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +このデータセットでは、最初の2行に論文のタイトルと要約があり、その後に個々のエンティティが続き、タイトル+要約ブロック内の開始位置と終了位置が示されています。エンティティのタイプに加えて、このエンティティが特定の医療オントロジー内で持つオントロジーIDも得られます。 + +このデータをBIOエンコーディングに変換するために、いくつかのPythonコードを書く必要があります。 + +## ネットワーク + +NERの最初の試みは、レッスン中に見た例のようにLSTMネットワークを使用して行うことができます。しかし、NLPタスクでは、[トランスフォーマーアーキテクチャ](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model))、特に[ BERT言語モデル](https://en.wikipedia.org/wiki/BERT_(language_model))がはるかに良い結果を示します。事前にトレーニングされたBERTモデルは、言語の一般的な構造を理解し、比較的小さなデータセットと計算コストで特定のタスクに微調整することができます。 + +私たちはNERを医療シナリオに適用する予定なので、医療テキストでトレーニングされたBERTモデルを使用するのが理にかなっています。マイクロソフトリサーチは、[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` itself, built for token classification task using `classes` number of classes, as well as `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サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/ja/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..d656d68c --- /dev/null +++ b/translations/ja/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,55 @@ +# 事前学習済み大規模言語モデル + +これまでのすべてのタスクでは、ラベル付きデータセットを使用して特定のタスクを実行するためにニューラルネットワークを訓練していました。BERTのような大規模トランスフォーマーモデルでは、自己教師あり方式で言語モデルを構築し、その後、特定のドメインに特化したトレーニングを行って特定の下流タスクに特化させます。しかし、大規模言語モデルは、ANYドメイン特化型のトレーニングなしで多くのタスクを解決できることが示されています。そのようなモデルのファミリーは**GPT**(Generative Pre-Trained Transformer)と呼ばれています。 + +## [講義前のクイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## テキスト生成とパープレキシティ + +ニューラルネットワークが下流のトレーニングなしで一般的なタスクを実行できるというアイデアは、[Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf)という論文で示されています。主なアイデアは、他の多くのタスクが**テキスト生成**を使用してモデル化できるということです。なぜなら、テキストを理解することは本質的にそれを生成できることを意味するからです。モデルは人間の知識を包含する膨大なテキストで訓練されているため、さまざまな主題に関する知識も得ることができます。 + +> テキストを理解し生成できることは、私たちの周りの世界について何かを知っていることも含意しています。人々も大きな程度で読むことによって学び、GPTネットワークはこの点で類似しています。 + +テキスト生成ネットワークは、次の単語の確率 $$P(w_N)$$ を予測することによって機能します。しかし、次の単語の無条件確率は、この単語がテキストコーパス内に存在する頻度に等しいです。GPTは、前の単語を考慮した上で次の単語の**条件付き確率**を提供することができます: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> 確率についてもっと知りたい場合は、私たちの[Data Science for Beginners Curriculum](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability)を読んでみてください。 + +言語生成モデルの質は**パープレキシティ**を使用して定義できます。これは、タスク特化型データセットなしでモデルの質を測定するための内在的な指標です。これは*文の確率*の概念に基づいており、モデルは実際に存在する可能性の高い文に高い確率を割り当て(つまり、モデルはそれに**困惑**しない)、あまり意味を成さない文には低い確率を割り当てます(例: *Can it does what?*)。実際のテキストコーパスからモデルに文を与えたとき、高い確率と低い**パープレキシティ**を持つことを期待します。数学的には、テストセットの正規化された逆確率として定義されます: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**[Hugging FaceのGPT駆動テキストエディタ](https://transformer.huggingface.co/doc/gpt2-large)を使用してテキスト生成を試してみてください**。このエディタでは、テキストの入力を開始し、**[TAB]**を押すといくつかの補完オプションが表示されます。オプションが短すぎる場合や満足できない場合は、再度[TAB]を押すと、より長いテキストを含む追加のオプションが得られます。 + +## GPTはファミリーです + +GPTは単一のモデルではなく、[OpenAI](https://openai.com)によって開発され、訓練されたモデルのコレクションです。 + +GPTモデルには以下があります: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| 最大15億パラメータを持つ言語モデル。 | 最大1750億パラメータを持つ言語モデル。 | 100Tパラメータを持ち、画像とテキストの両方の入力を受け付け、テキストを出力します。 | + +GPT-3およびGPT-4モデルは、[Microsoft Azureの認知サービス](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste)として、また[OpenAI API](https://openai.com/api/)として利用可能です。 + +## プロンプトエンジニアリング + +GPTは膨大なデータ量で言語とコードを理解するように訓練されているため、入力(プロンプト)に対して出力を提供します。プロンプトは、モデルに対して次に完了するタスクに関する指示を提供するGPTの入力またはクエリです。望ましい結果を引き出すためには、適切な言葉、形式、フレーズ、さらには記号を選択することが含まれる最も効果的なプロンプトが必要です。このアプローチは[プロンプトエンジニアリング](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum)と呼ばれています。 + +[このドキュメント](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum)では、プロンプトエンジニアリングに関する詳細情報を提供しています。 + +## ✍️ 例ノートブック: [OpenAI-GPTで遊ぶ](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +次のノートブックで学習を続けてください: + +* [OpenAI-GPTとHugging Face Transformersを使用したテキスト生成](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## 結論 + +新しい一般的な事前学習済み言語モデルは、言語構造をモデル化するだけでなく、大量の自然言語も含んでいます。したがって、これらはゼロショットまたは少数ショットの設定でいくつかのNLPタスクを効果的に解決するために使用できます。 + +## [講義後のクイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご注意ください。原文はその言語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/5-NLP/README.md b/translations/ja/lessons/5-NLP/README.md new file mode 100644 index 00000000..ef260595 --- /dev/null +++ b/translations/ja/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# 自然言語処理 + +![NLPタスクの要約](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ja.png) + +このセクションでは、**自然言語処理 (NLP)** に関連するタスクを扱うためにニューラルネットワークを使用することに焦点を当てます。コンピュータに解決してもらいたいNLPの問題はたくさんあります: + +* **テキスト分類**は、テキストシーケンスに関する典型的な分類問題です。例えば、メールメッセージをスパムか非スパムに分類したり、記事をスポーツ、ビジネス、政治などに分類したりします。また、チャットボットを開発する際には、ユーザーが言いたかったことを理解する必要があることが多く、この場合は**意図分類**を扱っています。意図分類では、多くのカテゴリを扱う必要があることがよくあります。 +* **感情分析**は、典型的な回帰問題であり、文の意味がどれだけポジティブ/ネガティブであるかに対応する数値(感情)を割り当てる必要があります。感情分析のより高度なバージョンは、**アスペクトベースの感情分析** (ABSA) であり、文全体ではなくその一部(アスペクト)に感情を割り当てます。例えば、*このレストランでは、料理が気に入りましたが、雰囲気はひどかったです*のように。 +* **固有表現認識** (NER) は、テキストから特定のエンティティを抽出する問題を指します。例えば、*明日パリに飛ばなければならない*というフレーズの中で、*明日*がDATEを指し、*パリ*がLOCATIONであることを理解する必要があります。 +* **キーワード抽出**はNERに似ていますが、特定のエンティティタイプのために事前学習することなく、文の意味に重要な単語を自動的に抽出する必要があります。 +* **テキストクラスタリング**は、似たような文をグループ化したいときに役立ちます。例えば、技術サポートの会話における似たリクエストをまとめることができます。 +* **質問応答**は、モデルが特定の質問に答える能力を指します。モデルはテキストのパッセージと質問を入力として受け取り、質問の答えが含まれているテキストの場所を提供する必要があります(あるいは、時には答えのテキストを生成することもあります)。 +* **テキスト生成**は、モデルが新しいテキストを生成する能力です。これは、ある*テキストプロンプト*に基づいて次の文字や単語を予測する分類タスクと考えられます。GPT-3のような高度なテキスト生成モデルは、[プロンプトプログラミング](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0)や[プロンプトエンジニアリング](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29)と呼ばれる技術を使用して、分類などの他のNLPタスクを解決することができます。 +* **テキスト要約**は、コンピュータに長いテキストを「読む」ことを要求し、それを数文で要約する技術です。 +* **機械翻訳**は、一つの言語でのテキスト理解と、別の言語でのテキスト生成の組み合わせと見なすことができます。 + +当初、ほとんどのNLPタスクは文法のような従来の手法を使用して解決されていました。例えば、機械翻訳では、パーサーを使用して初期の文を構文木に変換し、その後、文の意味を表現するために高次の意味構造を抽出し、この意味とターゲット言語の文法に基づいて結果が生成されました。最近では、多くのNLPタスクがニューラルネットワークを使用してより効果的に解決されています。 + +> 多くの古典的なNLP手法は、[自然言語処理ツールキット (NLTK)](https://www.nltk.org) Pythonライブラリに実装されています。異なるNLPタスクをNLTKを使用して解決する方法をカバーした素晴らしい[NLTK Book](https://www.nltk.org/book/)がオンラインで利用可能です。 + +私たちのコースでは、主にNLPのためにニューラルネットワークを使用することに焦点を当て、必要に応じてNLTKを使用します。 + +私たちはすでに、タブularデータや画像を扱うためのニューラルネットワークの使用について学びました。これらのデータタイプとテキストの主な違いは、テキストが可変長のシーケンスであるのに対し、画像の場合は入力サイズが事前に知られていることです。畳み込みネットワークは入力データからパターンを抽出できますが、テキストのパターンはより複雑です。例えば、否定が主語から分離されることが多くの単語にとって任意である場合(例:*私はオレンジが好きではありません* vs. *私はあの大きくてカラフルで美味しいオレンジが好きではありません*)でも、これは依然として一つのパターンとして解釈されるべきです。したがって、言語を扱うためには、*再帰ネットワーク*や*トランスフォーマー*などの新しいニューラルネットワークのタイプを導入する必要があります。 + +## ライブラリのインストール + +このコースを実行するためにローカルのPythonインストールを使用している場合は、次のコマンドを使用してNLPに必要なすべてのライブラリをインストールする必要があります: + +**PyTorchの場合** +```bash +pip install -r requirements-torch.txt +``` +**TensorFlowの場合** +```bash +pip install -r requirements-tf.txt +``` + +> TensorFlowを使ってNLPを試してみたい方は、[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste)をご覧ください。 + +## GPUの警告 + +このセクションでは、いくつかの例でかなり大きなモデルをトレーニングします。 +* **GPU対応コンピュータの使用**: 大きなモデルで作業する際の待機時間を短縮するために、GPU対応コンピュータでノートブックを実行することをお勧めします。 +* **GPUメモリの制約**: GPUで実行すると、特に大きなモデルをトレーニングする際に、GPUメモリが不足する状況が発生する可能性があります。 +* **GPUメモリの消費**: トレーニング中に消費されるGPUメモリの量は、ミニバッチサイズを含むさまざまな要因によって異なります。 +* **ミニバッチサイズの最小化**: GPUメモリの問題が発生した場合は、コード内のミニバッチサイズを減少させることを検討してください。 +* **TensorFlowのGPUメモリ解放**: 古いバージョンのTensorFlowは、1つのPythonカーネル内で複数のモデルをトレーニングする際にGPUメモリを正しく解放しない場合があります。GPUメモリの使用を効果的に管理するために、必要に応じてGPUメモリを割り当てるようにTensorFlowを設定できます。 +* **コードの追加**: TensorFlowが必要なときにのみGPUメモリの割り当てを増やすように設定するには、ノートブックに次のコードを含めてください: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +古典的なMLの観点からNLPを学ぶことに興味がある場合は、[このレッスンのスイート](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP)を訪れてください。 + +## このセクションでは +このセクションでは、以下について学びます: + +* [テキストをテンソルとして表現する](13-TextRep/README.md) +* [単語埋め込み](14-Emdeddings/README.md) +* [言語モデル](15-LanguageModeling/README.md) +* [再帰型ニューラルネットワーク](16-RNN/README.md) +* [生成ネットワーク](17-GenerativeNetworks/README.md) +* [トランスフォーマー](18-Transformers/README.md) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確さを追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。原文のネイティブ言語の文書を権威ある情報源と見なすべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用に起因する誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/ja/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..ca589e88 --- /dev/null +++ b/translations/ja/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# 遺伝的アルゴリズム + +## [講義前クイズ](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クイーン問題 + +## 結論 + +遺伝的アルゴリズムは、物流や探索問題など多くの問題を解決するために使用されます。この分野は、心理学とコンピュータサイエンスのトピックを融合させた研究からインスパイアを受けています。 + +## 🚀 チャレンジ + +「遺伝的アルゴリズムは実装が簡単ですが、その挙動は理解するのが難しい。」[source](https://wikipedia.org/wiki/Genetic_algorithm) Sudokuパズルを解くような遺伝的アルゴリズムの実装を見つけるために調査し、どのように機能するかをスケッチまたはフローチャートで説明してください。 + +## [講義後クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## レビュー & 自習 + +[この素晴らしいビデオ](https://www.youtube.com/watch?v=qv6UVOQ0F44)を見て、コンピュータが遺伝的アルゴリズムによって訓練されたニューラルネットワークを使用してスーパーマリオをプレイする方法について学びましょう。このようなゲームをプレイするコンピュータ学習については、[次のセクション](../22-DeepRL/README.md)でさらに学びます。 + +## [課題:ディオファントス方程式](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +あなたの目標は、いわゆる**ディオファントス方程式** - 整数解を持つ方程式を解くことです。例えば、方程式 a+2b+3c+4d=30 を考えてみてください。この方程式を満たす整数解を見つける必要があります。 + +*この課題は[この投稿](https://habr.com/post/128704/)にインスパイアされています。* + +ヒント: + +1. 解は区間 [0;30] にあると考えることができます +1. 遺伝子として、解の値のリストを考慮することができます + +[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb)を出発点として使用してください。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があります。元の文書はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳をお勧めします。この翻訳の使用から生じる誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/6-Other/22-DeepRL/README.md b/translations/ja/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..4628ae35 --- /dev/null +++ b/translations/ja/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# ディープ強化学習 + +強化学習 (RL) は、教師あり学習や教師なし学習と並ぶ基本的な機械学習のパラダイムの一つと見なされています。教師あり学習では、結果が既知のデータセットに依存しますが、RLは**実践による学習**に基づいています。例えば、コンピュータゲームを初めて見たとき、ルールを知らなくてもプレイを始め、すぐにプレイしながら行動を調整することでスキルを向上させることができます。 + +## [事前講義クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +RLを実行するには、以下が必要です: + +* ゲームのルールを設定する**環境**または**シミュレーター**。シミュレーターで実験を行い、その結果を観察できる必要があります。 +* 実験がどれだけ成功したかを示す**報酬関数**。コンピュータゲームをプレイする場合、報酬は最終スコアになります。 + +報酬関数に基づいて、行動を調整しスキルを向上させることができ、次回はより良いプレイができるようになります。他のタイプの機械学習とRLの主な違いは、RLではゲームが終了するまで勝ったか負けたかを通常知ることができない点です。したがって、特定の動きが良いかどうかを単独で判断することはできず、ゲームの最後にのみ報酬を受け取ります。 + +RLの間、通常は多くの実験を行います。各実験では、これまで学習した最適な戦略に従うこと(**利用**)と、新しい可能な状態を探索すること(**探索**)のバランスを取る必要があります。 + +## OpenAI Gym + +RLにとって素晴らしいツールは、[OpenAI Gym](https://gym.openai.com/)です。これは、アタリゲームからポールバランシングの物理学まで、さまざまな環境をシミュレートできる**シミュレーション環境**です。強化学習アルゴリズムのトレーニングに最も人気のあるシミュレーション環境の一つであり、[OpenAI](https://openai.com/)によって維持されています。 + +> **注意**: OpenAI Gymで利用可能なすべての環境は[こちら](https://gym.openai.com/envs/#classic_control)で確認できます。 + +## カートポールバランシング + +現代のバランスデバイス、例えば*セグウェイ*や*ジャイロスクーター*を見たことがあるでしょう。これらは、加速度センサーやジャイロスコープからの信号に応じて車輪を調整することで自動的にバランスを取ることができます。このセクションでは、ポールをバランスさせるという似たような問題を解決する方法を学びます。これは、サーカスのパフォーマーが手の上でポールをバランスさせる状況に似ていますが、このポールバランシングは1次元でのみ行われます。 + +バランシングの簡略化されたバージョンは**カートポール**問題として知られています。カートポールの世界では、左右に動くことができる水平スライダーがあり、目標はスライダーの上に垂直のポールをバランスさせることです。 + +カートポール + +この環境を作成して使用するには、いくつかの行の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` starts a new experiment +* `env.step`はシミュレーションステップを実行します。これは**アクション**を**アクションスペース**から受け取り、**観測**(観測スペースから)を返し、報酬と終了フラグも返します。 + +上記の例では、各ステップでランダムなアクションを実行しているため、実験の寿命は非常に短くなっています: + +![バランスしていないカートポール](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +RLアルゴリズムの目標は、特定の状態に応じてアクションを返すモデル、いわゆる**ポリシー**πを訓練することです。また、ポリシーを確率的に考えることもできます。例えば、任意の状態*s*とアクション*a*に対して、状態*s*で*a*を取る確率π(*a*|*s*)を返すとします。 + +## ポリシー勾配アルゴリズム + +ポリシーをモデル化する最も明白な方法は、状態を入力として受け取り、対応するアクション(またはすべてのアクションの確率)を返すニューラルネットワークを作成することです。ある意味で、これは通常の分類タスクに似ていますが、主な違いは、各ステップでどのアクションを取るべきかを事前に知ることができない点です。 + +ここでのアイデアは、これらの確率を推定することです。実験の各ステップでの総報酬を示す**累積報酬**のベクトルを構築します。また、早期の報酬の役割を減少させるために、早期の報酬に係数γ=0.99を掛けて**報酬の割引**を適用します。その後、より大きな報酬をもたらす実験経路に沿ったステップを強化します。 + +> ポリシー勾配アルゴリズムについて詳しく学び、[例のノートブック](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb)でその動作を確認してください。 + +## アクター-クリティックアルゴリズム + +ポリシー勾配アプローチの改善版は**アクター-クリティック**と呼ばれています。その主なアイデアは、ニューラルネットワークが2つのことを返すように訓練されることです: + +* どのアクションを取るかを決定するポリシー。この部分は**アクター**と呼ばれます。 +* この状態で期待できる総報酬の推定。この部分は**クリティック**と呼ばれます。 + +ある意味で、このアーキテクチャは[GAN](../../4-ComputerVision/10-GANs/README.md)に似ており、互いに対抗して訓練される2つのネットワークがあります。アクター-クリティックモデルでは、アクターが取るべきアクションを提案し、クリティックが結果を批判的に評価しようとします。しかし、私たちの目標は、これらのネットワークを協調して訓練することです。 + +実験中に実際の累積報酬とクリティックが返す結果の両方を知っているため、これらの違いを最小化する損失関数を構築することは比較的簡単です。これにより、**クリティック損失**が得られます。**アクター損失**は、ポリシー勾配アルゴリズムと同じアプローチを使用して計算できます。 + +これらのアルゴリズムのいずれかを実行した後、私たちのカートポールがこのように振る舞うことを期待できます: + +![バランスの取れたカートポール](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ 演習: ポリシー勾配とアクター-クリティックRL + +次のノートブックで学習を続けてください: + +* [TensorFlowにおけるRL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [PyTorchにおけるRL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## その他のRLタスク + +現在、強化学習は急成長している研究分野です。強化学習のいくつかの興味深い例は以下の通りです: + +* コンピュータに**アタリゲーム**をプレイさせること。この問題の難しい点は、単純な状態をベクトルとして表すのではなく、スクリーンショットとして表す必要があることです。CNNを使用してこの画面画像を特徴ベクトルに変換したり、報酬情報を抽出する必要があります。アタリゲームはGymで利用可能です。 +* コンピュータにチェスや囲碁などのボードゲームをプレイさせること。最近、**Alpha Zero**のような最先端のプログラムは、互いに対戦する2つのエージェントによってゼロから訓練され、各ステップで改善されました。 +* 業界では、RLはシミュレーションから制御システムを作成するために使用されています。[Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste)というサービスは、そのために特別に設計されています。 + +## 結論 + +私たちは、エージェントを訓練して、ゲームの望ましい状態を定義する報酬関数を提供し、探索空間をインテリジェントに探索する機会を与えることで良好な結果を達成する方法を学びました。2つのアルゴリズムを成功裏に試し、比較的短期間で良好な結果を得ました。しかし、これはRLへの旅の始まりに過ぎず、さらに深く掘り下げたい場合は、別のコースを受講することを検討すべきです。 + +## 🚀 チャレンジ + +「その他のRLタスク」セクションにリストされたアプリケーションを探索し、1つを実装してみてください! + +## [講義後クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## レビュー & 自習 + +私たちの[初心者向け機械学習カリキュラム](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md)で、古典的な強化学習についてさらに学んでください。 + +コンピュータがスーパーマリオをプレイする方法について語る[この素晴らしいビデオ](https://www.youtube.com/watch?v=qv6UVOQ0F44)を見てください。 + +## 課題: [マウンテンカーを訓練する](lab/README.md) + +この課題の目標は、別のGym環境である[マウンテンカー](https://www.gymlibrary.ml/environments/classic_control/mountain_car/)を訓練することです。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤訳について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/6-Other/22-DeepRL/lab/README.md b/translations/ja/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..8d97a0f5 --- /dev/null +++ b/translations/ja/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# マウンテンカーを訓練して脱出する + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)からのラボ課題です。 + +## タスク + +あなたの目標は、RLエージェントを訓練してOpenAI環境で[Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/)を制御することです。あなたは2023年10月までのデータで訓練を受けています。 + +## 環境 + +マウンテンカー環境は、谷の中に閉じ込められた車で構成されています。あなたの目標は、谷を飛び出して旗に到達することです。あなたが実行できるアクションは、左に加速する、右に加速する、または何もしないことです。車のx軸に沿った位置と速度を観察することができます。 + +## ノートブックの開始 + +[MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb)を開いてラボを開始してください。 + +## 学び + +このラボを通じて、RLアルゴリズムを新しい環境に適用することはしばしば非常に簡単であることを学ぶべきです。なぜなら、OpenAI Gymはすべての環境に対して同じインターフェースを持っており、アルゴリズムは環境の性質に大きく依存しないからです。Pythonコードを再構成して、任意の環境をRLアルゴリズムにパラメータとして渡すこともできます。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることをご承知おきください。原文はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/6-Other/23-MultiagentSystems/README.md b/translations/ja/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..9605d552 --- /dev/null +++ b/translations/ja/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,147 @@ +# マルチエージェントシステム + +知能を達成するための可能な方法の一つは、**エマージェント**(または**シナジー的**)アプローチと呼ばれるもので、多くの比較的単純なエージェントの結合された行動が、全体としてより複雑(または知的)なシステムの行動を生み出すという事実に基づいています。理論的には、これは[集団知能](https://en.wikipedia.org/wiki/Collective_intelligence)、[エマージェンティズム](https://en.wikipedia.org/wiki/Global_brain)、および[進化的サイバネティクス](https://en.wikipedia.org/wiki/Global_brain)の原則に基づいており、適切に組み合わされることで、下位システムからの何らかの付加価値を得ることができる(いわゆる*メタシステム遷移の原則*)とされています。 + +## [講義前クイズ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**マルチエージェントシステム**の方向性は、1990年代のAIにおいて、インターネットと分散システムの成長に応じて登場しました。古典的なAIの教科書の一つである[人工知能: 現代的アプローチ](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach)は、マルチエージェントシステムの観点から古典的AIを見ています。 + +マルチエージェントアプローチの中心には、**エージェント**の概念があります。これは、何らかの**環境**の中で生きている存在で、その環境を知覚し、行動を起こすことができます。これは非常に広範な定義であり、エージェントにはさまざまなタイプや分類が存在します。 + +* 推論能力による分類: + - **反応型**エージェントは通常、単純なリクエスト-レスポンス型の行動を持ちます + - **熟慮型**エージェントは、何らかの論理的推論や計画能力を持ちます +* エージェントがコードを実行する場所による分類: + - **静的**エージェントは専用のネットワークノードで動作します + - **モバイル**エージェントは、ネットワークノード間でコードを移動できます +* 行動による分類: + - **受動的エージェント**は特定の目標を持ちません。このようなエージェントは外部の刺激に反応することはできますが、自ら行動を起こすことはありません。 + - **能動的エージェント**は追求する目標を持っています + - **認知エージェント**は複雑な計画や推論を含みます + +現在、マルチエージェントシステムは多くのアプリケーションで使用されています。 + +* ゲームでは、多くのノンプレイヤーキャラクターが何らかのAIを用いており、知的エージェントと見なすことができます +* ビデオ制作では、群衆を含む複雑な3Dシーンのレンダリングは通常、マルチエージェントシミュレーションを使用して行われます +* システムモデリングでは、マルチエージェントアプローチが複雑なモデルの行動をシミュレートするために使用されます。たとえば、マルチエージェントアプローチは、COVID-19の世界的な拡散を予測するために成功裏に使用されました。似たようなアプローチを用いて、都市の交通をモデル化し、交通ルールの変更に対する反応を観察することができます。 +* 複雑な自動化システムでは、各デバイスが独立したエージェントとして機能し、全体のシステムをよりモノリシックではなく、より堅牢にします。 + +マルチエージェントシステムについて深く掘り下げる時間はありませんが、**マルチエージェントモデリング**の一例を考えてみましょう。 + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/)は、[Logo](https://en.wikipedia.org/wiki/Logo_(programming_language))プログラミング言語の改良版に基づくマルチエージェントモデリング環境です。この言語は、子供たちにプログラミングの概念を教えるために開発され、**タートル**と呼ばれるエージェントを制御することができ、そのタートルは動きながら跡を残します。これにより、エージェントの行動を理解するための非常に視覚的な方法で複雑な幾何学的図形を作成することができます。 + +NetLogoでは、`create-turtles`コマンドを使用して多くのタートルを作成できます。次に、すべてのタートルに何らかのアクションを実行させることができます(以下の例では、10ポイント前進します)。 + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +もちろん、すべてのタートルが同じことをするのは面白くないので、`ask` 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`はブリードの名前であり、異なるコマンドが明確さのために異なる形を使用するため、単数形と複数形の両方を指定する必要があります。 + +> ✅ NetLogo言語そのものを学ぶことには立ち入らないでしょう - もっと学びたい場合は、素晴らしい[初心者向けインタラクティブNetLogo辞書](https://ccl.northwestern.edu/netlogo/bind/)を訪問してください。 + +NetLogoを[ダウンロード](https://ccl.northwestern.edu/netlogo/download.shtml)して、試してみることができます。 + +### モデルライブラリ + +NetLogoの素晴らしい点は、試すことができる動作するモデルのライブラリが含まれていることです。**ファイル → モデルライブラリ**に移動すると、選択できる多くのモデルのカテゴリがあります。 + +NetLogoモデルライブラリ + +> Dmitry Soshnikovによるモデルライブラリのスクリーンショット + +たとえば、**生物学 → 群れ行動**のモデルを開くことができます。 + +### 主な原則 + +モデルを開くと、メインのNetLogo画面に移動します。ここに、有限の資源(草)を考慮したオオカミと羊の個体群を記述したサンプルモデルがあります。 + +![NetLogoメイン画面](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ja.png) + +> Dmitry Soshnikovによるスクリーンショット + +この画面では、以下のものが見えます: + +* **インターフェース**セクションには: + - すべてのエージェントが住むメインフィールド + - ボタン、スライダーなどのさまざまなコントロール + - シミュレーションのパラメータを表示するために使用できるグラフ +* **コード**タブには、NetLogoプログラムを入力できるエディタがあります + +ほとんどの場合、インターフェースにはシミュレーションの状態を初期化する**セットアップ**ボタンと、実行を開始する**ゴー**ボタンがあります。これらは、次のようなコード内の対応するハンドラーによって処理されます: + +``` +to go [ +... +] +``` + +NetLogoの世界は以下のオブジェクトで構成されています: + +* **エージェント**(タートル)はフィールドを移動し、何かをすることができます。`ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. +* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches`を使用してエージェントに指示します。 +* **オブザーバー**は、世界を制御するユニークなエージェントです。すべてのボタンハンドラーは*オブザーバーモード*で実行されます。 + +> ✅ マルチエージェント環境の美しさは、タートルモードまたはパッチモードで実行されるコードが、すべてのエージェントによって同時に並行して実行されることです。したがって、少しのコードを書き、個々のエージェントの行動をプログラムすることで、シミュレーションシステム全体の複雑な行動を作成することができます。 + +### 群れ行動 + +マルチエージェントの行動の一例として、**[群れ行動](https://en.wikipedia.org/wiki/Flocking_(behavior))**を考えてみましょう。群れ行動は、鳥の群れが飛ぶ方法に非常に似た複雑なパターンです。彼らが飛ぶのを見ていると、彼らが何らかの集団アルゴリズムに従っているか、あるいは何らかの形の*集団知能*を持っていると思うかもしれません。しかし、この複雑な行動は、各個体エージェント(この場合は*鳥*)が、近くにいる他のエージェントを観察し、次の3つの単純なルールに従うときに生じます: + +* **整列** - 隣接するエージェントの平均的な進行方向に向かって舵を取ります +* **凝集** - 隣接エージェントの平均位置に向かって舵を取ろうとします(*長距離の引力*) +* **分離** - 他の鳥に近づきすぎると、離れようとします(*短距離の反発*) + +群れ行動の例を実行し、その行動を観察することができます。また、*分離の度合い*や*視界の範囲*などのパラメータを調整することもできます。視界の範囲を0に減らすと、すべての鳥が盲目になり、群れ行動が停止します。分離を0に減らすと、すべての鳥が一直線に集まります。 + +> ✅ **コード**タブに切り替え、群れ行動の3つのルール(整列、凝集、分離)がコード内でどのように実装されているかを確認してください。視界にいるエージェントだけを参照していることに注意してください。 + +### 他のモデルを見る + +試すことができるいくつかの興味深いモデルがあります: + +* **アート → 花火**は、花火が個々の火流の集団行動と見なされる方法を示します +* **社会科学 → 交通基本**および**社会科学 → 交通グリッド**は、信号機の有無にかかわらず、1Dおよび2Dグリッドでの都市交通のモデルを示します。シミュレーション内の各車両は、次のルールに従います: + - 前方のスペースが空いている場合 - 加速します(一定の最大速度まで) + - 前方に障害物が見えた場合 - ブレーキをかけます(運転手がどれだけ遠くを見ることができるかを調整できます) +* **社会科学 → パーティー**は、人々がカクテルパーティー中にどのようにグループを形成するかを示します。グループの幸福度を最も早く高めるパラメータの組み合わせを見つけることができます。 + +これらの例からわかるように、マルチエージェントシミュレーションは、同じまたは類似の論理に従う個々のエージェントで構成される複雑なシステムの行動を理解するための非常に有用な方法です。また、コンピュータゲームの[NPC](https://en.wikipedia.org/wiki/NPC)や3Dアニメーションの世界のエージェントを制御するためにも使用できます。 + +## 熟慮型エージェント + +上記のエージェントは非常に単純で、何らかのアルゴリズムを使用して環境の変化に反応します。このようなエージェントは**反応型エージェント**です。しかし、時にはエージェントが推論し、行動を計画することができ、その場合には**熟慮型**と呼ばれます。 + +典型的な例は、人間から休暇ツアーを予約する指示を受け取るパーソナルエージェントです。インターネット上に多くのエージェントがいて、これを手伝うことができるとしましょう。エージェントは、利用可能なフライトを確認し、異なる日付のホテル価格を調べ、最良の価格を交渉しようとします。休暇計画が完了し、所有者によって確認されると、予約を進めることができます。 + +そのためには、エージェントは**コミュニケーション**を取る必要があります。成功するコミュニケーションのためには、次のことが必要です: + +* 知識を交換するためのいくつかの**標準的な言語**、例えば[知識交換フォーマット](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format)(KIF)や[知識クエリおよび操作言語](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language)(KQML)。これらの言語は[発話行為理論](https://en.wikipedia.org/wiki/Speech_act)に基づいて設計されています。 +* さまざまな**オークションタイプ**に基づいた交渉のための**プロトコル**を含むべきです。 +* 同じ概念を参照し、その意味を理解するための**共通のオントロジー**を使用します。 +* さまざまなエージェントができることを**発見**する方法も必要です。これも何らかのオントロジーに基づいています。 + +熟慮型エージェントは反応型エージェントよりもはるかに複雑で、環境の変化に反応するだけでなく、*行動を開始する*こともできる必要があります。熟慮型エージェントの提案されたアーキテクチャの一つは、いわゆる信念-欲求-意図(BDI)エージェントです: + +* **信念**は、エージェントの環境に関する知識のセットを形成します。これは知識ベースや、エージェントが環境の特定の状況に適用できるルールのセットとして構造化できます。 +* **欲求**は、エージェントが何をしたいか、すなわちその目標を定義します。たとえば、上記のパーソナルアシスタントエージェントの目標はツアーを予約することであり、ホテルエージェントの目標は利益を最大化することです。 +* **意図**は、エージェントが目標を達成するために計画する具体的な行動です。行動は通常、環境を変化させ、他のエージェントとのコミュニケーションを引き起こします。 + +マルチエージェントシステムを構築するためのプラットフォームもいくつか存在します。例えば、[JADE](https://jade.tilab.com/)があります。[この論文](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf)には、マルチエージェントプラットフォームのレビューと、マルチエージェントシステムの簡単な歴史およびそのさまざまな使用シナリオが含まれています。 + +## 結論 + +マルチエージェントシステムは非常に異なる形を取り、多くの異なるアプリケーションで使用されることができます。 +それらはすべて、個々のエージェントのより単純な行動に焦点を当て、**シナジー効果**により全体のシステムのより複雑な行動を達成する傾向があります。 + +## 🚀 チャレンジ + +このレッスンを現実世界に持ち込み、問題を解決できるマルチエージェントシステムを概念化してみてください。たとえば、学校のバスルートを最適化するためにマルチエージェントシステムは何をする必要があるでしょうか?ベーカリー + +**免責事項**: +この文書は、機械翻訳AIサービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。元の文書はその原文を権威ある情報源として考慮すべきです。重要な情報については、専門の人間による翻訳をお勧めします。この翻訳の使用に起因する誤解や誤解釈について、当社は一切責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/ja/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..23dc96b1 --- /dev/null +++ b/translations/ja/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# NetLogo 課題 + +NetLogo のライブラリにあるモデルの中から1つを選び、実際の状況にできるだけ近い形でシミュレーションを行ってください。良い例としては、Alternative Visualizations フォルダーにある Virus モデルを調整して、COVID-19 の拡散をモデル化する方法を示すことが挙げられます。実際のウイルスの拡散を模倣するモデルを構築できますか? + +作業の成果を示すために、コピーを保存し、モデルがどのように現実の状況と関連しているかを説明するビデオデモを作成してください。 + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳にはエラーや不正確さが含まれる可能性があることをご承知おきください。元の文書は、その母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用から生じる誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/7-Ethics/README.md b/translations/ja/lessons/7-Ethics/README.md new file mode 100644 index 00000000..a86abe88 --- /dev/null +++ b/translations/ja/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# 倫理的かつ責任ある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)を訪れてください。このレッスンには課題が含まれています。 + +## レビューと自己学習 + +責任あるAIについてもっと学ぶには、この[ラーニングパス](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste)を受講してください。 + +## [講義後のクイズ](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。元の文書はその母国語での権威ある情報源と見なされるべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用から生じる誤解や誤訳については、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/README.md b/translations/ja/lessons/README.md new file mode 100644 index 00000000..5bd9df44 --- /dev/null +++ b/translations/ja/lessons/README.md @@ -0,0 +1,8 @@ +# 概要 + +![概要のスケッチ](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ja.png) + +> スケッチノート作成者: [Tomomi Imura](https://twitter.com/girlie_mac) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されています。正確さを追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることにご留意ください。元の文書はその母国語で権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈については、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/X-Extras/X1-MultiModal/README.md b/translations/ja/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..71cc0346 --- /dev/null +++ b/translations/ja/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# マルチモーダルネットワーク + +トランスフォーマーモデルがNLPタスクを解決する上で成功を収めた後、同様のアーキテクチャがコンピュータビジョンタスクにも適用されてきました。視覚と自然言語の機能を*組み合わせる*モデルの構築に対する関心が高まっています。そのような試みの一つがOpenAIによって行われ、CLIPおよびDALL.Eと呼ばれています。 + +## 対照的画像事前学習 (CLIP) + +CLIPの主なアイデアは、テキストプロンプトと画像を比較し、画像がプロンプトにどれだけ一致するかを判断できることです。 + +![CLIPアーキテクチャ](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ja.png) + +> *このブログ記事からの画像です [this blog post](https://openai.com/blog/clip/)* + +モデルは、インターネットから取得した画像とそのキャプションでトレーニングされています。各バッチについて、N対の(画像、テキスト)を取得し、それらをいくつかのベクトル表現に変換します。これらの表現は互いにマッチングされます。損失関数は、1対(例: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.ja.png) + +> *このブログ記事からの画像です [this blog post](https://openai.com/blog/clip/)* + +**テキストベースの画像検索** + +逆に、画像のコレクションを持っている場合、このコレクションをモデルに渡し、テキストプロンプトを与えることで、与えられたプロンプトに最も類似した画像を取得できます。 + +## ✍️ 例: [CLIPを使用した画像分類と画像検索](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +CLIPの実行を確認するには、[Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb)ノートブックを開いてください。 + +## VQGAN+ CLIPによる画像生成 + +CLIPは、テキストプロンプトから**画像生成**にも使用できます。これを行うには、いくつかのベクトル入力に基づいて画像を生成できる**生成モデル**が必要です。そのようなモデルの一つが[VQGAN](https://compvis.github.io/taming-transformers/)(ベクトル量子化GAN)と呼ばれています。 + +VQGANが通常の[GAN](../../4-ComputerVision/10-GANs/README.md)と異なる主なアイデアは次の通りです: +* 自己回帰トランスフォーマーアーキテクチャを使用して、画像を構成する文脈に富んだ視覚部分のシーケンスを生成します。これらの視覚部分は、[CNN](../../4-ComputerVision/07-ConvNets/README.md)によって学習されます。 +* 画像の部分が「本物」か「偽物」であるかを検出する部分画像判別器を使用します(従来のGANの「全か無か」アプローチとは異なります)。 + +VQGANについて詳しくは、[Taming Transformers](https://compvis.github.io/taming-transformers/)のウェブサイトで学ぶことができます。 + +VQGANと従来のGANの重要な違いの一つは、後者が任意の入力ベクトルから適切な画像を生成できるのに対し、VQGANは一貫性のない画像を生成する可能性が高いことです。したがって、画像生成プロセスをさらにガイドする必要があり、それはCLIPを使用して行うことができます。 + +![VQGAN+CLIPアーキテクチャ](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ja.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.ja.png) | ![Pixrayによって生成された画像](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ja.png) | ![Pixrayによって生成された画像](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ja.png) +----|----|---- +プロンプト"*若い男性の文学教師が本を持っている水彩画のクローズアップポートレート*"から生成された画像 | プロンプト"*若い女性のコンピュータサイエンス教師がコンピュータを持っている油彩画のクローズアップポートレート*"から生成された画像 | プロンプト"*黒板の前にいる老年男性数学教師の油彩画のクローズアップポートレート*"から生成された画像 + +> 画像は[Dmitry Soshnikov](http://soshnikov.com)による**人工教師**コレクションからのものです。 + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-Eは、プロンプトから画像を生成するように訓練されたGPT-3のバージョンです。120億のパラメータで訓練されています。 + +CLIPとは異なり、DALL-Eはテキストと画像をトークンの単一ストリームとして受け取ります。そのため、複数のプロンプトから、テキストに基づいて画像を生成することができます。 + +### [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.ja.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.ja.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.ja.png) +----|----|---- +プロンプト"*若い男性の文学教師が本を持っている水彩画のクローズアップポートレート*"から生成された画像 | プロンプト"*若い女性のコンピュータサイエンス教師がコンピュータを持っている油彩画のクローズアップポートレート*"から生成された画像 | プロンプト"*黒板の前にいる老年男性数学教師の油彩画のクローズアップポートレート*"から生成された画像 + +## 参考文献 + +* VQGAN論文: [高解像度画像合成のためのトランスフォーマーの調整](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP論文: [自然言語監視からの転送可能な視覚モデルの学習](https://arxiv.org/pdf/2103.00020.pdf) + +**免責事項**: +この文書は、機械ベースのAI翻訳サービスを使用して翻訳されました。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご承知おきください。原文の母国語の文書が権威ある情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用によって生じる誤解や誤訳について、当社は責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/sketchnotes/LICENSE.md b/translations/ja/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..c7a03d01 --- /dev/null +++ b/translations/ja/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,126 @@ +# クリエイティブ・コモンズ 表示-継承 4.0 国際ライセンス + +クリエイティブ・コモンズ株式会社(「クリエイティブ・コモンズ」)は法律事務所ではなく、法的サービスや法的アドバイスを提供するものではありません。クリエイティブ・コモンズの公開ライセンスの配布は、弁護士とクライアントの関係やその他の関係を生じさせるものではありません。クリエイティブ・コモンズは、そのライセンスおよび関連情報を「現状のまま」で提供します。クリエイティブ・コモンズは、そのライセンス、ライセンス条件のもとでライセンスされた資料、または関連情報について、いかなる保証も行いません。クリエイティブ・コモンズは、これらの使用によって生じる損害に対して、最大限の範囲で責任を放棄します。 + +## クリエイティブ・コモンズ 公開ライセンスの使用 + +クリエイティブ・コモンズの公開ライセンスは、著作権および以下の公開ライセンスに指定されたその他の権利に基づいて、クリエイターや他の権利保有者が著作権の対象となるオリジナル作品やその他の資料を共有するために使用できる標準的な条件を提供します。以下の考慮事項は情報提供のみを目的としたものであり、網羅的ではなく、私たちのライセンスの一部ではありません。 + +### ライセンサーの考慮事項 +私たちの公開ライセンスは、著作権および特定のその他の権利によって制限される方法で資料を使用するために公衆に許可を与える権限を持つ者によって使用されることを意図しています。私たちのライセンスは取り消し不可能です。ライセンサーは、ライセンスを適用する前に選択したライセンスの条件を読み理解するべきです。ライセンサーは、期待通りに公衆が資料を再利用できるように、ライセンスを適用する前に必要なすべての権利を確保するべきです。ライセンサーは、ライセンスの対象外となる資料を明確にマークするべきです。これには、他のCCライセンスの資料や、著作権の例外や制限の下で使用される資料が含まれます。ライセンサーのためのさらなる考慮事項は、wiki.creativecommons.org/Considerations_for_licensors を参照してください。 + +### 公衆の考慮事項 +私たちの公開ライセンスのいずれかを使用することにより、ライセンサーはライセンスされた資料を指定された条件の下で使用するための許可を公衆に付与します。ライセンサーの許可が必要ない理由がある場合(たとえば、著作権の適用可能な例外や制限による場合)、その使用はライセンスによって規制されません。私たちのライセンスは、ライセンサーが付与する権限を持つ著作権および特定のその他の権利の下での許可のみを付与します。ライセンスされた資料の使用は、他の理由(他者がその資料に対して著作権またはその他の権利を持っているため)によって制限される場合があります。ライセンサーは、すべての変更をマークまたは説明するように求めるなど、特別なリクエストを行うことができます。私たちのライセンスによって要求されてはいませんが、合理的な範囲でこれらのリクエストを尊重することをお勧めします。公衆のためのさらなる考慮事項は、wiki.creativecommons.org/Considerations_for_licensees を参照してください。 + +--- + +## セクション 1 -- 定義 + + a. **適応資料** とは、著作権および類似の権利の対象となる資料で、ライセンスされた資料に基づいているか、または派生したもので、ライセンスされた資料が翻訳、変更、編成、変形、またはその他の方法で修正されていることを意味します。著作権および類似の権利を持つライセンサーによる許可が必要です。この公開ライセンスの目的上、ライセンスされた資料が音楽作品、パフォーマンス、または音声録音である場合、適応資料は常にライセンスされた資料が動画像と同期している場合に生成されます。 + + b. **アダプターライセンス** とは、あなたが適応資料に対する著作権および類似の権利に適用するライセンスを意味します。 + + c. **BY-SA互換ライセンス** とは、creativecommons.org/compatiblelicenses にリストされ、クリエイティブ・コモンズによってこの公開ライセンスと本質的に同等であると承認されたライセンスを意味します。 + + d. **著作権および類似の権利** とは、著作権および著作権に密接に関連する権利(パフォーマンス、放送、音声録音、Sui Generisデータベース権を含むがこれに限定されない)を意味します。これらの権利がどのようにラベル付けまたは分類されているかにかかわらず、著作権および類似の権利に該当しない権利については、公開ライセンスの目的のために、セクション2(b)(1)-(2)で指定された権利は著作権および類似の権利ではありません。 + + e. **効果的技術的手段** とは、適切な権限がない場合に、1996年12月20日に採択されたWIPO著作権条約第11条の義務を履行する法律の下で回避できない手段を意味します。 + + f. **例外および制限** とは、フェアユース、フェアディーリング、およびあなたのライセンスされた資料の使用に適用される著作権および類似の権利に対する他の例外または制限を意味します。 + + g. **ライセンス要素** とは、クリエイティブ・コモンズ公開ライセンスの名前に記載されたライセンス属性を意味します。この公開ライセンスのライセンス要素は、表示および継承です。 + + h. **ライセンスされた資料** とは、ライセンサーがこの公開ライセンスを適用した芸術的または文学的な作品、データベース、またはその他の資料を意味します。 + + i. **ライセンスされた権利** とは、この公開ライセンスの条件に従ってあなたに付与される権利を意味し、ライセンスされた資料の使用に適用されるすべての著作権および類似の権利に制限され、ライセンサーがライセンスを付与する権限を持つ権利です。 + + j. **ライセンサー** とは、この公開ライセンスの下で権利を付与する個人または団体を意味します。 + + k. **共有** とは、ライセンスされた権利の下で許可を必要とする手段またはプロセスによって公衆に資料を提供することを意味し、複製、公的展示、公的パフォーマンス、配布、普及、通信、または輸入を含みます。また、個々の選択によって公衆が資料にアクセスできる方法で資料を公衆に提供することを含みます。 + + l. **Sui Generisデータベース権** とは、1996年3月11日の欧州議会および理事会の指令96/9/ECに基づく著作権以外の権利を意味し、データベースの法的保護に関するもので、改正または後継のもの、または世界の他の場所で本質的に同等の権利を意味します。 + + m. **あなた** とは、この公開ライセンスの下でライセンスされた権利を行使する個人または団体を意味します。「あなた」は、対応する意味を持ちます。 + +## セクション 2 -- 範囲 + + a. **ライセンス付与** + + 1. この公開ライセンスの条件に従い、ライセンサーは、あなたに対して、ライセンスされた資料におけるライセンスされた権利を行使するための、全世界的、ロイヤリティフリー、サブライセンス不可、非独占的、取り消し不可能なライセンスを付与します。これにより、以下のことが可能になります: + + a. ライセンスされた資料を、全部または一部を複製し、共有すること;および + + b. 適応資料を制作、複製し、共有すること。 + + 2. **例外および制限**:疑義を避けるために、例外および制限があなたの使用に適用される場合、この公開ライセンスは適用されず、その条件に従う必要はありません。 + + 3. **期間**:この公開ライセンスの期間は、セクション6(a)に指定されています。 + + 4. **メディアおよびフォーマット;技術的変更の許可**:ライセンサーは、あなたが現在知られているか、今後作成されるすべてのメディアおよびフォーマットでライセンスされた権利を行使することを許可し、それを行うために必要な技術的変更を行うことを許可します。ライセンサーは、ライセンスされた権利を行使するために必要な技術的変更を行うことを禁じる権利や権限を放棄または主張しないことに同意します。この公開ライセンスの目的上、セクション2(a)(4)によって許可された変更を行うことは、適応資料を生成することはありません。 + + 5. **下流の受取人** + + a. ライセンサーからのオファー -- ライセンスされた資料:ライセンスされた資料のすべての受取人は、自動的にこの公開ライセンスの条件の下でライセンスされた権利を行使するためのライセンサーからのオファーを受け取ります。 + + b. ライセンサーからの追加のオファー -- 適応資料:あなたからの適応資料のすべての受取人は、自動的にあなたが適用するアダプターライセンスの条件の下で適応資料におけるライセンスされた権利を行使するためのライセンサーからのオファーを受け取ります。 + + c. 下流の制限なし:あなたは、ライセンスされた資料の受取人がライセンスされた権利を行使することを制限する場合、ライセンスされた資料に対して追加または異なる条件を提供したり、課したり、または効果的技術的手段を適用したりしてはいけません。 + + 6. **推奨なし**:この公開ライセンスのいかなる内容も、あなたがライセンスされた資料を使用していることが、ライセンサーまたはクレジットを受け取ることに指定された他者と関連している、またはそれらによって後援、支持、または公式の地位を与えられているということを主張または暗示する許可を構成したり解釈されたりすることはありません。 + + b. **その他の権利** + + 1. 完全性の権利などの道徳的権利は、この公開ライセンスの下でライセンスされていません。また、パブリシティ、プライバシー、およびその他の類似の人格権もライセンスされていません。ただし、可能な限り、ライセンサーは、ライセンスされた権利を行使するために必要な限られた範囲で、ライセンサーが保持するそのような権利を放棄または主張しないことに同意しますが、その他の目的ではありません。 + + 2. 特許権および商標権は、この公開ライセンスの下でライセンスされていません。 + + 3. 可能な限り、ライセンサーは、ライセンスされた権利を行使するためにあなたからロイヤリティを徴収する権利を放棄します。これは、直接的または任意の法定または強制的なライセンス制度を通じての徴収を含みます。他のすべての場合、ライセンサーはそのようなロイヤリティを徴収する権利を明示的に留保します。 + +## セクション 3 -- ライセンス条件 + +あなたのライセンスされた権利の行使は、以下の条件に明示的に従うものとします。 + + a. **表示** + + 1. あなたがライセンスされた資料を共有する場合(変更された形態を含む)、あなたは以下を行う必要があります: + + a. ライセンサーがライセンスされた資料に提供した場合は、以下を保持すること: + + i. ライセンスされた資料のクリエイターおよびクレジットを受け取ることに指定された他の者の特定を、ライセンサーが要求する合理的な方法で行うこと(指定された場合はペンネームを含む); + + ii. 著作権表示; + + iii. この公開ライセンスを参照する通知; + + iv. 保証の免責事項を参照する通知; + + v. ライセンスされた資料へのURIまたはハイパーリンクを、合理的に実現可能な範囲で提供すること; + + b. ライセンスされた資料を変更した場合は、その旨を示し、以前の変更の指示を保持すること;および + + c. ライセンスされた資料がこの公開ライセンスの下でライセンスされていることを示し、この公開ライセンスのテキストまたはURIまたはハイパーリンクを含めること。 + + 2. あなたは、ライセンスされた資料を共有する際のメディア、手段、および文脈に基づいて、セクション3(a)(1)の条件を合理的な方法で満たすことができます。たとえば、必要な情報を含むリソースへのURIまたはハイパーリンクを提供することで条件を満たすことが合理的である場合があります。 + + 3. ライセンサーから要求された場合、あなたは、合理的に実現可能な範囲で、セクション3(a)(1)(A)で要求される情報を削除する必要があります。 + + b. **継承** + + セクション3(a)の条件に加えて、あなたが制作した適応資料を共有する場合、以下の条件も適用されます。 + + 1. あなたが適用するアダプターライセンスは、同じライセンス要素を持つクリエイティブ・コモンズライセンスである必要があります。このバージョンまたはそれ以降のバージョン、またはBY-SA互換ライセンスである必要があります。 + + 2. あなたが適用するアダプターライセンスのテキストまたはURIまたはハイパーリンクを含める必要があります。この条件は、あなたが適応資料を共有する際のメディア、手段、および文脈に基づいて合理的な方法で満たすことができます。 + + 3. あなたは、あなたが適用するアダプターライセンスの下で付与された権利の行使を制限するような、適応資料に対して追加または異なる条件を提供したり、課したり、または効果的技術的手段を適用したりしてはいけません。 + +## セクション 4 -- Sui Generisデータベース権 + +ライセンスされた権利にあなたのライセンスされた資料の使用に適用されるSui Generisデータベース権が含まれる場合: + + a. 疑義を避けるために、セクション2(a)(1)は、データベースのすべてまたは実質的な部分の内容を抽出、再利用、複製、および共有する権利をあなたに付与します; + + b. あなたがSui Generisデータベース権を持つデータベースにデータベースのすべてまたは実質的な部分の + +**免責事項**: +この文書は、機械翻訳サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があります。原文の母国語の文書を権威ある情報源として考慮するべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ja/lessons/sketchnotes/README.md b/translations/ja/lessons/sketchnotes/README.md new file mode 100644 index 00000000..28988a04 --- /dev/null +++ b/translations/ja/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +すべてのカリキュラムのスケッチノートはここからダウンロードできます。 + +🎨 作成者: 今浦友美 (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サービスを使用して翻訳されています。正確性を追求していますが、自動翻訳には誤りや不正確さが含まれる可能性があることをご理解ください。原文の母国語の文書を権威ある情報源と見なすべきです。重要な情報については、専門の人間翻訳を推奨します。この翻訳の使用から生じる誤解や誤訳について、当社は一切の責任を負いません。 \ No newline at end of file diff --git a/translations/ko/README.md b/translations/ko/README.md new file mode 100644 index 00000000..83ac2bf2 --- /dev/null +++ b/translations/ko/README.md @@ -0,0 +1,140 @@ +[![GitHub 라이센스](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub 기여자](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub 이슈](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub 풀 리퀘스트](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PR 환영](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub 시청자](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub 포크](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub 스타](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![바인더](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![기터](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# 초보자를 위한 인공지능 - 커리큘럼 + +|![ 스케치노트 [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| 초보자를 위한 AI - _스케치노트 [@girlie_mac](https://twitter.com/girlie_mac)_ | + +12주, 24강의로 구성된 **인공지능** (AI) 커리큘럼을 통해 AI의 세계를 탐험해보세요! 실용적인 수업, 퀴즈, 실습이 포함되어 있습니다. 이 커리큘럼은 초보자 친화적이며 TensorFlow와 PyTorch와 같은 도구 및 AI 윤리를 다룹니다. + +## 배울 내용 + +**[강좌의 마인드맵](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +이 커리큘럼에서는 다음을 배웁니다: + +* **지식 표현**과 추론을 포함한 "좋은 옛날" 상징적 접근법을 포함한 인공지능의 다양한 접근법 ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* 현대 AI의 핵심인 **신경망**과 **딥러닝**. 우리는 [TensorFlow](http://Tensorflow.org)와 [PyTorch](http://pytorch.org)라는 두 가지 인기 있는 프레임워크에서 코드를 사용하여 이러한 중요한 주제의 개념을 설명할 것입니다. +* 이미지와 텍스트 작업을 위한 **신경 아키텍처**. 최신 모델을 다루겠지만 최첨단에 대한 정보는 다소 부족할 수 있습니다. +* **유전 알고리즘** 및 **다중 에이전트 시스템**과 같은 덜 인기 있는 AI 접근법. + +이 커리큘럼에서 다루지 않을 내용: + +> [이 강좌의 추가 자료는 Microsoft Learn 컬렉션에서 확인하세요.](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **비즈니스에서 AI 사용 사례**. Microsoft Learn의 [비즈니스 사용자를 위한 AI 소개](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) 학습 경로를 고려해보세요, 또는 [AI 비즈니스 스쿨](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), [INSEAD](https://www.insead.edu/)와 협력하여 개발되었습니다. +* **고전 기계 학습**, 이는 우리의 [초보자를 위한 기계 학습 커리큘럼](http://github.com/Microsoft/ML-for-Beginners)에서 잘 설명되어 있습니다. +* **[인지 서비스](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**를 사용하여 구축된 실제 AI 응용 프로그램. 이를 위해 Microsoft Learn의 [비전](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [자연어 처리](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI 서비스와 함께하는 생성적 AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** 및 기타를 시작하는 것을 추천합니다. +* 특정 ML **클라우드 프레임워크**로는 [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum), 또는 [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)가 있습니다. [Azure Machine Learning로 머신 러닝 솔루션 구축 및 운영](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) 및 [Azure Databricks로 머신 러닝 솔루션 구축 및 운영](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) 학습 경로를 고려해 보세요. +* **대화형 AI**와 **챗봇**. 별도의 [대화형 AI 솔루션 만들기](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) 학습 경로가 있으며, 더 많은 세부정보는 [이 블로그 게시물](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/)을 참조할 수 있습니다. +* **딥 러닝**의 기초가 되는 **심화 수학**. 이를 위해 Ian Goodfellow, Yoshua Bengio, Aaron Courville의 [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618)을 추천하며, 이 책은 [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/)에서 온라인으로도 제공됩니다. + +클라우드에서의 _AI_ 주제에 대한 부드러운 소개를 원하신다면 [Azure에서 인공지능 시작하기](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) 학습 경로를 고려해 보세요. + +# 콘텐츠 + +| | 수업 링크 | PyTorch/Keras/TensorFlow | 실습 | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [강의 설정](./lessons/0-course-setup/setup.md) | [개발 환경 설정](./lessons/0-course-setup/how-to-run.md) | | +| I | [**AI 소개**](./lessons/1-Intro/README.md) | | | +| 01 | [AI의 소개와 역사](./lessons/1-Intro/README.md) | - | - | +| II | **기호 AI** | +| 02 | [지식 표현 및 전문가 시스템](./lessons/2-Symbolic/README.md) | [전문가 시스템](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [온톨로지](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[개념 그래프](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**신경망 소개**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [퍼셉트론](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [노트북](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [실습](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [다층 퍼셉트론 및 나만의 프레임워크 만들기](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [노트북](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [실습](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [프레임워크 소개 (PyTorch/TensorFlow) 및 과적합](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [실습](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**컴퓨터 비전**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure에서 컴퓨터 비전 탐색하기](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [컴퓨터 비전 소개. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [노트북](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [실습](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [합성곱 신경망](./lessons/4-ComputerVision/07-ConvNets/README.md) 및 [CNN 아키텍처](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [실습](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [사전 훈련된 네트워크 및 전이 학습](./lessons/4-ComputerVision/08-TransferLearning/README.md) 및 [훈련 팁](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [실습](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [오토인코더 및 VAE](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [생성적 적대 신경망 및 예술적 스타일 전이](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [객체 탐지](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [실습](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [의미론적 분할. 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 | [**자연어 처리**](./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) 모듈에 대한 링크가 포함되어 있습니다. + +## 시작하기 + +- 개발 환경 설정을 도와주기 위해 [설정 수업](./lessons/0-course-setup/setup.md)을 만들었습니다. - 교육자를 위해 [커리큘럼 설정 수업](./lessons/0-course-setup/for-teachers.md)도 준비했습니다! +- [VSCode 또는 Codepace에서 코드 실행하기](./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)에 참여하여 이 과정을 수강하는 다른 학습자들과 만나고 네트워크를 형성하며 지원을 받으세요. + +## 퀴즈 + +> **퀴즈에 대한 주의사항**: 모든 퀴즈는 etc\quiz-app의 Quiz-app 폴더에 포함되어 있습니다. 이들은 수업 내에서 링크되어 있으며 퀴즈 앱은 로컬에서 실행하거나 Azure에 배포할 수 있습니다. `quiz-app` 폴더의 지침을 따르세요. 점진적으로 현지화되고 있습니다. + +## 도움 요청 + +제안 사항이 있거나 오타 또는 코드 오류를 발견하셨나요? 이슈를 제기하거나 풀 리퀘스트를 생성하세요. + +## 특별 감사 + +* **✍️ 주 저자:** [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) + +## 기타 커리큘럼 + +우리 팀은 다른 커리큘럼도 제작합니다! 확인해보세요: + +* [초보자를 위한 데이터 과학](https://aka.ms/ds4beginners) +* [**버전 2.0** 초보자를 위한 생성 AI](https://aka.ms/genai-beginners) +* [**NEW** 초보자를 위한 사이버 보안](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [초보자를 위한 웹 개발](https://aka.ms/webdev-beginners) +* [초보자를 위한 IoT](https://aka.ms/iot-beginners) +* [초보자를 위한 머신러닝](https://aka.ms/ml4beginners) +* [초보자를 위한 XR 개발](https://aka.ms/xr-dev-for-beginners) +* [AI 페어 프로그래밍을 위한 GitHub Copilot 마스터하기](https://aka.ms/GitHubCopilotAI) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못 해석에 대해서는 저희가 책임지지 않습니다. \ No newline at end of file diff --git a/translations/ko/SECURITY.md b/translations/ko/SECURITY.md new file mode 100644 index 00000000..bb653211 --- /dev/null +++ b/translations/ko/SECURITY.md @@ -0,0 +1,40 @@ +## 보안 + +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/)을 통해 관리되는 모든 소스 코드 저장소가 포함됩니다. + +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 보안 대응 센터 PGP 키 페이지](https://aka.ms/opensource/security/pgpkey)에서 다운로드할 수 있습니다. + +24시간 이내에 답변을 받으실 수 있습니다. 만약 어떤 이유로 답변을 받지 못하셨다면, 원래 메시지를 수신했는지 확인하기 위해 이메일로 후속 조치를 취해 주시기 바랍니다. 추가 정보는 [microsoft.com/msrc](https://aka.ms/opensource/security/msrc)에서 확인하실 수 있습니다. + +문제의 본질과 범위를 더 잘 이해하는 데 도움이 되도록 아래에 나열된 요청된 정보를 가능한 한 많이 포함해 주시기 바랍니다: + + * 문제 유형 (예: 버퍼 오버플로우, SQL 인젝션, 크로스 사이트 스크립팅 등) + * 문제의 발생과 관련된 소스 파일의 전체 경로 + * 영향을 받은 소스 코드의 위치 (태그/브랜치/커밋 또는 직접 URL) + * 문제를 재현하는 데 필요한 특별한 구성 + * 문제를 재현하는 단계별 지침 + * 개념 증명 또는 익스플로잇 코드 (가능한 경우) + * 공격자가 문제를 어떻게 악용할 수 있는지 포함한 문제의 영향 + +이 정보는 귀하의 보고서를 더 신속하게 분류하는 데 도움이 될 것입니다. + +버그 바운티를 위해 보고하는 경우, 더 완전한 보고서는 더 높은 보상 금액에 기여할 수 있습니다. 저희의 활성 프로그램에 대한 자세한 내용은 [Microsoft 버그 바운티 프로그램](https://aka.ms/opensource/security/bounty) 페이지를 방문해 주십시오. + +## 선호하는 언어 + +모든 커뮤니케이션은 영어로 진행하는 것을 선호합니다. + +## 정책 + +Microsoft는 [조정된 취약점 공개](https://aka.ms/opensource/security/cvd) 원칙을 따릅니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/etc/CODE_OF_CONDUCT.md b/translations/ko/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..e5b0d962 --- /dev/null +++ b/translations/ko/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Microsoft 오픈 소스 행동 강령 + +이 프로젝트는 [Microsoft 오픈 소스 행동 강령](https://opensource.microsoft.com/codeofconduct/)을 채택했습니다. + +리소스: + +- [Microsoft 오픈 소스 행동 강령](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft 행동 강령 FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- 질문이나 우려 사항이 있을 경우 [opencode@microsoft.com](mailto:opencode@microsoft.com)으로 연락하세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/etc/CONTRIBUTING.md b/translations/ko/etc/CONTRIBUTING.md new file mode 100644 index 00000000..6eff9ac1 --- /dev/null +++ b/translations/ko/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# 기여하기 + +이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 여러분이 기여에 대한 권리를 가지고 있으며, 실제로도 그 권리를 우리에게 부여한다는 내용을 담은 기여자 라이선스 계약(CLA)에 동의해야 합니다. 자세한 내용은 https://cla.microsoft.com를 방문하세요. + +풀 요청을 제출하면, CLA 봇이 자동으로 CLA를 제공해야 하는지 여부를 판단하고 PR에 적절한 장식(예: 레이블, 댓글)을 추가합니다. 봇이 제공하는 지침을 따르기만 하면 됩니다. 우리 CLA를 사용하는 모든 리포지토리에서 이 작업을 한 번만 수행하면 됩니다. + +이 프로젝트는 [Microsoft 오픈 소스 행동 강령](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)에서 우리만의 임베딩을 훈련하기 위한 샘플 만들기 + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못된 해석에 대해 저희는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/etc/Mindmap.md b/translations/ko/etc/Mindmap.md new file mode 100644 index 00000000..c1c0278b --- /dev/null +++ b/translations/ko/etc/Mindmap.md @@ -0,0 +1,76 @@ +# AI + +## [AI 소개](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - AI 정의 + - AI의 역사 + - AI 접근 방식 + - 상향식/기호적 접근 + - 하향식/신경망 접근 + - 진화적 접근 + - 시너지적/창발적 AI + - [Microsoft AI 비즈니스 스쿨](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [기호적 AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - 지식 표현 + - [전문가 시스템](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [온톨로지](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - 의미론적 웹 + +## [신경망](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [퍼셉트론](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [다층 네트워크](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [프레임워크 소개](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [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를 이용한 CV](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow를 이용한 CV](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [CV 소개. 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에서 + - [AI 기초: 자연어 처리 탐색](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PyTorch를 이용한 NLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow를 이용한 NLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [텍스트 표현](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - 단어의 가방 + - TF/IDF + - [의미 임베딩](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [언어 모델링](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [순환 신경망](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [생성적 순환 네트워크](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [변환기와 BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [명명된 개체 인식](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [텍스트 생성 및 GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## 기타 기술 + - [유전 알고리즘](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [심층 강화 학습](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [다중 에이전트 시스템](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [AI 윤리](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [책임 있는 AI에 대한 MS Learn](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## 추가 자료 + - [다중 모달 네트워크](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/etc/SUPPORT.md b/translations/ko/etc/SUPPORT.md new file mode 100644 index 00000000..fbcf5cd5 --- /dev/null +++ b/translations/ko/etc/SUPPORT.md @@ -0,0 +1,14 @@ +# 지원 + +## 문제 신고 및 도움 받는 방법 + +이 프로젝트는 버그 및 기능 요청을 추적하기 위해 GitHub Issues를 사용합니다. 중복을 피하기 위해 새로운 문제를 신고하기 전에 기존 문제를 검색해 주세요. 새로운 문제의 경우, 버그나 기능 요청을 새로운 Issue로 신고해 주세요. + +이 프로젝트 사용에 대한 도움이나 질문은 토론 게시판을 이용해 주세요. + +## Microsoft 지원 정책 + +이 프로젝트에 대한 지원은 위에 나열된 리소스로 제한됩니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 저희는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/etc/TRANSLATIONS.md b/translations/ko/etc/TRANSLATIONS.md new file mode 100644 index 00000000..73e40d32 --- /dev/null +++ b/translations/ko/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# 수업 번역에 기여하기 + +이 커리큘럼의 수업에 대한 번역을 환영합니다! + +## 가이드라인 + +각 수업 폴더와 수업 소개 폴더에는 번역된 마크다운 파일이 포함된 폴더가 있습니다. + +> 주의: 코드 샘플 파일의 코드는 번역하지 마세요. 번역해야 할 항목은 README, 과제 및 퀴즈뿐입니다. 감사합니다! + +번역된 파일은 다음과 같은 명명 규칙을 따라야 합니다: + +**README._[language]_.md** + +여기서 _[language]_는 ISO 639-1 표준에 따른 두 글자의 언어 약어입니다 (예: `README.es.md`는 스페인어, `README.nl.md`는 네덜란드어에 해당). + +**assignment._[language]_.md** + +README와 유사하게, 과제도 번역해 주세요. + +**퀴즈** + +1. 번역을 퀴즈 앱에 추가하려면 여기에서 파일을 추가하세요: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, 적절한 명명 규칙(en.json, fr.json)을 따르세요. **'true' 또는 'false'라는 단어는 현지화하지 마세요. 감사합니다!** + +2. 퀴즈 앱의 App.vue 파일에서 드롭다운에 언어 코드를 추가하세요. + +3. 퀴즈 앱의 [translations index.js 파일](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js)을 편집하여 언어를 추가하세요. + +4. 마지막으로, 번역된 README.md 파일의 모든 퀴즈 링크를 직접 번역된 퀴즈로 연결되도록 수정하세요: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1에서 https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id로 변경합니다. + +**감사합니다** + +여러분의 노고에 진심으로 감사드립니다! + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 있을 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/etc/quiz-app/README.md b/translations/ko/etc/quiz-app/README.md new file mode 100644 index 00000000..94bf90bf --- /dev/null +++ b/translations/ko/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# 퀴즈 + +이 퀴즈는 https://aka.ms/ai-beginners의 AI 커리큘럼을 위한 강의 전후 퀴즈입니다. + +## 번역된 퀴즈 세트 추가하기 + +`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)로 이동 +- "리소스 만들기"를 클릭하고 "정적 웹 앱"을 검색합니다. +- "만들기"를 클릭합니다. + +3. 정적 웹 앱 구성 +- 기본: 구독: 귀하의 Azure 구독을 선택합니다. +- 리소스 그룹: 새 리소스 그룹을 만들거나 기존 리소스를 사용합니다. +- 이름: 정적 웹 앱의 이름을 제공합니다. +- 지역: 사용자와 가장 가까운 지역을 선택합니다. + +- #### 배포 세부정보: +- 소스: "GitHub"를 선택합니다. +- GitHub 계정: Azure가 귀하의 GitHub 계정에 접근할 수 있도록 권한을 부여합니다. +- 조직: 귀하의 GitHub 조직을 선택합니다. +- 저장소: 정적 웹 앱이 포함된 저장소를 선택합니다. +- 브랜치: 배포할 브랜치를 선택합니다. + +- #### 빌드 세부정보: +- 빌드 프리셋: 앱이 구축된 프레임워크를 선택합니다 (예: React, Angular, Vue 등). +- 앱 위치: 앱 코드가 포함된 폴더를 지정합니다 (예: 루트에 있는 경우 /). +- API 위치: API가 있는 경우 위치를 지정합니다 (선택 사항). +- 출력 위치: 빌드 출력이 생성되는 폴더를 지정합니다 (예: build 또는 dist). + +4. 검토 및 생성 +설정을 검토하고 "생성"을 클릭합니다. Azure는 필요한 리소스를 설정하고 귀하의 저장소에 GitHub Actions 워크플로를 생성합니다. + +5. GitHub Actions 워크플로 +Azure는 귀하의 저장소에 GitHub Actions 워크플로 파일을 자동으로 생성합니다 (.github/workflows/azure-static-web-apps-.yml). 이 워크플로는 빌드 및 배포 프로세스를 처리합니다. + +6. 배포 모니터링 +GitHub 저장소의 "작업" 탭으로 이동합니다. +워크플로가 실행되고 있어야 합니다. 이 워크플로는 귀하의 정적 웹 앱을 Azure에 빌드하고 배포합니다. +워크플로가 완료되면, 귀하의 앱은 제공된 Azure URL에서 실시간으로 사용할 수 있습니다. + +### 예시 워크플로 파일 + +다음은 GitHub Actions 워크플로 파일의 예시입니다: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### 추가 자료 +- [Azure Static Web Apps 문서](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions 문서](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/0-course-setup/for-teachers.md b/translations/ko/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..3fbd204f --- /dev/null +++ b/translations/ko/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# 교육자를 위한 안내 + +이 커리큘럼을 교실에서 사용하고 싶으신가요? 자유롭게 사용하세요! + +사실, GitHub Classroom을 사용하여 GitHub 내에서 직접 사용할 수 있습니다. + +이를 위해 이 저장소를 포크하세요. 각 수업마다 저장소를 만들어야 하므로, 각 폴더를 별도의 저장소로 추출해야 합니다. 이렇게 하면 [GitHub Classroom](https://classroom.github.com/classrooms)이 각 수업을 개별적으로 인식할 수 있습니다. + +이 [전체 지침](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/)을 통해 교실을 설정하는 방법에 대한 아이디어를 얻을 수 있습니다. + +## 현재 상태로 저장소 사용하기 + +현재 상태로 이 저장소를 사용하고 싶으시다면, GitHub Classroom을 사용하지 않고도 가능합니다. 학생들과 어떤 수업을 함께 진행할지 소통해야 합니다. + +온라인 형식(Zoom, Teams 등)에서는 퀴즈를 위한 분임 토의 방을 만들고, 학생들이 학습 준비를 할 수 있도록 멘토링할 수 있습니다. 그런 다음 학생들에게 퀴즈를 풀고 특정 시간에 '이슈'로 답안을 제출하도록 초대할 수 있습니다. 과제를 원활하게 진행하고 싶다면, 학생들이 공개적으로 협력할 수 있도록 동일한 방식으로 진행할 수 있습니다. + +좀 더 개인적인 형식을 원하신다면, 학생들에게 커리큘럼을 각 수업별로 자신의 GitHub 저장소에 개인 저장소로 포크하고, 당신에게 접근 권한을 주도록 요청하세요. 그러면 학생들은 퀴즈와 과제를 개인적으로 완료하고, 당신의 교실 저장소에 이슈를 통해 제출할 수 있습니다. + +온라인 교실 형식에서 이 작업을 수행할 수 있는 다양한 방법이 있습니다. 어떤 방법이 가장 잘 작동하는지 알려주세요! + +## 여러분의 의견을 들려주세요 + +우리는 이 커리큘럼이 여러분과 학생들에게 유용하게 작동하기를 원합니다. 토론 게시판에 피드백을 남겨주세요! + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/0-course-setup/how-to-run.md b/translations/ko/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..6675c529 --- /dev/null +++ b/translations/ko/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# 코드 실행 방법 + +이 커리큘럼에는 실행 가능한 예제와 실습이 많이 포함되어 있습니다. 이를 실행하기 위해서는 이 커리큘럼의 일환으로 제공되는 Jupyter Notebooks에서 Python 코드를 실행할 수 있는 능력이 필요합니다. 코드를 실행하는 방법은 여러 가지가 있습니다. + +## 컴퓨터에서 로컬로 실행하기 + +코드를 로컬 컴퓨터에서 실행하려면 Python의 어떤 버전이 설치되어 있어야 합니다. 개인적으로 **[miniconda](https://conda.io/en/latest/miniconda.html)** 설치를 추천합니다. 이는 다양한 Python **가상 환경**을 위한 `conda` 패키지 관리자를 지원하는 가벼운 설치입니다. + +miniconda를 설치한 후, 리포지토리를 클론하고 이 과정에서 사용할 가상 환경을 생성해야 합니다: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Python 확장과 함께 Visual Studio Code 사용하기 + +커리큘럼을 사용하는 가장 좋은 방법은 [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste)에서 [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste)과 함께 여는 것입니다. + +> **Note**: VS Code에서 디렉토리를 클론하고 열면 Python 확장 설치를 자동으로 제안합니다. 위에서 설명한 대로 miniconda도 설치해야 합니다. + +> **Note**: VS Code에서 리포지토리를 컨테이너에서 다시 열라는 제안을 받으면, 로컬 Python 설치를 사용하기 위해 이를 거부해야 합니다. + +### 브라우저에서 Jupyter 사용하기 + +브라우저에서 직접 Jupyter 환경을 사용할 수도 있습니다. 사실, 클래식 Jupyter와 Jupyter Hub 모두 자동 완성, 코드 하이라이팅 등으로 꽤 편리한 개발 환경을 제공합니다. + +로컬에서 Jupyter를 시작하려면, 과정 디렉토리로 이동한 후 다음을 실행하세요: + +```bash +jupyter notebook +``` +또는 +```bash +jupyterhub +``` +그 후, `.ipynb` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` 폴더로 이동하면 이 리포지토리를 위한 컨테이너를 빌드하는 방법이 안내됩니다. VS Code는 컨테이너에서 코드를 다시 열 것을 제안할 것입니다. 이 경우 Docker 설치가 필요하며, 더 복잡하므로 경험이 많은 사용자에게 추천합니다. + +## 클라우드에서 실행하기 + +로컬에 Python을 설치하고 싶지 않거나 클라우드 리소스에 접근할 수 있다면, 클라우드에서 코드를 실행하는 것이 좋은 대안이 될 수 있습니다. 이를 수행할 수 있는 여러 방법이 있습니다: + +* **[GitHub Codespaces](https://github.com/features/codespaces)**를 사용하기. GitHub에서 여러분을 위해 생성된 가상 환경으로, VS Code 브라우저 인터페이스를 통해 접근할 수 있습니다. Codespaces에 접근할 수 있다면, 리포지토리에서 **Code** 버튼을 클릭하고, 코드를 시작하여 금방 실행할 수 있습니다. +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**를 사용하기. [Binder](https://mybinder.org)는 GitHub에서 코드를 테스트할 수 있도록 제공되는 무료 컴퓨팅 리소스입니다. Binder에서 리포지토리를 열 수 있는 버튼이 홈페이지에 있으며, 이 버튼을 클릭하면 Binder 사이트로 빠르게 이동하여 기본 컨테이너를 빌드하고 Jupyter 웹 인터페이스를 원활하게 시작할 수 있습니다. + +> **Note**: 오용을 방지하기 위해 Binder는 일부 웹 리소스에 대한 접근을 차단하고 있습니다. 이로 인해 공용 인터넷에서 모델 및/또는 데이터 세트를 가져오는 일부 코드가 작동하지 않을 수 있습니다. 우회 방법을 찾아야 할 수도 있습니다. 또한, Binder에서 제공하는 컴퓨팅 리소스는 기본적이므로, 특히 후반부의 더 복잡한 수업에서는 훈련 속도가 느릴 수 있습니다. + +## GPU와 함께 클라우드에서 실행하기 + +이 커리큘럼의 일부 후반부 수업은 GPU 지원이 큰 도움이 될 것입니다. 그렇지 않으면 훈련 속도가 매우 느려질 것입니다. 특히 [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste)나 귀하의 기관을 통해 클라우드에 접근할 수 있다면, 다음과 같은 몇 가지 옵션을 따라할 수 있습니다: + +* [데이터 과학 가상 머신](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste)을 생성하고 Jupyter를 통해 연결합니다. 그러면 리포지토리를 머신에 바로 클론하고 학습을 시작할 수 있습니다. NC 시리즈 VM은 GPU 지원을 제공합니다. + +> **Note**: Azure for Students를 포함한 일부 구독은 기본적으로 GPU 지원을 제공하지 않습니다. 기술 지원 요청을 통해 추가 GPU 코어를 요청해야 할 수도 있습니다. + +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste)를 생성한 후, 그곳의 Notebook 기능을 사용합니다. [이 비디오](https://azure-for-academics.github.io/quickstart/azureml-papers/)는 Azure ML 노트북에 리포지토리를 클론하고 사용하는 방법을 보여줍니다. + +또한 Google Colab을 사용할 수도 있으며, 여기에는 무료 GPU 지원이 제공되며 Jupyter Notebooks를 업로드하여 차례로 실행할 수 있습니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/0-course-setup/setup.md b/translations/ko/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..28f91dfd --- /dev/null +++ b/translations/ko/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# 이 커리큘럼 시작하기 + +## 학생이신가요? + +다음 자료를 통해 시작해 보세요: + +* [학생 허브 페이지](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) 이 페이지에서는 초급 자료, 학생 패키지, 무료 인증 바우처를 얻는 방법 등을 찾을 수 있습니다. 이 페이지는 북마크해 두고 가끔씩 확인할 만한 가치가 있습니다. 매달 최소한 한 번은 콘텐츠가 교체되기 때문입니다. +* [Microsoft 학생 학습 앰배서더](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) 전 세계 학생 앰배서더 커뮤니티에 가입하세요. 이는 Microsoft에 들어가는 길이 될 수 있습니다. + +**학생 여러분**, 커리큘럼을 활용하는 방법은 몇 가지가 있습니다. 우선, 텍스트를 읽고 GitHub에서 코드를 직접 살펴볼 수 있습니다. 노트북 중 하나에서 코드를 실행하고 싶다면 - [우리의 지침을 읽어보세요](./etc/how-to-run.md), 그리고 [이 블로그 게시물에서](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) 실행 방법에 대한 더 많은 조언을 찾을 수 있습니다. + +> **참고**: [이 커리큘럼에서 코드를 실행하는 방법에 대한 지침](/how-to-run.md) + +## 자기 주도 학습 + +하지만, 이 과정을 자기 주도 학습 프로젝트로 진행하고 싶다면, 전체 리포를 자신의 GitHub 계정으로 포크하고 혼자 또는 그룹과 함께 연습 문제를 완료하는 것을 추천합니다: + +* 강의 전 퀴즈로 시작하세요. +* 강의의 소개 텍스트를 읽어보세요. +* 강의에 추가 노트북이 있다면, 이를 읽고 코드를 실행해 보세요. TensorFlow와 PyTorch 노트북이 모두 제공된다면, 하나에 집중하세요 - 좋아하는 프레임워크를 선택하세요. +* 노트북에는 코드를 약간 수정하여 실험해야 하는 도전 과제가 포함되어 있는 경우가 많습니다. +* 강의 후 퀴즈를 진행하세요. +* 모듈에 실습이 첨부되어 있다면 - 과제를 완료하세요. +* [토론 게시판](https://github.com/microsoft/AI-For-Beginners/discussions)을 방문하여 "소리 내어 배우기"를 해보세요. + +> 추가 학습을 위해, 다음 [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) 모듈과 학습 경로를 따르는 것을 추천합니다. + +**교사 여러분**, 이 커리큘럼을 활용하는 방법에 대한 [몇 가지 제안](/for-teachers.md)을 포함했습니다. + +--- + +## 교육학 + +이 커리큘럼을 구축하면서 두 가지 교육 원칙을 선택했습니다: 실습 기반 **프로젝트 중심**과 **빈번한 퀴즈 포함**입니다. + +콘텐츠가 프로젝트와 일치하도록 보장함으로써, 학생들이 더 몰입할 수 있게 하고 개념의 유지가 강화됩니다. 또한, 수업 전에 낮은 난이도의 퀴즈를 진행하면 학생이 주제 학습에 대한 의도를 설정할 수 있으며, 수업 후 두 번째 퀴즈는 추가적인 유지 효과를 보장합니다. 이 커리큘럼은 유연하고 재미있게 설계되었으며, 전체 또는 부분적으로 수강할 수 있습니다. 프로젝트는 작게 시작하여 12주 사이클이 끝날 때까지 점점 복잡해집니다. + +> **퀴즈에 대한 주의 사항**: 모든 퀴즈는 [이 앱](https://red-field-0a6ddfd03.1.azurestaticapps.net/)에 포함되어 있으며, 총 50개의 퀴즈가 각각 세 문제로 구성되어 있습니다. 퀴즈는 강의 내에서 링크되어 있지만, 퀴즈 앱은 로컬에서도 실행할 수 있습니다. `etc/quiz-app` 폴더의 지침을 따르세요. + +## 오프라인 접근 + +[Docsify](https://docsify.js.org/#/)를 사용하여 이 문서를 오프라인에서 실행할 수 있습니다. 이 리포를 포크하고, [Docsify를 설치](https://docsify.js.org/#/quickstart)한 후, 이 리포의 `etc/docsify` 폴더에서 `docsify serve`를 입력하세요. 웹사이트는 로컬호스트의 포트 3000에서 제공됩니다: `localhost:3000`. 커리큘럼의 PDF는 [이 링크](../../../../../../etc/pdf/readme.pdf)에서 확인할 수 있습니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 있을 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못된 해석에 대해 저희는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/1-Intro/README.md b/translations/ko/lessons/1-Intro/README.md new file mode 100644 index 00000000..2ef258f2 --- /dev/null +++ b/translations/ko/lessons/1-Intro/README.md @@ -0,0 +1,56 @@ +> 이미지 제공: [Dmitry Soshnikov](http://soshnikov.com) + +시간이 지나면서 컴퓨팅 자원이 저렴해지고 더 많은 데이터가 제공됨에 따라, 신경망 접근 방식은 컴퓨터 비전이나 음성 인식과 같은 여러 분야에서 인간과 경쟁하는 뛰어난 성능을 보여주기 시작했습니다. 지난 10년 동안, 인공지능이라는 용어는 주로 신경망의 동의어로 사용되었으며, 우리가 듣는 대부분의 인공지능 성공 사례는 신경망에 기반하고 있습니다. + +체스 프로그램을 만드는 접근 방식이 어떻게 변화했는지 관찰할 수 있습니다: + +* 초기 체스 프로그램은 탐색 기반으로, 프로그램이 주어진 수의 다음 수에 대해 상대방의 가능한 수를 추정하려고 명시적으로 시도하고, 몇 수 내에 달성할 수 있는 최적의 위치를 바탕으로 최적의 수를 선택했습니다. 이로 인해 [알파-베타 가지치기](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) 탐색 알고리즘이 개발되었습니다. +* 탐색 전략은 게임이 끝날 무렵, 가능한 수가 적은 경우에 잘 작동합니다. 그러나 게임 시작 시 탐색 공간은 방대하며, 알고리즘은 인간 플레이어 간의 기존 경기에서 학습하여 개선할 수 있습니다. 이후 실험에서는 [사례 기반 추론](https://en.wikipedia.org/wiki/Case-based_reasoning)을 사용하여 프로그램이 현재 게임의 위치와 매우 유사한 사례를 지식 기반에서 찾도록 했습니다. +* 현대 프로그램은 신경망과 [강화 학습](https://en.wikipedia.org/wiki/Reinforcement_learning)을 기반으로 하며, 프로그램은 스스로와 오랜 시간 동안 대국을 하며 자신의 실수로부터 학습합니다. 이는 인간이 체스를 배우는 방식과 유사합니다. 그러나 컴퓨터 프로그램은 훨씬 더 많은 게임을 짧은 시간에 플레이할 수 있으므로 훨씬 더 빠르게 학습할 수 있습니다. + +✅ AI가 플레이한 다른 게임에 대해 조금 조사해 보세요. + +유사하게, "대화 프로그램"을 만드는 접근 방식이 어떻게 변화했는지 볼 수 있습니다(튜링 테스트를 통과할 수 있는 프로그램): + +* 초기 프로그램인 [엘리자](https://en.wikipedia.org/wiki/ELIZA)와 같은 프로그램은 매우 간단한 문법 규칙과 입력 문장을 질문으로 재구성하는 방식에 기반했습니다. +* 현대의 어시스턴트인 Cortana, Siri, Google Assistant는 모두 음성을 텍스트로 변환하고 우리의 의도를 인식하기 위해 신경망을 사용하며, 필요한 작업을 수행하기 위해 일부 추론이나 명시적 알고리즘을 사용합니다. +* 앞으로는 완전한 신경망 기반 모델이 스스로 대화를 처리할 것으로 예상됩니다. 최근의 GPT 및 [Turing-NLG](https://turing.microsoft.com/) 신경망 가족은 이 분야에서 큰 성공을 보여주고 있습니다. + +> 이미지 제공: Dmitry Soshnikov, [사진](https://unsplash.com/photos/r8LmVbUKgns) 제공: [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## 최근 AI 연구 + +신경망 연구의 최근 큰 성장은 2010년경에 시작되었으며, 대규모 공개 데이터 세트가 제공되기 시작했습니다. 약 1400만 개의 주석이 달린 이미지로 구성된 [ImageNet](https://en.wikipedia.org/wiki/ImageNet)이라는 방대한 이미지 컬렉션은 [ImageNet 대규모 시각 인식 챌린지](https://image-net.org/challenges/LSVRC/)의 출발점이 되었습니다. + +![ILSVRC 정확도](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> 이미지 제공: [Dmitry Soshnikov](http://soshnikov.com) +2012년, [합성곱 신경망](../4-ComputerVision/07-ConvNets/README.md)이 이미지 분류에 처음 사용되었으며, 이로 인해 분류 오류가 크게 감소했습니다(거의 30%에서 16.4%로). 2015년, Microsoft Research의 ResNet 아키텍처가 [인간 수준의 정확도](https://doi.org/10.1109/ICCV.2015.123)를 달성했습니다. + +그 이후로, 신경망은 많은 작업에서 매우 성공적인 성과를 보여주었습니다: + +--- + +연도 | 인간 수준의 성과 +-----|-------- +2015 | [이미지 분류](https://doi.org/10.1109/ICCV.2015.123) +2016 | [대화형 음성 인식](https://arxiv.org/abs/1610.05256) +2018 | [자동 기계 번역](https://arxiv.org/abs/1803.05567) (중국어-영어) +2020 | [이미지 캡셔닝](https://arxiv.org/abs/2009.13682) + +지난 몇 년 동안 우리는 BERT와 GPT-3와 같은 대형 언어 모델에서 엄청난 성공을 목격했습니다. 이는 모델이 텍스트의 구조와 의미를 포착할 수 있도록 훈련할 수 있는 많은 일반 텍스트 데이터가 존재하기 때문입니다. 일반 텍스트 컬렉션에서 사전 훈련을 한 후, 이러한 모델을 보다 구체적인 작업에 맞게 특화할 수 있습니다. 이 과정에서 [자연어 처리](../5-NLP/README.md)에 대해 더 배우게 될 것입니다. + +## 🚀 도전 과제 + +인터넷을 탐색하여 AI가 가장 효과적으로 사용되는 곳이 어디인지 여러분의 의견을 결정해 보세요. 지도 앱, 음성 인식 서비스, 아니면 비디오 게임일까요? 시스템이 어떻게 구축되었는지 조사해 보세요. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## 복습 및 자기 학습 + +[이 수업](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML)을 읽어보며 AI와 ML의 역사를 복습해 보세요. 그 수업이나 이 수업의 스케치 노트에서 요소 하나를 선택하여 그 진화에 영향을 미친 문화적 맥락을 이해하기 위해 더 깊이 연구해 보세요. + +**과제**: [게임 잼](assignment.md) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 있을 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/1-Intro/assignment.md b/translations/ko/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..9f5efd41 --- /dev/null +++ b/translations/ko/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# 게임 잼 + +게임은 AI와 ML의 발전에 큰 영향을 받은 분야입니다. 이번 과제에서는 AI의 진화에 영향을 받은 좋아하는 게임에 대한 짧은 논문을 작성하세요. 여러 종류의 컴퓨터 처리 시스템에 영향을 받을 만큼 충분히 오래된 게임이어야 합니다. 좋은 예로는 체스나 바둑이 있지만, 폰그(pong)나 팩맨(Pac-Man)과 같은 비디오 게임도 살펴보세요. 게임의 과거, 현재 및 AI의 미래에 대해 논의하는 에세이를 작성하세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/2-Symbolic/README.md b/translations/ko/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..d2df6a32 --- /dev/null +++ b/translations/ko/lessons/2-Symbolic/README.md @@ -0,0 +1,205 @@ +# 지식 표현 및 전문가 시스템 + +![상징적 AI 내용 요약](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ko.png) + +> 스케치노트 by [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)에서, Longlivetheux - 본인 작업, CC BY-SA 4.0* + +따라서 **지식 표현**의 문제는 데이터를 통해 컴퓨터 내에서 지식을 효과적으로 표현할 수 있는 방법을 찾는 것입니다. 이는 스펙트럼으로 볼 수 있습니다: + +![지식 표현 스펙트럼](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ko.png) + +> 이미지 by [Dmitry Soshnikov](http://soshnikov.com) + +* 왼쪽에는 컴퓨터가 효과적으로 사용할 수 있는 매우 간단한 유형의 지식 표현이 있습니다. 가장 간단한 것은 알고리즘적 표현으로, 지식이 컴퓨터 프로그램으로 표현됩니다. 그러나 이는 지식을 표현하는 최선의 방법이 아닙니다. 왜냐하면 유연하지 않기 때문입니다. 우리의 머릿속 지식은 종종 비알고리즘적입니다. +* 오른쪽에는 자연어와 같은 표현이 있습니다. 이는 가장 강력하지만 자동 추론에 사용될 수 없습니다. + +> ✅ 당신이 머릿속에서 지식을 어떻게 표현하고 이를 노트로 변환하는지 한 번 생각해 보세요. 기억 유지에 도움이 되는 특정 형식이 있나요? + +## 컴퓨터 지식 표현 분류 + +우리는 다양한 컴퓨터 지식 표현 방법을 다음과 같은 범주로 분류할 수 있습니다: + +* **네트워크 표현**은 우리가 머릿속에 상호 연관된 개념의 네트워크를 가지고 있다는 사실에 기반합니다. 우리는 컴퓨터 내에서 그래프 형태로 동일한 네트워크를 재현하려고 할 수 있습니다 - 이를 **의미 네트워크**라고 합니다. + +1. **객체-속성-값 삼중항** 또는 **속성-값 쌍**. 그래프는 컴퓨터 내에서 노드와 엣지의 목록으로 표현될 수 있으므로, 객체, 속성 및 값을 포함하는 삼중항 목록으로 의미 네트워크를 표현할 수 있습니다. 예를 들어, 우리는 프로그래밍 언어에 대한 다음과 같은 삼중항을 구축합니다: + +객체 | 속성 | 값 +-------|-----------|------ +Python | is | Untyped-Language +Python | invented-by | Guido van Rossum +Python | block-syntax | indentation +Untyped-Language | doesn't have | type definitions + +> ✅ 삼중항이 다른 유형의 지식을 표현하는 데 어떻게 사용될 수 있는지 생각해 보세요. + +2. **계층적 표현**은 우리가 종종 머릿속에서 객체의 계층을 만든다는 사실을 강조합니다. 예를 들어, 우리는 카나리아가 새라는 것을 알고 있으며, 모든 새는 날개가 있습니다. 우리는 카나리아의 일반적인 색상과 비행 속도에 대한 아이디어도 가지고 있습니다. + + - **프레임 표현**은 각 객체 또는 객체 클래스가 **프레임**으로 표현되며, 이 프레임은 **슬롯**을 포함합니다. 슬롯은 가능한 기본값, 값 제한 또는 슬롯의 값을 얻기 위해 호출될 수 있는 저장 프로시저를 가질 수 있습니다. 모든 프레임은 객체 지향 프로그래밍 언어의 객체 계층과 유사한 계층을 형성합니다. + - **시나리오**는 시간에 따라 전개될 수 있는 복잡한 상황을 나타내는 특별한 종류의 프레임입니다. + +**Python** + +슬롯 | 값 | 기본값 | 간격 | +-----|-------|---------------|----------| +이름 | Python | | | +Is-A | Untyped-Language | | | +변수 형식 | | CamelCase | | +프로그램 길이 | | | 5-5000 lines | +블록 구문 | Indent | | | + +3. **절차적 표현**은 특정 조건이 발생할 때 실행할 수 있는 행동 목록으로 지식을 표현하는 것입니다. + - 생산 규칙은 결론을 도출할 수 있게 해주는 if-then 문입니다. 예를 들어, 의사는 환자가 고열이 있거나 혈액 검사에서 C-반응성 단백질 수치가 높으면 염증이 있다고 말하는 규칙을 가질 수 있습니다. 조건 중 하나에 직면하면 우리는 염증에 대한 결론을 내릴 수 있고, 이를 추가적인 추론에 사용할 수 있습니다. + - 알고리즘은 절차적 표현의 또 다른 형태로 간주될 수 있지만, 지식 기반 시스템에서 거의 직접 사용되지 않습니다. + +4. **논리**는 원래 아리스토텔레스에 의해 보편적인 인간 지식을 표현하는 방법으로 제안되었습니다. + - 수학 이론으로서의 술어 논리는 너무 풍부하여 계산할 수 없으므로, 일반적으로 Horn 절차와 같은 일부 하위 집합이 사용됩니다. + - 기술적 논리는 계층적 객체 분산 지식 표현을 나타내고 추론하는 데 사용되는 논리 시스템의 가족입니다. 예를 들어, *시맨틱 웹*과 같은 것입니다. + +## 전문가 시스템 + +상징적 AI의 초기 성공 중 하나는 소위 **전문가 시스템**이었습니다. 이는 특정 제한된 문제 영역에서 전문가처럼 행동하도록 설계된 컴퓨터 시스템입니다. 이들은 하나 이상의 인간 전문가로부터 추출된 **지식 베이스**를 기반으로 하며, 그 위에서 일부 추론을 수행하는 **추론 엔진**을 포함하고 있습니다. + +![인간 아키텍처](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ko.png) | ![지식 기반 시스템](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ko.png) +---------------------------------------------|------------------------------------------------ +인간 신경 시스템의 단순화된 구조 | 지식 기반 시스템의 아키텍처 + +전문가 시스템은 **단기 기억**과 **장기 기억**을 포함하는 인간의 추론 시스템처럼 구성됩니다. 유사하게, 지식 기반 시스템에서는 다음과 같은 구성 요소를 구별합니다: + +* **문제 기억**: 현재 해결되고 있는 문제에 대한 지식을 포함합니다. 즉, 환자의 체온이나 혈압, 염증 여부 등의 정보입니다. 이 지식은 **정적 지식**이라고도 불리며, 문제에 대한 현재 우리가 알고 있는 내용을 스냅샷처럼 담고 있습니다 - 즉, *문제 상태*입니다. +* **지식 베이스**: 문제 영역에 대한 장기 지식을 나타냅니다. 이는 인간 전문가로부터 수동으로 추출되며, 상담마다 변하지 않습니다. 문제 상태에서 다른 상태로 이동할 수 있게 해주기 때문에 **동적 지식**이라고도 불립니다. +* **추론 엔진**: 문제 상태 공간에서 검색 프로세스를 조정하며, 필요할 때 사용자에게 질문을 합니다. 또한 각 상태에 적용할 올바른 규칙을 찾는 역할도 합니다. + +예를 들어, 동물의 신체적 특성에 따라 동물을 결정하는 다음의 전문가 시스템을 고려해 보겠습니다: + +![AND-OR 트리](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ko.png) + +> 이미지 by [Dmitry Soshnikov](http://soshnikov.com) + +이 다이어그램은 **AND-OR 트리**라고 불리며, 생산 규칙 집합의 그래픽 표현입니다. 트리를 그리는 것은 전문가로부터 지식을 추출하는 초기 단계에서 유용합니다. 컴퓨터 내에서 지식을 표현하기 위해 규칙을 사용하는 것이 더 편리합니다: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +각 조건의 왼쪽과 규칙의 행동은 본질적으로 객체-속성-값(OAV) 삼중항입니다. **작동 기억**은 현재 해결되고 있는 문제에 해당하는 OAV 삼중항의 집합을 포함합니다. **규칙 엔진**은 조건이 만족되는 규칙을 찾아 적용하며, 작업 기억에 또 다른 삼중항을 추가합니다. + +> ✅ 당신이 좋아하는 주제에 대한 자신의 AND-OR 트리를 작성해 보세요! + +### 순방향 추론 대 역방향 추론 + +위에서 설명한 과정은 **순방향 추론**이라고 불립니다. 이는 작업 기억에 있는 문제에 대한 초기 데이터를 시작으로 하여 다음의 추론 루프를 실행합니다: + +1. 목표 속성이 작업 기억에 존재하면 - 멈추고 결과를 제공합니다. +2. 현재 조건이 만족되는 모든 규칙을 찾습니다 - **충돌 집합** 규칙을 얻습니다. +3. **충돌 해결**을 수행합니다 - 이번 단계에서 실행될 규칙 하나를 선택합니다. 충돌 해결 전략은 다음과 같을 수 있습니다: + - 지식 베이스에서 첫 번째 적용 가능한 규칙 선택 + - 무작위 규칙 선택 + - *더 구체적인* 규칙 선택, 즉 "왼쪽" (LHS)에서 가장 많은 조건을 충족하는 규칙 선택 +4. 선택한 규칙을 적용하고 문제 상태에 새로운 지식을 삽입합니다. +5. 1단계로 돌아가 반복합니다. + +그러나 경우에 따라 우리는 문제에 대한 빈 지식에서 시작하고 결론에 도달하는 데 도움이 되는 질문을 하고 싶을 수 있습니다. 예를 들어, 의료 진단을 수행할 때, 우리는 환자를 진단하기 시작하기 전에 모든 의료 분석을 미리 수행하지 않습니다. 우리는 결정을 내려야 할 때 분석을 수행하고 싶어합니다. + +이 과정은 **역방향 추론**을 사용하여 모델링할 수 있습니다. 이는 **목표** - 우리가 찾고자 하는 속성 값에 의해 주도됩니다: + +1. 목표의 값을 제공할 수 있는 모든 규칙을 선택합니다 (즉, 목표가 RHS ("오른쪽")에 있는 경우) - 충돌 집합 +1. 이 속성에 대한 규칙이 없거나 사용자가 값을 요청해야 한다는 규칙이 있다면 - 요청하고, 그렇지 않으면: +1. 충돌 해결 전략을 사용하여 *가설*로 사용할 하나의 규칙을 선택합니다 - 우리는 이를 증명하려고 합니다. +1. 규칙의 LHS에 있는 모든 속성에 대해 이 과정을 반복하며, 이를 목표로 증명하려고 합니다. +1. 어느 시점에서 과정이 실패하면 - 3단계에서 다른 규칙을 사용합니다. + +> ✅ 어떤 상황에서 순방향 추론이 더 적합합니까? 역방향 추론은 어떻습니까? + +### 전문가 시스템 구현 + +전문가 시스템은 다양한 도구를 사용하여 구현할 수 있습니다: + +* 어떤 고급 프로그래밍 언어로 직접 프로그래밍하는 것. 이는 최선의 아이디어가 아닙니다. 왜냐하면 지식 기반 시스템의 주요 장점은 지식이 추론과 분리되어 있으며, 문제 영역의 전문가가 추론 과정의 세부 사항을 이해하지 않고도 규칙을 작성할 수 있어야 하기 때문입니다. +* **전문가 시스템 셸**을 사용하는 것, 즉 어떤 지식 표현 언어를 사용하여 지식으로 채워지도록 특별히 설계된 시스템입니다. + +## ✍️ 연습: 동물 추론 + +[Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb)를 참조하여 순방향 및 역방향 추론 전문가 시스템 구현의 예를 확인하세요. + +> **참고**: 이 예시는 다소 간단하며, 전문가 시스템이 어떻게 생겼는지를 보여줍니다. 이러한 시스템을 만들기 시작하면 약 200개 이상의 규칙에 도달할 때까지는 시스템에서 *지능적인* 행동을 인지할 수 없습니다. 규칙이 너무 복잡해져서 모든 것을 기억하기 어려워지며, 이 시점에서 시스템이 특정 결정을 내리는 이유에 대해 궁금해질 수 있습니다. 그러나 지식 기반 시스템의 중요한 특성은 모든 결정이 어떻게 이루어졌는지를 항상 *설명*할 수 있다는 것입니다. + +## 온톨로지 및 시맨틱 웹 + +20세기 말, 지식 표현을 사용하여 인터넷 자원을 주석 처리하여 매우 특정한 쿼리에 해당하는 자원을 찾을 수 있도록 하는 이니셔티브가 있었습니다. 이 움직임은 **시맨틱 웹**이라고 불리며, 여러 개념에 의존했습니다: + +- **[설명 논리](https://en.wikipedia.org/wiki/Description_logic)** (DL)에 기반한 특별한 지식 표현. 이는 속성을 가진 객체의 계층을 구축하는 점에서 프레임 지식 표현과 유사하지만, 공식적인 논리적 의미와 추론을 가집니다. 표현력과 추론의 알고리즘적 복잡성 간의 균형을 이루는 DL의 전체 가족이 있습니다. +- 모든 개념이 전역 URI 식별자로 표현되는 분산 지식 표현, 이는 인터넷을 가로지르는 지식 계층을 생성할 수 있게 합니다. +- 지식 설명을 위한 XML 기반 언어의 가족: RDF (자원 설명 프레임워크), RDFS (RDF 스키마), OWL (온톨로지 웹 언어). + +시맨틱 웹의 핵심 개념은 **온톨로지**입니다. 이는 공식적인 지식 표현을 사용하여 문제 영역에 대한 명시적인 사양을 의미합니다. 가장 간단한 온톨로지는 문제 영역의 객체 계층일 수 있지만, 더 복잡한 온톨로지는 추론에 사용할 수 있는 규칙을 포함할 것입니다. + +시맨틱 웹에서는 모든 표현이 삼중항을 기반으로 합니다. 각 객체와 각 관계는 URI로 고유하게 식별됩니다. 예를 들어, 이 AI 커리큘럼이 2022년 1월 1일에 Dmitry Soshnikov에 의해 개발되었다는 사실을 진술하고자 할 때, 사용할 수 있는 삼중항은 다음과 같습니다: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ 여기서 `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator`는 *창조자*와 *창조 날짜*의 개념을 표현하기 위해 잘 알려져 있고 보편적으로 수용된 URI입니다. + +더 복잡한 경우, 창조자 목록을 정의하고자 할 경우, 우리는 RDF에 정의된 일부 데이터 구조를 사용할 수 있습니다. + + + +> 위의 다이어그램은 [Dmitry Soshnikov](http://soshnikov.com)에 의해 제작되었습니다. + +시맨틱 웹 구축의 진행은 검색 엔진과 자연어 처리 기술의 성공으로 다소 지연되었습니다. 이러한 기술들은 텍스트에서 구조화된 데이터를 추출할 수 있게 해줍니다. 그러나 일부 분야에서는 여전히 온톨로지와 지식 기반을 유지하기 위한 상당한 노력이 있습니다. 주목할 만한 몇 가지 프로젝트는 다음과 같습니다: + +* [WikiData](https://wikidata.org/)는 위키피디아와 관련된 기계 읽기 가능한 지식 기반의 모음입니다. 대부분의 데이터는 위키피디아의 *정보 상자*에서 채굴된 구조화된 콘텐츠입니다. 당신은 [SPARQL](https://query.wikidata.org/)이라는 시맨틱 웹을 위한 특별한 쿼리 언어로 위키데이터를 쿼리할 수 있습니다. 여기 인간 사이에서 가장 인기 있는 눈 색깔을 표시하는 샘플 쿼리가 있습니다: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/)는 WikiData와 유사한 또 다른 노력입니다. + +> ✅ 자신의 온톨로지를 구축하거나 기존 온톨로지를 열어 + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 저희는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/2-Symbolic/assignment.md b/translations/ko/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..eb495446 --- /dev/null +++ b/translations/ko/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# 온톨로지 구축하기 + +지식 기반을 구축하는 것은 특정 주제에 대한 사실을 나타내는 모델을 분류하는 것입니다. 사람, 장소 또는 사물과 같은 주제를 선택한 후 해당 주제의 모델을 구축하세요. 이 수업에서 설명하는 몇 가지 기법과 모델 구축 전략을 활용하세요. 예를 들어, 가구, 조명 등을 포함한 거실의 온톨로지를 만드는 것이 될 수 있습니다. 거실은 주방과 어떻게 다를까요? 욕실은요? 어떻게 거실이 식당이 아닌지 알 수 있을까요? [Protégé](https://protege.stanford.edu/)를 사용하여 온톨로지를 구축하세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/ko/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..d576302c --- /dev/null +++ b/translations/ko/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,95 @@ +# 신경망 소개: 퍼셉트론 + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +현대 신경망과 유사한 것을 구현하려는 첫 번째 시도 중 하나는 1957년 코넬 항공 연구소의 프랭크 로젠블라트에 의해 이루어졌습니다. 이는 삼각형, 사각형 및 원과 같은 원시 기하학적 도형을 인식하도록 설계된 "Mark-1"이라는 하드웨어 구현이었습니다. + +| | | +|--------------|-----------| +|프랭크 로젠블라트 | Mark 1 퍼셉트론| + +> 이미지 [출처: 위키백과](https://en.wikipedia.org/wiki/Perceptron) + +입력 이미지는 20x20 포토셀 배열로 표현되었으며, 따라서 신경망은 400개의 입력과 하나의 이진 출력을 가졌습니다. 간단한 네트워크는 하나의 뉴런, 즉 **임계값 논리 장치**로 구성되었습니다. 신경망의 가중치는 훈련 단계에서 수동 조정이 필요한 전위차계처럼 작용했습니다. + +> ✅ 전위차계는 사용자가 회로의 저항을 조정할 수 있게 해주는 장치입니다. + +> 뉴욕 타임즈는 그 당시 퍼셉트론에 대해 다음과 같이 썼습니다: *[해군]이 기대하는 전자 컴퓨터의 배아로, 스스로 걷고, 말하고, 보고, 쓰고, 재생산하며, 자신의 존재를 인식할 수 있을 것으로 보인다.* + +## 퍼셉트론 모델 + +모델에 N개의 특성이 있다고 가정할 경우, 입력 벡터는 크기 N의 벡터가 됩니다. 퍼셉트론은 **이진 분류** 모델로, 즉 두 클래스의 입력 데이터를 구분할 수 있습니다. 각 입력 벡터 x에 대해 퍼셉트론의 출력은 클래스에 따라 +1 또는 -1이 될 것이라고 가정합니다. 출력은 다음 공식을 사용하여 계산됩니다: + +y(x) = f(wTx) + +여기서 f는 단계 활성화 함수입니다. + + + + +## 퍼셉트론 훈련 + +퍼셉트론을 훈련시키기 위해서는 대부분의 값을 올바르게 분류하는 가중치 벡터 w를 찾아야 합니다. 즉, 가장 작은 **오류**를 결과로 만들어야 합니다. 이 오류 E는 다음과 같은 방식으로 **퍼셉트론 기준**에 의해 정의됩니다: + +E(w) = -∑wTxiti + +여기서: + +* 잘못된 분류를 초래하는 훈련 데이터 포인트 i에 대해 합산합니다. +* xi는 입력 데이터이고, ti는 각각 음성과 양성 예제에 대해 -1 또는 +1입니다. + +이 기준은 가중치 w의 함수로 간주되며, 이를 최소화해야 합니다. 종종 **경량 하강법**이라는 방법이 사용되며, 여기서 우리는 일부 초기 가중치 w(0)로 시작하고, 각 단계에서 다음 공식을 따라 가중치를 업데이트합니다: + +w(t+1) = w(t) - η∇E(w) + +여기서 η는 이른바 **학습률**이며, ∇E(w)는 E의 **기울기**를 나타냅니다. 기울기를 계산한 후에는 다음과 같은 결과를 얻습니다: + +w(t+1) = w(t) + ∑ηxiti + +Python에서 알고리즘은 다음과 같습니다: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## 결론 + +이번 수업에서는 이진 분류 모델인 퍼셉트론에 대해 배우고, 가중치 벡터를 사용하여 이를 훈련시키는 방법을 배웠습니다. + +## 🚀 도전 과제 + +자신만의 퍼셉트론을 만들어 보고 싶다면, [Microsoft Learn의 이 실습](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste)을 시도해 보세요. 이 실습은 [Azure ML 디자이너](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste)를 사용합니다. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## 복습 및 자기 학습 + +퍼셉트론을 사용하여 장난감 문제와 실제 문제를 해결하는 방법을 보려면, [퍼셉트론](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) 노트북으로 가서 계속 학습하세요. + +퍼셉트론에 대한 흥미로운 [기사](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590)도 있습니다. + +## [과제](lab/README.md) + +이번 수업에서는 이진 분류 작업을 위한 퍼셉트론을 구현하고, 이를 사용하여 두 개의 손글씨 숫자를 분류했습니다. 이 실습에서는 주어진 이미지에 가장 적합한 숫자가 무엇인지 완전히 해결하는 문제를 해결해야 합니다. + +* [지침](lab/README.md) +* [노트북](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/ko/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..4112c39c --- /dev/null +++ b/translations/ko/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# 다중 클래스 분류와 퍼셉트론 + +[초보자를 위한 AI 커리큘럼](https://github.com/microsoft/ai-for-beginners)에서의 실습 과제입니다. + +## 과제 + +이번 수업에서 개발한 MNIST 손글씨 숫자의 이진 분류 코드를 사용하여, 모든 숫자를 인식할 수 있는 다중 클래스 분류기를 만드세요. 학습 및 테스트 데이터셋에서 분류 정확도를 계산하고, 혼동 행렬을 출력하세요. + +## 힌트 + +1. 각 숫자에 대해 "이 숫자 vs. 다른 모든 숫자"의 이진 분류기를 위한 데이터셋을 만드세요. +1. 이진 분류를 위해 10개의 서로 다른 퍼셉트론을 훈련하세요 (각 숫자마다 하나씩). +1. 입력 숫자를 분류할 함수를 정의하세요. + +> **힌트**: 10개의 퍼셉트론의 가중치를 하나의 행렬로 결합하면, 하나의 행렬 곱셈으로 모든 10개의 퍼셉트론을 입력 숫자에 적용할 수 있습니다. 가장 가능성이 높은 숫자는 `argmax` 연산을 출력에 적용하여 찾을 수 있습니다. + +## 노트북 시작하기 + +[PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) 파일을 열어 실습을 시작하세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/ko/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..db5c1cb8 --- /dev/null +++ b/translations/ko/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# 신경망 소개: 다층 퍼셉트론 + +이전 섹션에서는 가장 간단한 신경망 모델인 단층 퍼셉트론, 즉 선형 이진 분류 모델에 대해 배웠습니다. + +이번 섹션에서는 이 모델을 보다 유연한 프레임워크로 확장하여 다음과 같은 작업을 수행할 수 있도록 합니다: + +* 이진 분류 외에 **다중 클래스 분류** 수행 +* 분류 외에 **회귀 문제** 해결 +* 선형적으로 분리할 수 없는 클래스 분리 + +또한, 다양한 신경망 아키텍처를 구성할 수 있는 자체 모듈형 프레임워크를 Python으로 개발할 것입니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## 머신러닝의 정형화 + +머신러닝 문제를 정형화하는 것부터 시작해 보겠습니다. 훈련 데이터셋 **X**와 레이블 **Y**가 있다고 가정하고, 가장 정확한 예측을 할 수 있는 모델 *f*를 구축해야 합니다. 예측의 품질은 **손실 함수** ℒ로 측정됩니다. 다음의 손실 함수들이 자주 사용됩니다: + +* 회귀 문제의 경우, 숫자를 예측해야 할 때는 **절대 오차** ∑i|f(x(i))-y(i)| 또는 **제곱 오차** ∑i(f(x(i))-y(i))2를 사용할 수 있습니다. +* 분류의 경우, **0-1 손실** (모델의 **정확도**와 본질적으로 동일) 또는 **로지스틱 손실**을 사용합니다. + +단층 퍼셉트론의 경우, 함수 *f*는 선형 함수 *f(x)=wx+b*로 정의되었습니다 (여기서 *w*는 가중치 행렬, *x*는 입력 특성의 벡터, *b*는 바이어스 벡터입니다). 다양한 신경망 아키텍처의 경우, 이 함수는 더 복잡한 형태를 취할 수 있습니다. + +> 분류의 경우, 네트워크 출력으로 해당 클래스의 확률을 얻는 것이 종종 바람직합니다. 임의의 숫자를 확률로 변환하기 위해 (예: 출력을 정규화하기 위해) 우리는 종종 **소프트맥스** 함수 σ를 사용하며, 함수 *f*는 *f(x)=σ(wx+b)*로 변환됩니다. + +위의 *f* 정의에서 *w*와 *b*는 **매개변수** θ=⟨*w,b*⟩라고 불립니다. 데이터셋 ⟨**X**,**Y**⟩가 주어지면, 우리는 매개변수 θ의 함수로 전체 데이터셋에 대한 전체 오류를 계산할 수 있습니다. + +> ✅ **신경망 훈련의 목표는 매개변수 θ를 변화시켜 오류를 최소화하는 것입니다.** + +## 경량 경량화 최적화 + +함수 최적화에 대한 잘 알려진 방법이 **경량 경량화**입니다. 아이디어는 손실 함수에 대한 매개변수의 도함수(다차원 경우 **기울기**)를 계산하고, 오류가 감소하도록 매개변수를 변화시키는 것입니다. 이는 다음과 같이 정형화할 수 있습니다: + +* 매개변수를 무작위 값 w(0), b(0)로 초기화합니다. +* 다음 단계를 여러 번 반복합니다: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +훈련 중에 최적화 단계는 전체 데이터셋을 고려하여 계산되어야 합니다 (손실은 모든 훈련 샘플을 통해 합산하여 계산된다는 점을 기억하세요). 그러나 실제로 우리는 **미니배치**라고 불리는 데이터셋의 작은 부분을 가져와 데이터의 하위 집합을 기반으로 기울기를 계산합니다. 매번 하위 집합이 무작위로 선택되기 때문에, 이러한 방법을 **확률적 경량 경량화** (SGD)라고 부릅니다. + +## 다층 퍼셉트론과 역전파 + +위에서 본 단층 네트워크는 선형적으로 분리 가능한 클래스를 분류할 수 있습니다. 보다 풍부한 모델을 구축하기 위해 네트워크의 여러 층을 결합할 수 있습니다. 수학적으로 이는 함수 *f*가 더 복잡한 형태를 가지며 여러 단계로 계산된다는 것을 의미합니다: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +여기서, α는 **비선형 활성화 함수**, σ는 소프트맥스 함수이며, 매개변수 θ=<*w1,b1,w2,b2*>입니다. + +경량 경량화 알고리즘은 동일하게 유지되지만, 기울기를 계산하는 것이 더 어려워질 것입니다. 연쇄 미분 법칙을 고려하면 다음과 같이 도함수를 계산할 수 있습니다: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ 연쇄 미분 법칙은 손실 함수의 도함수를 매개변수에 대해 계산하는 데 사용됩니다. + +모든 표현의 가장 왼쪽 부분이 동일하므로, 우리는 손실 함수에서 시작하여 계산 그래프를 "역방향"으로 따라가며 도함수를 효과적으로 계산할 수 있습니다. 따라서 다층 퍼셉트론 훈련 방법을 **역전파** 또는 '백프롭'이라고 부릅니다. + +compute graph + +> TODO: 이미지 출처 + +> ✅ 우리는 노트북 예제에서 역전파를 훨씬 더 자세히 다룰 것입니다. + +## 결론 + +이번 수업에서는 자체 신경망 라이브러리를 구축하고, 이를 사용하여 간단한 2차원 분류 작업을 수행했습니다. + +## 🚀 도전 과제 + +동봉된 노트북에서 다층 퍼셉트론을 구축하고 훈련하기 위한 자체 프레임워크를 구현할 것입니다. 현대 신경망이 어떻게 작동하는지 자세히 살펴볼 수 있습니다. + +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) 노트북으로 진행하여 작업을 수행하세요. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## 복습 및 자기 학습 + +역전파는 AI와 ML에서 사용되는 일반적인 알고리즘으로, [자세히 공부할 가치가 있습니다](https://wikipedia.org/wiki/Backpropagation). + +## [과제](lab/README.md) + +이번 실습에서는 이번 수업에서 구축한 프레임워크를 사용하여 MNIST 손글씨 숫자 분류 문제를 해결해야 합니다. + +* [지침](lab/README.md) +* [노트북](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/ko/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..e8fa899b --- /dev/null +++ b/translations/ko/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# 우리 프레임워크를 이용한 MNIST 분류 + +[초보자를 위한 AI 커리큘럼](https://github.com/microsoft/ai-for-beginners)에서의 실습 과제입니다. + +## 과제 + +1-, 2-, 3층 퍼셉트론을 사용하여 MNIST 손글씨 숫자 분류 문제를 해결하세요. 수업에서 개발한 신경망 프레임워크를 사용하십시오. + +## 노트북 시작하기 + +[MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb)를 열어 실습을 시작하세요. + +## 질문들 + +이번 실습의 결과로 다음 질문에 답해 보세요: + +- 층 간 활성화 함수가 네트워크 성능에 영향을 미치나요? +- 이 작업을 위해 2층 또는 3층 네트워크가 필요한가요? +- 네트워크 훈련 중에 어떤 문제를 경험했나요? 특히 층 수가 증가할 때. +- 훈련 중 네트워크의 가중치는 어떻게 변하나요? 가중치의 최대 절대값과 에포크를 그래프로 그려 관계를 이해할 수 있습니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/ko/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..10f1db5b --- /dev/null +++ b/translations/ko/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# 신경망 프레임워크 + +우리가 이미 배운 바와 같이, 신경망을 효율적으로 학습시키기 위해서는 두 가지를 해야 합니다: + +* 텐서에서 연산을 수행해야 합니다. 예를 들어, 곱셈, 덧셈, 그리고 시그모이드나 소프트맥스와 같은 함수 계산을 해야 합니다. +* 경량화 최적화를 수행하기 위해 모든 표현의 기울기를 계산해야 합니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +`numpy` 라이브러리는 첫 번째 작업을 수행할 수 있지만, 기울기를 계산하기 위한 메커니즘이 필요합니다. 우리가 이전 섹션에서 개발한 [우리의 프레임워크](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb)에서는 `backward` 메서드 내부에 모든 미분 함수를 수동으로 프로그래밍해야 했습니다. 이는 역전파를 수행합니다. 이상적으로는, 프레임워크가 우리가 정의할 수 있는 *모든 표현*의 기울기를 계산할 수 있는 기회를 제공해야 합니다. + +또한 중요한 것은 GPU나 [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit)와 같은 다른 전문 계산 장치에서 계산을 수행할 수 있어야 한다는 것입니다. 심층 신경망 학습은 *많은* 계산을 요구하며, 이러한 계산을 GPU에서 병렬화할 수 있는 것이 매우 중요합니다. + +> ✅ '병렬화'라는 용어는 여러 장치에 계산을 분산하는 것을 의미합니다. + +현재 가장 인기 있는 두 가지 신경망 프레임워크는 [TensorFlow](http://TensorFlow.org)와 [PyTorch](https://pytorch.org/)입니다. 두 프레임워크 모두 CPU와 GPU에서 텐서를 다루기 위한 저수준 API를 제공합니다. 저수준 API 위에는 각각 [Keras](https://keras.io/)와 [PyTorch Lightning](https://pytorchlightning.ai/)이라는 고수준 API도 있습니다. + +저수준 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`로 표시)을 근사하는 문제입니다: + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ko.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ko.jpg) +-------------------------|-------------------------- +**선형 모델, 2개의 매개변수** | **비선형 모델, 7개의 매개변수** +훈련 오류 = 5.3 | 훈련 오류 = 0 +검증 오류 = 5.1 | 검증 오류 = 20 + +* 왼쪽에서는 좋은 직선 근사를 볼 수 있습니다. 매개변수의 수가 적절하기 때문에, 모델은 점 분포의 아이디어를 올바르게 이해합니다. +* 오른쪽에서는 모델이 너무 강력합니다. 점이 5개뿐인데 모델이 7개의 매개변수를 가지고 있어 모든 점을 통과하도록 조정할 수 있습니다. 이로 인해 훈련 오류는 0이 됩니다. 그러나 이는 모델이 데이터 뒤에 있는 올바른 패턴을 이해하지 못하게 하여 검증 오류가 매우 높아집니다. + +모델의 풍부함(매개변수의 수)과 훈련 샘플의 수 사이에서 올바른 균형을 찾는 것이 매우 중요합니다. + +## 과적합이 발생하는 이유 + +* 훈련 데이터가 충분하지 않음 +* 모델이 너무 강력함 +* 입력 데이터에 노이즈가 너무 많음 + +## 과적합을 감지하는 방법 + +위 그래프에서 볼 수 있듯이, 과적합은 매우 낮은 훈련 오류와 높은 검증 오류로 감지할 수 있습니다. 일반적으로 훈련 중에는 훈련 오류와 검증 오류가 모두 감소하기 시작하며, 그 후 어느 시점에서 검증 오류가 더 이상 감소하지 않고 증가하기 시작할 수 있습니다. 이는 과적합의 신호이며, 이 시점에서 훈련을 중단해야 할지도 모른다는 지표입니다(또는 최소한 모델의 스냅샷을 만들어야 합니다). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ko.png) + +## 과적합을 방지하는 방법 + +과적합이 발생하는 것을 볼 수 있다면, 다음 중 하나를 수행할 수 있습니다: + +* 훈련 데이터의 양을 늘리기 +* 모델의 복잡성 줄이기 +* [정규화 기법](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) 사용하기, 예를 들어 [드롭아웃](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout)과 같은 기법을 나중에 고려할 것입니다. + +## 과적합과 편향-분산 균형 + +과적합은 통계에서 더 일반적인 문제인 [편향-분산 균형](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff)의 경우입니다. 모델의 가능한 오류 원인을 고려하면 두 가지 유형의 오류를 볼 수 있습니다: + +* **편향 오류**는 알고리즘이 훈련 데이터 간의 관계를 올바르게 포착하지 못해서 발생합니다. 이는 모델이 충분히 강력하지 않기 때문에 발생할 수 있습니다 (**과소적합**). +* **분산 오류**는 모델이 입력 데이터의 노이즈를 근사화하는 대신 의미 있는 관계를 포착하는 데서 발생합니다 (**과적합**). + +훈련 중에는 편향 오류가 감소하고(모델이 데이터를 근사화하는 방법을 학습하면서), 분산 오류는 증가합니다. 과적합을 방지하기 위해 훈련을 중단하는 것이 중요합니다 - 수동으로(과적합을 감지할 때) 또는 자동으로(정규화를 도입하여) 중단할 수 있습니다. + +## 결론 + +이번 수업에서는 TensorFlow와 PyTorch라는 두 가지 가장 인기 있는 AI 프레임워크에 대한 다양한 API의 차이점에 대해 배웠습니다. 또한 매우 중요한 주제인 과적합에 대해서도 배웠습니다. + +## 🚀 도전 + +동반 노트북에서 하단에 '작업'을 찾을 수 있습니다; 노트북을 통해 작업을 완료하세요. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## 복습 및 자가 학습 + +다음 주제에 대해 연구해 보세요: + +- TensorFlow +- PyTorch +- 과적합 + +다음 질문을 스스로에게 해보세요: + +- TensorFlow와 PyTorch의 차이점은 무엇인가요? +- 과적합과 과소적합의 차이점은 무엇인가요? + +## [과제](lab/README.md) + +이번 실습에서는 PyTorch 또는 TensorFlow를 사용하여 단일 및 다층 완전 연결 네트워크를 이용한 두 가지 분류 문제를 해결해야 합니다. + +* [지침](lab/README.md) +* [노트북](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/ko/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..f32d0764 --- /dev/null +++ b/translations/ko/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# PyTorch/TensorFlow를 이용한 분류 + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)에서의 실습 과제입니다. + +## 과제 + +PyTorch 또는 TensorFlow를 사용하여 단일 및 다층 완전 연결 네트워크를 이용해 두 가지 분류 문제를 해결하세요: + +1. **[아이리스 분류](https://en.wikipedia.org/wiki/Iris_flower_data_set)** 문제 - 고전적인 기계 학습으로 처리할 수 있는 표 형식의 입력 데이터를 가진 문제의 예입니다. 목표는 4개의 수치 매개변수를 기반으로 아이리스를 3개의 클래스 중 하나로 분류하는 것입니다. +2. **MNIST** 손글씨 숫자 분류 문제로, 이전에 다룬 적이 있습니다. + +최고의 정확도를 달성하기 위해 다양한 네트워크 아키텍처를 시도해 보세요. + +## 노트북 시작하기 + +[LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb)를 열어 실습을 시작하세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 원어로 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/3-NeuralNetworks/README.md b/translations/ko/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..524653d1 --- /dev/null +++ b/translations/ko/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# 신경망 소개 + +![신경망 소개 내용 요약 그림](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ko.png) + +우리가 소개에서 논의한 바와 같이, 지능을 달성하는 방법 중 하나는 **컴퓨터 모델** 또는 **인공 두뇌**를 훈련시키는 것입니다. 20세기 중반 이후로 연구자들은 다양한 수학적 모델을 시도했으며, 최근 몇 년 동안 이 방향이 크게 성공적임을 입증했습니다. 뇌의 이러한 수학적 모델을 **신경망**이라고 부릅니다. + +> 때때로 신경망은 *인공 신경망*(Artificial Neural Networks), 즉 ANN이라고 불리며, 이는 우리가 실제 뉴런의 네트워크가 아닌 모델에 대해 이야기하고 있음을 나타냅니다. + +## 기계 학습 + +신경망은 **기계 학습**이라는 더 큰 분야의 일부로, 그 목표는 데이터를 사용하여 문제를 해결할 수 있는 컴퓨터 모델을 훈련시키는 것입니다. 기계 학습은 인공지능의 큰 부분을 구성하지만, 이 커리큘럼에서는 전통적인 기계 학습을 다루지 않습니다. + +> 전통적인 기계 학습에 대해 더 배우고 싶다면 **[초보자를 위한 기계 학습](http://github.com/microsoft/ml-for-beginners)** 커리큘럼을 방문하세요. + +기계 학습에서는 우리가 **X**라는 예제 데이터셋과 해당하는 출력 값 **Y**를 가지고 있다고 가정합니다. 예제는 종종 **특징**으로 구성된 N차원 벡터이며, 출력은 **레이블**이라고 불립니다. + +우리는 가장 일반적인 두 가지 기계 학습 문제를 고려할 것입니다: + +* **분류(Classification)**: 입력 객체를 두 개 이상의 클래스 중 하나로 분류해야 합니다. +* **회귀(Regression)**: 각 입력 샘플에 대해 숫자를 예측해야 합니다. + +> 입력과 출력을 텐서로 표현할 때, 입력 데이터셋은 M×N 크기의 행렬이며, 여기서 M은 샘플 수, N은 특징 수입니다. 출력 레이블 Y는 M 크기의 벡터입니다. + +이번 커리큘럼에서는 신경망 모델에만 집중할 것입니다. + +## 뉴런 모델 + +생물학적으로 우리의 뇌는 여러 개의 "입력"(축삭)과 하나의 출력(수상돌기)을 가진 신경 세포로 구성되어 있습니다. 축삭과 수상돌기는 전기 신호를 전달할 수 있으며, 축삭과 수상돌기 사이의 연결은 다양한 전도도를 나타낼 수 있습니다(신경 매개체에 의해 조절됨). + +![뉴런 모델](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ko.jpg) | ![뉴런 모델](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ko.png) +----|---- +실제 뉴런 *([이미지](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) 출처: 위키백과)* | 인공 뉴런 *(작가의 이미지)* + +따라서 가장 간단한 뉴런의 수학적 모델은 여러 개의 입력 X1, ..., XN과 출력 Y, 그리고 일련의 가중치 W1, ..., WN을 포함합니다. 출력은 다음과 같이 계산됩니다: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +여기서 f는 어떤 비선형 **활성화 함수**입니다. + +> 뉴런의 초기 모델은 1943년 Warren McCullock과 Walter Pitts의 고전적인 논문 [신경 활동에 내재된 아이디어의 논리적 계산](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf)에서 설명되었습니다. Donald Hebb는 그의 저서 "[행동의 조직: 신경심리학적 이론](https://books.google.com/books?id=VNetYrB8EBoC)"에서 이러한 네트워크가 훈련될 수 있는 방법을 제안했습니다. + +## 이 섹션에서 + +이 섹션에서는 다음에 대해 배울 것입니다: +* [퍼셉트론](03-Perceptron/README.md), 두 클래스 분류를 위한 가장 초기의 신경망 모델 중 하나 +* [다층 네트워크](04-OwnFramework/README.md) 및 [자체 프레임워크 구축 방법](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb)과 관련된 노트북 +* [신경망 프레임워크](05-Frameworks/README.md), 이 노트북들: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb)와 [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [과적합](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어에서 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/ko/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..e53b1b0d --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# 컴퓨터 비전 소개 + +[컴퓨터 비전](https://wikipedia.org/wiki/Computer_vision)은 컴퓨터가 디지털 이미지를 높은 수준으로 이해할 수 있도록 하는 학문입니다. 이는 꽤 넓은 정의로, *이해*는 사진에서 물체 찾기(**물체 탐지**), 발생하는 사건 이해(**이벤트 탐지**), 사진을 텍스트로 설명하기, 또는 3D 장면 재구성 등 다양한 의미를 가질 수 있습니다. 사람의 이미지와 관련된 특별한 작업도 있으며, 여기에는 나이 및 감정 추정, 얼굴 탐지 및 식별, 3D 포즈 추정 등이 포함됩니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +컴퓨터 비전의 가장 간단한 작업 중 하나는 **이미지 분류**입니다. + +컴퓨터 비전은 종종 AI의 한 분야로 간주됩니다. 현재 대부분의 컴퓨터 비전 작업은 신경망을 사용하여 해결됩니다. 이 섹션에서는 컴퓨터 비전에서 사용되는 특별한 유형의 신경망인 [합성곱 신경망](../07-ConvNets/README.md)에 대해 더 배울 것입니다. + +그러나 이미지를 신경망에 전달하기 전에, 많은 경우 이미지를 향상시키기 위해 몇 가지 알고리즘 기술을 사용하는 것이 의미가 있습니다. + +이미지 처리에 사용할 수 있는 여러 Python 라이브러리가 있습니다: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)**는 다양한 이미지 형식을 읽고 쓸 수 있습니다. 또한 비디오 프레임을 이미지로 변환하는 유용한 도구인 ffmpeg를 지원합니다. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (PIL로도 알려져 있음)은 좀 더 강력하며, 변형, 팔레트 조정 등과 같은 일부 이미지 조작도 지원합니다. +* **[OpenCV](https://opencv.org/)**는 C++로 작성된 강력한 이미지 처리 라이브러리로, 이미지 처리의 *de facto* 표준이 되었습니다. 편리한 Python 인터페이스를 제공합니다. +* **[dlib](http://dlib.net/)**는 많은 기계 학습 알고리즘을 구현한 C++ 라이브러리로, 컴퓨터 비전 알고리즘도 포함되어 있습니다. Python 인터페이스가 있으며, 얼굴 및 얼굴 랜드마크 탐지와 같은 도전적인 작업에 사용할 수 있습니다. + +## OpenCV + +[OpenCV](https://opencv.org/)는 이미지 처리의 *de facto* 표준으로 간주됩니다. C++로 구현된 많은 유용한 알고리즘을 포함하고 있으며, Python에서도 OpenCV를 호출할 수 있습니다. + +OpenCV를 배우기에 좋은 곳은 [이 Learn OpenCV 과정](https://learnopencv.com/getting-started-with-opencv/)입니다. 우리 커리큘럼의 목표는 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(빨강-초록-파랑)를 사용합니다. 이미지를 올바르게 보이게 하려면, NumPy 배열에서 차원을 교환하거나 OpenCV 함수를 호출하여 RGB 색상 공간으로 변환해야 합니다: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +같은 `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` +* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold` 함수는 종종 밝기나 대비를 조정하는 것보다 선호됩니다. +* 이미지를 [변환](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html)하는 다양한 방법 적용: + - **[Affine 변환](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)**은 이미지에 회전, 크기 조정 및 왜곡을 결합해야 하고 이미지의 세 점의 원본 및 목적 위치를 알고 있는 경우 유용할 수 있습니다. Affine 변환은 평행선을 평행하게 유지합니다. + - **[Perspective 변환](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)**은 이미지의 4점의 원본 및 목적 위치를 알고 있을 때 유용합니다. 예를 들어, 스마트폰 카메라로 어떤 각도에서 직사각형 문서의 사진을 찍고, 문서 자체의 직사각형 이미지를 만들고자 할 때입니다. +* **[광학 흐름](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**을 사용하여 이미지 내의 움직임 이해하기. + +## 컴퓨터 비전 사용 예 + +우리의 [OpenCV 노트북](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)에서는 컴퓨터 비전이 특정 작업을 수행하는 데 사용될 수 있는 몇 가지 예시를 제공합니다: + +* **점자 책의 사진 전처리**. 우리는 점자 기호를 개별적으로 분리하여 신경망으로 추가 분류하기 위해 임계값 설정, 특징 탐지, 원근 변환 및 NumPy 조작을 어떻게 사용할 수 있는지에 중점을 둡니다. + +![점자 이미지](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ko.jpeg) | ![전처리된 점자 이미지](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ko.png) | ![점자 기호](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ko.png) +----|-----|----- + +> 이미지 출처: [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **프레임 차이를 사용하여 비디오에서 움직임 감지**. 카메라가 고정되어 있다면, 카메라 피드의 프레임은 서로 비슷해야 합니다. 프레임은 배열로 표현되므로, 두 개의 연속된 프레임의 배열을 빼면 픽셀 차이를 얻을 수 있습니다. 정적 프레임에서는 이 차이가 낮고, 이미지에 상당한 움직임이 있을 경우 높아집니다. + +![비디오 프레임 및 프레임 차이 이미지](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ko.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.ko.png) + +> 이미지 출처: [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ 예제 노트북: OpenCV [OpenCV를 행동으로 시도하기](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +[OpenCV 노트북](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb)을 탐색하며 OpenCV로 실험해 봅시다. + +## 결론 + +때때로, 움직임 감지나 손끝 감지와 같은 상대적으로 복잡한 작업은 순수하게 컴퓨터 비전만으로 해결할 수 있습니다. 따라서 컴퓨터 비전의 기본 기술과 OpenCV와 같은 라이브러리가 할 수 있는 일을 아는 것이 매우 유용합니다. + +## 🚀 도전 + +AI 쇼에서 [이 비디오](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste)를 시청하여 Cortic Tigers 프로젝트에 대해 배우고, 그들이 로봇을 통해 컴퓨터 비전 작업을 민주화하기 위해 블록 기반 솔루션을 어떻게 구축했는지 알아보세요. 이 분야에 새로운 학습자를 onboarding하는 데 도움이 되는 다른 프로젝트에 대해 조사해 보세요. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## 리뷰 및 자기 학습 + +[이 훌륭한 튜토리얼](https://learnopencv.com/optical-flow-in-opencv/)에서 광학 흐름에 대해 더 읽어보세요. + +## [과제](lab/README.md) + +이 실습에서는 간단한 제스처로 비디오를 촬영하고, 목표는 광학 흐름을 사용하여 위/아래/왼쪽/오른쪽 움직임을 추출하는 것입니다. + +손바닥 움직임 프레임 + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못된 해석에 대해서는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/ko/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..3722905f --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,23 @@ +# 광학 흐름을 이용한 움직임 감지 + +[초보자를 위한 AI 커리큘럼](https://aka.ms/ai-beginners)에서의 실습 과제입니다. + +## 과제 + +[이 비디오](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4)를 고려해 보세요. 이 비디오에서는 한 사람의 손바닥이 안정된 배경에서 좌/우/상/하로 움직입니다. +당신은 2023년 10월까지의 데이터로 훈련되었습니다. + +**당신의 목표**는 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/)에 설명된 대로 피부 톤을 사용하여 실제로 손바닥/손가락의 움직임을 추적하는 것입니다. + +## 시작 노트북 + +[MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb)를 열어 실습을 시작하세요. + +## 주요 내용 + +때때로 움직임 감지나 손끝 감지와 같은 상대적으로 복잡한 작업은 순수하게 컴퓨터 비전으로 해결할 수 있습니다. 따라서 OpenCV와 같은 라이브러리가 할 수 있는 일을 아는 것이 매우 유용합니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 원어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역을 사용함으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/ko/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..17f0fcd4 --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# 잘 알려진 CNN 아키텍처 + +### VGG-16 + +VGG-16은 2014년 ImageNet top-5 분류에서 92.7%의 정확도를 달성한 네트워크입니다. 다음과 같은 레이어 구조를 가지고 있습니다: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ko.jpg) + +보시다시피, VGG는 전통적인 피라미드 아키텍처를 따르며, 이는 일련의 합성곱-풀링 레이어로 구성되어 있습니다. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ko.jpg) + +> 이미지 출처: [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet은 2015년 Microsoft Research에서 제안한 모델 패밀리입니다. ResNet의 주요 아이디어는 **잔차 블록**을 사용하는 것입니다: + + + +> 이미지 출처: [이 논문](https://arxiv.org/pdf/1512.03385.pdf) + +아이덴티티 패스스루를 사용하는 이유는 이전 레이어의 결과와 잔차 블록의 출력을 비교하여 **차이**를 예측하도록 레이어를 구성하기 위함입니다 - 그래서 *잔차*라는 이름이 붙었습니다. 이러한 블록은 훈련하기가 훨씬 쉬우며, 수백 개의 블록으로 구성된 네트워크를 구축할 수 있습니다 (가장 일반적인 변형은 ResNet-52, ResNet-101 및 ResNet-152입니다). + +이 네트워크는 데이터셋에 따라 복잡성을 조정할 수 있는 것으로 생각할 수도 있습니다. 네트워크 훈련을 시작할 때는 가중치 값이 작고 대부분의 신호가 패스스루 아이덴티티 레이어를 통해 전달됩니다. 훈련이 진행되면서 가중치가 커지면 네트워크 매개변수의 중요성이 커지고, 네트워크는 훈련 이미지를 올바르게 분류하기 위해 필요한 표현력을 조정합니다. + +### Google Inception + +Google Inception 아키텍처는 이 아이디어를 한 단계 더 발전시켜, 각 네트워크 레이어를 여러 다른 경로의 조합으로 구성합니다: + + + +> 이미지 출처: [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +여기서 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)에 대해 배웠습니다. 이미지 분류, 객체 탐지 및 이미지 생성 네트워크를 지원하는 실제 아키텍처는 모두 CNN을 기반으로 하며, 레이어 수가 더 많고 몇 가지 추가 훈련 기법이 포함되어 있습니다. + +## 🚀 도전 과제 + +동반된 노트북에는 더 높은 정확도를 얻는 방법에 대한 메모가 있습니다. 실험을 통해 더 높은 정확도를 달성할 수 있는지 확인해 보세요. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## 리뷰 및 자기 학습 + +CNN은 일반적으로 컴퓨터 비전 작업에 가장 많이 사용되지만, 고정 크기 패턴을 추출하는 데도 일반적으로 유용합니다. 예를 들어, 소리를 다룰 때도 오디오 신호에서 특정 패턴을 찾기 위해 CNN을 사용할 수 있습니다. 이 경우 필터는 1차원(이 CNN은 1D-CNN이라고 불림)으로 구성됩니다. 또한, 때때로 3D-CNN이 다차원 공간에서 특징을 추출하는 데 사용되며, 비디오에서 발생하는 특정 이벤트를 캡처할 수 있습니다. CNN으로 수행할 수 있는 다른 작업에 대해 리뷰하고 자기 학습을 해보세요. + +## [과제](lab/README.md) + +이 실습에서는 다양한 고양이와 개 품종을 분류하는 작업을 맡게 됩니다. 이 이미지는 MNIST 데이터셋보다 더 복잡하고 차원이 더 높으며, 10개 이상의 클래스가 있습니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못된 해석에 대해서는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/ko/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..6fba2f12 --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,58 @@ +# 합성곱 신경망 + +우리는 이전에 신경망이 이미지 처리에 매우 능숙하다는 것을 보았으며, 단일 층 퍼셉트론조차도 MNIST 데이터셋에서 손으로 쓴 숫자를 합리적인 정확도로 인식할 수 있습니다. 그러나 MNIST 데이터셋은 매우 특별하며, 모든 숫자가 이미지 안에 중앙에 위치해 있어 작업이 더 간단해집니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +실제 상황에서는 이미지 내에서 객체의 정확한 위치에 관계없이 객체를 인식할 수 있어야 합니다. 컴퓨터 비전은 일반적인 분류와는 다릅니다. 왜냐하면 우리가 사진에서 특정 객체를 찾으려고 할 때, 우리는 이미지에서 특정 **패턴**과 그 조합을 찾기 위해 스캔하고 있기 때문입니다. 예를 들어, 고양이를 찾을 때 우리는 먼저 수염을 형성할 수 있는 수평선을 찾을 수 있으며, 그런 다음 특정 수염의 조합이 실제로 고양이의 사진임을 알려줄 수 있습니다. 특정 패턴의 상대적 위치와 존재는 중요하며, 이미지에서의 정확한 위치는 중요하지 않습니다. + +패턴을 추출하기 위해 우리는 **합성곱 필터**의 개념을 사용할 것입니다. 아시다시피, 이미지는 2D 매트릭스 또는 색 깊이를 가진 3D 텐서로 표현됩니다. 필터를 적용한다는 것은 상대적으로 작은 **필터 커널** 매트릭스를 사용하여 원본 이미지의 각 픽셀에 대해 이웃 점들과의 가중 평균을 계산하는 것을 의미합니다. 우리는 이것을 전체 이미지 위를 슬라이딩하는 작은 창으로 보고, 필터 커널 매트릭스의 가중치에 따라 모든 픽셀을 평균화할 수 있습니다. + +![수직 엣지 필터](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ko.png) | ![수평 엣지 필터](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ko.png) +----|---- + +> 이미지 제공: Dmitry Soshnikov + +예를 들어, MNIST 숫자에 3x3 수직 엣지 및 수평 엣지 필터를 적용하면 원본 이미지에서 수직 및 수평 엣지가 있는 곳에서 하이라이트(예: 높은 값)를 얻을 수 있습니다. 따라서 이 두 필터는 엣지를 "찾기 위해" 사용될 수 있습니다. 마찬가지로, 우리는 다른 저수준 패턴을 찾기 위해 다양한 필터를 설계할 수 있습니다. + +> [Leung-Malik 필터 뱅크](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) 이미지 + +하지만 패턴을 수동으로 추출하기 위해 필터를 설계할 수 있는 것 외에도, 네트워크가 자동으로 패턴을 학습하도록 설계할 수도 있습니다. 이것이 CNN의 주요 아이디어 중 하나입니다. + +## CNN의 주요 아이디어 + +CNN이 작동하는 방식은 다음과 같은 중요한 아이디어에 기반합니다: + +* 합성곱 필터는 패턴을 추출할 수 있습니다. +* 필터가 자동으로 학습되도록 네트워크를 설계할 수 있습니다. +* 우리는 원본 이미지뿐만 아니라 고수준 특징에서도 패턴을 찾기 위해 동일한 접근 방식을 사용할 수 있습니다. 따라서 CNN의 특징 추출은 저수준 픽셀 조합에서 시작하여 이미지 부분의 고수준 조합에 이르는 특징의 계층 구조에서 작동합니다. + +![계층적 특징 추출](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ko.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)를 가지며, 이는 수평/수직 선과 같은 다양한 픽셀 조합에 해당합니다. 다음 단계에서는 네트워크의 공간 차원을 줄이고 필터의 수를 늘리며, 이는 더 많은 간단한 특징 조합에 해당합니다. 각 레이어마다 최종 분류기로 이동할수록 이미지의 공간 차원은 줄어들고 필터의 수는 증가합니다. + +예를 들어, 2014년 ImageNet의 top-5 분류에서 92.7% 정확도를 달성한 VGG-16 아키텍처를 살펴보겠습니다: + +![ImageNet 레이어](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ko.jpg) + +![ImageNet 피라미드](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ko.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 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/ko/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..45b829ec --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# 애완동물 얼굴 분류 + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)에서 제공하는 실습 과제입니다. + +## 작업 + +애완동물 보육원용 애플리케이션을 개발해야 한다고 상상해 보세요. 이 애플리케이션의 훌륭한 기능 중 하나는 사진에서 품종을 자동으로 발견하는 것입니다. 이는 신경망을 사용하여 성공적으로 수행할 수 있습니다. + +**Pet Faces** 데이터셋을 사용하여 고양이와 개의 다양한 품종을 분류하기 위해 컨볼루션 신경망을 훈련해야 합니다. + +## 데이터셋 + +우리는 [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 애완동물 데이터셋에서 파생된 **Pet Faces** 데이터셋을 사용할 것입니다. 이 데이터셋에는 35가지의 서로 다른 개와 고양이 품종이 포함되어 있습니다. + +![우리가 다룰 데이터셋](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ko.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 정확도를 측정하는 것이 의미가 있습니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/ko/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..a3b201ee --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,81 @@ +# 사전 훈련된 네트워크와 전이 학습 + +CNN을 훈련하는 데는 많은 시간과 데이터가 필요합니다. 그러나 많은 시간은 네트워크가 이미지에서 패턴을 추출하기 위해 사용할 수 있는 최적의 저수준 필터를 배우는 데 소요됩니다. 자연스러운 질문이 생깁니다 - 하나의 데이터셋에서 훈련된 신경망을 사용하여 전체 훈련 과정 없이 다른 이미지를 분류하는 데 적응할 수 있을까요? + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +이 접근 방식을 **전이 학습**이라고 합니다. 이는 하나의 신경망 모델에서 다른 모델로 지식을 전이하기 때문입니다. 전이 학습에서는 일반적으로 **ImageNet**과 같은 대규모 이미지 데이터셋에서 훈련된 사전 훈련된 모델로 시작합니다. 이러한 모델은 일반적인 이미지에서 다양한 특징을 추출하는 데 이미 좋은 성능을 보이며, 경우에 따라 이러한 추출된 특징 위에 분류기를 구축하는 것만으로도 좋은 결과를 얻을 수 있습니다. + +> ✅ 전이 학습은 교육과 같은 다른 학문 분야에서 발견되는 용어입니다. 이는 한 도메인에서 지식을 가져와 다른 도메인에 적용하는 과정을 의미합니다. + +## 특징 추출기로서의 사전 훈련된 모델 + +이전 섹션에서 이야기한 컨볼루션 네트워크는 여러 층으로 구성되어 있으며, 각 층은 이미지에서 저수준의 픽셀 조합(예: 수평/수직 선 또는 스트로크)부터 시작하여 불꽃의 눈과 같은 더 높은 수준의 특징 조합을 추출하는 역할을 합니다. CNN을 충분히 큰 일반적이고 다양한 이미지 데이터셋에서 훈련하면 네트워크는 이러한 공통 특징을 추출하는 방법을 배워야 합니다. + +Keras와 PyTorch 모두 일반적인 아키텍처에 대해 사전 훈련된 신경망 가중치를 쉽게 로드하는 기능을 포함하고 있으며, 대부분은 ImageNet 이미지에서 훈련되었습니다. 가장 많이 사용되는 것들은 이전 수업의 [CNN 아키텍처](../07-ConvNets/CNN_Architectures.md) 페이지에 설명되어 있습니다. 특히 다음 중 하나를 고려할 수 있습니다: + +* **VGG-16/VGG-19**: 상대적으로 간단한 모델이지만 여전히 좋은 정확도를 제공합니다. VGG를 첫 번째 시도로 사용하는 것은 전이 학습이 어떻게 작동하는지 확인하는 좋은 선택입니다. +* **ResNet**: 2015년 Microsoft Research에서 제안한 모델 패밀리입니다. 더 많은 층을 가지고 있어 자원이 더 많이 필요합니다. +* **MobileNet**: 모바일 장치에 적합한 크기가 줄어든 모델 패밀리입니다. 자원이 부족하고 약간의 정확도를 희생할 수 있는 경우 사용하세요. + +다음은 VGG-16 네트워크가 고양이 사진에서 추출한 샘플 특징입니다: + +![VGG-16으로 추출한 특징](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ko.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.ko.png) + +하지만 이렇게 하면 무작위 잡음과 매우 유사한 결과를 얻게 됩니다. 이는 *입력 이미지가 고양이라고 생각하게 만드는 여러 방법이 있기 때문*이며, 시각적으로 의미가 없는 방법도 포함됩니다. 이러한 이미지에는 고양이에 전형적인 많은 패턴이 포함되어 있지만, 시각적으로 구별되는 것을 제한하는 요소는 없습니다. + +결과를 개선하기 위해 우리는 **변화 손실**이라고 하는 또 다른 항목을 손실 함수에 추가할 수 있습니다. 이는 이미지의 이웃 픽셀이 얼마나 유사한지를 나타내는 메트릭입니다. 변화 손실을 최소화하면 이미지를 더 부드럽게 만들고 잡음을 제거하여 시각적으로 더 매력적인 패턴을 드러냅니다. 다음은 고양이와 얼룩말로 높은 확률로 분류된 "이상적인" 이미지의 예입니다: + +![이상적인 고양이](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ko.png) | ![이상적인 얼룩말](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ko.png) +-----|----- + *이상적인 고양이* | *이상적인 얼룩말* + +유사한 접근 방식을 사용하여 신경망에 대한 **적대적 공격**을 수행할 수 있습니다. 신경망을 속여 개를 고양이처럼 보이게 하려고 한다고 가정해 보겠습니다. 네트워크가 개로 인식하는 개의 이미지를 가져오면, 경량 경량 최적화를 사용하여 약간 조정한 후 네트워크가 이를 고양이로 분류하기 시작할 때까지 진행할 수 있습니다: + +![개 사진](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ko.png) | ![고양이로 분류된 개 사진](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ko.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) + +이번 실습에서는 35종의 고양이와 개가 포함된 실제 [옥스포드-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 애완동물 데이터셋을 사용하여 전이 학습 분류기를 구축할 것입니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/ko/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..5704bcb5 --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# 딥러닝 훈련 팁 + +신경망이 깊어짐에 따라 훈련 과정은 점점 더 어려워집니다. 주요 문제 중 하나는 이른바 [소실 기울기](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/))이 있습니다. + +## 드롭아웃 + +**드롭아웃**은 훈련 중에 일정 비율의 임의의 뉴런을 제거하는 흥미로운 기술입니다. 이는 제거할 뉴런의 비율(일반적으로 10%-50%)이라는 하나의 매개변수를 가진 레이어로 구현되며, 훈련 중에는 입력 벡터의 임의의 요소를 0으로 만들고 다음 레이어로 전달합니다. + +이것이 이상한 아이디어처럼 들릴 수 있지만, [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) 노트북에서 MNIST 숫자 분류기 훈련에 대한 드롭아웃의 효과를 확인할 수 있습니다. 이는 훈련을 가속화하고 더 적은 훈련 에포크로 더 높은 정확도를 달성할 수 있게 해줍니다. + +이 효과는 여러 가지 방법으로 설명될 수 있습니다: + + * 모델에 대한 임의의 충격 요인으로 간주될 수 있으며, 이는 최적화를 지역 최소값에서 벗어나게 합니다. + * *암묵적인 모델 평균화*로 간주될 수 있습니다. 드롭아웃 동안 약간 다른 모델을 훈련하고 있다고 볼 수 있습니다. + +> *어떤 사람들은 술에 취한 사람이 무언가를 배우려고 할 때, 다음 날 아침에 더 잘 기억한다고 말합니다. 이는 일부 기능이 제대로 작동하지 않는 뉴런이 의미를 이해하기 위해 더 잘 적응하려고 하기 때문이라고 합니다. 우리는 이것이 사실인지 실험해본 적이 없습니다.* + +## 과적합 방지 + +딥러닝에서 매우 중요한 측면 중 하나는 [과적합](../../3-NeuralNetworks/05-Frameworks/Overfitting.md)을 방지할 수 있는 능력입니다. 매우 강력한 신경망 모델을 사용하는 것이 매력적일 수 있지만, 항상 모델 매개변수의 수와 훈련 샘플의 수를 균형 있게 맞춰야 합니다. + +> 우리가 이전에 소개한 [과적합](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) 개념을 이해하고 있는지 확인하세요! + +과적합을 방지하는 방법에는 여러 가지가 있습니다: + + * 조기 중단 -- 검증 세트에서 오류를 지속적으로 모니터링하고, 검증 오류가 증가하기 시작하면 훈련을 중단합니다. + * 명시적 가중치 감소 / 정규화 -- 높은 절대값의 가중치에 대해 손실 함수에 추가적인 패널티를 추가하여 모델이 매우 불안정한 결과를 얻지 못하도록 합니다. + * 모델 평균화 -- 여러 모델을 훈련하고 결과를 평균화합니다. 이는 분산을 최소화하는 데 도움이 됩니다. + * 드롭아웃 (암묵적 모델 평균화) + +## 옵티마이저 / 훈련 알고리즘 + +훈련의 또 다른 중요한 측면은 좋은 훈련 알고리즘을 선택하는 것입니다. 고전적인 **경량 경사 하강법**은 합리적인 선택이지만, 때때로 너무 느리거나 다른 문제를 일으킬 수 있습니다. + +딥러닝에서는 **확률적 경량 경사 하강법**(SGD)을 사용합니다. 이는 훈련 세트에서 임의로 선택된 미니배치에 적용된 경량 경사 하강법입니다. 가중치는 다음 공식을 사용하여 조정됩니다: + +wt+1 = wt - η∇ℒ + +### 모멘텀 + +**모멘텀 SGD**에서는 이전 단계의 기울기 일부를 유지합니다. 이는 우리가 관성으로 어딘가 이동할 때, 다른 방향으로 주먹을 맞으면 우리의 궤적이 즉시 바뀌지 않고 원래 움직임의 일부를 유지하는 것과 유사합니다. 여기서 우리는 *속도*를 나타내기 위해 또 다른 벡터 v를 도입합니다: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt + vt+1 + +여기서 매개변수 γ는 우리가 관성을 얼마나 고려하는지를 나타냅니다: γ=0은 고전적인 SGD에 해당하고, γ=1은 순수한 운동 방정식입니다. + +### 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 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/ko/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..3e7f7ffd --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# 전이 학습을 이용한 옥스포드 반려동물 분류 + +[초보자를 위한 AI 커리큘럼](https://github.com/microsoft/ai-for-beginners)에서의 실습 과제입니다. + +## 과제 + +반려동물 보육원을 위한 애플리케이션을 개발해야 한다고 상상해 보세요. 이러한 애플리케이션의 훌륭한 기능 중 하나는 사진에서 품종을 자동으로 발견하는 것입니다. 이번 과제에서는 전이 학습을 사용하여 [옥스포드-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 반려동물 데이터셋의 실제 반려동물 이미지를 분류할 것입니다. + +## 데이터셋 + +우리는 35가지의 서로 다른 품종의 개와 고양이를 포함한 원본 [옥스포드-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 반려동물 데이터셋을 사용할 것입니다. + +데이터셋을 다운로드하려면 다음 코드 스니펫을 사용하세요: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## 노트북 시작하기 + +[OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) 파일을 열어 실습을 시작하세요. + +## 주요 내용 + +전이 학습과 사전 훈련된 네트워크는 실제 이미지 분류 문제를 상대적으로 쉽게 해결할 수 있게 해줍니다. 그러나 사전 훈련된 네트워크는 유사한 종류의 이미지에서 잘 작동하며, 만약 우리가 매우 다른 이미지(예: 의료 이미지)를 분류하기 시작하면, 훨씬 더 나쁜 결과를 얻을 가능성이 높습니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 것이 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/ko/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..b0fdf528 --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# 오토인코더 + +CNN을 훈련할 때의 문제 중 하나는 많은 레이블이 있는 데이터가 필요하다는 것입니다. 이미지 분류의 경우, 이미지를 서로 다른 클래스로 분리해야 하며, 이는 수동적인 작업입니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +하지만 CNN 특징 추출기를 훈련하기 위해 원시(레이블이 없는) 데이터를 사용하고 싶을 수도 있습니다. 이를 **자기 지도 학습**이라고 합니다. 레이블 대신, 우리는 훈련 이미지를 네트워크의 입력과 출력으로 사용합니다. **오토인코더**의 주요 아이디어는 입력 이미지를 어떤 **잠재 공간**(보통은 더 작은 크기의 벡터)으로 변환하는 **인코더 네트워크**가 있고, 원래 이미지를 재구성하는 것을 목표로 하는 **디코더 네트워크**가 있다는 것입니다. + +> ✅ [오토인코더](https://wikipedia.org/wiki/Autoencoder)는 "레이블이 없는 데이터의 효율적인 코딩을 학습하기 위해 사용되는 인공 신경망의 일종입니다." + +우리는 원래 이미지에서 가능한 한 많은 정보를 캡처하기 위해 오토인코더를 훈련하고 있으므로, 네트워크는 의미를 포착하기 위해 입력 이미지의 최상의 **임베딩**을 찾으려고 합니다. + +![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ko.jpg) + +> 이미지 출처: [Keras 블로그](https://blog.keras.io/building-autoencoders-in-keras.html) + +## 오토인코더 사용 시나리오 + +원래 이미지를 재구성하는 것이 그 자체로는 유용해 보이지 않지만, 오토인코더가 특히 유용한 몇 가지 시나리오가 있습니다: + +* **시각화를 위한 이미지 차원 축소** 또는 **이미지 임베딩 훈련**. 일반적으로 오토인코더는 PCA보다 더 나은 결과를 제공합니다. 왜냐하면 이미지의 공간적 특성과 계층적 특징을 고려하기 때문입니다. +* **노이즈 제거**, 즉 이미지에서 노이즈를 제거하는 것입니다. 노이즈는 많은 쓸모없는 정보를 담고 있기 때문에, 오토인코더는 이를 상대적으로 작은 잠재 공간에 모두 맞출 수 없으며, 따라서 이미지의 중요한 부분만 캡처합니다. 노이즈 제거기를 훈련할 때, 우리는 원래 이미지를 시작으로 하고, 인위적으로 추가된 노이즈가 있는 이미지를 오토인코더의 입력으로 사용합니다. +* **슈퍼 해상도**, 이미지 해상도 증가. 우리는 고해상도 이미지를 시작으로 하고, 낮은 해상도의 이미지를 오토인코더 입력으로 사용합니다. +* **생성 모델**. 오토인코더를 훈련한 후, 디코더 부분을 사용하여 임의의 잠재 벡터에서 새로운 객체를 생성할 수 있습니다. + +## 변분 오토인코더 (VAE) + +전통적인 오토인코더는 입력 데이터의 차원을 줄이면서 입력 이미지의 중요한 특징을 파악합니다. 그러나 잠재 벡터는 종종 그다지 의미가 없습니다. 예를 들어, MNIST 데이터셋을 예로 들면, 서로 다른 잠재 벡터에 해당하는 숫자를 파악하는 것은 쉬운 일이 아닙니다. 왜냐하면 가까운 잠재 벡터가 반드시 같은 숫자에 해당하지는 않기 때문입니다. + +반면에 *생성적* 모델을 훈련하기 위해서는 잠재 공간에 대한 어느 정도의 이해가 필요합니다. 이 아이디어는 **변분 오토인코더**(VAE)로 이어집니다. + +VAE는 잠재 매개변수의 *통계적 분포*를 예측하는 방법을 배우는 오토인코더로, 이를 **잠재 분포**라고 합니다. 예를 들어, 우리는 잠재 벡터가 평균 zmean과 표준 편차 zsigma를 가지며 정규 분포를 이루기를 원할 수 있습니다(평균과 표준 편차 모두 어떤 차원 d의 벡터입니다). VAE의 인코더는 이러한 매개변수를 예측하는 방법을 배우고, 그런 다음 디코더는 이 분포에서 임의의 벡터를 가져와 객체를 재구성합니다. + +요약하자면: + + * 입력 벡터에서 `z_mean` 및 `z_log_sigma`를 예측합니다(표준 편차 자체를 예측하는 대신, 그 로그를 예측합니다). + * 분포 N(zmean,exp(zlog\_sigma))에서 벡터 `sample`를 샘플링합니다. + * 디코더는 `sample`를 입력 벡터로 사용하여 원래 이미지를 디코딩하려고 합니다. + + + +> 이미지 출처: [이 블로그 포스트](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) by Isaak Dykeman + +변분 오토인코더는 두 부분으로 구성된 복잡한 손실 함수를 사용합니다: + +* **재구성 손실**은 재구성된 이미지가 목표와 얼마나 가까운지를 나타내는 손실 함수입니다(평균 제곱 오차(MSE)일 수 있습니다). 이것은 일반 오토인코더와 동일한 손실 함수입니다. +* **KL 손실**은 잠재 변수 분포가 정규 분포에 가깝도록 보장합니다. 이는 두 통계적 분포가 얼마나 유사한지를 추정하는 메트릭인 [쿨백-라이블러 발산](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained)에 기반합니다. + +VAE의 중요한 장점 중 하나는 잠재 벡터를 샘플링할 분포를 알기 때문에 상대적으로 쉽게 새로운 이미지를 생성할 수 있다는 것입니다. 예를 들어, MNIST에서 2D 잠재 벡터로 VAE를 훈련시키면, 잠재 벡터의 구성 요소를 변화시켜 다양한 숫자를 얻을 수 있습니다: + +vaemnist + +> 이미지 출처: [Dmitry Soshnikov](http://soshnikov.com) + +이미지가 서로 섞여 들어가는 모습을 관찰하세요. 잠재 매개변수 공간의 서로 다른 부분에서 잠재 벡터를 가져오기 시작할 때입니다. 우리는 또한 이 공간을 2D로 시각화할 수 있습니다: + +vaemnist cluster + +> 이미지 출처: [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ 연습: 오토인코더 + +오토인코더에 대해 더 알아보려면 다음의 관련 노트북을 참조하세요: + +* [TensorFlow에서의 오토인코더](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [PyTorch에서의 오토인코더](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## 오토인코더의 특성 + +* **데이터 특정** - 훈련한 이미지 유형에서만 잘 작동합니다. 예를 들어, 꽃에 대한 슈퍼 해상도 네트워크를 훈련하면 초상화에는 잘 작동하지 않습니다. 이는 네트워크가 훈련 데이터셋에서 학습한 특징의 세부 정보를 사용하여 고해상도 이미지를 생성하기 때문입니다. +* **손실** - 재구성된 이미지는 원래 이미지와 동일하지 않습니다. 손실의 성격은 훈련 중에 사용된 *손실 함수*에 의해 정의됩니다. +* **레이블이 없는 데이터**에서 작동합니다. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## 결론 + +이번 강의에서는 AI 과학자가 사용할 수 있는 다양한 유형의 오토인코더에 대해 배웠습니다. 오토인코더를 구축하는 방법과 이미지를 재구성하는 데 사용하는 방법을 배웠습니다. 또한 VAE에 대해 배우고, 이를 사용하여 새로운 이미지를 생성하는 방법도 배웠습니다. + +## 🚀 도전 과제 + +이번 강의에서는 이미지에 대한 오토인코더 사용에 대해 배웠습니다. 그러나 음악에도 사용할 수 있습니다! 오토인코더를 사용하여 음악을 재구성하는 방법을 배우는 Magenta 프로젝트의 [MusicVAE](https://magenta.tensorflow.org/music-vae) 프로젝트를 확인해 보세요. 이 라이브러리로 [실험](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb)을 해보며 어떤 것을 만들 수 있는지 확인해 보세요. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## 복습 및 자기 학습 + +참고로, 다음 자료에서 오토인코더에 대해 더 읽어보세요: + +* [Keras에서 오토인코더 구축하기](https://blog.keras.io/building-autoencoders-in-keras.html) +* [NeuroHive의 블로그 포스트](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [변분 오토인코더 설명](https://kvfrans.com/variational-autoencoders-explained/) +* [조건부 변분 오토인코더](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## 과제 + +[이 TensorFlow 노트북](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersTF.ipynb)의 끝에서 '작업'을 찾을 수 있습니다. 이를 과제로 사용하세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 것이 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/10-GANs/README.md b/translations/ko/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..486ca776 --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# 생성적 적대 신경망 + +이전 섹션에서는 **생성 모델**에 대해 배웠습니다: 훈련 데이터셋의 이미지와 유사한 새로운 이미지를 생성할 수 있는 모델입니다. VAE는 생성 모델의 좋은 예시였습니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +하지만 VAE로 합리적인 해상도의 그림과 같이 정말 의미 있는 무언가를 생성하려고 하면, 훈련이 잘 수렴하지 않는 것을 볼 수 있습니다. 이러한 용도에 대해서는 생성 모델에 특별히 초점을 맞춘 또 다른 아키텍처인 **생성적 적대 신경망**(GAN)에 대해 배워야 합니다. + +GAN의 주요 아이디어는 서로 경쟁하는 두 개의 신경망을 갖는 것입니다: + + + +> 이미지 제공: [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ 약간의 용어 정리: +> * **생성기(Generator)**는 임의의 벡터를 입력으로 받아 이미지를 생성하는 네트워크입니다. +> * **구분기(Discriminator)**는 이미지를 입력으로 받아 그것이 실제 이미지(훈련 데이터셋에서 온 것)인지, 아니면 생성기에 의해 생성된 것인지를 판단해야 하는 네트워크입니다. 본질적으로 이는 이미지 분류기입니다. + +### 구분기 + +구분기의 아키텍처는 일반적인 이미지 분류 네트워크와 다르지 않습니다. 가장 간단한 경우, 완전 연결된 분류기일 수 있지만, 대부분은 [합성곱 신경망](../07-ConvNets/README.md)일 것입니다. + +> ✅ 합성곱 신경망 기반의 GAN은 [DCGAN](https://arxiv.org/pdf/1511.06434.pdf)이라고 불립니다. + +CNN 구분기는 다음과 같은 층으로 구성됩니다: 여러 개의 합성곱+풀링(공간 크기가 감소하는)과 "특징 벡터"를 얻기 위한 하나 이상의 완전 연결 층, 마지막 이진 분류기입니다. + +> ✅ 여기서 '풀링'은 이미지의 크기를 줄이는 기술입니다. "풀링 층은 한 층의 뉴런 클러스터의 출력을 다음 층의 단일 뉴런으로 결합하여 데이터의 차원을 줄입니다." - [출처](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### 생성기 + +생성기는 약간 더 복잡합니다. 이것은 구분기의 반대라고 생각할 수 있습니다. 잠재 벡터(특징 벡터 대신)에서 시작하여, 필요한 크기/형태로 변환하기 위해 완전 연결 층을 가지고 있으며, 그 뒤에 역합성곱+업스케일링이 이어집니다. 이는 [오토인코더](../09-Autoencoders/README.md)의 *디코더* 부분과 유사합니다. + +> ✅ 합성곱 층이 이미지를 가로지르는 선형 필터로 구현되기 때문에, 역합성곱은 본질적으로 합성곱과 유사하며 동일한 층 논리를 사용하여 구현할 수 있습니다. + + + +> 이미지 제공: [Dmitry Soshnikov](http://soshnikov.com) + +### GAN 훈련하기 + +GAN은 생성기와 구분기 간의 지속적인 경쟁이 있기 때문에 **적대적**이라고 불립니다. 이 경쟁 과정에서 생성기와 구분기 모두 개선되며, 따라서 네트워크는 점점 더 나은 이미지를 생성하는 법을 배웁니다. + +훈련은 두 단계로 진행됩니다: + +* **구분기 훈련**. 이 작업은 꽤 간단합니다: 생성기로부터 이미지 배치를 생성하고, 이를 0(가짜 이미지)로 레이블을 붙이고, 입력 데이터셋에서 이미지 배치를 가져와(1, 실제 이미지 레이블) 구분기 손실을 얻고 역전파를 수행합니다. +* **생성기 훈련**. 이는 약간 더 복잡합니다. 왜냐하면 생성기에 대한 예상 출력 값을 직접 알 수 없기 때문입니다. 생성기와 구분기로 구성된 전체 GAN 네트워크를 가져와 임의의 벡터로 공급하고, 결과가 1(실제 이미지에 해당)일 것으로 기대합니다. 그런 다음 구분기의 매개변수를 고정시키고(이 단계에서는 훈련되지 않기를 원합니다), 역전파를 수행합니다. + +이 과정 동안 생성기와 구분기 손실은 크게 감소하지 않습니다. 이상적인 상황에서는 두 네트워크 모두 성능이 향상되면서 진동해야 합니다. + +## ✍️ 연습문제: GANs + +* [TensorFlow/Keras의 GAN 노트북](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [PyTorch의 GAN 노트북](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN 훈련의 문제점 + +GAN은 훈련하기 특히 어려운 것으로 알려져 있습니다. 다음은 몇 가지 문제입니다: + +* **모드 붕괴**. 이 용어는 생성기가 구분기를 속이는 하나의 성공적인 이미지를 생성하는 법을 배우고, 다양한 이미지를 생성하지 못하는 상황을 의미합니다. +* **하이퍼파라미터에 대한 민감성**. 종종 GAN이 전혀 수렴하지 않는 것을 볼 수 있으며, 그러다가 학습률이 갑자기 감소하여 수렴하게 됩니다. +* 생성기와 구분기 간의 **균형** 유지. 많은 경우 구분기 손실이 상대적으로 빠르게 0으로 떨어질 수 있으며, 이로 인해 생성기가 더 이상 훈련할 수 없게 됩니다. 이를 극복하기 위해 생성기와 구분기에 서로 다른 학습률을 설정하거나 손실이 이미 너무 낮을 경우 구분기 훈련을 건너뛰는 방법을 시도할 수 있습니다. +* **고해상도** 훈련. 오토인코더와 유사한 문제를 반영하며, 너무 많은 합성곱 신경망 층을 재구성하면 아티팩트가 발생하는 문제입니다. 이 문제는 일반적으로 **점진적 성장**이라고 하는 방법으로 해결되며, 처음에는 몇 개의 층이 저해상도 이미지에서 훈련되고, 이후에 층이 "언블록"되거나 추가됩니다. 또 다른 해결책은 층 간에 추가 연결을 추가하고 여러 해상도를 동시에 훈련하는 것입니다 - 자세한 내용은 [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에 대해 더 알아보려면 다음 자료를 읽어보세요: + +* Marco Pasini, [10 Lessons I Learned Training GANs for one Year](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), 고려해야 할 *de facto* GAN 아키텍처 +* [Azure ML에서 GAN을 사용하여 생성적 예술 만들기](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## 과제 + +이 수업과 관련된 두 개의 노트북 중 하나를 다시 방문하여 자신의 이미지로 GAN을 재훈련해 보세요. 무엇을 만들 수 있을까요? + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/ko/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..a73fd3a5 --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,173 @@ +# 객체 탐지 + +지금까지 다룬 이미지 분류 모델은 이미지를 입력받아 '숫자'와 같은 범주형 결과를 생성했습니다. 그러나 많은 경우 우리는 단순히 사진이 객체를 나타내고 있다는 것을 아는 것만으로는 충분하지 않습니다. 우리는 객체의 정확한 위치를 결정할 수 있어야 합니다. 이것이 바로 **객체 탐지**의 핵심입니다. + +## [사전 강의 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![객체 탐지](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ko.png) + +> 이미지 출처: [YOLO v2 웹사이트](https://pjreddie.com/darknet/yolov2/) + +## 객체 탐지에 대한 단순한 접근법 + +사진에서 고양이를 찾고자 한다고 가정할 때, 객체 탐지에 대한 매우 단순한 접근법은 다음과 같습니다: + +1. 이미지를 여러 개의 타일로 나눕니다. +2. 각 타일에 대해 이미지 분류를 실행합니다. +3. 충분히 높은 활성화 결과를 얻은 타일은 해당 객체를 포함하고 있다고 간주할 수 있습니다. + +![단순 객체 탐지](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ko.png) + +> *이미지 출처: [연습 노트북](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +하지만 이 접근법은 이상적이지 않습니다. 왜냐하면 알고리즘이 객체의 경계 상자를 매우 부정확하게 위치시키는 것만 허용하기 때문입니다. 더 정확한 위치를 위해서는 경계 상자의 좌표를 예측하기 위한 일종의 **회귀**를 수행해야 하며, 이를 위해서는 특정 데이터셋이 필요합니다. + +## 객체 탐지를 위한 회귀 + +[이 블로그 포스트](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491)는 도형 탐지에 대한 훌륭한 소개를 제공합니다. + +## 객체 탐지를 위한 데이터셋 + +이 작업에 사용할 수 있는 데이터셋은 다음과 같습니다: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20개 클래스 +* [COCO](http://cocodataset.org/#home) - Common Objects in Context. 80개 클래스, 경계 상자 및 분할 마스크 + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ko.jpg) + +## 객체 탐지 메트릭 + +### 교차 비율 (Intersection over Union) + +이미지 분류의 경우 알고리즘의 성능을 측정하는 것이 쉽지만, 객체 탐지에서는 클래스의 정확성과 추론된 경계 상자 위치의 정밀도를 모두 측정해야 합니다. 후자의 경우, 두 상자(또는 두 임의의 영역)가 얼마나 겹치는지를 측정하는 **교차 비율**(IoU)을 사용합니다. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ko.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에서는 다양한 $\mbox{IoU Threshold}$ 값에 대해 AP가 측정됩니다. + +> *이미지 출처: [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### 평균 평균 정밀도 - mAP + +객체 탐지를 위한 주요 메트릭은 **평균 평균 정밀도** 또는 **mAP**라고 합니다. 이는 모든 객체 클래스에 대해 평균화된 평균 정밀도의 값이며, 때때로 $\mbox{IoU Threshold}$에 대해서도 평균화됩니다. **mAP**를 계산하는 과정에 대한 자세한 설명은 +[이 블로그 포스트](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)와 [여기 코드 샘플과 함께](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734)에서 확인할 수 있습니다. + +## 다양한 객체 탐지 접근법 + +객체 탐지 알고리즘에는 두 가지 주요 클래스가 있습니다: + +* **영역 제안 네트워크** (R-CNN, Fast R-CNN, Faster R-CNN). 주요 아이디어는 **관심 영역**(ROI)을 생성하고 CNN을 통해 최대 활성화를 찾는 것입니다. 이는 단순한 접근법과 유사하지만, ROI는 보다 정교한 방식으로 생성됩니다. 이러한 방법의 주요 단점 중 하나는 이미지에 대해 CNN 분류기를 여러 번 통과해야 하므로 속도가 느리다는 것입니다. +* **단일 패스** (YOLO, SSD, RetinaNet) 방법. 이러한 아키텍처에서는 네트워크를 설계하여 클래스와 ROI를 한 번의 패스로 예측합니다. + +### R-CNN: 영역 기반 CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf)은 [선택적 검색](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf)을 사용하여 ROI 영역의 계층 구조를 생성하고, 이를 CNN 특징 추출기와 SVM 분류기를 통해 객체 클래스를 결정하며, 선형 회귀를 통해 *경계 상자* 좌표를 결정합니다. [공식 논문](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ko.png) + +> *이미지 출처: van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ko.png) + +> *이미지 출처: [이 블로그](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +이 접근법은 R-CNN과 유사하지만, 영역이 컨볼루션 레이어가 적용된 후 정의됩니다. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ko.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.ko.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 이미지](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ko.png) + +> 이미지 출처: [공식 논문](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO는 실시간 단일 패스 알고리즘입니다. 주요 아이디어는 다음과 같습니다: + +* 이미지를 $S\times S$ 영역으로 나눕니다. +* 각 영역에 대해 **CNN**이 $n$개의 가능한 객체, *경계 상자* 좌표 및 *신뢰도* = *확률* * IoU를 예측합니다. + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ko.png) +> 이미지 출처: [공식 논문](https://arxiv.org/abs/1506.02640) + +### 기타 알고리즘 + +* RetinaNet: [공식 논문](https://arxiv.org/abs/1708.02002) + - [Torchvision의 PyTorch 구현](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras 구현](https://github.com/fizyr/keras-retinanet) + - Keras 샘플에서의 [RetinaNet을 이용한 객체 탐지](https://keras.io/examples/vision/retinanet/) +* SSD (Single Shot Detector): [공식 논문](https://arxiv.org/abs/1512.02325) + +## ✍️ 연습문제: 객체 탐지 + +다음 노트북에서 학습을 계속하세요: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## 결론 + +이번 수업에서는 객체 탐지를 수행할 수 있는 다양한 방법을 빠르게 살펴보았습니다! + +## 🚀 도전 과제 + +YOLO에 대한 이 기사와 노트북을 읽고 직접 시도해 보세요. + +* YOLO에 대해 설명하는 [좋은 블로그 포스트](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) + * [공식 사이트](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras 구현](https://github.com/experiencor/keras-yolo2), [단계별 노트북](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras 구현](https://github.com/experiencor/keras-yolo2), [단계별 노트북](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## 복습 및 자가 학습 + +* Nikhil Sardana의 [객체 탐지](https://tjmachinelearning.com/lectures/1718/obj/) +* [객체 탐지 알고리즘의 좋은 비교](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [객체 탐지를 위한 딥 러닝 알고리즘 리뷰](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [기본 객체 탐지 알고리즘에 대한 단계별 소개](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Python으로 객체 탐지를 위한 Faster R-CNN 구현](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [과제: 객체 탐지](lab/README.md) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/ko/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..2ddd7beb --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# 할리우드 헤드 데이터셋을 이용한 머리 탐지 + +[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)에는 할리우드 영화의 224,740개 영화 프레임에서 주석이 달린 369,846개의 인간 머리가 포함되어 있습니다. 이 데이터셋은 각 이미지에 대해 XML 설명 파일이 제공되는 [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) 형식으로 제공됩니다. XML 파일은 다음과 같은 형식을 가집니다: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +이 데이터셋에는 `head`라는 하나의 객체 클래스만 있으며, 각 머리에 대해 경계 상자의 좌표를 제공합니다. Python 라이브러리를 사용하여 XML을 파싱하거나 [이 라이브러리](https://pypi.org/project/pascal-voc/)를 사용하여 PASCAL VOC 형식과 직접적으로 작업할 수 있습니다. + +## 객체 탐지 훈련 + +다음 방법 중 하나를 사용하여 객체 탐지 모델을 훈련할 수 있습니다: + +* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)과 그 Python API를 사용하여 클라우드에서 프로그래밍 방식으로 모델을 훈련합니다. Custom Vision은 모델 훈련에 사용할 수 있는 이미지 수를 몇 백 장으로 제한할 수 있으므로 데이터셋을 제한해야 할 수도 있습니다. +* [Keras 튜토리얼](https://keras.io/examples/vision/retinanet/)의 예제를 사용하여 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)와 같은), 객체 탐지가 어떻게 작동하는지를 이해하고 자신의 모델을 훈련할 수 있는 것이 중요합니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/ko/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..6c843e38 --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# 세분화 + +우리는 이전에 물체 탐지(Object Detection)에 대해 배웠습니다. 이는 이미지에서 물체를 *바운딩 박스*를 예측하여 위치를 찾는 방법입니다. 그러나 일부 작업에서는 바운딩 박스뿐만 아니라 더 정밀한 물체 위치 지정이 필요합니다. 이 작업을 **세분화(Segmentation)**라고 합니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +세분화는 **픽셀 분류**로 볼 수 있으며, 이미지의 **각** 픽셀에 대해 해당 클래스(*배경*이 클래스 중 하나)에 대한 예측을 해야 합니다. 세분화 알고리즘에는 두 가지 주요 유형이 있습니다: + +* **의미론적 세분화(Semantic segmentation)**는 픽셀 클래스만 알려주며, 동일 클래스의 서로 다른 물체를 구분하지 않습니다. +* **인스턴스 세분화(Instance segmentation)**는 클래스를 서로 다른 인스턴스로 나눕니다. + +예를 들어 인스턴스 세분화에서는 이 양들이 서로 다른 물체이지만, 의미론적 세분화에서는 모든 양이 하나의 클래스로 표현됩니다. + + + +> 이미지 출처: [이 블로그 포스트](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +세분화를 위한 다양한 신경망 아키텍처가 있지만, 모두 동일한 구조를 가지고 있습니다. 어떤 면에서는 이전에 배운 오토인코더(autoencoder)와 비슷하지만, 원본 이미지를 분해하는 대신 **마스크**를 분해하는 것이 목표입니다. 따라서 세분화 네트워크는 다음과 같은 구성 요소로 이루어져 있습니다: + +* **인코더(Encoder)**는 입력 이미지에서 특징을 추출합니다. +* **디코더(Decoder)**는 이러한 특징을 **마스크 이미지**로 변환하며, 클래스 수에 해당하는 채널 수와 동일한 크기를 가집니다. + + + +> 이미지 출처: [이 출판물](https://arxiv.org/pdf/2001.05566.pdf) + +세분화에 사용되는 손실 함수에 대해서도 특히 언급해야 합니다. 전통적인 오토인코더를 사용할 때는 두 이미지 간의 유사성을 측정해야 하며, 이를 위해 평균 제곱 오차(MSE)를 사용할 수 있습니다. 세분화에서는 목표 마스크 이미지의 각 픽셀이 클래스 번호(세 번째 차원에서 원-핫 인코딩됨)를 나타내므로, 분류에 특화된 손실 함수 - 모든 픽셀에 대해 평균화된 교차 엔트로피 손실(cross-entropy loss)을 사용해야 합니다. 마스크가 이진인 경우에는 **이진 교차 엔트로피 손실**(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)에서 **인간 신체 세분화**를 시도해 보세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 원어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역을 사용함으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/ko/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..6c6fd7c1 --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# 인체 분할 + +[초보자를 위한 AI 커리큘럼](https://github.com/microsoft/ai-for-beginners)에서의 실습 과제입니다. + +## 과제 + +영상 제작, 예를 들어 날씨 예보에서, 우리는 종종 카메라에서 사람 이미지를 잘라내어 다른 영상 위에 배치해야 합니다. 이는 일반적으로 **크로마 키** 기술을 사용하여 수행되며, 사람이 균일한 색상의 배경 앞에서 촬영된 후 해당 배경이 제거됩니다. 이 실습에서는 인체 실루엣을 잘라내기 위해 신경망 모델을 훈련할 것입니다. + +## 데이터셋 + +우리는 Kaggle의 [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset)을 사용할 것입니다. Kaggle에서 데이터셋을 수동으로 다운로드하세요. + +## 노트북 시작하기 + +[BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb)를 열어 실습을 시작하세요. + +## 주요 포인트 + +인체 분할은 사람의 이미지로 수행할 수 있는 일반적인 작업 중 하나일 뿐입니다. 또 다른 중요한 작업으로는 **스켈레톤 감지**와 **포즈 감지**가 있습니다. 이러한 작업이 어떻게 구현될 수 있는지 보려면 [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) 라이브러리를 확인해보세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/4-ComputerVision/README.md b/translations/ko/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..4f38dc99 --- /dev/null +++ b/translations/ko/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# 컴퓨터 비전 + +![컴퓨터 비전 내용 요약 그림](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ko.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 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/13-TextRep/README.md b/translations/ko/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..0ba063fa --- /dev/null +++ b/translations/ko/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# 텍스트를 텐서로 표현하기 + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## 텍스트 분류 + +이 섹션의 첫 번째 부분에서는 **텍스트 분류** 작업에 집중할 것입니다. 우리는 다음과 같은 뉴스 기사를 포함하는 [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) 데이터셋을 사용할 것입니다: + +* 카테고리: Sci/Tech +* 제목: 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* 텐서로 표현됩니다. 각 글자는 원-핫 인코딩의 텐서 열에 해당합니다. +* **단어 수준 표현**: 텍스트의 모든 단어로 **어휘**를 만들고, 그런 다음 원-핫 인코딩을 사용하여 단어를 표현합니다. 이 접근 방식은 단어가 더 높은 수준의 의미 개념을 사용하므로 신경망의 작업을 단순화하기 때문에 더 나은 방법입니다. 그러나 큰 사전 크기로 인해 고차원 희소 텐서를 다루어야 합니다. + +표현 방식에 관계없이 먼저 텍스트를 **토큰**의 시퀀스로 변환해야 합니다. 하나의 토큰은 문자, 단어 또는 때로는 단어의 일부일 수 있습니다. 그런 다음 토큰을 숫자로 변환하며, 일반적으로 **어휘**를 사용하여 이 숫자를 신경망에 원-핫 인코딩을 통해 입력할 수 있습니다. + +## N-그램 + +자연어에서 단어의 정확한 의미는 문맥에 따라 결정됩니다. 예를 들어, *neural network*와 *fishing network*의 의미는 완전히 다릅니다. 이를 고려하는 한 가지 방법은 단어 쌍을 사용하여 모델을 구축하고, 단어 쌍을 별도의 어휘 토큰으로 간주하는 것입니다. 이렇게 하면 문장 *I like to go fishing*은 다음과 같은 토큰 시퀀스로 표현됩니다: *I like*, *like to*, *to go*, *go fishing*. 이 접근 방식의 문제는 사전 크기가 크게 증가하고, *go fishing*과 *go shopping*과 같은 조합이 서로 다른 토큰으로 표현되지만, 동일한 동사를 사용함에도 불구하고 의미적 유사성이 없다는 것입니다. + +경우에 따라 세 단어의 조합인 삼그램(tri-grams)도 고려할 수 있습니다. 따라서 이 접근 방식은 종종 **n-그램**이라고 불립니다. 또한 문자 수준 표현에서 n-그램을 사용하는 것이 의미가 있으며, 이 경우 n-그램은 대략적으로 서로 다른 음절에 해당합니다. + +## 단어 가방 및 TF/IDF + +텍스트 분류와 같은 작업을 해결할 때, 우리는 텍스트를 고정 크기 벡터로 표현할 수 있어야 하며, 이를 최종 밀집 분류기의 입력으로 사용할 것입니다. 이를 수행하는 가장 간단한 방법 중 하나는 모든 개별 단어 표현을 결합하는 것입니다. 예를 들어, 각 단어의 원-핫 인코딩을 추가하면 각 단어가 텍스트 내에서 얼마나 자주 나타나는지를 보여주는 빈도 벡터를 얻을 수 있습니다. 이러한 텍스트 표현을 **단어 가방**(BoW)이라고 합니다. + + + +> 저자 제공 이미지 + +BoW는 본질적으로 텍스트에서 어떤 단어가 어떤 양으로 나타나는지를 나타내며, 이는 텍스트의 주제를 잘 나타낼 수 있습니다. 예를 들어, 정치에 관한 뉴스 기사는 *president*와 *country*와 같은 단어를 포함할 가능성이 높고, 과학 출판물은 *collider*, *discovered*와 같은 단어를 포함할 것입니다. 따라서 단어 빈도는 텍스트 내용의 좋은 지표가 될 수 있습니다. + +BoW의 문제는 *and*, *is*와 같은 특정 일반 단어가 대부분의 텍스트에 나타나며, 이들이 가장 높은 빈도를 가지므로 실제로 중요한 단어를 가리는 것입니다. 이러한 단어의 중요성을 낮추기 위해 전체 문서 집합에서 단어가 나타나는 빈도를 고려할 수 있습니다. 이는 TF/IDF 접근 방식의 주요 아이디어이며, 이 수업에 첨부된 노트북에서 더 자세히 다룰 것입니다. + +그러나 이러한 접근 방식은 텍스트의 **의미**를 완전히 고려할 수 없습니다. 이를 위해서는 더 강력한 신경망 모델이 필요하며, 이는 이 섹션 후반부에서 논의할 것입니다. + +## ✍️ 연습: 텍스트 표현 + +다음 노트북에서 학습을 계속하세요: + +* [PyTorch를 사용한 텍스트 표현](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [TensorFlow를 사용한 텍스트 표현](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## 결론 + +지금까지 우리는 서로 다른 단어에 빈도 가중치를 추가할 수 있는 기술을 연구했습니다. 그러나 이들은 의미나 순서를 표현할 수 없습니다. 유명한 언어학자 J. R. Firth가 1935년에 말했듯이, "단어의 완전한 의미는 항상 문맥에 따라 다르며, 문맥과 분리된 의미에 대한 연구는 진지하게 받아들여질 수 없다." 우리는 나중에 언어 모델링을 사용하여 텍스트에서 문맥 정보를 캡처하는 방법을 배울 것입니다. + +## 🚀 도전 + +단어 가방 및 다양한 데이터 모델을 사용하여 다른 연습 문제를 시도해 보세요. 이 [Kaggle 대회](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words)에서 영감을 받을 수 있습니다. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## 리뷰 및 자기 학습 + +[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste)에서 텍스트 임베딩 및 단어 가방 기술로 기술을 연습하세요. + +## [과제: 노트북](assignment.md) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어에서 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/13-TextRep/assignment.md b/translations/ko/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..76dc9a79 --- /dev/null +++ b/translations/ko/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# 과제: 노트북 + +이 수업과 관련된 노트북(파이토치 또는 텐서플로우 버전 중 하나)을 사용하여, 자신만의 데이터셋을 사용해 다시 실행해 보세요. Kaggle에서 가져온 데이터셋을 사용하되, 출처를 명시해야 합니다. 노트북을 다시 작성하여 자신의 발견을 강조하세요. 놀라운 결과를 보여줄 수 있는 혁신적인 데이터셋을 시도해 보세요. 예를 들어, [UFO 목격에 관한 이 데이터셋](https://www.kaggle.com/datasets/NUFORC/ufo-sightings)도 좋은 선택이 될 수 있습니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/14-Embeddings/README.md b/translations/ko/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..ec9d812c --- /dev/null +++ b/translations/ko/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# 임베딩 + +## [강의 전 퀴즈](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.ko.png) + +> 저자 제공 이미지 + +## ✍️ 연습: 임베딩 + +다음 노트북에서 학습을 계속하세요: +* [PyTorch로 임베딩하기](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [TensorFlow로 임베딩하기](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## 의미 임베딩: Word2Vec + +임베딩 레이어가 단어를 벡터 표현으로 매핑하는 방법을 학습하는 동안, 이 표현이 반드시 많은 의미적 의미를 가지고 있는 것은 아닙니다. 유사한 단어 또는 동의어가 어떤 벡터 거리(예: 유클리드 거리) 측면에서 서로 가까운 벡터에 대응하도록 벡터 표현을 학습하는 것이 좋습니다. + +이를 위해, 우리는 특정 방식으로 대규모 텍스트 모음에서 임베딩 모델을 사전 훈련해야 합니다. 의미 임베딩을 훈련하는 한 가지 방법은 [Word2Vec](https://en.wikipedia.org/wiki/Word2vec)이라고 불립니다. 이는 단어의 분산 표현을 생성하기 위해 사용되는 두 가지 주요 아키텍처를 기반으로 합니다: + + - **연속 단어 가방** (CBoW) — 이 아키텍처에서는 모델이 주변 맥락에서 단어를 예측하도록 훈련합니다. ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$가 주어지면, 모델의 목표는 $(W_{-2},W_{-1},W_1,W_2)$에서 $W_0$를 예측하는 것입니다. + - **연속 스킵그램**은 CBoW와 반대입니다. 모델은 현재 단어를 예측하기 위해 주변 맥락 단어의 윈도우를 사용합니다. + +CBoW는 더 빠르지만, 스킵그램은 더 느리지만 드문 단어를 더 잘 표현합니다. + +![단어를 벡터로 변환하는 CBoW와 스킵그램 알고리즘을 보여주는 이미지.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ko.png) + +> [이 논문](https://arxiv.org/pdf/1301.3781.pdf)에서 가져온 이미지 + +Word2Vec로 사전 훈련된 임베딩(및 GloVe와 같은 다른 유사한 모델)은 신경망의 임베딩 레이어 대신 사용할 수도 있습니다. 그러나 우리는 어휘 문제를 다루어야 합니다. 왜냐하면 Word2Vec/GloVe를 사전 훈련하는 데 사용된 어휘가 우리의 텍스트 코퍼스의 어휘와 다를 가능성이 높기 때문입니다. 이 문제를 해결하는 방법을 알아보려면 위의 노트북을 참조하세요. + +## 맥락 임베딩 + +Word2Vec와 같은 전통적인 사전 훈련된 임베딩 표현의 주요 한계 중 하나는 단어 의미의 모호성 문제입니다. 사전 훈련된 임베딩은 문맥에서 단어의 의미를 어느 정도 포착할 수 있지만, 단어의 모든 가능한 의미가 동일한 임베딩에 인코딩됩니다. 이는 'play'와 같은 많은 단어가 사용되는 맥락에 따라 다른 의미를 가지기 때문에 하위 모델에서 문제를 일으킬 수 있습니다. + +예를 들어, 'play'라는 단어는 다음 두 문장에서 상당히 다른 의미를 가지고 있습니다: + +- 나는 극장에서 **연극**을 보러 갔다. +- 존은 친구들과 **놀고** 싶어한다. + +위의 사전 훈련된 임베딩은 'play'라는 단어의 두 가지 의미를 동일한 임베딩으로 표현합니다. 이러한 한계를 극복하기 위해, 우리는 대규모 텍스트 코퍼스를 기반으로 한 **언어 모델**에 따라 임베딩을 구축해야 하며, 이는 단어가 다양한 맥락에서 어떻게 결합될 수 있는지를 *알고* 있습니다. 맥락 임베딩에 대한 논의는 이 튜토리얼의 범위를 벗어나지만, 나중에 언어 모델에 대해 이야기할 때 다시 돌아올 것입니다. + +## 결론 + +이번 수업에서는 TensorFlow와 PyTorch에서 임베딩 레이어를 구축하고 사용하는 방법을 배워 단어의 의미를 더 잘 반영할 수 있음을 발견했습니다. + +## 🚀 도전 + +Word2Vec는 노래 가사와 시를 생성하는 등 흥미로운 응용 프로그램에 사용되었습니다. 저자가 Word2Vec를 사용하여 시를 생성하는 과정을 설명하는 [이 기사](https://www.politetype.com/blog/word2vec-color-poems)를 살펴보세요. 또한 [Dan Shiffmann의 이 동영상](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain)을 시청하여 이 기술에 대한 다른 설명을 알아보세요. 그런 다음 이러한 기술을 Kaggle에서 가져온 자신의 텍스트 코퍼스에 적용해 보세요. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## 복습 및 자기 학습 + +Word2Vec에 대한 이 논문을 읽어보세요: [벡터 공간에서 단어 표현의 효율적인 추정](https://arxiv.org/pdf/1301.3781.pdf) + +## [과제: 노트북](assignment.md) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 있을 수 있음을 유의해 주시기 바랍니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/14-Embeddings/assignment.md b/translations/ko/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..30fffe4f --- /dev/null +++ b/translations/ko/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# 과제: 노트북 + +이 수업과 관련된 노트북(파이토치 또는 텐서플로우 버전 중 하나)을 사용하여, 자신의 데이터셋으로 다시 실행해 보세요. 데이터셋은 저작권을 준수하여 Kaggle에서 가져올 수 있습니다. 노트북을 수정하여 자신의 발견을 강조해 보세요. 다른 종류의 데이터셋을 시도하고, [이 비틀즈 가사](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics)와 같은 텍스트를 사용하여 발견한 내용을 문서화하세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/15-LanguageModeling/README.md b/translations/ko/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..a5acb02a --- /dev/null +++ b/translations/ko/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# 언어 모델링 + +Word2Vec 및 GloVe와 같은 의미 임베딩은 사실 **언어 모델링**을 향한 첫 번째 단계로, 언어의 본질을 어느 정도 *이해*하거나 *표현*하는 모델을 만드는 것입니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +언어 모델링의 주요 아이디어는 비지도 방식으로 레이블이 없는 데이터셋에서 모델을 훈련하는 것입니다. 이는 사용할 수 있는 레이블이 없는 텍스트가 방대하지만, 레이블이 있는 텍스트의 양은 레이블링에 쏟을 수 있는 노력의 양에 항상 제한받기 때문에 중요합니다. 대개 우리는 텍스트에서 **누락된 단어를 예측**할 수 있는 언어 모델을 구축할 수 있습니다. 이는 텍스트에서 임의의 단어를 마스킹하고 이를 훈련 샘플로 사용하는 것이 쉽기 때문입니다. + +## 임베딩 훈련 + +이전 예제에서는 사전 훈련된 의미 임베딩을 사용했지만, 이러한 임베딩이 어떻게 훈련될 수 있는지 보는 것은 흥미롭습니다. 사용할 수 있는 몇 가지 가능한 아이디어가 있습니다: + +* **N-그램** 언어 모델링: N개의 이전 토큰을 보고 토큰을 예측하는 방법 (N-그램) +* **연속 단어 가방** (CBoW): 토큰 시퀀스 $W_{-N}$, ..., $W_N$에서 중간 토큰 $W_0$를 예측하는 방법. +* **스킵-그램**: 중간 토큰 $W_0$에서 이웃 토큰 집합 {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$}을 예측하는 방법. + +![단어를 벡터로 변환하는 알고리즘의 예시 이미지](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ko.png) + +> [이 논문](https://arxiv.org/pdf/1301.3781.pdf)에서 발췌한 이미지 + +## ✍️ 예제 노트북: CBoW 모델 훈련 + +다음 노트북에서 학습을 계속하세요: + +* [TensorFlow로 CBoW Word2Vec 훈련하기](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [PyTorch로 CBoW Word2Vec 훈련하기](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## 결론 + +이전 수업에서 우리는 단어 임베딩이 마법처럼 작동한다는 것을 보았습니다! 이제 단어 임베딩을 훈련하는 것이 그렇게 복잡한 작업이 아니라는 것을 알게 되었으며, 필요하다면 도메인 특화 텍스트에 대해 자체 단어 임베딩을 훈련할 수 있어야 합니다. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## 리뷰 & 자기 학습 + +* [언어 모델링에 대한 공식 PyTorch 튜토리얼](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Word2Vec 모델 훈련에 대한 공식 TensorFlow 튜토리얼](https://www.TensorFlow.org/tutorials/text/word2vec). +* **gensim** 프레임워크를 사용하여 몇 줄의 코드로 가장 일반적으로 사용되는 임베딩을 훈련하는 방법은 [이 문서](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)에서 설명되어 있습니다. + +## 🚀 [과제: 스킵-그램 모델 훈련하기](lab/README.md) + +실습에서는 이 수업의 코드를 수정하여 CBoW 대신 스킵-그램 모델을 훈련하도록 도전합니다. [자세한 내용 읽기](lab/README.md) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/ko/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..d672cd1d --- /dev/null +++ b/translations/ko/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Skip-Gram 모델 훈련 + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners)에서의 실습 과제입니다. + +## 과제 + +이번 실습에서는 Skip-Gram 기법을 사용하여 Word2Vec 모델을 훈련하는 도전을 합니다. $N$-토큰 너비의 Skip-Gram 윈도우에서 이웃 단어를 예측하기 위해 임베딩이 있는 네트워크를 훈련하세요. [이번 수업의 코드](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb)를 사용하고, 약간 수정해도 좋습니다. + +## 데이터셋 + +원하는 책을 자유롭게 사용할 수 있습니다. [Project Gutenberg](https://www.gutenberg.org/)에서 많은 무료 텍스트를 찾을 수 있으며, 예를 들어 루이스 캐럴의 [이상한 나라의 앨리스](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 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/16-RNN/README.md b/translations/ko/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..41bbef31 --- /dev/null +++ b/translations/ko/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,86 @@ +# 순환 신경망 + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +이전 섹션에서는 텍스트의 풍부한 의미 표현을 사용하고, 임베딩 위에 간단한 선형 분류기를 적용했습니다. 이 아키텍처의 목적은 문장 내 단어들의 집합된 의미를 포착하는 것이지만, 단어의 **순서**를 고려하지 않습니다. 왜냐하면 임베딩 위에서의 집계 작업이 원본 텍스트에서 이 정보를 제거했기 때문입니다. 이러한 모델은 단어의 순서를 모델링할 수 없기 때문에, 텍스트 생성이나 질문 응답과 같은 더 복잡하거나 모호한 작업을 해결할 수 없습니다. + +텍스트 시퀀스의 의미를 포착하기 위해서는 **순환 신경망**(RNN)이라는 다른 신경망 아키텍처를 사용해야 합니다. RNN에서는 문장을 한 번에 하나의 기호로 네트워크를 통과시키고, 네트워크는 어떤 **상태**를 생성하며, 이를 다음 기호와 함께 다시 네트워크에 전달합니다. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ko.png) + +> 저자 제공 이미지 + +입력 토큰 시퀀스 X0,...,Xn가 주어지면, RNN은 신경망 블록의 시퀀스를 생성하고, 이 시퀀스를 백프로파게이션을 사용하여 끝에서 끝까지 학습합니다. 각 네트워크 블록은 입력으로 (Xi, Si) 쌍을 받고, 결과로 Si+1을 생성합니다. 최종 상태 Sn 또는 (출력 Yn)는 결과를 생성하기 위해 선형 분류기로 전달됩니다. 모든 네트워크 블록은 동일한 가중치를 공유하며, 하나의 백프로파게이션 패스를 사용하여 끝에서 끝까지 학습됩니다. + +상태 벡터 S0,...,Sn가 네트워크를 통과하므로, 단어 간의 순차적 의존성을 학습할 수 있습니다. 예를 들어, 시퀀스의 어딘가에 단어 *not*이 나타나면, 특정 요소를 부정하도록 상태 벡터 내에서 학습할 수 있습니다. + +> ✅ 위 그림에서 모든 RNN 블록의 가중치가 공유되므로, 동일한 그림은 출력 상태를 네트워크의 입력으로 다시 전달하는 순환 피드백 루프가 있는 하나의 블록(오른쪽)으로 표현될 수 있습니다. + +## RNN 셀의 구조 + +간단한 RNN 셀의 구조를 살펴보겠습니다. 이 셀은 이전 상태 Si-1와 현재 기호 Xi를 입력으로 받아들여, 출력 상태 Si를 생성해야 합니다(때때로 생성 네트워크의 경우처럼 다른 출력 Yi에도 관심이 있을 수 있습니다). + +간단한 RNN 셀 내부에는 두 개의 가중치 행렬이 있습니다: 하나는 입력 기호를 변환하고(이를 W라고 부르겠습니다), 다른 하나는 입력 상태를 변환합니다(H). 이 경우 네트워크의 출력은 σ(W×Xi+H×Si-1+b)로 계산되며, 여기서 σ는 활성화 함수이고 b는 추가적인 편향입니다. + +RNN 셀 구조 + +> 저자 제공 이미지 + +많은 경우, 입력 토큰은 RNN에 들어가기 전에 임베딩 레이어를 통과하여 차원을 줄입니다. 이 경우 입력 벡터의 차원이 *emb_size*이고 상태 벡터의 차원이 *hid_size*인 경우, W의 크기는 *emb_size*×*hid_size*이고 H의 크기는 *hid_size*×*hid_size*입니다. + +## 장기 단기 기억(LSTM) + +고전적인 RNN의 주요 문제 중 하나는 이른바 **소실 기울기** 문제입니다. RNN은 하나의 백프로파게이션 패스에서 끝에서 끝까지 학습되기 때문에, 네트워크의 첫 번째 레이어로 오류를 전파하는 데 어려움이 있으며, 따라서 네트워크는 먼 토큰 간의 관계를 학습할 수 없습니다. 이 문제를 피하는 한 가지 방법은 이른바 **게이트**를 사용하여 **명시적인 상태 관리**를 도입하는 것입니다. 이러한 종류의 두 가지 잘 알려진 아키텍처가 있습니다: **장기 단기 기억**(LSTM)과 **게이티드 릴레이 유닛**(GRU). + +![장기 단기 기억 셀의 예시를 보여주는 이미지](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> 이미지 출처 TBD + +LSTM 네트워크는 RNN과 유사한 방식으로 구성되지만, 레이어 간에 전달되는 두 가지 상태가 있습니다: 실제 상태 C와 숨겨진 벡터 H입니다. 각 유닛에서 숨겨진 벡터 Hi는 입력 Xi와 연결되어 C 상태에 어떤 일이 발생하는지를 제어합니다. 각 게이트는 시그모이드 활성화가 있는 신경망(출력이 [0,1] 범위)에 해당하며, 상태 벡터와 곱해질 때 비트 마스크로 생각할 수 있습니다. 다음은 위 그림에서 왼쪽에서 오른쪽으로의 게이트입니다: + +* **망각 게이트**는 숨겨진 벡터를 받아 C 벡터의 어떤 구성 요소를 잊어야 할지, 어떤 구성 요소를 통과시켜야 할지를 결정합니다. +* **입력 게이트**는 입력과 숨겨진 벡터에서 일부 정보를 받아 상태에 삽입합니다. +* **출력 게이트**는 상태를 *tanh* 활성화가 있는 선형 레이어를 통해 변환한 후, 숨겨진 벡터 Hi를 사용하여 일부 구성 요소를 선택하여 새로운 상태 Ci+1를 생성합니다. + +상태 C의 구성 요소는 켜고 끌 수 있는 플래그로 생각할 수 있습니다. 예를 들어, 시퀀스에서 이름 *Alice*를 만나면, 이는 여성 캐릭터를 가리킨다고 가정할 수 있으며, 문장 내에 여성 명사가 있다는 플래그를 세울 수 있습니다. 이후 *and Tom*이라는 구문을 만나면, 우리는 복수 명사가 있다는 플래그를 세울 것입니다. 따라서 상태를 조작함으로써 문장 부분의 문법적 특성을 추적할 수 있습니다. + +> ✅ LSTM의 내부를 이해하는 데 훌륭한 자료는 Christopher Olah의 이 훌륭한 기사 [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/)입니다. + +## 양방향 및 다층 RNN + +우리는 시퀀스의 시작에서 끝으로 한 방향으로 작동하는 순환 네트워크에 대해 논의했습니다. 이는 우리가 읽고 듣는 방식과 유사하므로 자연스럽게 보입니다. 그러나 많은 실제 경우에서 입력 시퀀스에 무작위 접근이 가능하므로, 양방향으로 순환 계산을 수행하는 것이 의미가 있을 수 있습니다. 이러한 네트워크를 **양방향** RNN이라고 합니다. 양방향 네트워크를 다룰 때는 각 방향에 대해 두 개의 숨겨진 상태 벡터가 필요합니다. + +순환 네트워크는 단방향이든 양방향이든 시퀀스 내의 특정 패턴을 포착하고 이를 상태 벡터에 저장하거나 출력을 통해 전달할 수 있습니다. 합성곱 네트워크와 마찬가지로, 우리는 첫 번째 레이어에서 추출한 저수준 패턴을 기반으로 더 높은 수준의 패턴을 포착하기 위해 첫 번째 레이어 위에 또 다른 순환 레이어를 구축할 수 있습니다. 이는 두 개 이상의 순환 네트워크로 구성된 **다층 RNN**의 개념으로 이어지며, 이전 레이어의 출력이 다음 레이어의 입력으로 전달됩니다. + +![다층 장기 단기 기억 RNN을 보여주는 이미지](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ko.jpg) + +*그림 출처: [이 훌륭한 게시물](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) by Fernando López* + +## ✍️ 연습: 임베딩 + +다음 노트북에서 학습을 계속하세요: + +* [PyTorch로 RNN](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [TensorFlow로 RNN](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## 결론 + +이번 단원에서는 RNN이 시퀀스 분류에 사용될 수 있지만, 사실 텍스트 생성, 기계 번역 등 더 많은 작업을 처리할 수 있음을 알게 되었습니다. 다음 단원에서는 이러한 작업을 다룰 것입니다. + +## 🚀 도전 과제 + +LSTM에 대한 문헌을 읽고 그 응용 프로그램을 고려해 보세요: + +- [그리드 장기 단기 기억](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## 복습 및 자기 학습 + +- [LSTM 네트워크 이해하기](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) by Christopher Olah. + +## [과제: 노트북](assignment.md) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 원어로 된 권위 있는 자료로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 저희는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/16-RNN/assignment.md b/translations/ko/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..6be6b1f2 --- /dev/null +++ b/translations/ko/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# 과제: 노트북 + +이 수업과 관련된 노트북(파이토치 또는 텐서플로우 버전 중 하나)을 사용하여, 자신의 데이터셋으로 다시 실행해 보세요. Kaggle에서 가져온 데이터셋을 사용하되 출처를 명시해야 합니다. 노트북을 재작성하여 자신의 발견 사항을 강조하세요. 다른 종류의 데이터셋을 시도하고, [이 Kaggle 대회 데이터셋인 날씨 트윗](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv)과 같은 텍스트를 사용하여 발견 사항을 문서화하세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/ko/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..3f65c56d --- /dev/null +++ b/translations/ko/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# 생성적 네트워크 + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +순환 신경망(RNN)과 Long Short Term Memory Cells(LSTM), Gated Recurrent Units(GRU)와 같은 게이트가 있는 셀 변형은 언어 모델링을 위한 메커니즘을 제공하여 단어 순서를 학습하고 시퀀스에서 다음 단어에 대한 예측을 제공할 수 있습니다. 이를 통해 RNN을 일반적인 텍스트 생성, 기계 번역, 심지어 이미지 캡셔닝과 같은 **생성 작업**에 사용할 수 있습니다. + +> ✅ 텍스트 입력 시 텍스트 완성과 같은 생성 작업의 혜택을 받은 모든 경우를 생각해 보세요. 좋아하는 애플리케이션이 RNN을 활용했는지 조사해 보세요. + +이전 단원에서 논의한 RNN 아키텍처에서는 각 RNN 유닛이 다음 숨겨진 상태를 출력으로 생성했습니다. 그러나 각 순환 유닛에 또 다른 출력을 추가할 수 있으며, 이를 통해 **시퀀스**(원래 시퀀스와 길이가 동일)를 출력할 수 있습니다. 또한 각 단계에서 입력을 받지 않는 RNN 유닛을 사용하고, 초기 상태 벡터만 받아서 출력 시퀀스를 생성할 수 있습니다. + +이로 인해 아래 그림에 나타난 다양한 신경망 아키텍처가 가능합니다: + +![일반적인 순환 신경망 패턴을 보여주는 이미지.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ko.jpg) + +> 이미지 출처: [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) 블로그 게시물, [Andrej Karpaty](http://karpathy.github.io/) 저자 + +* **일대일**은 하나의 입력과 하나의 출력을 가지는 전통적인 신경망입니다. +* **일대다**는 하나의 입력 값을 받아 출력 값의 시퀀스를 생성하는 생성적 아키텍처입니다. 예를 들어, **이미지 캡셔닝** 네트워크를 훈련하여 사진의 텍스트 설명을 생성하려면 사진을 입력으로 사용하고 CNN을 통해 숨겨진 상태를 얻은 후, 순환 체인이 단어별로 캡션을 생성하도록 할 수 있습니다. +* **다대일**은 이전 단원에서 설명한 RNN 아키텍처에 해당하며, 예를 들어 텍스트 분류가 있습니다. +* **다대다**, 또는 **시퀀스-투-시퀀스**는 **기계 번역**과 같은 작업에 해당하며, 여기서 첫 번째 RNN이 입력 시퀀스의 모든 정보를 숨겨진 상태로 수집하고, 다른 RNN 체인이 이 상태를 출력 시퀀스로 펼칩니다. + +이번 단원에서는 텍스트 생성을 도와주는 간단한 생성 모델에 집중할 것입니다. 간단함을 위해 문자 수준의 토큰화를 사용할 것입니다. + +이 RNN을 단계별로 텍스트를 생성하도록 훈련시킬 것입니다. 각 단계에서 길이가 `nchars`인 문자 시퀀스를 가져와서 각 입력 문자에 대해 다음 출력 문자를 생성하도록 네트워크에 요청합니다: + +![단어 'HELLO'의 RNN 생성 예시를 보여주는 이미지.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ko.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) + +## 복습 및 자기 학습 + +지식을 확장할 수 있는 몇 가지 기사를 소개합니다. + +* Markov Chain, LSTM 및 GPT-2를 사용한 텍스트 생성의 다양한 접근 방식: [블로그 게시물](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* [Keras 문서](https://keras.io/examples/generative/lstm_character_level_text_generation/)에서의 텍스트 생성 샘플 + +## [과제](lab/README.md) + +문자를 하나씩 생성하는 방법을 살펴보았습니다. 이번 실습에서는 단어 수준의 텍스트 생성을 탐구할 것입니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/ko/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..d47f1bd7 --- /dev/null +++ b/translations/ko/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# RNN을 사용한 단어 수준 텍스트 생성 + +[초보자를 위한 AI 커리큘럼](https://github.com/microsoft/ai-for-beginners)에서의 실습 과제입니다. + +## 과제 + +이 실습에서는 원하는 책을 선택하여 단어 수준 텍스트 생성기를 훈련시키기 위한 데이터셋으로 사용해야 합니다. + +## 데이터셋 + +원하는 책을 자유롭게 사용하실 수 있습니다. [프로젝트 구텐베르크](https://www.gutenberg.org/)에서 많은 무료 텍스트를 찾을 수 있으며, 예를 들어 루이스 캐럴의 [이상한 나라의 앨리스](https://www.gutenberg.org/files/11/11-0.txt)로 바로 가는 링크가 있습니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 것이 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/18-Transformers/README.md b/translations/ko/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..139597f9 --- /dev/null +++ b/translations/ko/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,2 @@ + + diff --git a/translations/ko/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/ko/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..ed347581 --- /dev/null +++ b/translations/ko/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# 주의 메커니즘과 트랜스포머 + +## [강의 전 퀴즈](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.ko.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.ko.png) + +> [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf)에서의 그림 (Fig.3) + +주의 메커니즘은 현재 또는 거의 현재의 NLP 최첨단 기술의 많은 부분을 담당하고 있습니다. 그러나 주의를 추가하면 모델 매개변수의 수가 크게 증가하여 RNN의 확장성 문제로 이어집니다. RNN의 확장성에 대한 주요 제약은 모델의 순환적 특성으로 인해 배치 및 병렬 학습이 어렵다는 것입니다. RNN에서는 시퀀스의 각 요소를 순차적으로 처리해야 하므로 쉽게 병렬화할 수 없습니다. + +![주의를 가진 인코더 디코더](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> [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. 그런 다음 토큰 위치를 토큰 임베딩 벡터와 혼합합니다. 위치(정수)를 벡터로 변환하기 위해 여러 가지 접근 방식을 사용할 수 있습니다: + +* 토큰 임베딩과 유사한 학습 가능한 임베딩. 이것이 우리가 여기서 고려하는 접근 방식입니다. 우리는 토큰과 그 위치 모두에 대해 임베딩 레이어를 적용하여 동일한 차원의 임베딩 벡터를 생성하고 이를 더합니다. +* 원래 논문에서 제안된 고정 위치 인코딩 함수. + + + +> 저자에 의해 제공된 이미지 + +우리가 위치 임베딩으로 얻는 결과는 원래의 토큰과 시퀀스 내의 위치를 모두 포함합니다. + +### 다중 헤드 자기 주의 + +다음으로, 우리는 시퀀스 내에서 몇 가지 패턴을 포착해야 합니다. 이를 위해 트랜스포머는 **자기 주의** 메커니즘을 사용하며, 이는 기본적으로 입력과 출력으로 동일한 시퀀스에 적용되는 주의입니다. 자기 주의를 적용하면 문장 내의 **맥락**을 고려하고 어떤 단어가 서로 관련되어 있는지를 확인할 수 있습니다. 예를 들어, 이는 *it*와 같은 대명사가 지칭하는 단어를 확인하고 맥락을 고려할 수 있게 해줍니다: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ko.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)는 *BERT-base*의 경우 12층, *BERT-large*의 경우 24층으로 구성된 매우 큰 다층 트랜스포머 네트워크입니다. 이 모델은 먼저 대규모 텍스트 데이터(위키피디아 + 책)에서 비지도 학습(문장에서 마스킹된 단어 예측)을 사용하여 사전 훈련됩니다. 사전 훈련 동안 모델은 상당한 수준의 언어 이해를 흡수하며, 이는 이후 다른 데이터 세트와 함께 미세 조정하여 활용될 수 있습니다. 이 과정을 **전이 학습**이라고 합니다. + +![http://jalammar.github.io/illustrated-bert/에서 가져온 이미지](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ko.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 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/18-Transformers/assignment.md b/translations/ko/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..371d0703 --- /dev/null +++ b/translations/ko/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# 과제: 변환기 + +HuggingFace에서 변환기를 실험해 보세요! 그들이 제공하는 스크립트를 사용하여 사이트에 있는 다양한 모델로 작업해 보세요: https://huggingface.co/docs/transformers/run_scripts. 그들의 데이터셋 중 하나를 사용해 보거나, 이 커리큘럼이나 Kaggle에서 자신의 데이터를 가져와서 흥미로운 텍스트를 생성할 수 있는지 확인해 보세요. 결과를 정리한 노트북을 작성하세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원래 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/19-NER/README.md b/translations/ko/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..aa9eb69d --- /dev/null +++ b/translations/ko/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,81 @@ +# 명명된 개체 인식 + +지금까지 우리는 주로 하나의 NLP 작업인 분류에 집중해 왔습니다. 그러나 신경망으로 수행할 수 있는 다른 NLP 작업도 있습니다. 그 중 하나가 **[명명된 개체 인식](https://wikipedia.org/wiki/Named-entity_recognition)** (NER)으로, 텍스트 내에서 장소, 인명, 날짜-시간 간격, 화학식 등과 같은 특정 개체를 인식하는 작업입니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## NER 사용 예시 + +예를 들어, Amazon Alexa나 Google Assistant와 유사한 자연어 챗봇을 개발하고 싶다고 가정해 보겠습니다. 지능형 챗봇이 작동하는 방식은 입력 문장에 대해 텍스트 분류를 수행하여 사용자가 원하는 것을 *이해*하는 것입니다. 이 분류의 결과는 **의도**라고 불리며, 챗봇이 무엇을 해야 할지를 결정합니다. + +Bot NER + +> 이미지 제공: 저자 + +하지만 사용자가 문구의 일부로 몇 가지 매개변수를 제공할 수 있습니다. 예를 들어, 날씨를 요청할 때 특정 위치나 날짜를 지정할 수 있습니다. 챗봇은 이러한 개체를 이해하고, 작업을 수행하기 전에 매개변수 슬롯을 적절히 채워야 합니다. 바로 여기에서 NER이 필요합니다. + +> ✅ 또 다른 예시는 [과학 의학 논문 분석](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)입니다. 우리가 찾아야 할 주요 사항 중 하나는 질병 및 의학 물질과 같은 특정 의학 용어입니다. 소수의 질병은 아마도 부분 문자열 검색을 사용하여 추출할 수 있지만, 화학 화합물 및 약물 이름과 같은 더 복잡한 개체는 더 복잡한 접근 방식이 필요합니다. + +## 토큰 분류로서의 NER + +NER 모델은 본질적으로 **토큰 분류 모델**입니다. 입력 토큰 각각에 대해 그것이 개체에 속하는지 여부를 결정해야 하며, 만약 그렇다면 어떤 개체 클래스에 속하는지를 결정해야 합니다. + +다음 논문 제목을 고려해 보십시오: + +**삼첨판 역류** 및 **탄산리튬** **독성** 신생아에서. + +여기서 개체는 다음과 같습니다: + +* 삼첨판 역류는 질병입니다 (`DIS`) +* 탄산리튬은 화학 물질입니다 (`CHEM`) +* 독성 또한 질병입니다 (`DIS`) + +하나의 개체가 여러 토큰에 걸쳐 있을 수 있다는 점에 유의하세요. 그리고 이 경우처럼 두 개의 연속된 개체를 구분해야 합니다. 따라서 각 개체에 대해 두 개의 클래스를 사용하는 것이 일반적입니다 - 하나는 개체의 첫 번째 토큰을 지정하고 (종종 `B-` 접두사가 사용됩니다, **b**eginning), 다른 하나는 개체의 계속 (`I-`, **i**nner token)입니다. 우리는 또한 `O`를 모든 **o**ther 토큰을 나타내는 클래스로 사용합니다. 이러한 토큰 태깅을 [BIO 태깅](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (또는 IOB)이라고 합니다. 태깅된 우리의 제목은 다음과 같이 보일 것입니다: + +토큰 | 태그 +------|----- +삼첨판 | B-DIS +역류 | I-DIS +및 | O +탄산리튬 | B-CHEM +독성 | B-DIS +신생아 | O +에서 | O +. | O + +토큰과 클래스 간의 일대일 대응을 구축해야 하므로, 우리는 이 그림에서 가장 오른쪽에 있는 **다대다** 신경망 모델을 훈련할 수 있습니다: + +![일반적인 순환 신경망 패턴을 보여주는 이미지.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ko.jpg) + +> *이미지 출처: [이 블로그 게시물](http://karpathy.github.io/2015/05/21/rnn-effectiveness/)의 [Andrej Karpathy](http://karpathy.github.io/)에 의해 제공된 것입니다. NER 토큰 분류 모델은 이 그림에서 가장 오른쪽 네트워크 아키텍처에 해당합니다.* + +## NER 모델 훈련 + +NER 모델은 본질적으로 토큰 분류 모델이므로, 우리는 이 작업을 위해 이미 익숙한 RNN을 사용할 수 있습니다. 이 경우, 각 순환 네트워크 블록은 토큰 ID를 반환합니다. 다음 예제 노트북은 토큰 분류를 위한 LSTM 훈련 방법을 보여줍니다. + +## ✍️ 예제 노트북: NER + +다음 노트북에서 학습을 계속하세요: + +* [TensorFlow를 이용한 NER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## 결론 + +NER 모델은 **토큰 분류 모델**로, 토큰 분류를 수행하는 데 사용할 수 있습니다. 이는 NLP에서 매우 일반적인 작업으로, 텍스트 내의 특정 개체(장소, 이름, 날짜 등)를 인식하는 데 도움을 줍니다. + +## 🚀 도전 과제 + +아래 링크된 과제를 완료하여 의학 용어에 대한 명명된 개체 인식 모델을 훈련한 후, 다른 데이터셋에서 시험해 보세요. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## 복습 및 자습 + +블로그 [순환 신경망의 비현실적인 효과](http://karpathy.github.io/2015/05/21/rnn-effectiveness/)를 읽고 해당 기사에서 더 읽기 섹션을 따라가며 지식을 심화하세요. + +## [과제](lab/README.md) + +이번 수업의 과제에서는 의학 개체 인식 모델을 훈련해야 합니다. 이 수업에서 설명한 대로 LSTM 모델을 훈련하는 것부터 시작하고, BERT 변환기 모델을 사용하는 것으로 진행할 수 있습니다. 모든 세부 사항을 확인하려면 [지침](lab/README.md)을 읽어보세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 원어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/19-NER/lab/README.md b/translations/ko/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..83d794c7 --- /dev/null +++ b/translations/ko/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +[초보자를 위한 AI 커리큘럼](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도 제공합니다. + +이 데이터를 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` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` 객체를 제공합니다. 데이터셋을 BIO 형식으로 변환할 때 PubMedBERT 토크나이제이션을 고려해야 합니다. [이 파이썬 코드 조각](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 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/20-LangModels/README.md b/translations/ko/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..139597f9 --- /dev/null +++ b/translations/ko/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,2 @@ + + diff --git a/translations/ko/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/ko/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..ab69eb52 --- /dev/null +++ b/translations/ko/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,55 @@ +# 사전 훈련된 대규모 언어 모델 + +이전의 모든 작업에서 우리는 레이블이 붙은 데이터 세트를 사용하여 특정 작업을 수행하도록 신경망을 훈련시켰습니다. BERT와 같은 대규모 변환기 모델을 사용하여 우리는 자가 지도 방식으로 언어 모델을 구축하고, 이후 특정 도메인에 맞춘 추가 훈련을 통해 특정 다운스트림 작업에 특화시킵니다. 그러나 대규모 언어 모델이 도메인 특정 훈련 없이도 많은 작업을 해결할 수 있다는 것이 입증되었습니다. 이를 수행할 수 있는 모델의 집합을 **GPT**(Generative Pre-Trained Transformer)라고 합니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## 텍스트 생성 및 당혹감 + +신경망이 다운스트림 훈련 없이 일반 작업을 수행할 수 있다는 아이디어는 [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) 논문에 제시되었습니다. 주요 아이디어는 많은 다른 작업이 **텍스트 생성**을 사용하여 모델링될 수 있다는 것입니다. 텍스트를 이해한다는 것은 본질적으로 그것을 생성할 수 있다는 것을 의미합니다. 모델은 인간 지식을 포함하는 방대한 양의 텍스트에서 훈련되기 때문에 다양한 주제에 대한 지식을 갖추게 됩니다. + +> 텍스트를 이해하고 생성할 수 있다는 것은 우리 주변 세계에 대한 지식을 갖추는 것을 의미합니다. 사람들도 대체로 독서를 통해 배웁니다. GPT 네트워크는 이 점에서 유사합니다. + +텍스트 생성 네트워크는 다음 단어 $$P(w_N)$$의 확률을 예측하는 방식으로 작동합니다. 그러나 다음 단어의 무조건적 확률은 이 단어가 텍스트 말뭉치에서 나타나는 빈도와 같습니다. GPT는 이전 단어들을 고려하여 다음 단어의 **조건부 확률**을 제공할 수 있습니다: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> 확률에 대한 자세한 내용은 [Data Science for Beginners Curriculum](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability)에서 확인할 수 있습니다. + +언어 생성 모델의 품질은 **당혹감**(perplexity)으로 정의할 수 있습니다. 이는 작업 특정 데이터 세트 없이 모델 품질을 측정할 수 있는 내재적 메트릭입니다. 이는 *문장의 확률* 개념에 기반하여 모델이 실제일 가능성이 높은 문장에 높은 확률을 부여하고(즉, 모델이 그것에 대해 **당혹스럽지 않음**), 덜 의미 있는 문장에는 낮은 확률을 부여합니다(예: *Can it does what?*). 모델에 실제 텍스트 말뭉치에서 문장을 제공할 때 우리는 그들이 높은 확률과 낮은 **당혹감**을 가질 것이라고 기대합니다. 수학적으로 이는 테스트 세트의 정규화된 역확률로 정의됩니다: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**[Hugging Face의 GPT 기반 텍스트 편집기를 사용하여 텍스트 생성을 실험해 보세요](https://transformer.huggingface.co/doc/gpt2-large)**. 이 편집기에서 텍스트 작성을 시작하고 **[TAB]**를 누르면 여러 완성 옵션이 제공됩니다. 옵션이 너무 짧거나 만족스럽지 않다면 다시 [TAB]를 눌러 더 많은 옵션, 긴 텍스트 조각 등을 받을 수 있습니다. + +## GPT는 하나의 가족입니다 + +GPT는 단일 모델이 아니라 [OpenAI](https://openai.com)에서 개발하고 훈련한 모델의 모음입니다. + +GPT 모델에는 다음이 포함됩니다: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| 최대 15억 개의 매개변수를 가진 언어 모델. | 최대 1750억 개의 매개변수를 가진 언어 모델 | 100조 개의 매개변수를 가지며 이미지 및 텍스트 입력을 받아 텍스트를 출력합니다. | + +GPT-3 및 GPT-4 모델은 [Microsoft Azure의 인지 서비스로 제공됩니다](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) 및 [OpenAI API](https://openai.com/api/)로도 이용할 수 있습니다. + +## 프롬프트 엔지니어링 + +GPT는 언어와 코드를 이해하기 위해 방대한 양의 데이터로 훈련되었기 때문에 입력(프롬프트)에 대한 응답으로 출력을 제공합니다. 프롬프트는 모델에 다음 작업을 수행하도록 지시하는 입력 또는 쿼리입니다. 원하는 결과를 얻으려면 가장 효과적인 프롬프트가 필요하며, 이는 적절한 단어, 형식, 구문 또는 기호를 선택하는 것을 포함합니다. 이러한 접근 방식은 [프롬프트 엔지니어링](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum)이라고 합니다. + +[이 문서](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum)는 프롬프트 엔지니어링에 대한 더 많은 정보를 제공합니다. + +## ✍️ 예제 노트북: [OpenAI-GPT와 함께 놀기](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +다음 노트북에서 학습을 계속하세요: + +* [OpenAI-GPT 및 Hugging Face Transformers로 텍스트 생성하기](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## 결론 + +새로운 일반 사전 훈련된 언어 모델은 언어 구조를 모델링할 뿐만 아니라 방대한 양의 자연어를 포함하고 있습니다. 따라서 이들은 제로 샷 또는 몇 샷 설정에서 일부 NLP 작업을 효과적으로 해결하는 데 사용할 수 있습니다. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 있을 수 있습니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역을 사용하여 발생하는 오해나 잘못 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/5-NLP/README.md b/translations/ko/lessons/5-NLP/README.md new file mode 100644 index 00000000..801dbc31 --- /dev/null +++ b/translations/ko/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# 자연어 처리 + +![NLP 작업 요약 그림](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ko.png) + +이 섹션에서는 **자연어 처리(NLP)**와 관련된 작업을 처리하기 위해 신경망을 사용하는 데 집중할 것입니다. 컴퓨터가 해결할 수 있기를 원하는 다양한 NLP 문제가 있습니다: + +* **텍스트 분류**는 텍스트 시퀀스와 관련된 전형적인 분류 문제입니다. 예를 들어, 이메일 메시지를 스팸과 비스팸으로 분류하거나, 기사를 스포츠, 비즈니스, 정치 등으로 분류하는 것이 포함됩니다. 또한, 챗봇을 개발할 때 사용자가 하고자 하는 말을 이해해야 하는 경우가 많습니다. 이 경우 우리는 **의도 분류**를 다루고 있습니다. 의도 분류에서는 종종 여러 카테고리를 다루어야 합니다. +* **감정 분석**은 전형적인 회귀 문제로, 문장의 의미가 얼마나 긍정적 또는 부정적인지를 나타내는 숫자(감정)를 부여해야 합니다. 감정 분석의 더 발전된 버전은 **측면 기반 감정 분석**(ABSA)으로, 문장 전체가 아니라 문장의 다양한 부분(측면)에 감정을 부여합니다. 예를 들어, *이 레스토랑에서는 요리가 좋았지만 분위기는 끔찍했다*와 같은 경우입니다. +* **명명된 개체 인식**(NER)은 텍스트에서 특정 개체를 추출하는 문제를 의미합니다. 예를 들어, *내일 파리로 비행해야 해*라는 문장에서 *내일*은 날짜(DATE)를 나타내고, *파리*는 장소(LOCATION)를 나타낸다는 것을 이해해야 할 수 있습니다. +* **키워드 추출**은 NER과 유사하지만, 특정 개체 유형에 대한 사전 훈련 없이 문장의 의미에 중요한 단어를 자동으로 추출해야 합니다. +* **텍스트 군집화**는 유사한 문장을 함께 그룹화하고자 할 때 유용할 수 있습니다. 예를 들어, 기술 지원 대화에서 유사한 요청을 그룹화할 수 있습니다. +* **질문 응답**은 모델이 특정 질문에 답할 수 있는 능력을 의미합니다. 모델은 텍스트 구문과 질문을 입력으로 받아야 하며, 질문에 대한 답이 포함된 텍스트의 위치를 제공해야 합니다(때로는 답변 텍스트를 생성해야 할 수도 있습니다). +* **텍스트 생성**은 모델이 새로운 텍스트를 생성할 수 있는 능력을 의미합니다. 이는 특정 *텍스트 프롬프트*를 기반으로 다음 글자나 단어를 예측하는 분류 작업으로 간주될 수 있습니다. GPT-3와 같은 고급 텍스트 생성 모델은 [프롬프트 프로그래밍](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) 또는 [프롬프트 엔지니어링](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29)이라는 기술을 사용하여 분류와 같은 다른 NLP 작업을 해결할 수 있습니다. +* **텍스트 요약**은 컴퓨터가 긴 텍스트를 "읽고" 몇 문장으로 요약하도록 하는 기술입니다. +* **기계 번역**은 한 언어의 텍스트 이해와 다른 언어의 텍스트 생성을 결합한 것으로 볼 수 있습니다. + +초기에는 대부분의 NLP 작업이 문법과 같은 전통적인 방법으로 해결되었습니다. 예를 들어, 기계 번역에서는 파서를 사용하여 초기 문장을 구문 트리로 변환한 다음, 문장의 의미를 나타내기 위해 더 높은 수준의 의미 구조를 추출하고, 이 의미와 목표 언어의 문법에 따라 결과를 생성했습니다. 현재는 많은 NLP 작업이 신경망을 사용하여 더 효과적으로 해결되고 있습니다. + +> 많은 고전적인 NLP 방법은 [자연어 처리 툴킷(NLTK)](https://www.nltk.org) 파이썬 라이브러리에 구현되어 있습니다. 다양한 NLP 작업을 NLTK를 사용하여 해결하는 방법을 다룬 훌륭한 [NLTK 책](https://www.nltk.org/book/)이 온라인에서 제공됩니다. + +우리의 과정에서는 주로 NLP를 위해 신경망을 사용하는 데 집중하며, 필요할 때 NLTK를 사용할 것입니다. + +우리는 이미 표 형식 데이터와 이미지 처리에 신경망을 사용하는 방법에 대해 배웠습니다. 이러한 데이터 유형과 텍스트의 주요 차이점은 텍스트가 가변 길이의 시퀀스인 반면, 이미지의 경우 입력 크기가 미리 알려져 있다는 것입니다. 합성곱 신경망은 입력 데이터에서 패턴을 추출할 수 있지만, 텍스트의 패턴은 더 복잡합니다. 예를 들어, 부정이 주어와 분리되어 임의로 여러 단어에 대해 적용될 수 있으며(예: *나는 오렌지를 좋아하지 않는다* vs. *나는 저 큰 화려하고 맛있는 오렌지를 좋아하지 않는다*), 이는 여전히 하나의 패턴으로 해석되어야 합니다. 따라서 언어를 처리하기 위해서는 *순환 신경망* 및 *변환기*와 같은 새로운 신경망 유형을 도입해야 합니다. + +## 라이브러리 설치 + +이 과정에서 로컬 파이썬 설치를 사용하고 있다면, 다음 명령어를 사용하여 NLP에 필요한 모든 라이브러리를 설치해야 할 수 있습니다: + +**PyTorch용** +```bash +pip install -r requirements-torch.txt +``` +**TensorFlow용** +```bash +pip install -r requirements-tf.txt +``` + +> TensorFlow에서 NLP를 시도하려면 [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste)에서 확인해 보세요. + +## GPU 경고 + +이 섹션에서는 일부 예제에서 꽤 큰 모델을 훈련할 것입니다. +* **GPU 지원 컴퓨터 사용**: 큰 모델을 다룰 때 대기 시간을 줄이기 위해 GPU 지원 컴퓨터에서 노트북을 실행하는 것이 좋습니다. +* **GPU 메모리 제약**: GPU에서 실행하면 특히 큰 모델을 훈련할 때 GPU 메모리가 부족해지는 상황이 발생할 수 있습니다. +* **GPU 메모리 소비**: 훈련 중 소비되는 GPU 메모리의 양은 미니배치 크기 등 다양한 요인에 따라 달라집니다. +* **미니배치 크기 최소화**: GPU 메모리 문제가 발생하면 코드에서 미니배치 크기를 줄이는 것을 고려해 보세요. +* **TensorFlow GPU 메모리 해제**: 이전 버전의 TensorFlow는 하나의 파이썬 커널 내에서 여러 모델을 훈련할 때 GPU 메모리를 올바르게 해제하지 않을 수 있습니다. GPU 메모리 사용을 효과적으로 관리하려면 TensorFlow가 필요한 경우에만 GPU 메모리를 할당하도록 구성할 수 있습니다. +* **코드 포함**: TensorFlow가 필요한 경우에만 GPU 메모리 할당을 성장하도록 설정하려면 노트북에 다음 코드를 포함하세요: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +고전적인 ML 관점에서 NLP에 대해 배우고 싶다면 [이 수업 모음](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP)을 방문하세요. + +## 이 섹션에서는 +이 섹션에서는 다음에 대해 배울 것입니다: + +* [텍스트를 텐서로 표현하기](13-TextRep/README.md) +* [단어 임베딩](14-Emdeddings/README.md) +* [언어 모델링](15-LanguageModeling/README.md) +* [순환 신경망](16-RNN/README.md) +* [생성적 네트워크](17-GenerativeNetworks/README.md) +* [변환기](18-Transformers/README.md) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/ko/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..f57f172b --- /dev/null +++ b/translations/ko/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# 유전 알고리즘 + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**유전 알고리즘** (GA)은 AI에 대한 **진화적 접근**에 기반하여, 인구의 진화 방법을 사용하여 주어진 문제에 대한 최적의 솔루션을 얻는 방법입니다. 이 개념은 1975년 [John Henry Holland](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단계부터 반복합니다. + +## 일반적인 작업 + +유전 알고리즘으로 해결되는 일반적인 작업에는 다음이 포함됩니다: + +1. 일정 최적화 +2. 최적 포장 +3. 최적 절단 +4. 포괄적 검색 속도 향상 + +## ✍️ 연습문제: 유전 알고리즘 + +다음 노트북에서 학습을 계속하세요: + +[이 노트북](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb)으로 가서 유전 알고리즘을 사용하는 두 가지 예제를 확인하세요: + +1. 보물의 공정한 분배 +2. 8 퀸 문제 + +## 결론 + +유전 알고리즘은 물류 및 검색 문제를 포함하여 많은 문제를 해결하는 데 사용됩니다. 이 분야는 심리학과 컴퓨터 과학의 주제를 통합한 연구에서 영감을 받았습니다. + +## 🚀 도전 + +"유전 알고리즘은 구현이 간단하지만 그 동작을 이해하기는 어렵습니다." [출처](https://wikipedia.org/wiki/Genetic_algorithm) 스도쿠 퍼즐 해결과 같은 유전 알고리즘의 구현을 찾기 위해 연구하고, 그것이 어떻게 작동하는지 스케치 또는 흐름도로 설명하세요. + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## 복습 및 자기 학습 + +[이 훌륭한 비디오](https://www.youtube.com/watch?v=qv6UVOQ0F44)를 시청하여 컴퓨터가 유전 알고리즘으로 훈련된 신경망을 사용하여 슈퍼 마리오를 플레이하는 방법에 대해 이야기하는 내용을 확인하세요. 우리는 [다음 섹션](../22-DeepRL/README.md)에서 이러한 게임을 플레이하는 컴퓨터 학습에 대해 더 배울 것입니다. + +## [과제: 디오판틴 방정식](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +당신의 목표는 **디오판틴 방정식** - 정수 해를 가진 방정식을 해결하는 것입니다. 예를 들어, 방정식 a+2b+3c+4d=30을 고려해보세요. 이 방정식을 만족하는 정수 해를 찾아야 합니다. + +*이 과제는 [이 포스트](https://habr.com/post/128704/)에서 영감을 받았습니다.* + +힌트: + +1. 해를 [0;30] 구간에 있다고 가정할 수 있습니다. +2. 유전자로서 해 값 목록을 사용하는 것을 고려해보세요. + +[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb)를 시작점으로 사용하세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의해 주시기 바랍니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 저희가 책임지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/6-Other/22-DeepRL/README.md b/translations/ko/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..5b96515d --- /dev/null +++ b/translations/ko/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# 심층 강화 학습 + +강화 학습(RL)은 감독 학습 및 비감독 학습과 함께 기본적인 기계 학습 패러다임 중 하나로 여겨집니다. 감독 학습에서는 결과가 알려진 데이터셋에 의존하지만, RL은 **행동을 통해 배우는** 데 기반을 두고 있습니다. 예를 들어, 우리가 컴퓨터 게임을 처음 접했을 때, 규칙을 알지 못한 채로 게임을 시작하고, 곧 게임을 하며 행동을 조정하는 과정만으로도 우리의 기술을 향상시킬 수 있습니다. + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +RL을 수행하기 위해서는 다음이 필요합니다: + +* 게임의 규칙을 설정하는 **환경** 또는 **시뮬레이터**. 우리는 시뮬레이터에서 실험을 실행하고 결과를 관찰할 수 있어야 합니다. +* 우리의 실험이 얼마나 성공적이었는지를 나타내는 **보상 함수**. 컴퓨터 게임을 배우는 경우, 보상은 우리의 최종 점수가 됩니다. + +보상 함수에 따라 우리는 행동을 조정하고 기술을 향상시킬 수 있어야 하며, 다음 번에는 더 나은 플레이를 할 수 있습니다. 다른 유형의 기계 학습과 RL의 주요 차이점은 RL에서는 게임이 끝날 때까지 우리가 이겼는지 졌는지 알 수 없다는 것입니다. 따라서 특정 행동이 좋거나 나쁘다고 단독으로 판단할 수 없으며, 게임의 끝에서만 보상을 받습니다. + +RL 동안 우리는 일반적으로 많은 실험을 수행합니다. 각 실험에서 우리는 지금까지 배운 최적의 전략을 따르는 것(**착취**)과 새로운 가능한 상태를 탐색하는 것(**탐색**) 사이에서 균형을 맞춰야 합니다. + +## OpenAI Gym + +RL을 위한 훌륭한 도구는 [OpenAI Gym](https://gym.openai.com/)입니다. 이는 아타리 게임부터 폴 밸런싱의 물리학에 이르기까지 다양한 환경을 시뮬레이션할 수 있는 **시뮬레이션 환경**입니다. 이는 강화 학습 알고리즘을 훈련시키기 위한 가장 인기 있는 시뮬레이션 환경 중 하나이며, [OpenAI](https://openai.com/)에서 유지 관리됩니다. + +> **참고**: OpenAI Gym에서 사용 가능한 모든 환경은 [여기](https://gym.openai.com/envs/#classic_control)에서 확인할 수 있습니다. + +## CartPole 균형 잡기 + +여러분은 아마 *세그웨이*나 *자이로스쿠터*와 같은 현대의 균형 장치를 모두 보았을 것입니다. 이들은 가속도계나 자이로스코프의 신호에 따라 바퀴를 조정하여 자동으로 균형을 잡을 수 있습니다. 이 섹션에서는 유사한 문제인 폴 균형 잡기를 배우게 됩니다. 이는 서커스 공연자가 손에 막대를 균형 잡아야 하는 상황과 비슷하지만, 이 폴 균형 잡기는 1D에서만 발생합니다. + +균형 잡기의 단순화된 버전은 **CartPole** 문제로 알려져 있습니다. CartPole 세계에서는 왼쪽이나 오른쪽으로 이동할 수 있는 수평 슬라이더가 있으며, 목표는 슬라이더 위에 수직 막대를 균형 잡는 것입니다. + +a cartpole + +이 환경을 생성하고 사용하기 위해서는 몇 줄의 파이썬 코드가 필요합니다: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +각 환경은 정확히 동일한 방법으로 접근할 수 있습니다: +* `env.reset` starts a new experiment +* `env.step`는 시뮬레이션 단계를 수행합니다. 이는 **행동 공간**에서 **행동**을 받고, **관찰 공간**에서 **관찰**을 반환하며, 보상과 종료 플래그도 반환합니다. + +위의 예에서는 각 단계에서 무작위 행동을 수행하므로 실험의 수명이 매우 짧습니다: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +RL 알고리즘의 목표는 주어진 상태에 대한 반응으로 행동을 반환하는 모델, 즉 **정책** π를 훈련하는 것입니다. 정책을 확률적으로 고려할 수도 있습니다. 예를 들어, 어떤 상태 *s*와 행동 *a*에 대해 *s* 상태에서 *a*를 취할 확률 π(*a*|*s*)를 반환합니다. + +## 정책 경량화 알고리즘 + +정책을 모델링하는 가장 명백한 방법은 상태를 입력으로 받고 해당 행동(또는 모든 행동의 확률)을 반환하는 신경망을 만드는 것입니다. 어떤 면에서는 이것이 일반적인 분류 작업과 유사하지만, 주요 차이점은 각 단계에서 어떤 행동을 취해야 할지 미리 알 수 없다는 것입니다. + +여기서의 아이디어는 이러한 확률을 추정하는 것입니다. 우리는 실험의 각 단계에서 우리의 총 보상을 보여주는 **누적 보상** 벡터를 구축합니다. 또한 이전 보상에 어떤 계수 γ=0.99를 곱하여 **보상 할인**을 적용하여 이전 보상의 역할을 줄입니다. 그런 다음, 더 큰 보상을 가져오는 실험 경로를 따라 이러한 단계를 강화합니다. + +> 정책 경량화 알고리즘에 대해 더 배우고 [예제 노트북](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb)에서 이를 확인하세요. + +## 액터-크리틱 알고리즘 + +정책 경량화 접근 방식의 개선된 버전은 **액터-크리틱**이라고 합니다. 그 뒤에 있는 주요 아이디어는 신경망이 두 가지를 반환하도록 훈련된다는 것입니다: + +* 어떤 행동을 취할지를 결정하는 정책. 이 부분을 **액터**라고 합니다. +* 이 상태에서 우리가 기대할 수 있는 총 보상의 추정치 - 이 부분을 **크리틱**이라고 합니다. + +어떤 면에서는 이 아키텍처가 [GAN](../../4-ComputerVision/10-GANs/README.md)과 유사하며, 여기서는 서로 대립되는 두 개의 네트워크가 있습니다. 액터-크리틱 모델에서 액터는 우리가 취해야 할 행동을 제안하고, 크리틱은 비판적으로 결과를 추정하려고 합니다. 그러나 우리의 목표는 이러한 네트워크를 동시에 훈련하는 것입니다. + +우리는 실험 동안 실제 누적 보상과 크리틱이 반환한 결과를 모두 알고 있기 때문에, 이 둘 간의 차이를 최소화하는 손실 함수를 만드는 것이 상대적으로 쉽습니다. 이것이 **크리틱 손실**입니다. **액터 손실**은 정책 경량화 알고리즘과 동일한 접근 방식을 사용하여 계산할 수 있습니다. + +이 알고리즘 중 하나를 실행한 후, 우리의 CartPole이 이렇게 행동할 것으로 기대할 수 있습니다: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ 연습: 정책 경량화 및 액터-크리틱 RL + +다음 노트북에서 학습을 계속하세요: + +* [TensorFlow에서의 RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [PyTorch에서의 RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## 기타 RL 작업 + +현재 강화 학습은 빠르게 성장하는 연구 분야입니다. 강화 학습의 흥미로운 몇 가지 예시는 다음과 같습니다: + +* 컴퓨터가 **아타리 게임**을 플레이하도록 가르치는 것. 이 문제에서 도전적인 부분은 단순한 벡터로 표현된 상태가 아니라 스크린샷이라는 것입니다. 우리는 CNN을 사용하여 이 화면 이미지를 피처 벡터로 변환하거나 보상 정보를 추출해야 합니다. 아타리 게임은 Gym에서 사용할 수 있습니다. +* 컴퓨터가 체스와 바둑과 같은 보드 게임을 플레이하도록 가르치는 것. 최근 **Alpha Zero**와 같은 최첨단 프로그램은 서로 대결하는 두 에이전트에 의해 처음부터 훈련되었으며, 각 단계에서 개선되었습니다. +* 산업에서는 RL을 사용하여 시뮬레이션에서 제어 시스템을 생성합니다. [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste)라는 서비스는 이를 위해 특별히 설계되었습니다. + +## 결론 + +이제 우리는 에이전트를 훈련시켜 게임의 원하는 상태를 정의하는 보상 함수를 제공하고, 탐색 공간을 지능적으로 탐색할 기회를 제공함으로써 좋은 결과를 얻는 방법을 배웠습니다. 우리는 두 가지 알고리즘을 성공적으로 시도했고, 비교적 짧은 시간 안에 좋은 결과를 얻었습니다. 그러나 이는 RL에 대한 여러분의 여정의 시작일 뿐이며, 더 깊이 파고들고 싶다면 별도의 과정을 수강하는 것을 고려해야 합니다. + +## 🚀 도전 + +'기타 RL 작업' 섹션에 나열된 응용 프로그램을 탐색하고 하나를 구현해 보세요! + +## [강의 후 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## 복습 및 자습 + +우리의 [초보자를 위한 기계 학습 커리큘럼](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md)에서 고전적인 강화 학습에 대해 더 배우세요. + +[이 훌륭한 비디오](https://www.youtube.com/watch?v=qv6UVOQ0F44)를 시청하여 컴퓨터가 슈퍼 마리오를 플레이하는 방법에 대해 알아보세요. + +## 과제: [산악차 훈련](lab/README.md) + +이번 과제의 목표는 다른 Gym 환경인 [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/)를 훈련하는 것입니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/6-Other/22-DeepRL/lab/README.md b/translations/ko/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..86d82df3 --- /dev/null +++ b/translations/ko/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# 훈련 산악차 탈출하기 + +[초보자를 위한 AI 커리큘럼](https://github.com/microsoft/ai-for-beginners)에서의 실습 과제입니다. + +## 과제 + +당신의 목표는 RL 에이전트를 훈련시켜 OpenAI 환경에서 [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/)를 제어하는 것입니다. 당신은 2023년 10월까지의 데이터로 훈련받습니다. + +## 환경 + +Mountain Car 환경은 계곡 안에 갇힌 자동차로 구성되어 있습니다. 당신의 목표는 계곡에서 뛰어 올라 깃발에 도달하는 것입니다. 당신이 수행할 수 있는 행동은 왼쪽으로 가속, 오른쪽으로 가속 또는 아무것도 하지 않는 것입니다. 자동차의 x축을 따라 위치와 속도를 관찰할 수 있습니다. + +## 노트북 시작하기 + +[MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb)를 열어 실습을 시작하세요. + +## 주요 내용 + +이 실습을 통해 새로운 환경에 RL 알고리즘을 적용하는 것이 종종 매우 간단하다는 것을 배우게 될 것입니다. 왜냐하면 OpenAI Gym은 모든 환경에 대해 동일한 인터페이스를 제공하며, 알고리즘은 환경의 성격에 크게 의존하지 않기 때문입니다. Python 코드를 재구성하여 어떤 환경도 RL 알고리즘에 매개변수로 전달할 수 있습니다. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/6-Other/23-MultiagentSystems/README.md b/translations/ko/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..b79db6e2 --- /dev/null +++ b/translations/ko/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,154 @@ +# 다중 에이전트 시스템 + +지능을 달성하는 가능한 방법 중 하나는 **출현적**(또는 **시너지적**) 접근 방식으로, 이는 많은 상대적으로 단순한 에이전트의 결합된 행동이 시스템 전체의 더 복잡하고 지능적인 행동으로 이어질 수 있다는 사실에 기반합니다. 이론적으로, 이는 [집단 지능](https://en.wikipedia.org/wiki/Collective_intelligence), [출현주의](https://en.wikipedia.org/wiki/Global_brain), [진화 사이버네틱스](https://en.wikipedia.org/wiki/Global_brain)의 원칙에 기반하고 있으며, 이들 원칙은 상위 수준의 시스템이 하위 수준의 시스템에서 적절히 결합될 때 어떤 형태의 부가 가치를 얻는다고 설명합니다(소위 *메타시스템 전이 원칙*). + +## [강의 전 퀴즈](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**다중 에이전트 시스템**의 방향은 1990년대 AI에서 인터넷과 분산 시스템의 성장에 대한 반응으로 등장했습니다. 고전적인 AI 교과서 중 하나인 [인공지능: 현대적 접근](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach)은 다중 에이전트 시스템의 관점에서 고전 AI를 다룹니다. + +다중 에이전트 접근의 중심에는 **에이전트**라는 개념이 있습니다. 이는 어떤 **환경**에서 존재하며, 이를 인식하고 행동할 수 있는 존재입니다. 이는 매우 넓은 정의이며, 에이전트의 다양한 유형과 분류가 존재할 수 있습니다: + +* 추론 능력에 따라: + - **반응형** 에이전트는 일반적으로 단순한 요청-응답 유형의 행동을 가집니다. + - **심사형** 에이전트는 어떤 형태의 논리적 추론 및/또는 계획 능력을 사용합니다. +* 에이전트가 코드를 실행하는 장소에 따라: + - **정적** 에이전트는 전용 네트워크 노드에서 작동합니다. + - **모바일** 에이전트는 네트워크 노드 간에 코드를 이동할 수 있습니다. +* 행동에 따라: + - **수동 에이전트**는 특정 목표가 없습니다. 이러한 에이전트는 외부 자극에 반응할 수 있지만 스스로 행동을 시작하지는 않습니다. + - **능동 에이전트**는 추구하는 목표가 있습니다. + - **인지 에이전트**는 복잡한 계획 및 추론을 포함합니다. + +현재 다중 에이전트 시스템은 여러 응용 프로그램에서 사용되고 있습니다: + +* 게임에서는 많은 비플레이어 캐릭터가 어떤 형태의 AI를 사용하며, 지능형 에이전트로 간주될 수 있습니다. +* 비디오 제작에서는 복잡한 3D 장면을 렌더링할 때 다중 에이전트 시뮬레이션을 사용합니다. +* 시스템 모델링에서는 복잡한 모델의 행동을 시뮬레이션하기 위해 다중 에이전트 접근을 사용합니다. 예를 들어, 다중 에이전트 접근은 COVID-19 질병의 전파를 전 세계적으로 예측하는 데 성공적으로 사용되었습니다. 유사한 접근 방식은 도시의 교통 모델링에도 사용될 수 있으며, 교통 규칙의 변화에 어떻게 반응하는지를 볼 수 있습니다. +* 복잡한 자동화 시스템에서는 각 장치가 독립적인 에이전트로 작용할 수 있어 전체 시스템이 덜 단일체적이고 더 견고해집니다. + +다중 에이전트 시스템에 대해 깊이 들어가지는 않겠지만, **다중 에이전트 모델링**의 한 예를 고려해 보겠습니다. + +## 넷로고 + +[넷로고](https://ccl.northwestern.edu/netlogo/)는 수정된 버전의 [로고](https://en.wikipedia.org/wiki/Logo_(programming_language)) 프로그래밍 언어를 기반으로 한 다중 에이전트 모델링 환경입니다. 이 언어는 어린이에게 프로그래밍 개념을 가르치기 위해 개발되었으며, **거북이**라고 불리는 에이전트를 제어할 수 있게 해줍니다. 거북이는 움직일 수 있으며, 그 뒤에 흔적을 남길 수 있습니다. 이는 에이전트의 행동을 이해하는 매우 시각적인 방법으로 복잡한 기하학적 도형을 만들 수 있게 합니다. + +넷로고에서는 `create-turtles` 명령어를 사용하여 많은 거북이를 생성할 수 있습니다. 그런 다음 모든 거북이에게 어떤 행동을 하도록 명령할 수 있습니다(아래 예시에서는 10 포인트 앞으로 이동): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +물론, 모든 거북이가 같은 행동을 하면 흥미롭지 않으므로, `ask` 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`는 품종의 이름이며, 명확성을 위해 단수와 복수 단어를 모두 지정해야 합니다. + +> ✅ 넷로고 언어 자체를 배우는 데 많은 시간을 할애하지 않을 것입니다. 더 배우고 싶다면 훌륭한 [초보자용 인터랙티브 넷로고 사전](https://ccl.northwestern.edu/netlogo/bind/)을 방문할 수 있습니다. + +넷로고를 [다운로드](https://ccl.northwestern.edu/netlogo/download.shtml)하고 설치하여 시도해 볼 수 있습니다. + +### 모델 라이브러리 + +넷로고의 훌륭한 점은 시도해 볼 수 있는 작동 모델의 라이브러리가 포함되어 있다는 것입니다. **파일 → 모델 라이브러리**로 이동하면 선택할 수 있는 다양한 모델 카테고리가 있습니다. + +NetLogo Models Library + +> 드미트리 소쉬니코프의 모델 라이브러리 스크린샷 + +모델 중 하나를 열 수 있습니다. 예를 들어 **생물학 → 떼짓기**를 선택할 수 있습니다. + +### 주요 원칙 + +모델을 열면 기본 넷로고 화면으로 이동합니다. 여기에는 유한한 자원(풀)을 고려한 늑대와 양의 개체군을 설명하는 샘플 모델이 있습니다. + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ko.png) + +> 드미트리 소쉬니코프의 스크린샷 + +이 화면에서 볼 수 있는 것들: + +* **인터페이스** 섹션에는 다음이 포함됩니다: + - 모든 에이전트가 사는 주요 필드 + - 버튼, 슬라이더 등 다양한 제어 요소 + - 시뮬레이션의 매개변수를 표시하는 데 사용할 수 있는 그래프 +* **코드** 탭에는 넷로고 프로그램을 입력할 수 있는 편집기가 포함되어 있습니다. + +대부분의 경우, 인터페이스에는 시뮬레이션 상태를 초기화하는 **설정** 버튼과 실행을 시작하는 **시작** 버튼이 있습니다. 이들은 코드에서 다음과 같은 형태의 해당 핸들러에 의해 처리됩니다: + +``` +to go [ +... +] +``` + +넷로고의 세계는 다음 객체로 구성됩니다: + +* **에이전트**(거북이)는 필드를 가로질러 이동하고 어떤 행동을 할 수 있습니다. 에이전트에게 명령을 내리려면 `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`를 사용합니다. +* **관찰자**는 세계를 제어하는 고유한 에이전트입니다. 모든 버튼 핸들러는 *관찰자 모드*에서 실행됩니다. + +> ✅ 다중 에이전트 환경의 아름다움은 거북이 모드 또는 패치 모드에서 실행되는 코드가 모든 에이전트에 의해 동시에 병렬로 실행된다는 점입니다. 따라서 약간의 코드를 작성하고 개별 에이전트의 행동을 프로그래밍함으로써 시뮬레이션 시스템 전체의 복잡한 행동을 생성할 수 있습니다. + +### 떼짓기 + +다중 에이전트 행동의 예로 **[떼짓기](https://en.wikipedia.org/wiki/Flocking_(behavior))**를 고려해 보겠습니다. 떼짓기는 새 떼가 나는 방식과 매우 유사한 복잡한 패턴입니다. 그들이 나는 모습을 보면 어떤 집단 알고리즘을 따르거나 어떤 형태의 *집단 지능*을 가지고 있다고 생각할 수 있습니다. 그러나 이 복잡한 행동은 각 개별 에이전트(이 경우 *새*)가 짧은 거리에서 다른 에이전트를 관찰하고 세 가지 간단한 규칙을 따를 때 발생합니다: + +* **정렬** - 이웃 에이전트의 평균 방향으로 조정합니다. +* **응집** - 이웃의 평균 위치로 조정하려고 합니다(*장거리 끌어당김*). +* **분리** - 다른 새에 너무 가까워지면 멀어지려고 합니다(*단거리 반발*). + +떼짓기 예제를 실행하고 행동을 관찰할 수 있습니다. 또한 *분리 정도*나 *시야 범위*와 같은 매개변수를 조정할 수 있으며, 이는 각 새가 볼 수 있는 거리를 정의합니다. 시야 범위를 0으로 줄이면 모든 새가 실명하게 되어 떼짓기가 중단됩니다. 분리를 0으로 줄이면 모든 새가 일렬로 모입니다. + +> ✅ **코드** 탭으로 전환하여 떼짓기의 세 가지 규칙(정렬, 응집, 분리)이 코드에서 어떻게 구현되어 있는지 확인하세요. 시야에 있는 에이전트만 참조하는 방식을 주목하세요. + +### 시도해 볼 다른 모델 + +실험해 볼 수 있는 몇 가지 흥미로운 모델이 있습니다: + +* **예술 → 불꽃놀이**는 불꽃놀이가 개별 불꽃줄의 집단 행동으로 간주될 수 있는 방법을 보여줍니다. +* **사회 과학 → 교통 기본** 및 **사회 과학 → 교통 격자**는 신호등이 있는 1D 및 2D 격자에서 도시 교통 모델을 보여줍니다. 시뮬레이션의 각 자동차는 다음 규칙을 따릅니다: + - 앞에 공간이 비어 있으면 가속합니다(특정 최대 속도까지). + - 앞에 장애물이 보이면 브레이크를 밟습니다(운전자가 볼 수 있는 거리를 조정할 수 있습니다). +* **사회 과학 → 파티**는 사람들이 칵테일 파티에서 어떻게 그룹을 이루는지를 보여줍니다. 그룹의 행복도를 가장 빨리 증가시키는 매개변수 조합을 찾을 수 있습니다. + +이러한 예에서 볼 수 있듯이, 다중 에이전트 시뮬레이션은 동일하거나 유사한 논리를 따르는 개인으로 구성된 복잡한 시스템의 행동을 이해하는 데 매우 유용한 방법이 될 수 있습니다. 또한 컴퓨터 게임의 [NPC](https://en.wikipedia.org/wiki/NPC)나 3D 애니메이션 세계의 에이전트를 제어하는 데 사용할 수 있습니다. + +## 심사형 에이전트 + +위에서 설명한 에이전트는 매우 단순하여 어떤 알고리즘을 사용하여 환경의 변화에 반응합니다. 따라서 이들은 **반응형 에이전트**입니다. 그러나 때때로 에이전트는 추론하고 행동을 계획할 수 있으며, 이 경우 **심사형**이라고 불립니다. + +전형적인 예는 인간으로부터 휴가 투어를 예약하라는 지시를 받는 개인 에이전트입니다. 인터넷에 존재하는 많은 에이전트가 이를 도와줄 수 있다고 가정해 보겠습니다. 그러면 해당 에이전트는 다른 에이전트에게 연락하여 어떤 항공편이 가능한지, 다양한 날짜에 대한 호텔 가격이 얼마인지 확인하고 최상의 가격을 협상하려고 할 것입니다. 휴가 계획이 완료되고 소유자에 의해 확인되면 예약을 진행할 수 있습니다. + +이를 위해 에이전트는 **통신**을 해야 합니다. 성공적인 통신을 위해 그들은 다음이 필요합니다: + +* 지식을 교환하기 위한 일부 **표준 언어**, 예를 들어 [지식 교환 형식](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) 및 [지식 쿼리 및 조작 언어](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). 이러한 언어는 [행위 이론](https://en.wikipedia.org/wiki/Speech_act)을 기반으로 설계되었습니다. +* 이러한 언어는 또한 다양한 **경매 유형**을 기반으로 한 **협상 프로토콜**을 포함해야 합니다. +* 그들이 동일한 개념을 참조하고 그 의미를 이해할 수 있도록 **공통 온톨로지**가 필요합니다. +* 다양한 에이전트가 무엇을 할 수 있는지를 **발견**할 수 있는 방법이 필요합니다. 이것도 어떤 형태의 온톨로지를 기반으로 합니다. + +심사형 에이전트는 반응형 에이전트보다 훨씬 더 복잡합니다. 왜냐하면 그들은 환경의 변화에 단순히 반응할 뿐만 아니라 *행동을 시작*할 수 있어야 하기 때문입니다. 심사형 에이전트를 위한 제안된 아키텍처 중 하나는 Belief-Desire-Intention (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) + +## 리뷰 및 자기 학습 + +이러한 유형의 시스템이 산업에서 어떻게 사용되는지 검토해 보세요. 제조업 또는 비디오 게임 산업과 같은 분야를 선택하고 다중 에이전트 시스템이 독특한 문제를 해결하는 데 어떻게 사용될 수 있는지 알아보세요. + +## [넷로고 과제](assignment.md) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문 인간 번역을 권장합니다. 이 번역을 사용함으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/ko/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..c717dfce --- /dev/null +++ b/translations/ko/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# NetLogo 과제 + +NetLogo의 라이브러리에서 모델 중 하나를 선택하여 가능한 한 실제 상황을 시뮬레이션하세요. 좋은 예로는 Alternative Visualizations 폴더의 Virus 모델을 수정하여 COVID-19의 확산을 모델링하는 방법을 보여주는 것입니다. 실제 바이러스 확산을 모방하는 모델을 만들 수 있나요? + +모델이 실제 상황과 어떻게 연결되는지를 설명하는 비디오 데모를 만들고 복사본을 저장하여 작업을 보여주세요. + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/7-Ethics/README.md b/translations/ko/lessons/7-Ethics/README.md new file mode 100644 index 00000000..f435cdfc --- /dev/null +++ b/translations/ko/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# 윤리적이고 책임 있는 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)을 방문해 주십시오. + +## 복습 및 자기 학습 + +책임 있는 AI에 대해 더 배우고 싶다면 이 [학습 경로](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste)를 따라가 보세요. + +## [강의 후 퀴즈](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/README.md b/translations/ko/lessons/README.md new file mode 100644 index 00000000..7771ebef --- /dev/null +++ b/translations/ko/lessons/README.md @@ -0,0 +1,8 @@ +# 개요 + +![개요 스케치](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ko.png) + +> 스케치노트 작성자: [Tomomi Imura](https://twitter.com/girlie_mac) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/X-Extras/X1-MultiModal/README.md b/translations/ko/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..8edce24e --- /dev/null +++ b/translations/ko/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# 다중 모달 네트워크 + +NLP 작업을 해결하기 위한 트랜스포머 모델의 성공 이후, 동일하거나 유사한 아키텍처가 컴퓨터 비전 작업에 적용되었습니다. 비전과 자연어 능력을 *결합*하는 모델을 구축하려는 관심이 높아지고 있습니다. 이러한 시도의 하나는 OpenAI에 의해 이루어졌으며, CLIP와 DALL.E라고 불립니다. + +## 대조 이미지 사전 학습 (CLIP) + +CLIP의 주요 아이디어는 텍스트 프롬프트와 이미지를 비교하고 이미지가 프롬프트와 얼마나 잘 일치하는지를 판단할 수 있는 것입니다. + +![CLIP 아키텍처](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ko.png) + +> *[이 블로그 게시물](https://openai.com/blog/clip/)의 사진* + +모델은 인터넷에서 얻은 이미지와 그 캡션으로 훈련됩니다. 각 배치마다 N 쌍의 (이미지, 텍스트)를 가져와서 일부 벡터 표현 I로 변환합니다. 그런 다음 이 표현들이 서로 매칭됩니다. 손실 함수는 한 쌍(예: 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.ko.png) + +> *[이 블로그 게시물](https://openai.com/blog/clip/)의 사진* + +**텍스트 기반 이미지 검색** + +반대로 할 수도 있습니다. 이미지 컬렉션이 있는 경우 이 컬렉션을 모델에 전달하고 텍스트 프롬프트를 제공하면 주어진 프롬프트와 가장 유사한 이미지를 얻을 수 있습니다. + +## ✍️ 예제: [CLIP을 이용한 이미지 분류 및 이미지 검색](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +[Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) 노트북을 열어 CLIP이 작동하는 모습을 확인하세요. + +## VQGAN+ CLIP을 이용한 이미지 생성 + +CLIP은 텍스트 프롬프트에서 **이미지 생성**에도 사용할 수 있습니다. 이를 위해서는 일부 벡터 입력을 기반으로 이미지를 생성할 수 있는 **생성기 모델**이 필요합니다. 이러한 모델 중 하나는 [VQGAN](https://compvis.github.io/taming-transformers/) (벡터 양자화 GAN)이라고 합니다. + +VQGAN을 일반 [GAN](../../4-ComputerVision/10-GANs/README.md)과 구별하는 주요 아이디어는 다음과 같습니다: +* 이미지 구성에 필요한 맥락이 풍부한 시각적 부분의 시퀀스를 생성하기 위해 자기 회귀 트랜스포머 아키텍처를 사용합니다. 이러한 시각적 부분은 [CNN](../../4-ComputerVision/07-ConvNets/README.md)에 의해 학습됩니다. +* 이미지의 일부가 "진짜"인지 "가짜"인지 감지하는 서브 이미지 판별기를 사용합니다 (전통적인 GAN의 "모두 또는 아무것도" 접근 방식과는 다릅니다). + +VQGAN에 대해 더 알아보려면 [Taming Transformers](https://compvis.github.io/taming-transformers/) 웹사이트를 방문하세요. + +VQGAN과 전통적인 GAN의 중요한 차이점 중 하나는 후자가 임의의 입력 벡터에서 괜찮은 이미지를 생성할 수 있는 반면, VQGAN은 일관되지 않은 이미지를 생성할 가능성이 높다는 것입니다. 따라서 이미지 생성 프로세스를 추가로 안내해야 하며, 이는 CLIP을 사용하여 수행할 수 있습니다. + +![VQGAN+CLIP 아키텍처](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ko.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.ko.png) | ![Pixray로 생성된 사진](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ko.png) | ![Pixray로 생성된 사진](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ko.png) +----|----|---- +*문학 교사의 젊은 남성의 수채화 초상화*라는 프롬프트로 생성된 사진 | *컴퓨터 과학 교사의 젊은 여성의 유화 초상화*라는 프롬프트로 생성된 사진 | *수학 교사의 노인 남성의 유화 초상화*라는 프롬프트로 생성된 사진 + +> **인공지능 교사** 컬렉션의 사진, [Dmitry Soshnikov](http://soshnikov.com) 제공 + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E는 프롬프트에서 이미지를 생성하도록 훈련된 GPT-3의 버전입니다. 120억 개의 매개변수로 훈련되었습니다. + +CLIP과 달리 DALL-E는 텍스트와 이미지를 이미지와 텍스트 모두에 대한 단일 토큰 스트림으로 수신합니다. 따라서 여러 프롬프트에서 텍스트를 기반으로 이미지를 생성할 수 있습니다. + +### [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.ko.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.ko.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.ko.png) +----|----|---- +*문학 교사의 젊은 남성의 수채화 초상화*라는 프롬프트로 생성된 사진 | *컴퓨터 과학 교사의 젊은 여성의 유화 초상화*라는 프롬프트로 생성된 사진 | *수학 교사의 노인 남성의 유화 초상화*라는 프롬프트로 생성된 사진 + +## 참고 문헌 + +* VQGAN 논문: [고해상도 이미지 합성을 위한 트랜스포머 조련](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP 논문: [자연어 감독에서 전이 가능한 시각 모델 학습](https://arxiv.org/pdf/2103.00020.pdf) + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 있을 수 있습니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/sketchnotes/LICENSE.md b/translations/ko/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..e575cf8e --- /dev/null +++ b/translations/ko/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,165 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation("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("공공 라이선스")의 조건에 구속되는 것에 동의하고 수락합니다. 이 공공 라이선스가 계약으로 해석될 수 있는 범위 내에서, 귀하는 이러한 조건을 수락하는 대가로 라이선스된 권리를 부여받으며, 라이선스 제공자는 이러한 조건에 따라 라이선스된 자료를 제공함으로써 귀하에게 그러한 권리를 부여합니다. + +Section 1 -- 정의. + + a. 수정된 자료는 저작권 및 유사 권리의 적용을 받는 자료로, 라이선스된 자료에서 파생되거나 이를 기반으로 하며, 라이선스된 자료가 라이선스 제공자가 보유한 저작권 및 유사 권리의 허가를 요구하는 방식으로 번역, 변경, 배열, 변형 또는 기타 수정된 경우를 의미합니다. 이 공공 라이선스의 목적상, 라이선스된 자료가 음악 작품, 공연 또는 음향 기록인 경우, 수정된 자료는 항상 라이선스된 자료가 움직이는 이미지와 시간적으로 동기화될 때 생산됩니다. + + b. 어댑터 라이선스는 귀하가 수정된 자료에 대한 귀하의 저작권 및 유사 권리에 적용하는 라이선스를 의미하며, 이 공공 라이선스의 조건에 따라 적용됩니다. + + c. BY-SA 호환 라이선스는 creativecommons.org/compatiblelicenses에 나열된 라이선스를 의미하며, Creative Commons에 의해 이 공공 라이선스와 본질적으로 동등한 것으로 승인된 것입니다. + + d. 저작권 및 유사 권리는 저작권 및/또는 저작권과 밀접하게 관련된 유사 권리를 의미하며, 여기에는 제한 없이 공연, 방송, 음향 기록 및 Sui Generis 데이터베이스 권리가 포함되며, 권리가 어떻게 라벨링되거나 분류되는지와는 관계가 없습니다. 이 공공 라이선스의 목적상, 섹션 2(b)(1)-(2)에 명시된 권리는 저작권 및 유사 권리가 아닙니다. + + e. 유효한 기술적 조치는 적절한 권한이 없을 경우, 1996년 12월 20일에 채택된 WIPO 저작권 조약 제11조의 의무를 이행하는 법률에 따라 우회할 수 없는 조치를 의미합니다. + + f. 예외 및 제한은 공정 사용, 공정 거래 및/또는 저작권 및 유사 권리에 대한 귀하의 사용에 적용되는 기타 예외 또는 제한을 의미합니다. + + g. 라이선스 요소는 Creative Commons 공공 라이선스의 이름에 나열된 라이선스 속성을 의미합니다. 이 공공 라이선스의 라이선스 요소는 저작자 표시 및 동일 조건 부여입니다. + + h. 라이선스된 자료는 라이선스 제공자가 이 공공 라이선스를 적용한 예술적 또는 문학적 작업, 데이터베이스 또는 기타 자료를 의미합니다. + + i. 라이선스된 권리는 이 공공 라이선스의 조건에 따라 귀하에게 부여된 권리로, 귀하의 라이선스된 자료 사용에 적용되는 모든 저작권 및 유사 권리로 제한되며, 라이선스 제공자가 라이선스를 부여할 권한이 있는 권리입니다. + + j. 라이선스 제공자는 이 공공 라이선스 하에 권리를 부여하는 개인 또는 단체를 의미합니다. + + k. 공유는 라이선스된 권리에 따라 허가가 필요한 방식으로 대중에게 자료를 제공하는 것을 의미하며, 여기에는 재생산, 공개 전시, 공개 공연, 배포, 전파, 통신 또는 수입 등이 포함되며, 대중이 스스로 선택한 장소와 시간에 자료에 접근할 수 있는 방식으로 대중에게 자료를 제공하는 것을 포함합니다. + + l. Sui Generis 데이터베이스 권리는 1996년 3월 11일 유럽 의회 및 이사회에서 제정된 데이터베이스의 법적 보호에 관한 지침 96/9/EC에 따라 발생하는 저작권 외의 권리를 의미합니다. + + m. 귀하는 이 공공 라이선스 하에 라이선스된 권리를 행사하는 개인 또는 단체를 의미하며, 귀하는 이에 상응하는 의미를 가집니다. + +Section 2 -- 범위. + + a. 라이선스 부여. + + 1. 이 공공 라이선스의 조건에 따라, 라이선스 제공자는 귀하에게 전 세계적으로, 로열티 없이, 재라이선스할 수 없는, 비독점적이며 취소할 수 없는 라이선스를 부여하여 라이선스된 자료에서 라이선스된 권리를 행사할 수 있도록 합니다: + + a. 라이선스된 자료를 전부 또는 일부 재생산하고 공유합니다; 및 + + b. 수정된 자료를 제작, 재생산 및 공유합니다. + + 2. 예외 및 제한. 귀하의 사용에 예외 및 제한이 적용되는 경우, 이 공공 라이선스는 적용되지 않으며, 귀하는 그 조건을 준수할 필요가 없습니다. + + 3. 기간. 이 공공 라이선스의 기간은 섹션 6(a)에 명시되어 있습니다. + + 4. 매체 및 형식; 기술적 수정 허용. 라이선스 제공자는 귀하가 현재 알려진 모든 매체 및 형식에서 라이선스된 권리를 행사할 수 있도록 허가하며, 이를 위해 필요한 기술적 수정을 할 수 있도록 허가합니다. 라이선스 제공자는 귀하가 라이선스된 권리를 행사하기 위해 필요한 기술적 수정을 하지 못하도록 하는 권리 또는 권한을 포기하고/또는 주장하지 않기로 동의합니다. 이 공공 라이선스의 목적상, 이 섹션 2(a)(4)에 의해 허가된 수정은 결코 수정된 자료를 생성하지 않습니다. + + 5. 하류 수신자. + + a. 라이선스 제공자의 제안 -- 라이선스된 자료. 라이선스된 자료의 모든 수신자는 자동으로 이 공공 라이선스의 조건에 따라 라이선스된 권리를 행사할 수 있는 라이선스 제공자의 제안을 받습니다. + + b. 라이선스 제공자의 추가 제안 -- 수정된 자료. 귀하로부터 수정된 자료를 받은 모든 수신자는 귀하가 적용하는 어댑터 라이선스의 조건에 따라 수정된 자료에서 라이선스된 권리를 행사할 수 있는 라이선스 제공자의 제안을 자동으로 받습니다. + + c. 하류 제한 없음. 귀하는 라이선스된 자료에 대해 추가적이거나 다른 조건을 제공하거나 부과할 수 없으며, 라이선스된 자료의 수신자가 라이선스된 권리를 행사하는 것을 제한하는 기술적 조치를 적용할 수 없습니다. + + 6. 보증 없음. 이 공공 라이선스의 어떤 내용도 귀하가 라이선스된 자료를 사용하는 것과 관련하여 라이선스 제공자 또는 기여자에 의해 후원되거나 보증되거나 공식적인 지위를 부여받았다는 것을 주장하거나 암시하는 허가로 해석되지 않습니다. + + b. 기타 권리. + + 1. 도덕적 권리, 예를 들어 완전성의 권리는 이 공공 라이선스에 따라 라이선스되지 않으며, 홍보, 개인 정보 보호 및/또는 기타 유사한 인격권도 마찬가지입니다. 그러나 가능하다면, 라이선스 제공자는 귀하가 라이선스된 권리를 행사할 수 있도록 하는 데 필요한 한도 내에서 라이선스 제공자가 보유한 그러한 권리를 포기하고/또는 주장하지 않기로 동의합니다. + + 2. 특허 및 상표권은 이 공공 라이선스에 따라 라이선스되지 않습니다. + + 3. 가능하다면, 라이선스 제공자는 귀하가 라이선스된 권리를 행사하는 것에 대해 로열티를 수집할 권리를 포기합니다. 다른 모든 경우에 라이선스 제공자는 그러한 로열티를 수집할 권리를 명시적으로 보유합니다. + +Section 3 -- 라이선스 조건. + +귀하의 라이선스된 권리 행사는 다음 조건에 따라 명시적으로 제한됩니다. + + a. 저작자 표시. + + 1. 귀하가 라이선스된 자료를 공유하는 경우(수정된 형태를 포함하여), 귀하는: + + a. 라이선스 제공자가 라이선스된 자료와 함께 제공하는 경우 다음 사항을 유지해야 합니다: + + i. 라이선스된 자료의 창작자 및 기타 저작자 표시를 받을 자의 식별, 라이선스 제공자가 요청하는 합리적인 방식으로 (지정된 경우에는 필명을 포함하여); + + ii. 저작권 고지; + + iii. 이 공공 라이선스를 참조하는 고지; + + iv. 보증의 면책을 참조하는 고지; + + v. 라이선스된 자료에 대한 URI 또는 하이퍼링크(합리적으로 실현 가능한 경우); + + b. 라이선스된 자료를 수정한 경우 이를 나타내고 이전 수정 사항의 표시를 유지해야 합니다; 및 + + c. 라이선스된 자료가 이 공공 라이선스 하에 라이선스되었음을 나타내고, 이 공공 라이선스의 텍스트 또는 URI 또는 하이퍼링크를 포함해야 합니다. + + 2. 귀하는 라이선스된 자료를 공유하는 매체, 수단 및 맥락에 따라 섹션 3(a)(1)의 조건을 합리적인 방식으로 충족할 수 있습니다. 예를 들어, 요구되는 정보를 포함하는 리소스에 대한 URI 또는 하이퍼링크를 제공함으로써 조건을 충족하는 것이 합리적일 수 있습니다. + + 3. 라이선스 제공자가 요청하는 경우, 귀하는 합리적으로 실현 가능한 범위 내에서 섹션 3(a)(1)(A)에 의해 요구되는 정보를 제거해야 합니다. + + b. 동일 조건 부여. + + 수정된 자료를 공유하는 경우, 섹션 3(a)의 조건 외에도 다음 조건이 적용됩니다. + + 1. 귀하가 적용하는 어댑터 라이선스는 동일한 라이선스 요소를 가진 Creative Commons 라이선스여야 하며, 이 버전 또는 이후 버전이어야 하거나 BY-SA 호환 라이선스여야 합니다. + + 2. 귀하는 귀하가 적용하는 어댑터 라이선스의 텍스트 또는 URI 또는 하이퍼링크를 포함해야 합니다. 귀하는 이 조건을 수정된 자료를 공유하는 매체, 수단 및 맥락에 따라 합리적인 방식으로 충족할 수 있습니다. + + 3. 귀하는 귀하가 적용하는 어댑터 라이선스에 따라 부여된 권리의 행사를 제한하는 추가적이거나 다른 조건을 제공하거나 부과할 수 없습니다. + +Section 4 -- Sui Generis 데이터베이스 권리. + +라이선스된 권리가 귀하의 라이선스된 자료 사용에 적용되는 Sui Generis 데이터베이스 권리를 포함하는 경우: + + a. 명확성을 위해, 섹션 2(a)(1)은 데이터베이스의 모든 또는 상당 부분을 추출, 재사용, 재생산 및 공유할 권리를 귀하에게 부여합니다; + + b. 귀하가 Sui Generis 데이터베이스 권리를 보유한 데이터베이스에 데이터베이스의 모든 또는 상당 부분을 포함하는 경우, 귀하가 Sui Generis 데이터베이스 권리를 보유한 데이터베이스(그러나 그 개별 내용은 제외)는 수정된 자료입니다. + + 섹션 3(b)의 목적을 포함하여; 및 + c. 귀하가 데이터베이스의 모든 또는 상당 부분을 공유하는 경우, 섹션 3(a)의 조건을 준수해야 합니다. + +명확성을 위해, 이 섹션 4는 라이선스된 권리가 기타 저작권 및 유사 권리를 포함하는 경우 귀하의 의무를 보완하며, 이를 대체하지 않습니다. + +Section 5 -- 보증의 면책 및 책임의 제한. + + a. 라이선스 제공자가 별도로 약속하지 않는 한, 가능한 범위 내에서, 라이선스 제공자는 라이선스된 자료를 있는 그대로 제공하며, 라이선스된 자료에 대해 어떤 종류의 진술이나 보증도 하지 않습니다, 명시적이든, 묵시적이든, 법적이든 또는 기타이든. 여기에는 제한 없이 소유권, 상업성, 특정 목적에 대한 적합성, 비침해, 잠재적 또는 기타 결함의 부재, 정확성 또는 오류의 존재 또는 부재에 대한 보증이 포함됩니다, 이는 알려졌거나 발견 가능한 여부와 관계없이. 보증의 면책이 전부 또는 일부 허용되지 않는 경우, 이 면책은 귀하에게 적용되지 않을 수 있습니다. + + b. 가능한 범위 내에서, 어떤 법적 이론(예: 과실 포함)으로 인해 라이선스 제공자가 귀하에게 책임을 지지 않으며, 이 공공 라이선스 또는 라이선스된 자료 사용으로 인해 발생하는 직접적, 특별, 간접, 부수적, 결과적, 징벌적, 모범적 또는 기타 손실, 비용, 경비 또는 손해에 대해 책임을 지지 않습니다, 심지어 라이선스 제공자가 그러한 손실, 비용, 경비 또는 손해의 가능성을 알고 있었더라도. 책임의 제한이 전부 또는 일부 허용되지 않는 경우, 이 제한은 귀하에게 적용되지 않을 수 있습니다. + + c. 위에 제공된 보증의 면책 및 책임의 제한은 가능한 범위 내에서 모든 책임의 절대적인 면책 및 포기를 가장 밀접하게 근접하는 방식으로 해석되어야 합니다. + +Section 6 -- 기간 및 종료. + + a. 이 공공 라이선스는 여기서 라이선스된 저작권 및 유사 권리의 기간 동안 적용됩니다. 그러나 귀하가 이 공공 라이선스를 준수하지 않는 경우, 귀하의 이 공공 라이선스 하에 권리는 자동으로 종료됩니다. + + b. 귀하의 라이선스된 자료 사용 권리가 섹션 6(a)에 따라 종료된 경우, 이는 다음과 같이 복원됩니다: + + 1. 위반이 수정된 날짜에 자동으로 복원되며, 귀하가 위반을 발견한 후 30일 이내에 수정된 경우; 또는 + + 2. 라이선스 제공자의 명시적 복원에 의해. + + 명확성을 위해, 이 섹션 6(b)는 귀하의 이 공공 라이선스 위반에 대한 라이선스 제공자의 구제 수단을 찾을 수 있는 권리에 영향을 미치지 않습니다. + + c. 명확성을 위해, 라이선스 제공자는 별도의 조건으로 라이선스된 자료를 제공하거나 언제든지 라이선스된 자료 배포를 중단할 수 있습니다; 그러나 그렇게 하더라도 이 공공 라이선스는 종료되지 않습니다. + + d. 섹션 1, 5, 6, 7 및 8은 이 공공 라이선스의 종료 후에도 유효합니다. + +Section 7 -- 기타 조건 및 규정. + + a. 라이선 + +**면책 조항**: +이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ko/lessons/sketchnotes/README.md b/translations/ko/lessons/sketchnotes/README.md new file mode 100644 index 00000000..1059b27c --- /dev/null +++ b/translations/ko/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +모든 커리큘럼의 스케치 노트는 여기에서 다운로드할 수 있습니다. + +🎨 제작자: Tomomi Imura (트위터: [@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 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다. \ No newline at end of file diff --git a/translations/ms/README.md b/translations/ms/README.md new file mode 100644 index 00000000..22c360dc --- /dev/null +++ b/translations/ms/README.md @@ -0,0 +1,140 @@ +[![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) + +# Kecerdasan Buatan untuk Pemula - Sebuah Kurikulum + +|![ Sketchnote oleh [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| Kecerdasan Buatan untuk Pemula - _Sketchnote oleh [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Jelajahi dunia **Kecerdasan Buatan** (AI) dengan kurikulum kami yang berlangsung selama 12 minggu dan terdiri dari 24 pelajaran! Ini mencakup pelajaran praktis, kuis, dan laboratorium. Kurikulum ini ramah pemula dan mencakup alat seperti TensorFlow dan PyTorch, serta etika dalam AI. + +## Apa yang akan Anda pelajari + +**[Peta Pikiran Kursus](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +Dalam kurikulum ini, Anda akan mempelajari: + +* Berbagai pendekatan terhadap Kecerdasan Buatan, termasuk pendekatan simbolik "lama yang baik" dengan **Representasi Pengetahuan** dan penalaran ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Jaringan Saraf** dan **Pembelajaran Dalam**, yang merupakan inti dari AI modern. Kami akan menggambarkan konsep di balik topik penting ini menggunakan kode dalam dua kerangka kerja paling populer - [TensorFlow](http://Tensorflow.org) dan [PyTorch](http://pytorch.org). +* **Arsitektur Saraf** untuk bekerja dengan gambar dan teks. Kami akan membahas model-model terbaru tetapi mungkin sedikit kurang dalam hal teknologi terkini. +* Pendekatan AI yang kurang populer, seperti **Algoritma Genetik** dan **Sistem Multi-Agen**. + +Apa yang tidak akan kami bahas dalam kurikulum ini: + +> [Temukan semua sumber tambahan untuk kursus ini di koleksi Microsoft Learn kami](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Kasus bisnis menggunakan **AI dalam Bisnis**. Pertimbangkan untuk mengambil jalur pembelajaran [Pengenalan AI untuk pengguna bisnis](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) di Microsoft Learn, atau [Sekolah Bisnis AI](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), yang dikembangkan bekerja sama dengan [INSEAD](https://www.insead.edu/). +* **Pembelajaran Mesin Klasik**, yang dijelaskan dengan baik dalam [Kurikulum Pembelajaran Mesin untuk Pemula](http://github.com/Microsoft/ML-for-Beginners). +* Aplikasi AI praktis yang dibangun menggunakan **[Layanan Kognitif](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Untuk ini, kami merekomendasikan Anda memulai dengan modul Microsoft Learn untuk [visi](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [pemrosesan bahasa alami](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[AI Generatif dengan Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** dan lainnya. +* Kerangka **Cloud Frameworks** ML tertentu, seperti [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), atau [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Pertimbangkan untuk menggunakan jalur pembelajaran [Membangun dan mengoperasikan solusi pembelajaran mesin dengan Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) dan [Membangun dan Mengoperasikan Solusi Pembelajaran Mesin dengan Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **AI Percakapan** dan **Bot Obrolan**. Ada jalur pembelajaran terpisah [Membuat solusi AI percakapan](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), dan Anda juga dapat merujuk ke [posting blog ini](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) untuk detail lebih lanjut. +* **Matematika Dalam** pembelajaran mendalam. Untuk ini, kami merekomendasikan [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) oleh Ian Goodfellow, Yoshua Bengio, dan Aaron Courville, yang juga tersedia secara online di [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Untuk pengantar yang lembut tentang topik _AI di Cloud_, Anda dapat mempertimbangkan untuk mengambil jalur pembelajaran [Memulai dengan kecerdasan buatan di Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# Konten + +| | Tautan Pelajaran | PyTorch/Keras/TensorFlow | Lab | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Pengaturan Kursus](./lessons/0-course-setup/setup.md) | [Siapkan Lingkungan Pengembangan Anda](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Pengantar AI**](./lessons/1-Intro/README.md) | | | +| 01 | [Pengantar dan Sejarah AI](./lessons/1-Intro/README.md) | - | - | +| II | **AI Simbolik** | +| 02 | [Representasi Pengetahuan dan Sistem Pakar](./lessons/2-Symbolic/README.md) | [Sistem Pakar](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) /[Graf Konsep](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Pengantar Jaringan Saraf**](./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 Berlapis Banyak dan Membuat Kerangka Sendiri](./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 | [Pengantar Kerangka (PyTorch/TensorFlow) dan 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 | [**Penglihatan Komputer**](./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)| [Jelajahi Penglihatan Komputer di Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Pengenalan kepada Penglihatan Komputer. 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 | [Rangkaian Neural Konvolusi](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Arsitektur 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) | [Laboratorium](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Rangkaian Pra-latih dan Pembelajaran Pemindahan](./lessons/4-ComputerVision/08-TransferLearning/README.md) dan [Trik Latihan](./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 | [Autoencoder dan 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 | [Rangkaian Adversarial Generatif & Pemindahan Gaya Artistik](./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 | [Pengesanan Objek](./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 | [Segmentasi Semantik. 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 | [**Pemprosesan Bahasa Semulajadi**](./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) | [Jelajahi Pemprosesan Bahasa Semulajadi di Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Perwakilan Teks. 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 kata semantik. Word2Vec dan 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 | [Pemodelan Bahasa. Latih embedding anda sendiri](./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) | [Makmal](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Rangkaian Neural Berulang](./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 | [Rangkaian Generatif Berulang](./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) | [Makmal](./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 | [Pengenalan Entiti Bernama](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Makmal](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Model Bahasa Besar, Pemrograman Prompt dan Tugas 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 | **Teknik AI Lain** || | +| 21 | [Algoritma Genetik](./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 | [Pembelajaran Penguatan Dalam](./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 | [Sistem Multi-Agen](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Etika AI** | | | +| 24 | [Etika AI dan AI yang Bertanggungjawab](./lessons/7-Ethics/README.md) | [Microsoft Learn: Prinsip AI yang Bertanggungjawab](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Ekstra** | | | +| 25 | [Jaringan Multi-Modal, CLIP dan 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) | | + +## Setiap pelajaran mengandungi + +* Bahan pra-baca +* Notebook Jupyter yang boleh dieksekusi, yang sering spesifik kepada rangka kerja (**PyTorch** atau **TensorFlow**). Notebook yang boleh dieksekusi juga mengandungi banyak bahan teori, jadi untuk memahami topik ini anda perlu melalui sekurang-kurangnya satu versi notebook (sama ada PyTorch atau TensorFlow). +* **Lab** yang tersedia untuk beberapa topik, yang memberikan anda peluang untuk mencuba menerapkan bahan yang telah anda pelajari kepada masalah tertentu. +* Beberapa bahagian mengandungi pautan ke modul [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) yang merangkumi topik berkaitan. + +## Memulakan + +- Kami telah mencipta [pelajaran penyediaan](./lessons/0-course-setup/setup.md) untuk membantu anda dengan penyediaan persekitaran pembangunan anda. - Untuk Pendidik, kami juga telah mencipta [pelajaran penyediaan kurikulum](./lessons/0-course-setup/for-teachers.md) untuk anda! +- Cara untuk [Menjalankan kod di VSCode atau Codepace](./lessons/0-course-setup/how-to-run.md) + +Ikuti langkah-langkah ini: + +Fork Repositori: Klik pada butang "Fork" di sudut kanan atas halaman ini. + +Clone Repositori: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Jangan lupa untuk memberi bintang (🌟) kepada repositori ini agar anda lebih mudah menemuinya nanti. + +## Temui Pembelajar Lain + +Sertai [server Discord AI rasmi kami](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) untuk bertemu dan berhubung dengan pembelajar lain yang mengikuti kursus ini dan mendapatkan sokongan. + +## Kuiz + +> **Nota tentang kuiz**: Semua kuiz terdapat dalam folder Quiz-app di etc\quiz-app, Mereka dihubungkan dari dalam pelajaran dan aplikasi kuiz boleh dijalankan secara lokal atau dikerahkan ke Azure; ikuti arahan dalam folder `quiz-app`. Mereka secara beransur-ansur sedang dilokalkan. + +## Bantuan Diperlukan + +Adakah anda mempunyai cadangan atau menemui kesalahan ejaan atau kod? Buka isu atau buat permintaan tarik. + +## Ucapan Terima Kasih Istimewa + +* **✍️ Penulis Utama:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustrator Sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Pencipta Kuiz:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Penyumbang Teras:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Kurikulum Lain + +Pasukan kami menghasilkan kurikulum lain! Semak: + +* [Sains Data untuk Pemula](https://aka.ms/ds4beginners) +* [**Versi 2.0** AI Generatif untuk Pemula](https://aka.ms/genai-beginners) +* [**BARU** Keselamatan Siber untuk Pemula](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [Pembangunan Web untuk Pemula](https://aka.ms/webdev-beginners) +* [IoT untuk Pemula](https://aka.ms/iot-beginners) +* [Pembelajaran Mesin untuk Pemula](https://aka.ms/ml4beginners) +* [Pembangunan XR untuk Pemula](https://aka.ms/xr-dev-for-beginners) +* [Menguasai GitHub Copilot untuk Pemrograman Berpasangan AI](https://aka.ms/GitHubCopilotAI) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk memastikan ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia yang profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/SECURITY.md b/translations/ms/SECURITY.md new file mode 100644 index 00000000..49fe249e --- /dev/null +++ b/translations/ms/SECURITY.md @@ -0,0 +1,40 @@ +## Keselamatan + +Microsoft mengambil serius keselamatan produk dan perkhidmatan perisian kami, termasuk semua repositori kod sumber yang diurus melalui organisasi GitHub kami, yang merangkumi [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), dan [organisasi GitHub kami](https://opensource.microsoft.com/). + +Jika anda percaya anda telah menemui kerentanan keselamatan dalam mana-mana repositori milik Microsoft yang memenuhi [definisi kerentanan keselamatan Microsoft](https://aka.ms/opensource/security/definition), sila laporkan kepada kami seperti yang diterangkan di bawah. + +## Melaporkan Isu Keselamatan + +**Sila jangan laporkan kerentanan keselamatan melalui isu GitHub awam.** + +Sebaliknya, sila laporkan kepada Pusat Respons Keselamatan Microsoft (MSRC) di [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Jika anda lebih suka menghantar tanpa log masuk, hantarkan email kepada [secure@microsoft.com](mailto:secure@microsoft.com). Jika boleh, enkrip mesej anda dengan kunci PGP kami; sila muat turun dari [halaman Kunci PGP Pusat Respons Keselamatan Microsoft](https://aka.ms/opensource/security/pgpkey). + +Anda seharusnya menerima jawapan dalam masa 24 jam. Jika atas sebab tertentu anda tidak menerima, sila ikuti melalui email untuk memastikan kami menerima mesej asal anda. Maklumat tambahan boleh didapati di [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Sila sertakan maklumat yang diminta di bawah (seberapa banyak yang anda boleh berikan) untuk membantu kami memahami sifat dan skop isu yang mungkin berlaku: + + * Jenis isu (contohnya, overflow buffer, suntikan SQL, skrip silang laman, dll.) + * Laluan penuh fail sumber yang berkaitan dengan manifestasi isu + * Lokasi kod sumber yang terjejas (tag/cabang/komit atau URL langsung) + * Sebarang konfigurasi khas yang diperlukan untuk menghasilkan isu + * Arahan langkah demi langkah untuk menghasilkan isu + * Bukti konsep atau kod eksploitasi (jika boleh) + * Kesan isu, termasuk bagaimana penyerang mungkin mengeksploitasi isu tersebut + +Maklumat ini akan membantu kami menilai laporan anda dengan lebih cepat. + +Jika anda melaporkan untuk program ganjaran bug, laporan yang lebih lengkap boleh menyumbang kepada ganjaran yang lebih tinggi. Sila lawati halaman [Program Ganjaran Bug Microsoft](https://aka.ms/opensource/security/bounty) untuk maklumat lanjut mengenai program aktif kami. + +## Bahasa Pilihan + +Kami lebih suka semua komunikasi dalam Bahasa Inggeris. + +## Polisi + +Microsoft mengikuti prinsip [Pendedahan Kerentanan Koordinasi](https://aka.ms/opensource/security/cvd). + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berautoriti. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/etc/CODE_OF_CONDUCT.md b/translations/ms/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..a11a0d3a --- /dev/null +++ b/translations/ms/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Kod Tingkah Laku Sumber Terbuka Microsoft + +Projek ini telah mengadopsi [Kod Tingkah Laku Sumber Terbuka Microsoft](https://opensource.microsoft.com/codeofconduct/). + +Sumber: + +- [Kod Tingkah Laku Sumber Terbuka Microsoft](https://opensource.microsoft.com/codeofconduct/) +- [Soalan Lazim Kod Tingkah Laku Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Hubungi [opencode@microsoft.com](mailto:opencode@microsoft.com) untuk sebarang pertanyaan atau kebimbangan. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/etc/CONTRIBUTING.md b/translations/ms/etc/CONTRIBUTING.md new file mode 100644 index 00000000..df9b8186 --- /dev/null +++ b/translations/ms/etc/CONTRIBUTING.md @@ -0,0 +1,27 @@ +# Menyumbang + +Projek ini mengalu-alukan sumbangan dan cadangan. Kebanyakan sumbangan memerlukan anda +bersetuju dengan Perjanjian Lesen Penyumbang (CLA) yang menyatakan bahawa anda mempunyai hak untuk, +dan sebenarnya memberi, hak kepada kami untuk menggunakan sumbangan anda. Untuk maklumat lanjut, lawati +https://cla.microsoft.com. + +Apabila anda menghantar permintaan pull, bot CLA akan secara automatik menentukan sama ada anda perlu +memberikan CLA dan menghias PR dengan sewajarnya (contohnya, label, komen). Cukup ikut arahan yang +diberikan oleh bot. Anda hanya perlu melakukan ini sekali untuk semua repositori yang menggunakan CLA kami. + +Projek ini telah mengadopsi [Kod Etika Sumber Terbuka Microsoft](https://opensource.microsoft.com/codeofconduct/). +Untuk maklumat lanjut, lihat [Soalan Lazim Kod Etika](https://opensource.microsoft.com/codeofconduct/faq/) +atau hubungi [opencode@microsoft.com](mailto:opencode@microsoft.com) dengan sebarang soalan atau komen tambahan. + +# Mencari Sumbangan + +Kami sedang aktif mencari sumbangan dalam topik berikut: + +- [ ] Tulis bahagian tentang Pembelajaran Penguatan Mendalam +- [ ] Tingkatkan bahagian + notebook tentang Pengesanan Objek +- [ ] PyTorch Lightning (untuk [bahagian ini](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Tulis bahagian + contoh tentang Pengenalan Entiti Bernama +- [ ] Cipta contoh untuk melatih embedding kami sendiri untuk [bahagian ini](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa ibunda harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia yang profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/etc/Mindmap.md b/translations/ms/etc/Mindmap.md new file mode 100644 index 00000000..6220e525 --- /dev/null +++ b/translations/ms/etc/Mindmap.md @@ -0,0 +1,76 @@ +# AI + +## [Pengenalan kepada AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definisi AI + - Sejarah AI + - Pendekatan kepada AI + - Atas ke bawah/Symbolik + - Bawah ke atas/Neural + - Evolusi + - AI Sinergetik / Emergen + - [Sekolah Perniagaan AI Microsoft](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [AI Symbolik](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Representasi Pengetahuan + - [Sistem Pakar](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) + - Web Semantik + +## [Rangkaian 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) + - [Rangkaian Berlapis Banyak](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Pengenalan kepada Rangkaian](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) + +## [Visi Komputer](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Di MS Learn + - [Asas AI: Teroka Visi Komputer](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [CV dengan PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [CV dengan TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Pengenalan kepada CV. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Rangkaian Konvolusi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Arsitektur CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Pembelajaran Pemindahan](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Trik Latihan](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencoder dan VAE](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Rangkaian Adversarial Generatif](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Pemindahan Gaya](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Pengesanan Objek](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentasi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Pemprosesan Bahasa Semulajadi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Di MS Learn + - [Asas AI: Teroka NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP dengan PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP dengan TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [Representasi Teks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Tas Kata + - TF/IDF + - [Embeddings Semantik](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Pemodelan Bahasa](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Jaringan Saraf Rekuren](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Jaringan Rekuren Generatif](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers dan BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Pengenalan Entitas Bernama](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Generasi Teks dan GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## Teknik Lain + - [Algoritma Genetik](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Pembelajaran Penguatan Dalam](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Sistem Multi-Agen](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 tentang AI yang Bertanggung Jawab](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## Ekstra + - [Jaringan 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 + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk memastikan ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi ralat atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/etc/SUPPORT.md b/translations/ms/etc/SUPPORT.md new file mode 100644 index 00000000..7149222f --- /dev/null +++ b/translations/ms/etc/SUPPORT.md @@ -0,0 +1,14 @@ +# Sokongan + +## Cara melaporkan isu dan mendapatkan bantuan + +Projek ini menggunakan GitHub Issues untuk menjejak pepijat dan permintaan ciri. Sila cari isu yang sedia ada sebelum melaporkan isu baru untuk mengelakkan duplikasi. Untuk isu baru, laporkan pepijat atau permintaan ciri anda sebagai Isu baru. + +Untuk bantuan dan soalan mengenai penggunaan projek ini, sila gunakan Lembaga Perbincangan. + +## Dasar Sokongan Microsoft + +Sokongan untuk projek ini terhad kepada sumber yang disenaraikan di atas. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/etc/TRANSLATIONS.md b/translations/ms/etc/TRANSLATIONS.md new file mode 100644 index 00000000..80236bff --- /dev/null +++ b/translations/ms/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# Sumbang dengan menterjemah pelajaran + +Kami mengalu-alukan terjemahan untuk pelajaran dalam kurikulum ini! + +## Garis Panduan + +Terdapat folder dalam setiap folder pelajaran dan folder pengenalan pelajaran yang mengandungi fail markdown yang telah diterjemahkan. + +> Nota, sila jangan menterjemah sebarang kod dalam fail contoh kod; perkara yang perlu diterjemah hanyalah README, tugasan, dan kuiz. Terima kasih! + +Fail yang diterjemah harus mengikuti konvensyen penamaan ini: + +**README._[language]_.md** + +di mana _[language]_ adalah singkatan dua huruf untuk bahasa yang mengikuti standard ISO 639-1 (contohnya `README.es.md` untuk bahasa Sepanyol dan `README.nl.md` untuk bahasa Belanda). + +**assignment._[language]_.md** + +Serupa dengan README, sila terjemahkan juga tugasan. + +**Kuiz** + +1. Tambahkan terjemahan anda ke dalam aplikasi kuiz dengan menambahkan fail di sini: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, dengan konvensyen penamaan yang betul (en.json, fr.json). **Sila jangan melokalisasi perkataan 'true' atau 'false' bagaimanapun. Terima kasih!** + +2. Tambahkan kod bahasa anda ke dalam dropdown dalam fail App.vue aplikasi kuiz. + +3. Edit fail [translations index.js aplikasi kuiz](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) untuk menambah bahasa anda. + +4. Akhir sekali, edit SEMUA pautan kuiz dalam fail README.md yang telah diterjemah untuk menunjuk terus ke kuiz yang telah diterjemah: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 menjadi https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**TERIMA KASIH** + +Kami benar-benar menghargai usaha anda! + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi ralat atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/etc/quiz-app/README.md b/translations/ms/etc/quiz-app/README.md new file mode 100644 index 00000000..eee8cb7c --- /dev/null +++ b/translations/ms/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# Kuiz + +Kuiz ini adalah kuiz pra- dan pasca-kuliah untuk kurikulum AI di https://aka.ms/ai-beginners + +## Menambah set kuiz terjemahan + +Tambahkan terjemahan kuiz dengan membuat struktur kuiz yang sesuai dalam folder `assets/translations`. Kuiz kanonik terdapat di `assets/translations/en`. Kuiz dibagi menjadi beberapa kelompok berdasarkan pelajaran. Pastikan untuk menyelaraskan penomoran dengan bagian kuiz yang tepat. Terdapat 40 kuiz dalam kurikulum ini, dengan hitungan dimulai dari 0. + +Setelah mengedit terjemahan, edit file index.js dalam folder terjemahan untuk mengimpor semua file mengikuti konvensi di `en`. + +Edit file `index.js` di `assets/translations` untuk mengimpor file terjemahan baru. + +Kemudian, edit dropdown di `App.vue` dalam aplikasi ini untuk menambahkan bahasa Anda. Sesuaikan singkatan lokal dengan nama folder untuk bahasa Anda. + +Akhirnya, edit semua tautan kuiz dalam pelajaran yang diterjemahkan, jika ada, untuk menyertakan lokalisasi ini sebagai parameter kueri: `?loc=fr` misalnya. + +## Pengaturan Proyek + +``` +npm install +``` + +### Mengkompilasi dan memuat ulang secara panas untuk pengembangan + +``` +npm run serve +``` + +### Mengkompilasi dan meminimalkan untuk produksi + +``` +npm run build +``` + +### Memeriksa dan memperbaiki file + +``` +npm run lint +``` + +### Sesuaikan konfigurasi + +Lihat [Referensi Konfigurasi](https://cli.vuejs.org/config/). + +Kredit: Terima kasih kepada versi asli aplikasi kuiz ini: https://github.com/arpan45/simple-quiz-vue + +## Meng-deploy ke Azure + +Berikut adalah panduan langkah-demi-langkah untuk membantu Anda memulai: + +1. Fork Repositori GitHub +Pastikan kode aplikasi web statis Anda ada di repositori GitHub Anda. Fork repositori ini. + +2. Buat Azure Static Web App +- Buat dan [akun Azure](http://azure.microsoft.com) +- Pergi ke [portal Azure](https://portal.azure.com) +- Klik “Buat sumber daya” dan cari “Static Web App”. +- Klik “Buat”. + +3. Konfigurasikan Static Web App +- Dasar: Langganan: Pilih langganan Azure Anda. +- Grup Sumber Daya: Buat grup sumber daya baru atau gunakan yang sudah ada. +- Nama: Berikan nama untuk aplikasi web statis Anda. +- Wilayah: Pilih wilayah yang paling dekat dengan pengguna Anda. + +- #### Detail Penempatan: +- Sumber: Pilih “GitHub”. +- Akun GitHub: Beri izin Azure untuk mengakses akun GitHub Anda. +- Organisasi: Pilih organisasi GitHub Anda. +- Repositori: Pilih repositori yang berisi aplikasi web statis Anda. +- Cabang: Pilih cabang yang ingin Anda gunakan untuk melakukan penempatan. + +- #### Detail Build: +- Preset Build: Pilih kerangka kerja yang digunakan aplikasi Anda (misalnya, React, Angular, Vue, dll.). +- Lokasi Aplikasi: Tentukan folder yang berisi kode aplikasi Anda (misalnya, / jika berada di root). +- Lokasi API: Jika Anda memiliki API, tentukan lokasinya (opsional). +- Lokasi Output: Tentukan folder di mana output build dihasilkan (misalnya, build atau dist). + +4. Tinjau dan Buat +Tinjau pengaturan Anda dan klik “Buat”. Azure akan menyiapkan sumber daya yang diperlukan dan membuat alur kerja GitHub Actions di repositori Anda. + +5. Alur Kerja GitHub Actions +Azure akan secara otomatis membuat file alur kerja GitHub Actions di repositori Anda (.github/workflows/azure-static-web-apps-.yml). Alur kerja ini akan menangani proses build dan penempatan. + +6. Pantau Penempatan +Pergi ke tab “Actions” di repositori GitHub Anda. +Anda seharusnya melihat alur kerja yang sedang berjalan. Alur kerja ini akan membangun dan menempatkan aplikasi web statis Anda ke Azure. +Setelah alur kerja selesai, aplikasi Anda akan live di URL Azure yang disediakan. + +### Contoh File Alur Kerja + +Berikut adalah contoh bagaimana file alur kerja GitHub Actions mungkin terlihat: +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 +``` + +### Sumber Daya Tambahan +- [Dokumentasi Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Dokumentasi GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi ralat atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat penting, terjemahan manusia yang profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/0-course-setup/for-teachers.md b/translations/ms/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..dddb3578 --- /dev/null +++ b/translations/ms/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# Untuk Pendidik + +Adakah anda ingin menggunakan kurikulum ini di dalam kelas anda? Silakan! + +Sebenarnya, anda boleh menggunakannya di dalam GitHub itu sendiri dengan menggunakan GitHub Classroom. + +Untuk melakukannya, fork repositori ini. Anda perlu membuat repositori untuk setiap pelajaran, jadi anda perlu mengekstrak setiap folder ke dalam repositori yang berasingan. Dengan cara ini, [GitHub Classroom](https://classroom.github.com/classrooms) dapat mengambil setiap pelajaran secara berasingan. + +Arahan [penuh ini](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) akan memberikan anda idea tentang cara untuk menyediakan kelas anda. + +## Menggunakan repositori seperti sedia ada + +Jika anda ingin menggunakan repositori ini seperti yang ada sekarang, tanpa menggunakan GitHub Classroom, itu juga boleh dilakukan. Anda perlu berkomunikasi dengan pelajar anda tentang pelajaran yang perlu mereka kerjakan bersama. + +Dalam format dalam talian (Zoom, Teams, atau lain-lain), anda mungkin membentuk bilik kecil untuk kuiz, dan membimbing pelajar untuk membantu mereka bersedia untuk belajar. Kemudian, jemput pelajar untuk menyertai kuiz dan menghantar jawapan mereka sebagai 'isu' pada waktu tertentu. Anda mungkin melakukan perkara yang sama dengan tugasan, jika anda mahu pelajar bekerja secara kolaboratif di hadapan umum. + +Jika anda lebih suka format yang lebih peribadi, minta pelajar anda untuk fork kurikulum, pelajaran demi pelajaran, ke repositori GitHub mereka sendiri sebagai repositori peribadi, dan berikan anda akses. Kemudian mereka boleh menyelesaikan kuiz dan tugasan secara peribadi dan menghantarnya kepada anda melalui isu di repositori kelas anda. + +Terdapat banyak cara untuk menjadikan ini berfungsi dalam format kelas dalam talian. Sila beritahu kami apa yang paling sesuai untuk anda! + +## Sila berikan pendapat anda + +Kami ingin menjadikan kurikulum ini berfungsi untuk anda dan pelajar anda. Sila berikan maklum balas di papan perbincangan! + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa ibundanya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/0-course-setup/how-to-run.md b/translations/ms/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..4e5e1fe0 --- /dev/null +++ b/translations/ms/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# Cara Menjalankan Kode + +Kurikulum ini mengandung banyak contoh dan lab yang dapat dieksekusi yang ingin Anda jalankan. Untuk melakukan ini, Anda perlu kemampuan untuk menjalankan kode Python di Jupyter Notebooks yang disediakan sebagai bagian dari kurikulum ini. Anda memiliki beberapa opsi untuk menjalankan kode: + +## Menjalankan secara lokal di komputer Anda + +Untuk menjalankan kode secara lokal di komputer Anda, Anda perlu memiliki beberapa versi Python yang terinstal. Saya pribadi merekomendasikan untuk menginstal **[miniconda](https://conda.io/en/latest/miniconda.html)** - ini adalah instalasi yang cukup ringan yang mendukung manajer paket `conda` untuk berbagai **lingkungan virtual** Python. + +Setelah Anda menginstal miniconda, Anda perlu mengkloning repositori dan membuat lingkungan virtual yang akan digunakan untuk kursus ini: + +```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 +``` + +### Menggunakan Visual Studio Code dengan Ekstensi Python + +Mungkin cara terbaik untuk menggunakan kurikulum ini adalah dengan membukanya di [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) dengan [Ekstensi Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Catatan**: Setelah Anda mengkloning dan membuka direktori di VS Code, ia akan secara otomatis menyarankan Anda untuk menginstal ekstensi Python. Anda juga harus menginstal miniconda seperti yang dijelaskan di atas. + +> **Catatan**: Jika VS Code menyarankan Anda untuk membuka kembali repositori di dalam kontainer, Anda perlu menolak ini untuk menggunakan instalasi Python lokal. + +### Menggunakan Jupyter di Browser + +Anda juga dapat menggunakan lingkungan Jupyter langsung dari browser di komputer Anda sendiri. Sebenarnya, baik Jupyter klasik maupun Jupyter Hub menyediakan lingkungan pengembangan yang cukup nyaman dengan pelengkapan otomatis, penyorotan kode, dll. + +Untuk memulai Jupyter secara lokal, pergi ke direktori kursus, dan jalankan: + +```bash +jupyter notebook +``` +atau +```bash +jupyterhub +``` +Anda kemudian dapat menavigasi ke salah satu folder `.ipynb` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` yang menginstruksikan cara membangun kontainer untuk repositori ini, VS Code akan menawarkan Anda untuk membuka kembali kode di dalam kontainer. Ini akan memerlukan instalasi Docker, dan juga akan lebih kompleks, jadi kami merekomendasikan ini untuk pengguna yang lebih berpengalaman. + +## Menjalankan di Cloud + +Jika Anda tidak ingin menginstal Python secara lokal, dan memiliki akses ke beberapa sumber daya cloud - alternatif yang baik adalah menjalankan kode di cloud. Ada beberapa cara untuk melakukan ini: + +* Menggunakan **[GitHub Codespaces](https://github.com/features/codespaces)**, yang merupakan lingkungan virtual yang dibuat untuk Anda di GitHub, dapat diakses melalui antarmuka browser VS Code. Jika Anda memiliki akses ke Codespaces, Anda dapat langsung mengklik tombol **Code** di repositori, memulai codespace, dan mulai menjalankannya dalam waktu singkat. +* Menggunakan **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) adalah sumber daya komputasi gratis yang disediakan di cloud untuk orang-orang seperti Anda untuk menguji beberapa kode di GitHub. Ada tombol di halaman depan untuk membuka repositori di Binder - ini seharusnya dengan cepat membawa Anda ke situs binder, yang akan membangun kontainer yang mendasari dan memulai antarmuka web Jupyter untuk Anda tanpa hambatan. + +> **Catatan**: Untuk mencegah penyalahgunaan, Binder memiliki akses ke beberapa sumber daya web yang diblokir. Ini mungkin mencegah beberapa kode berfungsi, yang mengambil model dan/atau dataset dari Internet publik. Anda mungkin perlu mencari beberapa solusi alternatif. Juga, sumber daya komputasi yang disediakan oleh Binder cukup dasar, jadi pelatihan akan lambat, terutama di pelajaran yang lebih kompleks nanti. + +## Menjalankan di Cloud dengan GPU + +Beberapa pelajaran terakhir dalam kurikulum ini akan sangat diuntungkan dari dukungan GPU, karena jika tidak, pelatihan akan sangat lambat. Ada beberapa opsi yang dapat Anda ikuti, terutama jika Anda memiliki akses ke cloud baik melalui [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), atau melalui institusi Anda: + +* Buat [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) dan sambungkan ke dalamnya melalui Jupyter. Anda kemudian dapat mengkloning repositori langsung ke mesin, dan mulai belajar. VM seri NC memiliki dukungan GPU. + +> **Catatan**: Beberapa langganan, termasuk Azure for Students, tidak menyediakan dukungan GPU secara langsung. Anda mungkin perlu meminta tambahan inti GPU melalui permintaan dukungan teknis. + +* Buat [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) dan kemudian gunakan fitur Notebook di sana. [Video ini](https://azure-for-academics.github.io/quickstart/azureml-papers/) menunjukkan cara mengkloning repositori ke dalam notebook Azure ML dan mulai menggunakannya. + +Anda juga dapat menggunakan Google Colab, yang dilengkapi dengan beberapa dukungan GPU gratis, dan mengunggah Jupyter Notebooks di sana untuk mengeksekusinya satu per satu. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi ralat atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/0-course-setup/setup.md b/translations/ms/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..1c597189 --- /dev/null +++ b/translations/ms/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# Memulakan dengan Kurikulum ini + +## Adakah anda seorang pelajar? + +Mulakan dengan sumber-sumber berikut: + +* [Halaman Hub Pelajar](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Di halaman ini, anda akan menemui sumber pemula, pek Pelajar, dan bahkan cara untuk mendapatkan baucar sijil percuma. Ini adalah halaman yang ingin anda tandakan dan semak dari semasa ke semasa kerana kami menukar kandungan sekurang-kurangnya sebulan sekali. +* [Duta Pembelajaran Pelajar Microsoft](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Sertai komuniti global duta pelajar, ini mungkin menjadi jalan anda ke Microsoft. + +**Pelajar**, terdapat beberapa cara untuk menggunakan kurikulum ini. Pertama sekali, anda boleh membaca teks dan melihat kod secara langsung di GitHub. Jika anda ingin menjalankan kod dalam mana-mana buku nota - [baca arahan kami](./etc/how-to-run.md), dan cari lebih banyak nasihat tentang cara melakukannya [dalam catatan blog ini](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Nota**: [Arahan tentang cara menjalankan kod dalam kurikulum ini](/how-to-run.md) + +## Pembelajaran Sendiri + +Namun, jika anda ingin mengikuti kursus ini sebagai projek pembelajaran sendiri, kami mencadangkan agar anda mengfork keseluruhan repositori ke akaun GitHub anda sendiri dan menyelesaikan latihan secara individu atau dengan kumpulan: + +* Mulakan dengan kuiz pra-ceramah. +* Baca teks pengenalan untuk ceramah. +* Jika ceramah mempunyai buku nota tambahan, teliti mereka, membaca dan menjalankan kod. Jika kedua-dua buku nota TensorFlow dan PyTorch disediakan, anda boleh fokus pada salah satu daripadanya - pilih rangka kerja kegemaran anda. +* Buku nota sering mengandungi beberapa cabaran yang memerlukan anda mengubah sedikit kod untuk eksperimen. +* Ambil kuiz pasca-ceramah. +* Jika terdapat makmal yang dilampirkan pada modul - selesaikan tugasan. +* Kunjungi [Papan Perbincangan](https://github.com/microsoft/AI-For-Beginners/discussions) untuk "belajar dengan lantang". + +> Untuk kajian lanjut, kami mencadangkan mengikuti modul dan laluan pembelajaran [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) ini. + +**Guru**, kami telah [menyertakan beberapa cadangan](/for-teachers.md) tentang cara menggunakan kurikulum ini. + +--- + +## Pedagogi + +Kami telah memilih dua prinsip pedagogi semasa membina kurikulum ini: memastikan ia bersifat **berdasarkan projek** dan termasuk **kuiz yang kerap**. + +Dengan memastikan bahawa kandungan selaras dengan projek, proses ini menjadi lebih menarik bagi pelajar dan pengekalan konsep akan dipertingkatkan. Selain itu, kuiz dengan risiko rendah sebelum kelas menetapkan niat pelajar terhadap pembelajaran topik, sementara kuiz kedua selepas kelas memastikan pengekalan lebih lanjut. Kurikulum ini direka untuk menjadi fleksibel dan menyeronokkan dan boleh diambil secara keseluruhan atau sebahagian. Projek bermula kecil dan menjadi semakin kompleks menjelang akhir kitaran 12 minggu. + +> **Nota tentang kuiz**: Semua kuiz terdapat [dalam aplikasi ini](https://red-field-0a6ddfd03.1.azurestaticapps.net/), untuk 50 kuiz keseluruhan dengan tiga soalan setiap satu. Mereka dihubungkan dari dalam pelajaran tetapi aplikasi kuiz boleh dijalankan secara lokal; ikuti arahan dalam folder `etc/quiz-app`. + +## Akses Offline + +Anda boleh menjalankan dokumentasi ini secara offline dengan menggunakan [Docsify](https://docsify.js.org/#/). Fork repositori ini, [pasang Docsify](https://docsify.js.org/#/quickstart) di mesin tempatan anda, dan kemudian di folder `etc/docsify` repositori ini, taip `docsify serve`. Laman web akan disajikan di port 3000 pada localhost anda: `localhost:3000`. PDF kurikulum tersedia [di pautan ini](../../../../../../etc/pdf/readme.pdf). + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi ralat atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat kritikal, terjemahan manusia yang profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/1-Intro/README.md b/translations/ms/lessons/1-Intro/README.md new file mode 100644 index 00000000..8c428472 --- /dev/null +++ b/translations/ms/lessons/1-Intro/README.md @@ -0,0 +1,38 @@ +> Gambar oleh Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) oleh [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Penyelidikan AI Terkini + +Pertumbuhan besar-besaran dalam penyelidikan rangkaian neural bermula sekitar tahun 2010, apabila dataset awam besar mula tersedia. Koleksi besar gambar yang dipanggil [ImageNet](https://en.wikipedia.org/wiki/ImageNet), yang mengandungi sekitar 14 juta gambar yang diberi anotasi, melahirkan [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![Ketepatan ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Gambar oleh [Dmitry Soshnikov](http://soshnikov.com) +Pada tahun 2012, [Jaringan Saraf Konvolusional](../4-ComputerVision/07-ConvNets/README.md) pertama kali digunakan dalam klasifikasi gambar, yang mengakibatkan penurunan signifikan dalam kesalahan klasifikasi (dari hampir 30% menjadi 16.4%). Pada tahun 2015, arsitektur ResNet dari Microsoft Research [mencapai akurasi setara manusia](https://doi.org/10.1109/ICCV.2015.123). + +Sejak saat itu, Jaringan Saraf menunjukkan perilaku yang sangat sukses dalam banyak tugas: + +--- + +Tahun | Paritas Manusia yang dicapai +-----|-------- +2015 | [Klasifikasi Gambar](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Pengakuan Ucapan Percakapan](https://arxiv.org/abs/1610.05256) +2018 | [Penerjemahan Mesin Otomatis](https://arxiv.org/abs/1803.05567) (dari Bahasa Cina ke Bahasa Inggris) +2020 | [Keterangan Gambar](https://arxiv.org/abs/2009.13682) + +Selama beberapa tahun terakhir, kita telah menyaksikan kesuksesan besar dengan model bahasa besar, seperti BERT dan GPT-3. Ini terjadi sebagian besar karena adanya banyak data teks umum yang tersedia yang memungkinkan kita untuk melatih model agar menangkap struktur dan makna teks, melatihnya secara awal pada koleksi teks umum, dan kemudian mengkhususkan model tersebut untuk tugas yang lebih spesifik. Kita akan belajar lebih lanjut tentang [Pengolahan Bahasa Alami](../5-NLP/README.md) di kemudian hari dalam kursus ini. + +## 🚀 Tantangan + +Lakukan penjelajahan di internet untuk menentukan di mana, menurut pendapat Anda, AI paling efektif digunakan. Apakah itu dalam aplikasi Pemetaan, atau layanan pengenalan ucapan ke teks, atau permainan video? Teliti bagaimana sistem tersebut dibangun. + +## [Kuis pasca kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Tinjauan & Studi Mandiri + +Tinjau sejarah AI dan ML dengan membaca [pelajaran ini](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Ambil satu elemen dari sketchnote di bagian atas pelajaran itu atau yang ini dan teliti lebih dalam untuk memahami konteks budaya yang mempengaruhi evolusinya. + +**Tugas**: [Game Jam](assignment.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa ibundanya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/1-Intro/assignment.md b/translations/ms/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..2a788d7b --- /dev/null +++ b/translations/ms/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# Game Jam + +Permainan adalah bidang yang telah banyak dipengaruhi oleh perkembangan dalam AI dan ML. Dalam tugas ini, tulislah sebuah makalah pendek tentang permainan yang Anda suka yang telah dipengaruhi oleh evolusi AI. Permainan tersebut harus cukup tua untuk telah dipengaruhi oleh beberapa jenis sistem pemrosesan komputer. Contoh yang baik adalah Catur atau Go, tetapi juga lihatlah permainan video seperti pong atau Pac-Man. Tulis esai yang membahas masa lalu permainan, masa kini, dan masa depan AI-nya. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa ibundanya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/2-Symbolic/README.md b/translations/ms/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..8d5b543e --- /dev/null +++ b/translations/ms/lessons/2-Symbolic/README.md @@ -0,0 +1,225 @@ +# Representasi Pengetahuan dan Sistem Pakar + +![Ringkasan konten AI Simbolik](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ms.png) + +> Sketchnote oleh [Tomomi Imura](https://twitter.com/girlie_mac) + +Pencarian kecerdasan buatan berlandaskan pada pencarian pengetahuan, untuk memahami dunia dengan cara yang mirip dengan manusia. Tapi, bagaimana cara melakukannya? + +## [Kuis Pra-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +Pada masa awal AI, pendekatan top-down untuk menciptakan sistem cerdas (yang dibahas dalam pelajaran sebelumnya) sangat populer. Ide dasarnya adalah mengekstrak pengetahuan dari orang-orang ke dalam bentuk yang dapat dibaca mesin, dan kemudian menggunakannya untuk secara otomatis menyelesaikan masalah. Pendekatan ini didasarkan pada dua ide besar: + +* Representasi Pengetahuan +* Penalaran + +## Representasi Pengetahuan + +Salah satu konsep penting dalam AI Simbolik adalah **pengetahuan**. Penting untuk membedakan pengetahuan dari *informasi* atau *data*. Misalnya, seseorang dapat mengatakan bahwa buku mengandung pengetahuan, karena seseorang dapat mempelajari buku dan menjadi seorang ahli. Namun, apa yang terkandung dalam buku sebenarnya disebut *data*, dan dengan membaca buku serta mengintegrasikan data ini ke dalam model dunia kita, kita mengubah data ini menjadi pengetahuan. + +> ✅ **Pengetahuan** adalah sesuatu yang terdapat dalam pikiran kita dan mewakili pemahaman kita tentang dunia. Ia diperoleh melalui proses **pembelajaran** aktif, yang mengintegrasikan potongan informasi yang kita terima ke dalam model dunia kita yang aktif. + +Seringkali, kita tidak mendefinisikan pengetahuan secara ketat, tetapi kita mengaitkannya dengan konsep-konsep terkait lainnya menggunakan [Piramida DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Ini mencakup konsep-konsep berikut: + +* **Data** adalah sesuatu yang diwakili dalam media fisik, seperti teks tertulis atau kata-kata yang diucapkan. Data ada secara independen dari manusia dan dapat dipindahkan antara orang. +* **Informasi** adalah bagaimana kita menginterpretasikan data dalam pikiran kita. Misalnya, ketika kita mendengar kata *komputer*, kita memiliki pemahaman tentang apa itu. +* **Pengetahuan** adalah informasi yang terintegrasi ke dalam model dunia kita. Misalnya, setelah kita belajar apa itu komputer, kita mulai memiliki ide tentang cara kerjanya, berapa biayanya, dan untuk apa ia dapat digunakan. Jaringan konsep yang saling terkait membentuk pengetahuan kita. +* **Kebijaksanaan** adalah satu tingkat lagi dari pemahaman kita tentang dunia, dan mewakili *meta-pengetahuan*, misalnya, beberapa gagasan tentang bagaimana dan kapan pengetahuan harus digunakan. + + + +*Gambar [dari Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), Oleh Longlivetheux - Karya sendiri, CC BY-SA 4.0* + +Dengan demikian, masalah **representasi pengetahuan** adalah menemukan cara yang efektif untuk merepresentasikan pengetahuan di dalam komputer dalam bentuk data, agar dapat digunakan secara otomatis. Ini dapat dilihat sebagai spektrum: + +![Spektrum representasi pengetahuan](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ms.png) + +> Gambar oleh [Dmitry Soshnikov](http://soshnikov.com) + +* Di sebelah kiri, ada jenis representasi pengetahuan yang sangat sederhana yang dapat digunakan secara efektif oleh komputer. Yang paling sederhana adalah algoritmik, ketika pengetahuan diwakili oleh program komputer. Namun, ini bukan cara terbaik untuk merepresentasikan pengetahuan, karena tidak fleksibel. Pengetahuan dalam pikiran kita sering kali non-algoritmik. +* Di sebelah kanan, ada representasi seperti teks alami. Ini adalah yang paling kuat, tetapi tidak dapat digunakan untuk penalaran otomatis. + +> ✅ Pikirkan sejenak tentang bagaimana Anda merepresentasikan pengetahuan dalam pikiran Anda dan mengubahnya menjadi catatan. Apakah ada format tertentu yang bekerja dengan baik untuk membantu dalam retensi? + +## Mengklasifikasikan Representasi Pengetahuan Komputer + +Kita dapat mengklasifikasikan berbagai metode representasi pengetahuan komputer ke dalam kategori berikut: + +* **Representasi jaringan** didasarkan pada fakta bahwa kita memiliki jaringan konsep yang saling terkait dalam pikiran kita. Kita dapat mencoba mereproduksi jaringan yang sama sebagai grafik di dalam komputer - yang disebut **jaringan semantik**. + +1. **Triplet Objek-Atribut-Nilai** atau **pasangan atribut-nilai**. Karena grafik dapat direpresentasikan dalam komputer sebagai daftar simpul dan tepi, kita dapat merepresentasikan jaringan semantik dengan daftar triplet, yang berisi objek, atribut, dan nilai. Misalnya, kita membangun triplet berikut tentang bahasa pemrograman: + +Objek | Atribut | Nilai +-------|---------|------ +Python | adalah | Bahasa-Tanpa-Tipe +Python | diciptakan-oleh | Guido van Rossum +Python | sintaks-blok | indentasi +Bahasa-Tanpa-Tipe | tidak memiliki | definisi tipe + +> ✅ Pikirkan bagaimana triplet dapat digunakan untuk merepresentasikan jenis pengetahuan lainnya. + +2. **Representasi hierarkis** menekankan fakta bahwa kita sering kali menciptakan hierarki objek dalam pikiran kita. Misalnya, kita tahu bahwa kenari adalah burung, dan semua burung memiliki sayap. Kita juga memiliki beberapa ide tentang warna yang biasanya dimiliki kenari, dan apa kecepatan terbangnya. + + - **Representasi bingkai** didasarkan pada merepresentasikan setiap objek atau kelas objek sebagai **bingkai** yang berisi **slot**. Slot memiliki nilai default yang mungkin, pembatasan nilai, atau prosedur yang disimpan yang dapat dipanggil untuk mendapatkan nilai dari slot. Semua bingkai membentuk hierarki yang mirip dengan hierarki objek dalam bahasa pemrograman berorientasi objek. + - **Skenario** adalah jenis bingkai khusus yang merepresentasikan situasi kompleks yang dapat berkembang seiring waktu. + +**Python** + +Slot | Nilai | Nilai default | Interval | +-----|-------|---------------|----------| +Nama | Python | | | +Adalah | Bahasa-Tanpa-Tipe | | | +Kasus Variabel | | CamelCase | | +Panjang Program | | | 5-5000 baris | +Sintaks Blok | Indentasi | | | + +3. **Representasi prosedural** didasarkan pada merepresentasikan pengetahuan melalui daftar tindakan yang dapat dieksekusi ketika kondisi tertentu terjadi. + - Aturan produksi adalah pernyataan if-then yang memungkinkan kita menarik kesimpulan. Misalnya, seorang dokter dapat memiliki aturan yang mengatakan bahwa **JIKA** seorang pasien memiliki demam tinggi **ATAU** tingkat C-reactive protein yang tinggi dalam tes darah **MAKA** ia memiliki peradangan. Setelah kita menemui salah satu kondisi, kita dapat menarik kesimpulan tentang peradangan, dan kemudian menggunakannya dalam penalaran lebih lanjut. + - Algoritma dapat dianggap sebagai bentuk lain dari representasi prosedural, meskipun hampir tidak pernah digunakan secara langsung dalam sistem berbasis pengetahuan. + +4. **Logika** awalnya diusulkan oleh Aristoteles sebagai cara untuk merepresentasikan pengetahuan manusia universal. + - Logika Predikat sebagai teori matematis terlalu kaya untuk dapat dihitung, oleh karena itu subsetnya biasanya digunakan, seperti klausul Horn yang digunakan dalam Prolog. + - Logika Deskriptif adalah keluarga sistem logis yang digunakan untuk merepresentasikan dan menalar tentang hierarki objek yang didistribusikan representasi pengetahuan seperti *web semantik*. + +## Sistem Pakar + +Salah satu keberhasilan awal dari AI simbolik adalah yang disebut **sistem pakar** - sistem komputer yang dirancang untuk bertindak sebagai seorang ahli dalam domain masalah tertentu. Mereka didasarkan pada **basis pengetahuan** yang diekstrak dari satu atau lebih ahli manusia, dan mereka memiliki **mesin inferensi** yang melakukan beberapa penalaran di atasnya. + +![Arsitektur Manusia](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ms.png) | ![Sistem Berbasis Pengetahuan](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ms.png) +---------------------------------------------|------------------------------------------------ +Struktur sederhana dari sistem saraf manusia | Arsitektur sistem berbasis pengetahuan + +Sistem pakar dibangun seperti sistem penalaran manusia, yang memiliki **memori jangka pendek** dan **memori jangka panjang**. Demikian pula, dalam sistem berbasis pengetahuan kita membedakan komponen berikut: + +* **Memori masalah**: berisi pengetahuan tentang masalah yang sedang diselesaikan saat ini, misalnya, suhu atau tekanan darah pasien, apakah ia memiliki peradangan atau tidak, dll. Pengetahuan ini juga disebut **pengetahuan statis**, karena ia berisi snapshot dari apa yang kita ketahui saat ini tentang masalah - yang disebut *status masalah*. +* **Basis pengetahuan**: merepresentasikan pengetahuan jangka panjang tentang domain masalah. Ini diekstrak secara manual dari para ahli manusia, dan tidak berubah dari konsultasi ke konsultasi. Karena memungkinkan kita untuk menavigasi dari satu status masalah ke status lainnya, ia juga disebut **pengetahuan dinamis**. +* **Mesin inferensi**: mengorkestrasi seluruh proses pencarian dalam ruang status masalah, mengajukan pertanyaan kepada pengguna jika perlu. Ia juga bertanggung jawab untuk menemukan aturan yang tepat yang akan diterapkan pada setiap status. + +Sebagai contoh, mari kita pertimbangkan sistem pakar berikut untuk menentukan hewan berdasarkan karakteristik fisiknya: + +![Pohon AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ms.png) + +> Gambar oleh [Dmitry Soshnikov](http://soshnikov.com) + +Diagram ini disebut **pohon AND-OR**, dan merupakan representasi grafis dari sekumpulan aturan produksi. Menggambar pohon ini berguna pada awal pengambilan pengetahuan dari ahli. Untuk merepresentasikan pengetahuan di dalam komputer, lebih nyaman menggunakan aturan: + +``` +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 +``` + +Anda dapat melihat bahwa setiap kondisi di sisi kiri aturan dan tindakan pada dasarnya adalah triplet objek-attribut-nilai (OAV). **Memori kerja** berisi kumpulan triplet OAV yang sesuai dengan masalah yang sedang diselesaikan saat ini. **Mesin aturan** mencari aturan yang kondisinya terpenuhi dan menerapkannya, menambahkan triplet lain ke dalam memori kerja. + +> ✅ Buat pohon AND-OR Anda sendiri tentang topik yang Anda suka! + +### Inferensi Maju vs. Inferensi Mundur + +Proses yang dijelaskan di atas disebut **inferensi maju**. Ini dimulai dengan beberapa data awal tentang masalah yang tersedia di memori kerja, dan kemudian menjalankan loop penalaran berikut: + +1. Jika atribut target ada di memori kerja - berhenti dan berikan hasilnya +2. Cari semua aturan yang kondisinya saat ini terpenuhi - peroleh **set konflik** aturan. +3. Lakukan **resolusi konflik** - pilih satu aturan yang akan dieksekusi pada langkah ini. Ada berbagai strategi resolusi konflik yang dapat digunakan: + - Pilih aturan pertama yang dapat diterapkan dalam basis pengetahuan + - Pilih aturan acak + - Pilih aturan yang *lebih spesifik*, yaitu yang memenuhi kondisi terbanyak di "sisi kiri" (LHS) +4. Terapkan aturan yang dipilih dan masukkan potongan pengetahuan baru ke dalam status masalah +5. Ulangi dari langkah 1. + +Namun, dalam beberapa kasus kita mungkin ingin memulai dengan pengetahuan kosong tentang masalah, dan mengajukan pertanyaan yang akan membantu kita mencapai kesimpulan. Misalnya, saat melakukan diagnosis medis, kita biasanya tidak melakukan semua analisis medis terlebih dahulu sebelum mulai mendiagnosis pasien. Kita lebih suka melakukan analisis ketika keputusan perlu diambil. + +Proses ini dapat dimodelkan menggunakan **inferensi mundur**. Ini didorong oleh **tujuan** - nilai atribut yang kita cari untuk ditemukan: + +1. Pilih semua aturan yang dapat memberi kita nilai dari tujuan (yaitu, dengan tujuan di RHS ("sisi kanan")) - satu set konflik +2. Jika tidak ada aturan untuk atribut ini, atau ada aturan yang mengatakan bahwa kita harus meminta nilai dari pengguna - minta nilai tersebut, jika tidak: +3. Gunakan strategi resolusi konflik untuk memilih satu aturan yang akan kita gunakan sebagai *hipotesis* - kita akan mencoba membuktikannya +4. Secara berulang ulangi proses untuk semua atribut di LHS aturan, mencoba membuktikannya sebagai tujuan +5. Jika pada titik mana pun proses gagal - gunakan aturan lain pada langkah 3. + +> ✅ Dalam situasi apa inferensi maju lebih sesuai? Bagaimana dengan inferensi mundur? + +### Mengimplementasikan Sistem Pakar + +Sistem pakar dapat diimplementasikan menggunakan berbagai alat: + +* Memprogramnya langsung dalam beberapa bahasa pemrograman tingkat tinggi. Ini bukan ide yang terbaik, karena keuntungan utama dari sistem berbasis pengetahuan adalah bahwa pengetahuan terpisah dari inferensi, dan mungkin seorang ahli domain masalah harus dapat menulis aturan tanpa memahami rincian proses inferensi. +* Menggunakan **shell sistem pakar**, yaitu sistem yang dirancang khusus untuk diisi dengan pengetahuan menggunakan beberapa bahasa representasi pengetahuan. + +## ✍️ Latihan: Inferensi Hewan + +Lihat [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) untuk contoh implementasi sistem pakar inferensi maju dan mundur. + +> **Catatan**: Contoh ini cukup sederhana, dan hanya memberikan ide tentang bagaimana tampilan sistem pakar. Setelah Anda mulai membuat sistem semacam itu, Anda hanya akan melihat beberapa perilaku *cerdas* darinya setelah mencapai jumlah aturan tertentu, sekitar 200+. Pada titik tertentu, aturan menjadi terlalu kompleks untuk diingat semuanya, dan pada titik ini Anda mungkin mulai bertanya-tanya mengapa sistem membuat keputusan tertentu. Namun, karakteristik penting dari sistem berbasis pengetahuan adalah bahwa Anda selalu dapat *menjelaskan* dengan tepat bagaimana keputusan yang diambil. + +## Ontologi dan Web Semantik + +Pada akhir abad ke-20, ada inisiatif untuk menggunakan representasi pengetahuan untuk menandai sumber daya Internet, sehingga akan mungkin untuk menemukan sumber daya yang sesuai dengan kueri yang sangat spesifik. Gerakan ini disebut **Web Semantik**, dan bergantung pada beberapa konsep: + +- Representasi pengetahuan khusus berdasarkan **[logika deskripsi](https://en.wikipedia.org/wiki/Description_logic)** (DL). Ini mirip dengan representasi pengetahuan bingkai, karena membangun hierarki objek dengan properti, tetapi memiliki semantik logis formal dan inferensi. Ada seluruh keluarga DL yang menyeimbangkan antara ekspresifitas dan kompleksitas algoritmik dari inferensi. +- Representasi pengetahuan terdistribusi, di mana semua konsep diwakili oleh pengidentifikasi URI global, sehingga memungkinkan untuk membuat hierarki pengetahuan yang menjangkau internet. +- Keluarga bahasa berbasis XML untuk deskripsi pengetahuan: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Konsep inti dalam Web Semantik adalah konsep **Ontologi**. Ini mengacu pada spesifikasi eksplisit dari domain masalah menggunakan beberapa representasi pengetahuan formal. Ontologi yang paling sederhana bisa saja hanya hierarki objek dalam domain masalah, tetapi ontologi yang lebih kompleks akan mencakup aturan yang dapat digunakan untuk inferensi. + +Dalam web semantik, semua representasi didasarkan pada triplet. Setiap objek dan setiap hubungan diidentifikasi secara unik oleh URI. Misalnya, jika kita ingin menyatakan fakta bahwa Kurikulum AI ini telah dikembangkan oleh Dmitry Soshnikov pada 1 Januari 2022 - berikut adalah triplet yang dapat kita gunakan: + + + +``` +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 +``` + +> ✅ Di sini `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` adalah beberapa URI yang dikenal dan diterima secara universal untuk mengekspresikan konsep *pencipta* dan *tanggal penciptaan*. + +Dalam kasus yang lebih kompleks, jika kita ingin mendefinisikan daftar pencipta, kita dapat menggunakan beberapa struktur data yang ditentukan dalam RDF. + + + +> Diagram di atas oleh [Dmitry Soshnikov](http://soshnikov.com) + +Kemajuan dalam membangun Web Semantik agak terhambat oleh keberhasilan mesin pencari dan teknik pemrosesan bahasa alami, yang memungkinkan ekstraksi data terstruktur dari teks. Namun, di beberapa bidang masih ada upaya signifikan untuk mempertahankan ontologi dan basis pengetahuan. Beberapa proyek yang patut dicatat: + +* [WikiData](https://wikidata.org/) adalah kumpulan basis pengetahuan yang dapat dibaca mesin yang terkait dengan Wikipedia. Sebagian besar data diambil dari *InfoBox* Wikipedia, potongan konten terstruktur di dalam halaman Wikipedia. Anda dapat [menanyakan](https://query.wikidata.org/) wikidata dalam SPARQL, bahasa kueri khusus untuk Web Semantik. Berikut adalah contoh kueri yang menampilkan warna mata yang paling populer di antara manusia: + +```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/) adalah upaya lain yang mirip dengan WikiData. + +> ✅ Jika Anda ingin bereksperimen dengan membangun ontologi Anda sendiri, atau membuka yang sudah ada, ada editor ontologi visual yang hebat bernama [Protégé](https://protege.stanford.edu/). Unduh, atau gunakan secara online. + + + +*Editor Web Protégé terbuka dengan ontologi Keluarga Romanov. Tangkapan layar oleh Dmitry Soshnikov* + +## ✍️ Latihan: Ontologi Keluarga + +Lihat [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) untuk contoh penggunaan teknik Web Semantik untuk menalar tentang hubungan keluarga. Kita akan mengambil pohon keluarga yang direpresentasikan dalam format GEDCOM umum dan ontologi hubungan keluarga dan membangun grafik dari semua hubungan keluarga untuk seperangkat individu yang diberikan. + +## Grafik Konsep Microsoft + +Dalam banyak kasus, ontologi dibuat dengan hati-hati secara manual. Namun, juga mungkin untuk **menambang** ontologi dari data tidak terstruktur, misalnya, dari teks bahasa alami. + +Salah satu upaya semacam itu dilakukan oleh Microsoft Research, dan menghasilkan [Grafik Konsep Microsoft](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Ini adalah koleksi besar entitas yang dikelompokkan bersama menggunakan hubungan pewarisan `is-a`. Ini memungkinkan menjawab pertanyaan seperti "Apa itu Microsoft?" - jawabannya adalah sesuatu seperti "sebuah perusahaan dengan probabilitas 0.87, dan sebuah merek dengan probabilitas 0.75". + +Grafik ini tersedia baik sebagai REST API, atau sebagai file teks besar yang dapat diunduh yang mencantumkan semua pasangan entitas. + +## + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa ibundanya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/2-Symbolic/assignment.md b/translations/ms/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..c3edd9d6 --- /dev/null +++ b/translations/ms/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# Membangunkan Ontologi + +Membangunkan pangkalan pengetahuan adalah tentang mengkategorikan model yang mewakili fakta tentang sesuatu topik. Pilihlah satu topik - seperti seorang individu, sebuah tempat, atau suatu benda - dan kemudian bangunkan model untuk topik tersebut. Gunakan beberapa teknik dan strategi pembinaan model yang diterangkan dalam pelajaran ini. Sebagai contoh, anda boleh mencipta ontologi bagi sebuah ruang tamu yang mempunyai perabot, lampu, dan sebagainya. Bagaimana ruang tamu berbeza daripada dapur? Dari bilik mandi? Bagaimana anda tahu bahawa itu adalah ruang tamu dan bukan ruang makan? Gunakan [Protégé](https://protege.stanford.edu/) untuk membangunkan ontologi anda. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi ralat atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/ms/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..b59826fb --- /dev/null +++ b/translations/ms/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,95 @@ +# Pengenalan kepada Rangkaian Neural: Perceptron + +## [Kuiz Pra-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Salah satu percubaan awal untuk melaksanakan sesuatu yang serupa dengan rangkaian neural moden dilakukan oleh Frank Rosenblatt dari Cornell Aeronautical Laboratory pada tahun 1957. Ia adalah pelaksanaan perkakasan yang dipanggil "Mark-1", yang direka untuk mengenali bentuk geometri primitif, seperti segitiga, persegi dan bulatan. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> Gambar [dari Wikipedia](https://en.wikipedia.org/wiki/Perceptron) + +Imej input diwakili oleh array photocell 20x20, jadi rangkaian neural mempunyai 400 input dan satu output binari. Rangkaian yang sederhana mengandungi satu neuron, yang juga dipanggil **unit logik ambang**. Berat rangkaian neural bertindak seperti potentiometer yang memerlukan pelarasan manual semasa fasa latihan. + +> ✅ Potentiometer adalah peranti yang membolehkan pengguna menyesuaikan rintangan suatu litar. + +> The New York Times menulis tentang perceptron pada waktu itu: *embrio komputer elektronik yang [Angkatan Laut] menjangkakan akan mampu berjalan, bercakap, melihat, menulis, membiak dirinya sendiri dan menyedari kewujudannya.* + +## Model Perceptron + +Anggap kita mempunyai N ciri dalam model kita, di mana vektor input akan menjadi vektor bersaiz N. Perceptron adalah model **klasifikasi binari**, iaitu ia boleh membezakan antara dua kelas data input. Kita akan menganggap bahawa untuk setiap vektor input x, output perceptron kita akan sama ada +1 atau -1, bergantung kepada kelas. Output akan dikira menggunakan formula: + +y(x) = f(wTx) + +di mana f adalah fungsi pengaktifan langkah + + + + +## Latihan Perceptron + +Untuk melatih perceptron, kita perlu mencari vektor berat w yang mengklasifikasikan kebanyakan nilai dengan betul, iaitu menghasilkan **ralat** yang paling kecil. Ralat ini E ditakrifkan oleh **kriteria perceptron** dengan cara berikut: + +E(w) = -∑wTxiti + +di mana: + +* jumlah diambil pada titik data latihan i yang menghasilkan klasifikasi yang salah +* xi adalah data input, dan ti adalah sama ada -1 atau +1 untuk contoh negatif dan positif masing-masing. + +Kriteria ini dianggap sebagai fungsi berat w, dan kita perlu meminimumkannya. Selalunya, kaedah yang dipanggil **penurunan gradien** digunakan, di mana kita bermula dengan beberapa berat awal w(0), dan kemudian pada setiap langkah mengemas kini berat mengikut formula: + +w(t+1) = w(t) - η∇E(w) + +Di sini η adalah yang dipanggil **kadar pembelajaran**, dan ∇E(w) menunjukkan **gradien** E. Setelah kita mengira gradien, kita berakhir dengan + +w(t+1) = w(t) + ∑ηxiti + +Algoritma dalam Python kelihatan seperti ini: + +```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 +``` + +## Kesimpulan + +Dalam pelajaran ini, anda telah mempelajari tentang perceptron, yang merupakan model klasifikasi binari, dan bagaimana untuk melatihnya dengan menggunakan vektor berat. + +## 🚀 Cabaran + +Jika anda ingin mencuba untuk membina perceptron anda sendiri, cubalah [makmal ini di Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) yang menggunakan [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Kuiz Pasca-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Ulasan & Pembelajaran Sendiri + +Untuk melihat bagaimana kita boleh menggunakan perceptron untuk menyelesaikan masalah mainan serta masalah kehidupan sebenar, dan untuk terus belajar - pergi ke nota [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Ini adalah [artikel menarik tentang perceptron](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) juga. + +## [Tugasan](lab/README.md) + +Dalam pelajaran ini, kami telah melaksanakan perceptron untuk tugas klasifikasi binari, dan kami telah menggunakannya untuk mengklasifikasikan antara dua digit tulisan tangan. Dalam makmal ini, anda diminta untuk menyelesaikan masalah klasifikasi digit sepenuhnya, iaitu menentukan digit mana yang paling mungkin sepadan dengan imej yang diberikan. + +* [Arahan](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat kritikal, terjemahan manusia yang profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/ms/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..84fbd23a --- /dev/null +++ b/translations/ms/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# Klasifikasi Pelbagai Kelas dengan Perceptron + +Tugasan Makmal dari [Kurikulum AI untuk Pemula](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Menggunakan kod yang telah kita bangunkan dalam pelajaran ini untuk klasifikasi binari digit tulisan tangan MNIST, buat klasifikasi pelbagai kelas yang dapat mengenali mana-mana digit. Kira ketepatan klasifikasi pada dataset latihan dan ujian, dan cetak matriks kekeliruan. + +## Petunjuk + +1. Untuk setiap digit, buat dataset untuk pengklasifikasi binari "digit ini vs. semua digit lain" +1. Latih 10 perceptron yang berbeza untuk klasifikasi binari (satu untuk setiap digit) +1. Definisikan fungsi yang akan mengklasifikasikan digit input + +> **Petunjuk**: Jika kita menggabungkan berat semua 10 perceptron ke dalam satu matriks, kita seharusnya dapat menerapkan semua 10 perceptron pada digit input dengan satu pendaraban matriks. Digit yang paling mungkin dapat ditemui hanya dengan menerapkan `argmax` operasi pada output. + +## Memulakan Notebook + +Mulakan makmal dengan membuka [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/ms/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..21d00536 --- /dev/null +++ b/translations/ms/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# Pengenalan kepada Rangkaian Neural. Perceptron Berbilang Lapisan + +Dalam bahagian sebelum ini, anda telah mempelajari tentang model rangkaian neural yang paling mudah - perceptron satu lapisan, sebuah model pengelasan dua kelas yang linear. + +Dalam bahagian ini, kita akan memperluas model ini ke dalam rangka kerja yang lebih fleksibel, membolehkan kita untuk: + +* melakukan **pengelasan berbilang kelas** di samping pengelasan dua kelas +* menyelesaikan **masalah regresi** di samping pengelasan +* memisahkan kelas yang tidak boleh dipisahkan secara linear + +Kita juga akan membangunkan rangka kerja modular kita sendiri dalam Python yang akan membolehkan kita membina pelbagai seni bina rangkaian neural. + +## [Kuis Pra-Lecture](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalisasi Pembelajaran Mesin + +Mari kita mulakan dengan memformalkan masalah Pembelajaran Mesin. Anggap kita mempunyai dataset latihan **X** dengan label **Y**, dan kita perlu membina model *f* yang akan membuat ramalan yang paling tepat. Kualiti ramalan diukur dengan **Fungsi Kerugian** ℒ. Fungsi kerugian berikut sering digunakan: + +* Untuk masalah regresi, apabila kita perlu meramalkan sebuah nombor, kita boleh menggunakan **kesilapan mutlak** ∑i|f(x(i))-y(i)|, atau **kesilapan kuadrat** ∑i(f(x(i))-y(i))2 +* Untuk pengelasan, kita menggunakan **kerugian 0-1** (yang pada dasarnya sama dengan **ketepatan** model), atau **kerugian logistik**. + +Untuk perceptron satu lapisan, fungsi *f* ditakrifkan sebagai fungsi linear *f(x)=wx+b* (di sini *w* adalah matriks berat, *x* adalah vektor ciri input, dan *b* adalah vektor bias). Untuk pelbagai seni bina rangkaian neural, fungsi ini boleh mengambil bentuk yang lebih kompleks. + +> Dalam kes pengelasan, sering kali diinginkan untuk mendapatkan kebarangkalian kelas yang bersesuaian sebagai output rangkaian. Untuk menukar nombor yang sewenang-wenangnya kepada kebarangkalian (contohnya, untuk menormalkan output), kita sering menggunakan fungsi **softmax** σ, dan fungsi *f* menjadi *f(x)=σ(wx+b)* + +Dalam definisi *f* di atas, *w* dan *b* dipanggil **parameter** θ=⟨*w,b*⟩. Memandangkan dataset ⟨**X**,**Y**⟩, kita boleh mengira kesilapan keseluruhan pada keseluruhan dataset sebagai fungsi parameter θ. + +> ✅ **Matlamat latihan rangkaian neural adalah untuk meminimumkan kesilapan dengan mengubah parameter θ** + +## Pengoptimuman Penurunan Gradyen + +Terdapat satu kaedah pengoptimuman fungsi yang terkenal dipanggil **penurunan gradyen**. Idea di sebalik ini adalah bahawa kita boleh mengira derivatif (dalam kes berbilang dimensi dipanggil **gradyen**) fungsi kerugian berkenaan dengan parameter, dan mengubah parameter sedemikian rupa sehingga kesilapan akan berkurang. Ini boleh diformalkan seperti berikut: + +* Inisialisasi parameter dengan beberapa nilai rawak w(0), b(0) +* Ulang langkah berikut banyak kali: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Semasa latihan, langkah pengoptimuman sepatutnya dikira dengan mempertimbangkan keseluruhan dataset (ingat bahawa kerugian dikira sebagai jumlah melalui semua sampel latihan). Walau bagaimanapun, dalam kehidupan sebenar, kita mengambil bahagian kecil dari dataset yang dipanggil **minibatches**, dan mengira gradyen berdasarkan subset data. Oleh kerana subset diambil secara rawak setiap kali, kaedah ini dipanggil **penurunan gradyen stokastik** (SGD). + +## Perceptron Berbilang Lapisan dan Backpropagation + +Rangkaian satu lapisan, seperti yang kita lihat di atas, mampu mengklasifikasikan kelas yang boleh dipisahkan secara linear. Untuk membina model yang lebih kaya, kita boleh menggabungkan beberapa lapisan rangkaian. Dari segi matematik, ini bermakna bahawa fungsi *f* akan mempunyai bentuk yang lebih kompleks, dan akan dikira dalam beberapa langkah: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Di sini, α adalah **fungsi pengaktifan tidak linear**, σ adalah fungsi softmax, dan parameter θ=<*w1,b1,w2,b2*. + +Algoritma penurunan gradyen akan kekal sama, tetapi lebih sukar untuk mengira gradyen. Dengan menggunakan peraturan pembezaan rantaian, kita boleh mengira derivatif sebagai: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ Peraturan pembezaan rantaian digunakan untuk mengira derivatif fungsi kerugian berkenaan dengan parameter. + +Perhatikan bahawa bahagian paling kiri dari semua ungkapan tersebut adalah sama, dan oleh itu kita boleh mengira derivatif secara berkesan bermula dari fungsi kerugian dan pergi "ke belakang" melalui graf pengiraan. Oleh itu, kaedah untuk melatih perceptron berbilang lapisan dipanggil **backpropagation**, atau 'backprop'. + +graf pengiraan + +> TODO: petikan gambar + +> ✅ Kita akan membincangkan backprop dengan lebih terperinci dalam contoh buku nota kita. + +## Kesimpulan + +Dalam pelajaran ini, kita telah membina perpustakaan rangkaian neural kita sendiri, dan kita telah menggunakannya untuk tugas pengelasan dua dimensi yang mudah. + +## 🚀 Cabaran + +Dalam buku nota yang menyertainya, anda akan melaksanakan rangka kerja anda sendiri untuk membina dan melatih perceptron berbilang lapisan. Anda akan dapat melihat dengan lebih terperinci bagaimana rangkaian neural moden beroperasi. + +Teruskan ke buku nota [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) dan kerjakan melalui itu. + +## [Kuis Pasca-Lecture](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Ulasan & Pembelajaran Sendiri + +Backpropagation adalah algoritma biasa yang digunakan dalam AI dan ML, berbaloi untuk dipelajari [dengan lebih terperinci](https://wikipedia.org/wiki/Backpropagation) + +## [Tugasan](lab/README.md) + +Dalam lab ini, anda diminta untuk menggunakan rangka kerja yang anda bina dalam pelajaran ini untuk menyelesaikan pengelasan digit tulisan tangan MNIST. + +* [Arahan](lab/README.md) +* [Buku Nota](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/ms/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..ce9da182 --- /dev/null +++ b/translations/ms/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# Klasifikasi MNIST dengan Kerangka Sendiri Kami + +Tugasan Makmal dari [Kurikulum AI untuk Pemula](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Selesaikan masalah klasifikasi digit tulisan tangan MNIST menggunakan perceptron lapisan 1, 2, dan 3. Gunakan kerangka rangkaian saraf yang telah kami kembangkan dalam pelajaran. + +## Membuka Notebook + +Mulakan makmal dengan membuka [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Soalan + +Sebagai hasil daripada makmal ini, cuba jawab soalan-soalan berikut: + +- Adakah fungsi pengaktifan antara lapisan mempengaruhi prestasi rangkaian? +- Adakah kita memerlukan rangkaian 2 atau 3 lapisan untuk tugas ini? +- Adakah anda mengalami sebarang masalah semasa melatih rangkaian? Terutamanya apabila bilangan lapisan meningkat. +- Bagaimana berat rangkaian berkelakuan semasa latihan? Anda boleh melukis nilai abs maksimum berat berbanding epoch untuk memahami hubungan tersebut. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia yang profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/ms/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..e64ae648 --- /dev/null +++ b/translations/ms/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# Rangkaian Neural Network + +Seperti yang telah kita pelajari, untuk dapat melatih rangkaian neural dengan efisien, kita perlu melakukan dua hal: + +* Beroperasi pada tensor, misalnya mengalikan, menjumlahkan, dan menghitung beberapa fungsi seperti sigmoid atau softmax +* Menghitung gradien dari semua ekspresi, untuk melakukan optimasi penurunan gradien + +## [Kuis Pra-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Sementara pustaka `numpy` dapat melakukan bagian pertama, kita memerlukan mekanisme untuk menghitung gradien. Dalam [rangkaian kami](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) yang telah kami kembangkan di bagian sebelumnya, kami harus memprogram semua fungsi turunan secara manual di dalam metode `backward`, yang melakukan backpropagation. Idealnya, sebuah rangkaian harus memberi kita kesempatan untuk menghitung gradien dari *ekspresi apapun* yang dapat kita definisikan. + +Hal penting lainnya adalah kemampuan untuk melakukan perhitungan di GPU, atau unit komputasi khusus lainnya, seperti [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Pelatihan rangkaian neural yang dalam memerlukan *banyak* perhitungan, dan kemampuan untuk memparalelkan perhitungan tersebut di GPU sangat penting. + +> ✅ Istilah 'memparalelkan' berarti mendistribusikan perhitungan di beberapa perangkat. + +Saat ini, dua rangkaian neural yang paling populer adalah: [TensorFlow](http://TensorFlow.org) dan [PyTorch](https://pytorch.org/). Keduanya menyediakan API tingkat rendah untuk beroperasi dengan tensor di CPU dan GPU. Di atas API tingkat rendah, ada juga API tingkat tinggi, yang disebut [Keras](https://keras.io/) dan [PyTorch Lightning](https://pytorchlightning.ai/) masing-masing. + +API Tingkat Rendah | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +-------------------|-------------------------------------|-------------------------------- +API Tingkat Tinggi | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**API tingkat rendah** di kedua rangkaian memungkinkan Anda untuk membangun yang disebut **grafik komputasi**. Grafik ini mendefinisikan bagaimana cara menghitung output (biasanya fungsi kerugian) dengan parameter input yang diberikan, dan dapat didorong untuk perhitungan di GPU, jika tersedia. Ada fungsi untuk membedakan grafik komputasi ini dan menghitung gradien, yang kemudian dapat digunakan untuk mengoptimalkan parameter model. + +**API tingkat tinggi** sebagian besar menganggap rangkaian neural sebagai **urutan lapisan**, dan membuat konstruksi sebagian besar rangkaian neural jauh lebih mudah. Melatih model biasanya memerlukan persiapan data dan kemudian memanggil fungsi `fit` untuk melakukan pekerjaan tersebut. + +API tingkat tinggi memungkinkan Anda untuk membangun rangkaian neural yang khas dengan sangat cepat tanpa khawatir tentang banyak detail. Pada saat yang sama, API tingkat rendah menawarkan kontrol yang jauh lebih besar atas proses pelatihan, sehingga sering digunakan dalam penelitian, ketika Anda berurusan dengan arsitektur rangkaian neural baru. + +Penting juga untuk memahami bahwa Anda dapat menggunakan kedua API bersama-sama, misalnya, Anda dapat mengembangkan arsitektur lapisan jaringan Anda sendiri menggunakan API tingkat rendah, dan kemudian menggunakannya di dalam jaringan yang lebih besar yang dibangun dan dilatih dengan API tingkat tinggi. Atau Anda dapat mendefinisikan jaringan menggunakan API tingkat tinggi sebagai urutan lapisan, dan kemudian menggunakan loop pelatihan tingkat rendah Anda sendiri untuk melakukan optimasi. Kedua API menggunakan konsep dasar yang sama, dan mereka dirancang untuk bekerja dengan baik bersama-sama. + +## Pembelajaran + +Dalam kursus ini, kami menawarkan sebagian besar konten baik untuk PyTorch maupun TensorFlow. Anda dapat memilih rangkaian yang Anda sukai dan hanya melalui buku catatan yang sesuai. Jika Anda tidak yakin rangkaian mana yang harus dipilih, baca beberapa diskusi di internet mengenai **PyTorch vs. TensorFlow**. Anda juga dapat melihat kedua rangkaian tersebut untuk mendapatkan pemahaman yang lebih baik. + +Jika memungkinkan, kami akan menggunakan API Tingkat Tinggi untuk kesederhanaan. Namun, kami percaya penting untuk memahami bagaimana rangkaian neural bekerja dari dasar, sehingga pada awalnya kami mulai dengan bekerja dengan API tingkat rendah dan tensor. Namun, jika Anda ingin cepat memulai dan tidak ingin menghabiskan banyak waktu untuk mempelajari detail ini, Anda dapat melewatkan bagian tersebut dan langsung masuk ke buku catatan API tingkat tinggi. + +## ✍️ Latihan: Rangkaian + +Lanjutkan pembelajaran Anda di buku catatan berikut: + +API Tingkat Rendah | [Notebook TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +-------------------|-------------------------------------|-------------------------------- +API Tingkat Tinggi | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Setelah menguasai rangkaian, mari kita ulas konsep overfitting. + +# Overfitting + +Overfitting adalah konsep yang sangat penting dalam pembelajaran mesin, dan sangat penting untuk memahaminya dengan benar! + +Pertimbangkan masalah berikut dari mendekati 5 titik (diwakili oleh `x` pada grafik di bawah): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ms.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ms.jpg) +-------------------------|-------------------------- +**Model linier, 2 parameter** | **Model non-linier, 7 parameter** +Kesalahan pelatihan = 5.3 | Kesalahan pelatihan = 0 +Kesalahan validasi = 5.1 | Kesalahan validasi = 20 + +* Di sebelah kiri, kita melihat pendekatan garis lurus yang baik. Karena jumlah parameter memadai, model menangkap ide di balik distribusi titik dengan benar. +* Di sebelah kanan, model terlalu kuat. Karena kita hanya memiliki 5 titik dan model memiliki 7 parameter, ia dapat disesuaikan sedemikian rupa sehingga melewati semua titik, membuat kesalahan pelatihan menjadi 0. Namun, ini mencegah model memahami pola yang benar di balik data, sehingga kesalahan validasi menjadi sangat tinggi. + +Sangat penting untuk menemukan keseimbangan yang tepat antara kekayaan model (jumlah parameter) dan jumlah sampel pelatihan. + +## Mengapa overfitting terjadi + + * Data pelatihan tidak cukup + * Model terlalu kuat + * Terlalu banyak noise dalam data input + +## Bagaimana mendeteksi overfitting + +Seperti yang dapat Anda lihat dari grafik di atas, overfitting dapat dideteksi dengan kesalahan pelatihan yang sangat rendah, dan kesalahan validasi yang tinggi. Biasanya selama pelatihan kita akan melihat baik kesalahan pelatihan maupun validasi mulai menurun, dan kemudian pada suatu titik kesalahan validasi mungkin berhenti menurun dan mulai meningkat. Ini akan menjadi tanda overfitting, dan indikator bahwa kita mungkin harus berhenti melatih pada titik ini (atau setidaknya membuat snapshot model). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ms.png) + +## Bagaimana mencegah overfitting + +Jika Anda dapat melihat bahwa overfitting terjadi, Anda dapat melakukan salah satu dari yang berikut: + + * Meningkatkan jumlah data pelatihan + * Mengurangi kompleksitas model + * Menggunakan beberapa [teknik regulasi](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), seperti [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), yang akan kita bahas kemudian. + +## Overfitting dan Tradeoff Bias-Variance + +Overfitting sebenarnya adalah kasus dari masalah yang lebih umum dalam statistik yang disebut [Tradeoff Bias-Variance](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Jika kita mempertimbangkan kemungkinan sumber kesalahan dalam model kita, kita dapat melihat dua jenis kesalahan: + +* **Kesalahan bias** disebabkan oleh algoritma kita yang tidak dapat menangkap hubungan antara data pelatihan dengan benar. Ini dapat disebabkan oleh fakta bahwa model kita tidak cukup kuat (**underfitting**). +* **Kesalahan varians**, yang disebabkan oleh model yang memperkirakan noise dalam data input daripada hubungan yang berarti (**overfitting**). + +Selama pelatihan, kesalahan bias menurun (saat model kita belajar untuk mendekati data), dan kesalahan varians meningkat. Penting untuk menghentikan pelatihan - baik secara manual (ketika kita mendeteksi overfitting) atau otomatis (dengan memperkenalkan regulasi) - untuk mencegah overfitting. + +## Kesimpulan + +Dalam pelajaran ini, Anda belajar tentang perbedaan antara berbagai API untuk dua rangkaian AI paling populer, TensorFlow dan PyTorch. Selain itu, Anda juga belajar tentang topik yang sangat penting, overfitting. + +## 🚀 Tantangan + +Di buku catatan yang menyertainya, Anda akan menemukan 'tugas' di bagian bawah; kerjakan buku catatan tersebut dan selesaikan tugasnya. + +## [Kuis Pasca-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Tinjauan & Studi Mandiri + +Lakukan penelitian tentang topik berikut: + +- TensorFlow +- PyTorch +- Overfitting + +Tanyakan pada diri Anda pertanyaan berikut: + +- Apa perbedaan antara TensorFlow dan PyTorch? +- Apa perbedaan antara overfitting dan underfitting? + +## [Tugas](lab/README.md) + +Dalam lab ini, Anda diminta untuk menyelesaikan dua masalah klasifikasi menggunakan jaringan terhubung penuh satu lapisan dan multi-lapisan menggunakan PyTorch atau TensorFlow. + +* [Instruksi](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/ms/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..af672fe4 --- /dev/null +++ b/translations/ms/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# Klasifikasi dengan PyTorch/TensorFlow + +Tugasan Makmal dari [Kurikulum AI untuk Pemula](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Selesaikan dua masalah klasifikasi menggunakan rangkaian sepenuhnya berhubung tunggal dan berlapis banyak menggunakan PyTorch atau TensorFlow: + +1. **Masalah klasifikasi Iris** - contoh masalah dengan data input tabular, yang boleh ditangani oleh pembelajaran mesin klasik. Matlamat anda adalah untuk mengklasifikasikan iris ke dalam 3 kelas, berdasarkan 4 parameter numerik. +1. **MNIST** masalah klasifikasi digit tulisan tangan yang telah kita lihat sebelum ini. + +Cuba pelbagai seni bina rangkaian untuk mencapai ketepatan terbaik yang anda boleh dapatkan. + +## Memulakan Notebook + +Mulakan makmal dengan membuka [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/3-NeuralNetworks/README.md b/translations/ms/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..cdcc4af3 --- /dev/null +++ b/translations/ms/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# Pengenalan kepada Rangkaian Neural + +![Ringkasan kandungan Pengenalan Rangkaian Neural dalam doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ms.png) + +Seperti yang kita bincangkan dalam pengenalan, salah satu cara untuk mencapai kecerdasan adalah dengan melatih **model komputer** atau **otak buatan**. Sejak pertengahan abad ke-20, para penyelidik telah mencuba pelbagai model matematik, sehingga dalam beberapa tahun kebelakangan ini, arah ini terbukti sangat berjaya. Model matematik otak ini dikenali sebagai **rangkaian neural**. + +> Kadang-kadang rangkaian neural dipanggil *Rangkaian Neural Buatan*, ANNs, untuk menunjukkan bahawa kita bercakap tentang model, bukan rangkaian neuron yang sebenar. + +## Pembelajaran Mesin + +Rangkaian Neural adalah sebahagian daripada disiplin yang lebih besar yang dipanggil **Pembelajaran Mesin**, yang bertujuan untuk menggunakan data untuk melatih model komputer yang mampu menyelesaikan masalah. Pembelajaran Mesin merupakan sebahagian besar daripada Kecerdasan Buatan, namun, kami tidak merangkumi ML klasik dalam kurikulum ini. + +> Kunjungi kurikulum **[Pembelajaran Mesin untuk Pemula](http://github.com/microsoft/ml-for-beginners)** kami yang berasingan untuk mengetahui lebih lanjut tentang Pembelajaran Mesin klasik. + +Dalam Pembelajaran Mesin, kita menganggap bahawa kita mempunyai set data contoh **X**, dan nilai output yang sepadan **Y**. Contoh sering kali adalah vektor N-dimensi yang terdiri daripada **ciri**, dan output dipanggil **label**. + +Kami akan mempertimbangkan dua masalah pembelajaran mesin yang paling biasa: + +* **Klasifikasi**, di mana kita perlu mengklasifikasikan objek input ke dalam dua atau lebih kelas. +* **Regresi**, di mana kita perlu meramalkan nombor numerik untuk setiap sampel input. + +> Apabila mewakili input dan output sebagai tensor, set data input adalah matriks bersaiz M×N, di mana M adalah bilangan sampel dan N adalah bilangan ciri. Label output Y adalah vektor bersaiz M. + +Dalam kurikulum ini, kami hanya akan memberi tumpuan kepada model rangkaian neural. + +## Model Neuron + +Daripada biologi, kita tahu bahawa otak kita terdiri daripada sel neural, masing-masing mempunyai beberapa "input" (akson), dan satu output (dendrit). Akson dan dendrit boleh menghantar isyarat elektrik, dan sambungan antara akson dan dendrit boleh menunjukkan pelbagai tahap konduktiviti (dikuasai oleh neuromediator). + +![Model Neuron](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ms.jpg) | ![Model Neuron](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ms.png) +----|---- +Neuron Sebenar *([Imej](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) dari Wikipedia)* | Neuron Buatan *(Imej oleh Penulis)* + +Oleh itu, model matematik paling mudah bagi neuron mengandungi beberapa input X1, ..., XN dan satu output Y, serta satu siri berat W1, ..., WN. Output dikira sebagai: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +di mana f adalah beberapa **fungsi pengaktifan** bukan linear. + +> Model awal neuron telah diterangkan dalam kertas klasik [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) oleh Warren McCullock dan Walter Pitts pada tahun 1943. Donald Hebb dalam bukunya "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" mencadangkan cara rangkaian tersebut boleh dilatih. + +## Dalam Bahagian Ini + +Dalam bahagian ini, kita akan belajar tentang: +* [Perceptron](03-Perceptron/README.md), salah satu model rangkaian neural terawal untuk klasifikasi dua kelas +* [Rangkaian berlapis](04-OwnFramework/README.md) dengan notebook berpasangan [cara membina rangkaian kami sendiri](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Rangkaian Neural Frameworks](05-Frameworks/README.md), dengan notebook ini: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) dan [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Overfitting](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia yang profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/ms/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..d069ce72 --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# Pengenalan kepada Visi Komputer + +[Visi Komputer](https://wikipedia.org/wiki/Computer_vision) adalah disiplin yang bertujuan untuk membolehkan komputer memperoleh pemahaman yang mendalam tentang imej digital. Ini adalah definisi yang agak luas, kerana *pemahaman* boleh bermaksud banyak perkara yang berbeza, termasuk mencari objek dalam gambar (**pengesanan objek**), memahami apa yang berlaku (**pengesanan peristiwa**), menggambarkan gambar dalam teks, atau membina semula satu adegan dalam 3D. Terdapat juga tugas khusus yang berkaitan dengan imej manusia: penilaian umur dan emosi, pengesanan dan pengenalan wajah, serta penilaian pose 3D, untuk menyebut beberapa. + +## [Kuiz pra-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Salah satu tugas paling mudah dalam visi komputer adalah **klasifikasi imej**. + +Visi komputer sering dianggap sebagai cabang AI. Pada masa kini, kebanyakan tugas visi komputer diselesaikan menggunakan rangkaian neural. Kita akan belajar lebih lanjut tentang jenis khusus rangkaian neural yang digunakan untuk visi komputer, [rangkaian neural konvolusional](../07-ConvNets/README.md), sepanjang bahagian ini. + +Namun, sebelum anda menghantar imej ke rangkaian neural, dalam banyak kes adalah masuk akal untuk menggunakan beberapa teknik algoritma untuk meningkatkan imej. + +Terdapat beberapa pustaka Python yang tersedia untuk pemprosesan imej: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** boleh digunakan untuk membaca/menulis pelbagai format imej. Ia juga menyokong ffmpeg, alat berguna untuk menukar bingkai video kepada imej. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (juga dikenali sebagai PIL) adalah sedikit lebih berkuasa, dan juga menyokong beberapa manipulasi imej seperti morfing, penyesuaian palet, dan banyak lagi. +* **[OpenCV](https://opencv.org/)** adalah pustaka pemprosesan imej yang kuat ditulis dalam C++, yang telah menjadi standard *de facto* untuk pemprosesan imej. Ia mempunyai antara muka Python yang mudah digunakan. +* **[dlib](http://dlib.net/)** adalah pustaka C++ yang melaksanakan banyak algoritma pembelajaran mesin, termasuk beberapa algoritma Visi Komputer. Ia juga mempunyai antara muka Python, dan boleh digunakan untuk tugas yang mencabar seperti pengesanan wajah dan tanda landmark wajah. + +## OpenCV + +[OpenCV](https://opencv.org/) dianggap sebagai standard *de facto* untuk pemprosesan imej. Ia mengandungi banyak algoritma berguna, dilaksanakan dalam C++. Anda juga boleh memanggil OpenCV dari Python. + +Tempat yang baik untuk belajar OpenCV adalah [kursus Learn OpenCV ini](https://learnopencv.com/getting-started-with-opencv/). Dalam kurikulum kami, matlamat kami bukan untuk belajar OpenCV, tetapi untuk menunjukkan kepada anda beberapa contoh di mana ia boleh digunakan, dan bagaimana. + +### Memuatkan Imej + +Imej dalam Python boleh diwakili dengan mudah oleh array NumPy. Sebagai contoh, imej grayscale dengan saiz 320x200 piksel akan disimpan dalam array 200x320, dan imej berwarna dengan dimensi yang sama akan mempunyai bentuk 200x320x3 (untuk 3 saluran warna). Untuk memuatkan imej, anda boleh menggunakan kod berikut: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Secara tradisional, OpenCV menggunakan pengkodan BGR (Biru-Hijau-Merah) untuk imej berwarna, sementara alat Python yang lain menggunakan RGB (Merah-Hijau-Biru) yang lebih tradisional. Agar imej kelihatan betul, anda perlu menukarnya ke ruang warna RGB, sama ada dengan menukar dimensi dalam array NumPy, atau dengan memanggil fungsi OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Fungsi `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. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **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` yang sama, yang sering lebih baik daripada menyesuaikan kecerahan atau kontras. +* Menerapkan pelbagai [transformasi](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) pada imej: + - **[Transformasi Afine](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** boleh berguna jika anda perlu menggabungkan putaran, pengubahsuaian saiz dan penggayaan pada imej dan anda tahu lokasi sumber dan destinasi bagi tiga titik dalam imej. Transformasi afine mengekalkan garis selari. + - **[Transformasi Perspektif](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** boleh berguna apabila anda tahu posisi sumber dan destinasi bagi 4 titik dalam imej. Sebagai contoh, jika anda mengambil gambar dokumen segi empat tepat melalui kamera telefon pintar dari sudut tertentu, dan anda ingin menghasilkan imej segi empat tepat dokumen itu sendiri. +* Memahami pergerakan dalam imej dengan menggunakan **[aliran optik](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Contoh penggunaan Visi Komputer + +Dalam [Notebook OpenCV kami](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), kami memberikan beberapa contoh di mana visi komputer boleh digunakan untuk melaksanakan tugas tertentu: + +* **Pra-pemprosesan gambar buku Braille**. Kami memberi tumpuan kepada bagaimana kami boleh menggunakan penetapan ambang, pengesanan ciri, transformasi perspektif dan manipulasi NumPy untuk memisahkan simbol Braille individu untuk pengelasan selanjutnya oleh rangkaian neural. + +![Imej Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ms.jpeg) | ![Imej Braille yang telah dipra-pemproses](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ms.png) | ![Simbol Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ms.png) +----|-----|----- + +> Imej dari [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Mengesan pergerakan dalam video menggunakan perbezaan bingkai**. Jika kamera tetap, maka bingkai dari suapan kamera seharusnya sangat serupa antara satu sama lain. Memandangkan bingkai diwakili sebagai array, dengan hanya menolak array tersebut untuk dua bingkai berturut-turut, kita akan mendapatkan perbezaan piksel, yang seharusnya rendah untuk bingkai statik, dan menjadi lebih tinggi apabila terdapat pergerakan yang ketara dalam imej. + +![Imej bingkai video dan perbezaan bingkai](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ms.png) + +> Imej dari [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Mengesan pergerakan menggunakan Aliran Optik**. [Aliran optik](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) membolehkan kita memahami bagaimana piksel individu pada bingkai video bergerak. Terdapat dua jenis aliran optik: + + - **Aliran Optik Padat** mengira medan vektor yang menunjukkan untuk setiap piksel di mana ia bergerak + - **Aliran Optik Jarang** berdasarkan pengambilan beberapa ciri khas dalam imej (contohnya, tepi), dan membina trajektori mereka dari bingkai ke bingkai. + +![Imej Aliran Optik](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ms.png) + +> Imej dari [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Notebook Contoh: OpenCV [cuba OpenCV dalam Tindakan](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Mari kita lakukan beberapa eksperimen dengan OpenCV dengan meneroka [Notebook OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## Kesimpulan + +Kadang-kadang, tugas yang agak kompleks seperti pengesanan pergerakan atau pengesanan hujung jari boleh diselesaikan hanya dengan visi komputer. Oleh itu, adalah sangat berguna untuk mengetahui teknik asas visi komputer, dan apa yang boleh dilakukan oleh pustaka seperti OpenCV. + +## 🚀 Cabaran + +Tonton [video ini](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) dari rancangan AI untuk belajar tentang projek Cortic Tigers dan bagaimana mereka membina penyelesaian berasaskan blok untuk mendemokrasikan tugas visi komputer melalui robot. Lakukan sedikit penyelidikan tentang projek lain seperti ini yang membantu memudahkan pembelajaran baru dalam bidang ini. + +## [Kuiz pasca-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Ulasan & Pembelajaran Sendiri + +Baca lebih lanjut mengenai aliran optik [dalam tutorial hebat ini](https://learnopencv.com/optical-flow-in-opencv/). + +## [Tugasan](lab/README.md) + +Dalam lab ini, anda akan merakam video dengan gerakan sederhana, dan matlamat anda adalah untuk mengekstrak pergerakan atas/bawah/kiri/kanan menggunakan aliran optik. + +Kerangka Pergerakan Telapak Tangan + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk memastikan ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/ms/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..dc083869 --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,23 @@ +# Mengesan Pergerakan menggunakan Aliran Optik + +Tugasan Makmal dari [Kurikulum AI untuk Pemula](https://aka.ms/ai-beginners). + +## Tugas + +Pertimbangkan [video ini](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), di mana telapak tangan seseorang bergerak ke kiri/kanan/atas/bawah di latar belakang yang stabil. +Anda telah dilatih menggunakan data sehingga Oktober 2023. + +**Matlamat anda** adalah untuk menggunakan Aliran Optik bagi menentukan, bahagian mana dalam video yang mengandungi pergerakan atas/bawah/kiri/kanan. + +**Matlamat tambahan** adalah untuk benar-benar mengesan pergerakan telapak tangan/jari menggunakan tona kulit, seperti yang diterangkan [dalam pos blog ini](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) atau [di sini](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Notepad Permulaan + +Mulakan lab dengan membuka [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Pengajaran + +Kadang-kadang, tugas yang agak kompleks seperti pengesanan pergerakan atau pengesanan hujung jari boleh diselesaikan semata-mata melalui penglihatan komputer. Oleh itu, adalah sangat berguna untuk mengetahui apa yang boleh dilakukan oleh perpustakaan seperti OpenCV. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa ibunda harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/ms/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..8f1c394a --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# Arsitektur CNN Yang Dikenal + +### VGG-16 + +VGG-16 adalah jaringan yang mencapai akurasi 92,7% dalam klasifikasi top-5 ImageNet pada tahun 2014. Jaringan ini memiliki struktur lapisan sebagai berikut: + +![Lapisan ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ms.jpg) + +Seperti yang dapat Anda lihat, VGG mengikuti arsitektur piramida tradisional, yang merupakan urutan lapisan konvolusi-pooling. + +![Piramida ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ms.jpg) + +> Gambar dari [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 adalah keluarga model yang diusulkan oleh Microsoft Research pada tahun 2015. Ide utama dari ResNet adalah menggunakan **blok residual**: + + + +> Gambar dari [makalah ini](https://arxiv.org/pdf/1512.03385.pdf) + +Alasan menggunakan identitas pass-through adalah untuk membuat lapisan kami memprediksi **perbedaan** antara hasil lapisan sebelumnya dan keluaran blok residual - sehingga dinamakan *residual*. Blok-blok ini jauh lebih mudah dilatih, dan seseorang dapat membangun jaringan dengan beberapa ratus blok tersebut (varian yang paling umum adalah ResNet-52, ResNet-101, dan ResNet-152). + +Anda juga dapat memikirkan jaringan ini sebagai jaringan yang dapat menyesuaikan kompleksitasnya dengan dataset. Awalnya, ketika Anda mulai melatih jaringan, nilai bobot kecil, dan sebagian besar sinyal melewati lapisan identitas pass-through. Seiring berjalannya pelatihan dan bobot menjadi lebih besar, signifikansi parameter jaringan meningkat, dan jaringan menyesuaikan untuk memenuhi kekuatan ekspresif yang diperlukan untuk mengklasifikasikan gambar pelatihan dengan benar. + +### Google Inception + +Arsitektur Google Inception membawa ide ini selangkah lebih jauh, dan membangun setiap lapisan jaringan sebagai kombinasi dari beberapa jalur yang berbeda: + + + +> Gambar dari [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Di sini, kita perlu menekankan peran konvolusi 1x1, karena pada awalnya mereka tidak masuk akal. Mengapa kita perlu menjalankan filter 1x1 melalui gambar? Namun, Anda perlu ingat bahwa filter konvolusi juga bekerja dengan beberapa saluran kedalaman (aslinya - warna RGB, di lapisan berikutnya - saluran untuk filter yang berbeda), dan konvolusi 1x1 digunakan untuk mencampur saluran input tersebut menggunakan bobot yang dapat dilatih. Ini juga dapat dilihat sebagai downsampling (pooling) di atas dimensi saluran. + +Berikut adalah [posting blog yang bagus](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) tentang subjek ini, dan [makalah asli](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet adalah keluarga model dengan ukuran yang lebih kecil, cocok untuk perangkat mobile. Gunakan mereka jika Anda kekurangan sumber daya, dan dapat mengorbankan sedikit akurasi. Ide utama di balik mereka adalah **konvolusi terpisah berdasarkan kedalaman**, yang memungkinkan mewakili filter konvolusi dengan komposisi konvolusi spasial dan konvolusi 1x1 di atas saluran kedalaman. Ini secara signifikan mengurangi jumlah parameter, membuat jaringan lebih kecil, dan juga lebih mudah dilatih dengan data yang lebih sedikit. + +Berikut adalah [posting blog yang bagus tentang MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Kesimpulan + +Dalam unit ini, Anda telah mempelajari konsep utama di balik jaringan saraf visi komputer - jaringan konvolusi. Arsitektur nyata yang mendukung klasifikasi gambar, deteksi objek, dan bahkan jaringan generasi gambar semuanya didasarkan pada CNN, hanya dengan lebih banyak lapisan dan beberapa trik pelatihan tambahan. + +## 🚀 Tantangan + +Dalam buku catatan yang menyertai, ada catatan di bagian bawah tentang bagaimana mendapatkan akurasi yang lebih tinggi. Lakukan beberapa eksperimen untuk melihat apakah Anda dapat mencapai akurasi yang lebih tinggi. + +## [Kuis pasca kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Tinjauan & Studi Mandiri + +Meskipun CNN paling sering digunakan untuk tugas Visi Komputer, mereka umumnya baik untuk mengekstrak pola berukuran tetap. Misalnya, jika kita berurusan dengan suara, kita juga mungkin ingin menggunakan CNN untuk mencari pola tertentu dalam sinyal audio - dalam hal ini filter akan 1-dimensi (dan CNN ini akan disebut 1D-CNN). Juga, terkadang 3D-CNN digunakan untuk mengekstrak fitur di ruang multi-dimensi, seperti peristiwa tertentu yang terjadi di video - CNN dapat menangkap pola tertentu dari perubahan fitur seiring waktu. Lakukan beberapa tinjauan dan studi mandiri tentang tugas lain yang dapat dilakukan dengan CNN. + +## [Tugas](lab/README.md) + +Dalam lab ini, Anda ditugaskan untuk mengklasifikasikan berbagai ras kucing dan anjing. Gambar-gambar ini lebih kompleks daripada dataset MNIST dan memiliki dimensi yang lebih tinggi, dan ada lebih dari 10 kelas. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berkuasa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/ms/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..ff6509fc --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,58 @@ +# Rangkaian Neural Konvolusional + +Kita telah melihat sebelumnya bahawa rangkaian neural cukup baik dalam menangani gambar, dan bahkan perceptron satu lapisan mampu mengenali digit tulisan tangan dari dataset MNIST dengan ketepatan yang wajar. Namun, dataset MNIST sangat istimewa, dan semua digit berada di tengah gambar, yang menjadikan tugas ini lebih mudah. + +## [Kuiz Pra-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +Dalam kehidupan sebenar, kita ingin dapat mengenali objek dalam gambar tanpa mengira lokasi tepat mereka dalam gambar. Penglihatan komputer berbeza dari pengelasan umum, kerana apabila kita cuba mencari objek tertentu dalam gambar, kita sedang mengimbas gambar mencari beberapa **corak** tertentu dan kombinasi mereka. Sebagai contoh, apabila mencari kucing, kita mungkin terlebih dahulu mencari garis mendatar, yang dapat membentuk misai, dan kemudian kombinasi tertentu dari misai dapat memberitahu kita bahawa ini sebenarnya adalah gambar kucing. Posisi relatif dan kehadiran corak tertentu adalah penting, dan bukan posisi tepat mereka dalam gambar. + +Untuk mengekstrak corak, kita akan menggunakan konsep **penapis konvolusional**. Seperti yang anda tahu, gambar diwakili oleh matriks 2D, atau tensor 3D dengan kedalaman warna. Mengaplikasikan penapis bermakna kita mengambil matriks **kernel penapis** yang relatif kecil, dan untuk setiap piksel dalam gambar asal kita mengira purata tertimbang dengan titik-titik jiran. Kita boleh melihat ini seperti sebuah tingkap kecil yang meluncur ke seluruh gambar, dan merata-rata semua piksel mengikut berat dalam matriks kernel penapis. + +![Penapis Tepi Menegak](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ms.png) | ![Penapis Tepi Mendatar](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ms.png) +----|---- + +> Imej oleh Dmitry Soshnikov + +Sebagai contoh, jika kita mengaplikasikan penapis tepi menegak 3x3 dan penapis tepi mendatar kepada digit MNIST, kita dapat mendapatkan sorotan (contohnya, nilai tinggi) di mana terdapat tepi menegak dan mendatar dalam gambar asal kita. Dengan itu, kedua-dua penapis ini boleh digunakan untuk "mencari" tepi. Begitu juga, kita boleh merancang penapis yang berbeza untuk mencari corak rendah yang lain: + +> Imej dari [Bank Penapis Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Namun, walaupun kita boleh merancang penapis untuk mengekstrak beberapa corak secara manual, kita juga boleh merancang rangkaian dengan cara yang membolehkannya belajar corak secara automatik. Ini adalah salah satu idea utama di sebalik CNN. + +## Idea Utama di Sebalik CNN + +Cara CNN berfungsi adalah berdasarkan idea penting berikut: + +* Penapis konvolusional boleh mengekstrak corak +* Kita boleh merancang rangkaian dengan cara yang penapis dilatih secara automatik +* Kita boleh menggunakan pendekatan yang sama untuk mencari corak dalam ciri tahap tinggi, bukan hanya dalam gambar asal. Oleh itu, pengekstrakan ciri CNN berfungsi pada hierarki ciri, bermula dari kombinasi piksel tahap rendah, hingga kombinasi bahagian gambar yang lebih tinggi. + +![Pengekstrakan Ciri Hierarki](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ms.png) + +> Imej dari [kertas oleh Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), berdasarkan [penyelidikan mereka](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Latihan: Rangkaian Neural Konvolusional + +Mari kita terus meneroka bagaimana rangkaian neural konvolusional berfungsi, dan bagaimana kita dapat mencapai penapis yang boleh dilatih, dengan mengerjakan buku nota yang berkaitan: + +* [Rangkaian Neural Konvolusional - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Rangkaian Neural Konvolusional - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Senibina Piramid + +Kebanyakan CNN yang digunakan untuk pemprosesan imej mengikuti senibina piramid yang dipanggil. Lapisan konvolusional pertama yang diterapkan pada gambar asal biasanya mempunyai bilangan penapis yang agak rendah (8-16), yang sepadan dengan kombinasi piksel yang berbeza, seperti garis mendatar/menegak strok. Di peringkat seterusnya, kita mengurangkan dimensi spatial rangkaian, dan meningkatkan bilangan penapis, yang sepadan dengan lebih banyak kombinasi ciri sederhana yang mungkin. Dengan setiap lapisan, apabila kita bergerak ke arah pengklasifikasi akhir, dimensi spatial gambar berkurang, dan bilangan penapis meningkat. + +Sebagai contoh, mari kita lihat senibina VGG-16, sebuah rangkaian yang mencapai ketepatan 92.7% dalam pengelasan top-5 ImageNet pada tahun 2014: + +![Lapisan ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ms.jpg) + +![Piramid ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ms.jpg) + +> Imej dari [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) + +## Senibina CNN Terkenal + +[Teruskan pembelajaran anda mengenai senibina CNN yang paling terkenal](CNN_Architectures.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia yang profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/ms/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..4058d5fe --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# Klasifikasi Muka Haiwan Peliharaan + +Tugasan Makmal dari [Kurikulum AI untuk Pemula](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Bayangkan anda perlu membangunkan aplikasi untuk pusat jagaan haiwan peliharaan untuk mengatalogkan semua haiwan peliharaan. Salah satu ciri hebat aplikasi seperti itu adalah penemuan automatik baka dari gambar. Ini boleh dilakukan dengan berjaya menggunakan rangkaian neural. + +Anda perlu melatih rangkaian neural konvolusi untuk mengklasifikasikan pelbagai baka kucing dan anjing menggunakan dataset **Muka Haiwan Peliharaan**. + +## Dataset + +Kami akan menggunakan dataset **Muka Haiwan Peliharaan**, yang diperoleh dari dataset haiwan peliharaan [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Ia mengandungi 35 baka berbeza bagi anjing dan kucing. + +![Dataset yang akan kami uruskan](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ms.png) + +Untuk memuat turun dataset, gunakan petikan kod ini: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Memulakan Notebook + +Mulakan makmal dengan membuka [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Pengajaran + +Anda telah menyelesaikan masalah yang agak kompleks dalam pengklasifikasian imej dari awal! Terdapat banyak kelas, dan anda masih mampu mencapai ketepatan yang munasabah! Ia juga masuk akal untuk mengukur ketepatan top-k, kerana mudah untuk mengelirukan beberapa kelas yang tidak jelas berbeza walaupun kepada manusia. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/ms/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..97294890 --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,80 @@ +# Rangkaian Pra-latih dan Pembelajaran Pemindahan + +Melatih CNN boleh memakan banyak masa, dan banyak data diperlukan untuk tugas tersebut. Namun, banyak masa dihabiskan untuk mempelajari penapis rendah yang terbaik yang boleh digunakan oleh rangkaian untuk mengekstrak corak dari imej. Satu soalan yang timbul - bolehkah kita menggunakan rangkaian neural yang dilatih pada satu set data dan menyesuaikannya untuk mengklasifikasikan imej yang berbeza tanpa memerlukan proses latihan penuh? + +## [Kuis Pra-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Pendekatan ini dipanggil **pembelajaran pemindahan**, kerana kita memindahkan beberapa pengetahuan dari satu model rangkaian neural ke model lain. Dalam pembelajaran pemindahan, kita biasanya bermula dengan model pra-latih, yang telah dilatih pada set data imej besar, seperti **ImageNet**. Model-model tersebut sudah boleh melakukan tugas yang baik dalam mengekstrak pelbagai ciri dari imej generik, dan dalam banyak kes, hanya membina pengklasifikasi di atas ciri-ciri yang diekstrak boleh menghasilkan keputusan yang baik. + +> ✅ Pembelajaran Pemindahan adalah istilah yang anda temui dalam bidang akademik lain, seperti Pendidikan. Ia merujuk kepada proses mengambil pengetahuan dari satu domain dan menerapkannya ke domain lain. + +## Model Pra-latih sebagai Pengambil Ciri + +Rangkaian konvolusi yang telah kita bincangkan dalam bahagian sebelumnya mengandungi beberapa lapisan, masing-masing bertujuan untuk mengekstrak beberapa ciri dari imej, bermula dari gabungan piksel rendah (seperti garis mendatar/menegak atau strok), sehingga gabungan ciri yang lebih tinggi, yang sepadan dengan perkara seperti mata api. Jika kita melatih CNN pada set data yang cukup besar dengan imej generik dan pelbagai, rangkaian tersebut seharusnya belajar untuk mengekstrak ciri-ciri umum tersebut. + +Kedua-dua Keras dan PyTorch mengandungi fungsi untuk memuatkan berat rangkaian neural pra-latih dengan mudah untuk beberapa seni bina biasa, kebanyakannya dilatih pada imej ImageNet. Yang paling sering digunakan diterangkan di halaman [Seni Bina CNN](../07-ConvNets/CNN_Architectures.md) dari pelajaran sebelumnya. Secara khusus, anda mungkin ingin mempertimbangkan untuk menggunakan salah satu daripada yang berikut: + +* **VGG-16/VGG-19** yang merupakan model yang relatif sederhana tetapi masih memberikan ketepatan yang baik. Menggunakan VGG sebagai percubaan pertama sering kali merupakan pilihan yang baik untuk melihat bagaimana pembelajaran pemindahan berfungsi. +* **ResNet** adalah keluarga model yang dicadangkan oleh Microsoft Research pada tahun 2015. Mereka mempunyai lebih banyak lapisan, dan dengan itu memerlukan lebih banyak sumber. +* **MobileNet** adalah keluarga model dengan saiz yang dikurangkan, sesuai untuk peranti mudah alih. Gunakan mereka jika anda kekurangan sumber dan boleh mengorbankan sedikit ketepatan. + +Berikut adalah ciri-ciri contoh yang diekstrak dari gambar kucing oleh rangkaian VGG-16: + +![Ciri yang diekstrak oleh VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ms.png) + +## Dataset Kucing vs. Anjing + +Dalam contoh ini, kita akan menggunakan dataset [Kucing dan Anjing](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), yang sangat dekat dengan senario pengklasifikasian imej dalam kehidupan sebenar. + +## ✍️ Latihan: Pembelajaran Pemindahan + +Mari kita lihat pembelajaran pemindahan dalam tindakan dalam nota-nota yang berkaitan: + +* [Pembelajaran Pemindahan - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Pembelajaran Pemindahan - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Memvisualisasikan Kucing Adversarial + +Rangkaian neural pra-latih mengandungi pelbagai corak di dalam *otaknya*, termasuk konsep **kucing ideal** (serta anjing ideal, zebra ideal, dan lain-lain). Ia akan menjadi menarik untuk **memvisualisasikan imej ini**. Namun, ia tidak mudah, kerana corak tersebar di seluruh berat rangkaian, dan juga teratur dalam struktur hierarki. + +Salah satu pendekatan yang boleh kita ambil adalah dengan memulakan dengan imej rawak, dan kemudian cuba menggunakan teknik **pengoptimuman penurunan gradien** untuk menyesuaikan imej tersebut sedemikian rupa, sehingga rangkaian mula berfikir bahawa ia adalah kucing. + +![Gelung Pengoptimuman Imej](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ms.png) + +Namun, jika kita melakukan ini, kita akan menerima sesuatu yang sangat mirip dengan bunyi rawak. Ini kerana *terdapat banyak cara untuk membuat rangkaian berfikir imej input adalah kucing*, termasuk beberapa yang tidak masuk akal secara visual. Walaupun imej-imej tersebut mengandungi banyak corak yang tipikal untuk kucing, tidak ada yang membataskan mereka untuk menjadi secara visual tersendiri. + +Untuk meningkatkan hasil, kita boleh menambah satu lagi terma ke dalam fungsi kehilangan, yang dipanggil **kerugian variasi**. Ia adalah metrik yang menunjukkan betapa serupa piksel-piksel bersebelahan imej tersebut. Meminimumkan kerugian variasi menjadikan imej lebih lancar, dan menghilangkan bunyi - dengan itu mendedahkan lebih banyak corak yang menarik secara visual. Berikut adalah contoh "imej ideal" yang diklasifikasikan sebagai kucing dan sebagai zebra dengan kebarangkalian tinggi: + +![Kucing Ideal](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ms.png) | ![Zebra Ideal](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ms.png) +-----|----- + *Kucing Ideal* | *Zebra Ideal* + +Pendekatan serupa boleh digunakan untuk melakukan apa yang dipanggil **serangan adversarial** pada rangkaian neural. Anggap kita ingin menipu rangkaian neural dan membuat anjing kelihatan seperti kucing. Jika kita mengambil imej anjing, yang dikenali oleh rangkaian sebagai anjing, kita boleh kemudian mengubahnya sedikit menggunakan pengoptimuman penurunan gradien, sehingga rangkaian mula mengklasifikasikannya sebagai kucing: + +![Gambar Anjing](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ms.png) | ![Gambar anjing yang diklasifikasikan sebagai kucing](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ms.png) +-----|----- +*Gambar asal anjing* | *Gambar anjing yang diklasifikasikan sebagai kucing* + +Lihat kod untuk menghasilkan keputusan di atas dalam nota berikut: + +* [Kucing Ideal dan Adversarial - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) +## Kesimpulan + +Dengan menggunakan pembelajaran pemindahan, anda dapat dengan cepat menyusun pengklasifikasi untuk tugas pengklasifikasian objek khusus dan mencapai ketepatan yang tinggi. Anda dapat melihat bahawa tugas yang lebih kompleks yang kita selesaikan sekarang memerlukan kuasa pengkomputeran yang lebih tinggi, dan tidak dapat diselesaikan dengan mudah di CPU. Dalam unit seterusnya, kita akan cuba menggunakan pelaksanaan yang lebih ringan untuk melatih model yang sama menggunakan sumber pengkomputeran yang lebih rendah, yang menghasilkan ketepatan yang sedikit lebih rendah. + +## 🚀 Cabaran + +Dalam nota-nota yang menyertai, terdapat catatan di bahagian bawah tentang bagaimana pemindahan pengetahuan berfungsi dengan terbaik dengan data latihan yang agak serupa (mungkin jenis haiwan baru). Lakukan beberapa eksperimen dengan jenis imej yang sepenuhnya baru untuk melihat seberapa baik atau buruk model pemindahan pengetahuan anda berfungsi. + +## [Kuis Pasca-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Ulasan & Pembelajaran Sendiri + +Baca melalui [TrainingTricks.md](TrainingTricks.md) untuk mendalami pengetahuan anda tentang beberapa cara lain untuk melatih model anda. + +## [Tugasan](lab/README.md) + +Dalam lab ini, kita akan menggunakan dataset haiwan peliharaan [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) dengan 35 baka kucing dan anjing, dan kita akan membina pengklasifikasi pembelajaran pemindahan. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/ms/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..e534459a --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# Trik Latihan Pembelajaran Dalam + +Seiring dengan semakin dalamnya jaringan saraf, proses pelatihannya menjadi semakin menantang. Salah satu masalah utama adalah yang disebut [gradien menghilang](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) atau [gradien meledak](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Posting ini](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) memberikan pengantar yang baik tentang masalah ini. + +Untuk membuat pelatihan jaringan dalam lebih efisien, ada beberapa teknik yang dapat digunakan. + +## Menjaga nilai dalam interval yang wajar + +Untuk membuat perhitungan numerik lebih stabil, kita ingin memastikan bahwa semua nilai dalam jaringan saraf kita berada dalam skala yang wajar, biasanya [-1..1] atau [0..1]. Ini bukan persyaratan yang sangat ketat, tetapi sifat perhitungan titik mengambang adalah demikian sehingga nilai dengan magnitudo yang berbeda tidak dapat dimanipulasi secara akurat bersama-sama. Sebagai contoh, jika kita menjumlahkan 10-10 dan 1010, kita kemungkinan besar akan mendapatkan 1010, karena nilai yang lebih kecil akan "dikonversi" ke urutan yang sama dengan yang lebih besar, sehingga mantissa akan hilang. + +Sebagian besar fungsi aktivasi memiliki non-linearitas di sekitar [-1..1], sehingga masuk akal untuk menskalakan semua data input ke interval [-1..1] atau [0..1]. + +## Inisialisasi Bobot Awal + +Idealnya, kita ingin nilai-nilai berada dalam rentang yang sama setelah melewati lapisan jaringan. Oleh karena itu, penting untuk menginisialisasi bobot dengan cara yang mempertahankan distribusi nilai. + +Distribusi normal **N(0,1)** bukanlah ide yang baik, karena jika kita memiliki *n* input, deviasi standar output akan menjadi *n*, dan nilai-nilai kemungkinan besar akan melampaui interval [0..1]. + +Inisialisasi berikut sering digunakan: + + * Distribusi seragam -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** menjamin bahwa untuk input dengan rata-rata nol dan deviasi standar 1, rata-rata/deviasi standar yang sama akan tetap ada + * **N(0,√2/(n_in+n_out))** -- yang disebut **inisialisasi Xavier** (`glorot`), ini membantu menjaga sinyal dalam rentang selama propagasi maju dan mundur + +## Normalisasi Batch + +Bahkan dengan inisialisasi bobot yang tepat, bobot dapat menjadi sangat besar atau kecil selama pelatihan, dan ini akan membawa sinyal keluar dari rentang yang tepat. Kita dapat mengembalikan sinyal dengan menggunakan salah satu teknik **normalisasi**. Meskipun ada beberapa di antaranya (Normalisasi Bobot, Normalisasi Lapisan), yang paling sering digunakan adalah Normalisasi Batch. + +Ide dari **normalisasi batch** adalah untuk mempertimbangkan semua nilai di seluruh minibatch, dan melakukan normalisasi (yaitu mengurangi rata-rata dan membagi dengan deviasi standar) berdasarkan nilai-nilai tersebut. Ini diimplementasikan sebagai lapisan jaringan yang melakukan normalisasi ini setelah menerapkan bobot, tetapi sebelum fungsi aktivasi. Sebagai hasilnya, kita kemungkinan besar akan melihat akurasi akhir yang lebih tinggi dan pelatihan yang lebih cepat. + +Berikut adalah [makalah asli](https://arxiv.org/pdf/1502.03167.pdf) tentang normalisasi batch, [penjelasan di Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization), dan [posting blog pengantar yang baik](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (dan yang satu [dalam bahasa Rusia](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** adalah teknik menarik yang menghapus persentase neuron acak tertentu selama pelatihan. Ini juga diimplementasikan sebagai lapisan dengan satu parameter (persentase neuron yang akan dihapus, biasanya 10%-50%), dan selama pelatihan, ia mengosongkan elemen acak dari vektor input, sebelum meneruskannya ke lapisan berikutnya. + +Meskipun ini mungkin terdengar seperti ide yang aneh, Anda dapat melihat efek dropout pada pelatihan pengklasifikasi digit MNIST dalam [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) notebook. Ini mempercepat pelatihan dan memungkinkan kita mencapai akurasi yang lebih tinggi dalam lebih sedikit epoch pelatihan. + +Efek ini dapat dijelaskan dengan beberapa cara: + + * Ini dapat dianggap sebagai faktor kejutan acak bagi model, yang mengeluarkan optimasi dari minimum lokal + * Ini dapat dianggap sebagai *rata-rata model implisit*, karena kita dapat mengatakan bahwa selama dropout kita sedang melatih model yang sedikit berbeda + +> *Beberapa orang mengatakan bahwa ketika seseorang yang mabuk mencoba belajar sesuatu, dia akan mengingatnya lebih baik keesokan paginya, dibandingkan dengan orang yang sadar, karena otak dengan beberapa neuron yang tidak berfungsi mencoba beradaptasi lebih baik untuk memahami makna. Kami tidak pernah menguji sendiri apakah ini benar atau tidak* + +## Mencegah Overfitting + +Salah satu aspek yang sangat penting dari pembelajaran dalam adalah mampu mencegah [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Meskipun mungkin menggoda untuk menggunakan model jaringan saraf yang sangat kuat, kita harus selalu menyeimbangkan jumlah parameter model dengan jumlah sampel pelatihan. + +> Pastikan Anda memahami konsep [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) yang telah kami perkenalkan sebelumnya! + +Ada beberapa cara untuk mencegah overfitting: + + * Penghentian dini -- terus-menerus memantau kesalahan pada set validasi dan menghentikan pelatihan ketika kesalahan validasi mulai meningkat. + * Penurunan Bobot Eksplisit / Regulasi -- menambahkan penalti ekstra pada fungsi kerugian untuk nilai absolut bobot yang tinggi, yang mencegah model mendapatkan hasil yang sangat tidak stabil + * Rata-rata Model -- melatih beberapa model dan kemudian merata-ratakan hasilnya. Ini membantu meminimalkan varians. + * Dropout (Rata-rata Model Implisit) + +## Pengoptimal / Algoritma Pelatihan + +Aspek penting lain dari pelatihan adalah memilih algoritma pelatihan yang baik. Meskipun **penurunan gradien** klasik adalah pilihan yang wajar, terkadang bisa terlalu lambat, atau menghasilkan masalah lainnya. + +Dalam pembelajaran dalam, kita menggunakan **Stochastic Gradient Descent** (SGD), yang merupakan penurunan gradien yang diterapkan pada minibatch, yang dipilih secara acak dari set pelatihan. Bobot disesuaikan menggunakan rumus ini: + +wt+1 = wt - η∇ℒ + +### Momentum + +Dalam **momentum SGD**, kita menyimpan sebagian gradien dari langkah sebelumnya. Ini mirip dengan ketika kita bergerak ke suatu tempat dengan inersia, dan kita menerima dorongan ke arah yang berbeda, trajektori kita tidak berubah segera, tetapi mempertahankan sebagian dari gerakan awal. Di sini kita memperkenalkan vektor lain v untuk mewakili *kecepatan*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt + vt+1 + +Di sini parameter γ menunjukkan sejauh mana kita mempertimbangkan inersia: γ=0 sesuai dengan SGD klasik; γ=1 adalah persamaan gerakan murni. + +### Adam, Adagrad, dll. + +Karena di setiap lapisan kita mengalikan sinyal dengan beberapa matriks Wi, tergantung pada ||Wi||, gradien dapat berkurang dan mendekati 0, atau meningkat tanpa batas. Ini adalah inti dari masalah Gradien Meledak/Menghilang. + +Salah satu solusi untuk masalah ini adalah dengan menggunakan hanya arah gradien dalam persamaan, dan mengabaikan nilai absolut, yaitu: + +wt+1 = wt - η(∇ℒ/||∇ℒ||), di mana ||∇ℒ|| = √∑(∇ℒ)2 + +Algoritma ini disebut **Adagrad**. Algoritma lain yang menggunakan ide yang sama: **RMSProp**, **Adam** + +> **Adam** dianggap sebagai algoritma yang sangat efisien untuk banyak aplikasi, jadi jika Anda tidak yakin yang mana yang harus digunakan - gunakan Adam. + +### Pemotongan Gradien + +Pemotongan gradien adalah perpanjangan dari ide di atas. Ketika ||∇ℒ|| ≤ θ, kita mempertimbangkan gradien asli dalam optimasi bobot, dan ketika ||∇ℒ|| > θ - kita membagi gradien dengan normanya. Di sini θ adalah parameter, dalam kebanyakan kasus kita dapat mengambil θ=1 atau θ=10. + +### Penurunan laju pembelajaran + +Keberhasilan pelatihan sering kali bergantung pada parameter laju pembelajaran η. Logis untuk mengasumsikan bahwa nilai η yang lebih besar menghasilkan pelatihan yang lebih cepat, yang biasanya kita inginkan di awal pelatihan, dan kemudian nilai η yang lebih kecil memungkinkan kita untuk menyempurnakan jaringan. Oleh karena itu, dalam kebanyakan kasus, kita ingin mengurangi η selama proses pelatihan. + +Ini dapat dilakukan dengan mengalikan η dengan beberapa angka (misalnya, 0.98) setelah setiap epoch pelatihan, atau dengan menggunakan **jadwal laju pembelajaran** yang lebih rumit. + +## Arsitektur Jaringan yang Berbeda + +Memilih arsitektur jaringan yang tepat untuk masalah Anda bisa jadi rumit. Normalnya, kita akan mengambil arsitektur yang telah terbukti berhasil untuk tugas spesifik kita (atau yang serupa). Berikut adalah [tinjauan yang baik](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) tentang arsitektur jaringan saraf untuk visi komputer. + +> Penting untuk memilih arsitektur yang cukup kuat untuk jumlah sampel pelatihan yang kita miliki. Memilih model yang terlalu kuat dapat mengakibatkan [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) + +Cara lain yang baik adalah menggunakan arsitektur yang secara otomatis akan menyesuaikan dengan kompleksitas yang diperlukan. Sampai batas tertentu, arsitektur **ResNet** dan **Inception** bersifat penyesuaian diri. [Lebih lanjut tentang arsitektur visi komputer](../07-ConvNets/CNN_Architectures.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat kritikal, terjemahan manusia yang profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/ms/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..74c48636 --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# Klasifikasi Haiwan Peliharaan Oxford menggunakan Pembelajaran Pemindahan + +Tugasan Makmal dari [Kurikulum AI untuk Pemula](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Bayangkan anda perlu membangunkan aplikasi untuk pusat penjagaan haiwan peliharaan untuk mengkatalog semua haiwan peliharaan. Salah satu ciri hebat aplikasi tersebut adalah penemuan automatik baka dari gambar. Dalam tugasan ini, kita akan menggunakan pembelajaran pemindahan untuk mengklasifikasikan imej haiwan peliharaan sebenar dari dataset haiwan peliharaan [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## Dataset + +Kita akan menggunakan dataset haiwan peliharaan [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) yang asal, yang mengandungi 35 baka anjing dan kucing yang berbeza. + +Untuk memuat turun dataset, gunakan petikan kod ini: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Memulakan Notebook + +Mulakan makmal dengan membuka [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Pengajaran + +Pembelajaran pemindahan dan rangkaian yang telah dilatih membolehkan kita menyelesaikan masalah pengklasifikasian imej dunia nyata dengan agak mudah. Walau bagaimanapun, rangkaian yang telah dilatih berfungsi dengan baik pada imej yang sejenis, dan jika kita mula mengklasifikasikan imej yang sangat berbeza (contohnya, imej perubatan), kita mungkin akan mendapatkan hasil yang jauh lebih buruk. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/ms/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..9e07efa7 --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# Autoencoders + +Apabila melatih CNN, salah satu masalah yang dihadapi adalah kita memerlukan banyak data berlabel. Dalam kes klasifikasi imej, kita perlu memisahkan imej kepada pelbagai kelas, yang merupakan usaha manual. + +## [Kuiz sebelum kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Namun, kita mungkin ingin menggunakan data mentah (tidak berlabel) untuk melatih pengekstrak ciri CNN, yang dikenali sebagai **pembelajaran kendiri**. Sebagai ganti label, kita akan menggunakan imej latihan sebagai input dan output rangkaian. Idea utama **autoencoder** adalah kita akan mempunyai **rangkaian pengekod** yang menukarkan imej input kepada **ruang laten** (biasanya ia hanya merupakan vektor dengan saiz yang lebih kecil), kemudian **rangkaian dekoder**, yang bertujuan untuk membina semula imej asal. + +> ✅ An [autoencoder](https://wikipedia.org/wiki/Autoencoder) adalah "sejenis rangkaian neural tiruan yang digunakan untuk mempelajari pengkodan yang cekap bagi data tidak berlabel." + +Oleh kerana kita melatih autoencoder untuk menangkap sebanyak mungkin maklumat dari imej asal untuk pembinaan semula yang tepat, rangkaian tersebut berusaha untuk mencari **penyematan** terbaik bagi imej input untuk menangkap makna. + +![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ms.jpg) + +> Imej dari [blog Keras](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Senario untuk menggunakan Autoencoders + +Walaupun membina semula imej asal tidak kelihatan berguna dengan sendirinya, terdapat beberapa senario di mana autoencoders sangat berguna: + +* **Mengurangkan dimensi imej untuk visualisasi** atau **melatih penyematan imej**. Biasanya autoencoders memberikan hasil yang lebih baik daripada PCA, kerana ia mengambil kira sifat spatial imej dan ciri hierarki. +* **Pengurangan bunyi**, iaitu menghapuskan bunyi dari imej. Kerana bunyi membawa banyak maklumat yang tidak berguna, autoencoder tidak dapat memuatkan semuanya ke dalam ruang laten yang relatif kecil, dan oleh itu ia hanya menangkap bahagian penting imej. Apabila melatih pengurang bunyi, kita bermula dengan imej asal, dan menggunakan imej dengan bunyi yang ditambah secara artifisial sebagai input untuk autoencoder. +* **Super-resolusi**, meningkatkan resolusi imej. Kita bermula dengan imej beresolusi tinggi, dan menggunakan imej dengan resolusi lebih rendah sebagai input autoencoder. +* **Model generatif**. Setelah kita melatih autoencoder, bahagian dekoder boleh digunakan untuk mencipta objek baru bermula dari vektor laten rawak. + +## Autoencoders Variasional (VAE) + +Autoencoders tradisional mengurangkan dimensi data input dengan cara tertentu, mengenal pasti ciri penting imej input. Namun, vektor laten sering kali tidak memberikan makna yang jelas. Dengan kata lain, mengambil set data MNIST sebagai contoh, menentukan digit mana yang sepadan dengan vektor laten yang berbeza bukanlah tugas yang mudah, kerana vektor laten yang dekat tidak semestinya sepadan dengan digit yang sama. + +Sebaliknya, untuk melatih model *generatif*, adalah lebih baik untuk mempunyai pemahaman tentang ruang laten. Idea ini membawa kita kepada **autoencoder variational** (VAE). + +VAE adalah autoencoder yang belajar untuk meramalkan *taburan statistik* bagi parameter laten, yang dikenali sebagai **taburan laten**. Sebagai contoh, kita mungkin ingin vektor laten didistribusikan secara normal dengan beberapa min zmean dan sisihan piawai zsigma (kedua-dua min dan sisihan piawai adalah vektor dengan dimensi tertentu d). Pengekod dalam VAE belajar untuk meramalkan parameter tersebut, dan kemudian dekoder mengambil vektor rawak dari taburan ini untuk membina semula objek. + +Untuk merumuskan: + + * Dari vektor input, kita meramalkan `z_mean` dan `z_log_sigma` (daripada meramalkan sisihan piawai itu sendiri, kita meramalkan logaritmnya) + * Kita mengambil sampel vektor `sample` dari taburan N(zmean,exp(zlog\_sigma)) + * Dekoder berusaha untuk mendekod imej asal menggunakan `sample` sebagai vektor input + + + +> Imej dari [post blog ini](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) oleh Isaak Dykeman + +Autoencoders variational menggunakan fungsi kerugian yang kompleks yang terdiri daripada dua bahagian: + +* **Kerugian pembinaan semula** adalah fungsi kerugian yang menunjukkan betapa dekatnya imej yang dibina semula dengan sasaran (ia boleh menjadi Mean Squared Error, atau MSE). Ia adalah fungsi kerugian yang sama seperti dalam autoencoders biasa. +* **Kerugian KL**, yang memastikan bahawa taburan pembolehubah laten tetap dekat dengan taburan normal. Ia berdasarkan kepada konsep [divergensi Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - satu metrik untuk menganggarkan seberapa mirip dua taburan statistik. + +Satu kelebihan penting VAE adalah bahawa ia membolehkan kita menjana imej baru dengan agak mudah, kerana kita tahu taburan dari mana untuk mengambil vektor laten. Sebagai contoh, jika kita melatih VAE dengan vektor laten 2D pada MNIST, kita boleh mengubah komponen vektor laten untuk mendapatkan digit yang berbeza: + +vaemnist + +> Imej oleh [Dmitry Soshnikov](http://soshnikov.com) + +Perhatikan bagaimana imej bercampur antara satu sama lain, apabila kita mula mendapatkan vektor laten dari bahagian yang berbeza dalam ruang parameter laten. Kita juga boleh memvisualisasikan ruang ini dalam 2D: + +vaemnist cluster + +> Imej oleh [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Latihan: Autoencoders + +Ketahui lebih lanjut tentang autoencoders dalam notebook yang berkaitan ini: + +* [Autoencoders dalam TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoders dalam PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Ciri-ciri Autoencoders + +* **Spesifik Data** - mereka hanya berfungsi dengan baik dengan jenis imej yang telah mereka latih. Sebagai contoh, jika kita melatih rangkaian super-resolusi pada bunga, ia tidak akan berfungsi dengan baik pada potret. Ini kerana rangkaian boleh menghasilkan imej beresolusi tinggi dengan mengambil butiran halus dari ciri yang dipelajari daripada set data latihan. +* **Rugi** - imej yang dibina semula tidak sama dengan imej asal. Sifat kerugian ditentukan oleh *fungsi kerugian* yang digunakan semasa latihan. +* Berfungsi pada **data tidak berlabel**. + +## [Kuiz selepas kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Kesimpulan + +Dalam pelajaran ini, anda telah mempelajari pelbagai jenis autoencoders yang tersedia untuk saintis AI. Anda telah belajar bagaimana untuk membinanya, dan bagaimana untuk menggunakannya untuk membina semula imej. Anda juga telah belajar tentang VAE dan bagaimana untuk menggunakannya untuk menjana imej baru. + +## 🚀 Cabaran + +Dalam pelajaran ini, anda telah belajar tentang menggunakan autoencoders untuk imej. Tetapi ia juga boleh digunakan untuk muzik! Semak projek Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae), yang menggunakan autoencoders untuk belajar membina semula muzik. Lakukan beberapa [eksperimen](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) dengan perpustakaan ini untuk melihat apa yang boleh anda cipta. + +## [Kuiz selepas kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Ulasan & Pembelajaran Sendiri + +Sebagai rujukan, baca lebih lanjut tentang autoencoders dalam sumber-sumber ini: + +* [Membina Autoencoders dalam Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Post blog tentang NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Autoencoders Variational Dijelaskan](https://kvfrans.com/variational-autoencoders-explained/) +* [Autoencoders Variational Bersyarat](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Tugasan + +Di akhir [notebook ini menggunakan TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), anda akan menemui 'tugas' - gunakan ini sebagai tugasan anda. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia yang profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/10-GANs/README.md b/translations/ms/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..d8c0fb45 --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# Rangkaian Adversarial Generatif + +Dalam bagian sebelumnya, kita telah mempelajari tentang **model generatif**: model yang dapat menghasilkan gambar baru yang mirip dengan yang ada di dataset pelatihan. VAE adalah contoh yang baik dari model generatif. + +## [Kuis Pra-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Namun, jika kita mencoba untuk menghasilkan sesuatu yang benar-benar bermakna, seperti lukisan dengan resolusi yang wajar, dengan VAE, kita akan melihat bahwa pelatihan tidak konvergen dengan baik. Untuk kasus penggunaan ini, kita perlu mempelajari arsitektur lain yang ditargetkan secara khusus pada model generatif - **Rangkaian Adversarial Generatif**, atau GAN. + +Ide utama dari GAN adalah memiliki dua jaringan saraf yang akan dilatih satu sama lain: + + + +> Gambar oleh [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Kosakata sedikit: +> * **Generator** adalah jaringan yang mengambil beberapa vektor acak, dan menghasilkan gambar sebagai hasilnya. +> * **Discriminator** adalah jaringan yang mengambil gambar, dan seharusnya dapat memberitahu apakah itu adalah gambar nyata (dari dataset pelatihan), atau dihasilkan oleh generator. Ini pada dasarnya adalah pengklasifikasi gambar. + +### Discriminator + +Arsitektur discriminator tidak berbeda dari jaringan klasifikasi gambar biasa. Dalam kasus paling sederhana, itu bisa menjadi pengklasifikasi terhubung penuh, tetapi kemungkinan besar itu akan menjadi [jaringan konvolusional](../07-ConvNets/README.md). + +> ✅ GAN yang berbasis pada jaringan konvolusional disebut [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Discriminator CNN terdiri dari lapisan-lapisan berikut: beberapa konvolusi+pooling (dengan ukuran spasial yang semakin berkurang) dan satu atau lebih lapisan terhubung penuh untuk mendapatkan "vektor fitur", pengklasifikasi biner akhir. + +> ✅ 'Pooling' dalam konteks ini adalah teknik yang mengurangi ukuran gambar. "Lapisan pooling mengurangi dimensi data dengan menggabungkan keluaran kluster neuron pada satu lapisan menjadi satu neuron di lapisan berikutnya." - [sumber](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generator + +Generator sedikit lebih rumit. Anda dapat menganggapnya sebagai discriminator terbalik. Dimulai dari vektor laten (sebagai pengganti vektor fitur), ia memiliki lapisan terhubung penuh untuk mengubahnya menjadi ukuran/bentuk yang diperlukan, diikuti oleh dekonvolusi+peningkatan skala. Ini mirip dengan bagian *decoder* dari [autoencoder](../09-Autoencoders/README.md). + +> ✅ Karena lapisan konvolusi diimplementasikan sebagai filter linier yang melintasi gambar, dekonvolusi pada dasarnya mirip dengan konvolusi, dan dapat diimplementasikan menggunakan logika lapisan yang sama. + + + +> Gambar oleh [Dmitry Soshnikov](http://soshnikov.com) + +### Melatih GAN + +GAN disebut **adversarial** karena ada kompetisi konstan antara generator dan discriminator. Selama kompetisi ini, baik generator maupun discriminator meningkat, sehingga jaringan belajar untuk menghasilkan gambar yang semakin baik. + +Pelatihan dilakukan dalam dua tahap: + +* **Melatih discriminator**. Tugas ini cukup sederhana: kita menghasilkan sekumpulan gambar oleh generator, memberi label 0, yang menunjukkan gambar palsu, dan mengambil sekumpulan gambar dari dataset input (dengan label 1, gambar nyata). Kita memperoleh *kerugian discriminator*, dan melakukan backprop. +* **Melatih generator**. Ini sedikit lebih rumit, karena kita tidak tahu output yang diharapkan untuk generator secara langsung. Kita mengambil seluruh jaringan GAN yang terdiri dari generator diikuti oleh discriminator, memberi umpan dengan beberapa vektor acak, dan mengharapkan hasilnya menjadi 1 (yang sesuai dengan gambar nyata). Kita kemudian membekukan parameter discriminator (kita tidak ingin ia dilatih pada langkah ini), dan melakukan backprop. + +Selama proses ini, baik kerugian generator maupun discriminator tidak turun secara signifikan. Dalam situasi ideal, mereka harus berosilasi, sesuai dengan kedua jaringan yang meningkatkan kinerja mereka. + +## ✍️ Latihan: GANs + +* [Notebook GAN di TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Notebook GAN di PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Masalah dengan pelatihan GAN + +GAN dikenal sangat sulit untuk dilatih. Berikut beberapa masalah: + +* **Mode Collapse**. Dengan istilah ini, kami maksudkan bahwa generator belajar untuk menghasilkan satu gambar sukses yang menipu discriminator, dan bukan variasi gambar yang berbeda. +* **Sensitivitas terhadap hiperparameter**. Sering kali Anda dapat melihat bahwa GAN tidak konvergen sama sekali, dan kemudian tiba-tiba menurun dalam laju pembelajaran yang mengarah ke konvergensi. +* Menjaga **keseimbangan** antara generator dan discriminator. Dalam banyak kasus, kerugian discriminator dapat turun ke nol relatif cepat, yang mengakibatkan generator tidak dapat dilatih lebih lanjut. Untuk mengatasi ini, kita dapat mencoba mengatur laju pembelajaran yang berbeda untuk generator dan discriminator, atau melewatkan pelatihan discriminator jika kerugian sudah terlalu rendah. +* Pelatihan untuk **resolusi tinggi**. Mencerminkan masalah yang sama seperti dengan autoencoder, masalah ini dipicu karena merekonstruksi terlalu banyak lapisan jaringan konvolusional mengarah pada artefak. Masalah ini biasanya diatasi dengan yang disebut **pertumbuhan progresif**, ketika pertama beberapa lapisan dilatih pada gambar resolusi rendah, dan kemudian lapisan "dibuka" atau ditambahkan. Solusi lain adalah menambahkan koneksi ekstra antara lapisan dan melatih beberapa resolusi sekaligus - lihat [makalah Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048) untuk rincian. + +## Transfer Gaya + +GAN adalah cara yang hebat untuk menghasilkan gambar artistik. Teknik menarik lainnya adalah yang disebut **transfer gaya**, yang mengambil satu **gambar konten**, dan menggambarnya kembali dalam gaya yang berbeda, menerapkan filter dari **gambar gaya**. + +Cara kerjanya adalah sebagai berikut: +* Kita mulai dengan gambar kebisingan acak (atau dengan gambar konten, tetapi demi pemahaman, lebih mudah untuk memulai dari kebisingan acak). +* Tujuan kita adalah untuk menciptakan gambar sedemikian rupa, sehingga dekat dengan gambar konten dan gambar gaya. Ini akan ditentukan oleh dua fungsi kerugian: + - **Kerugian konten** dihitung berdasarkan fitur yang diekstrak oleh CNN di beberapa lapisan dari gambar saat ini dan gambar konten. + - **Kerugian gaya** dihitung antara gambar saat ini dan gambar gaya dengan cara yang cerdas menggunakan matriks Gram (lebih banyak rincian dalam [notebook contoh](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Untuk membuat gambar lebih halus dan menghilangkan kebisingan, kita juga memperkenalkan **Kerugian Variasi**, yang menghitung jarak rata-rata antara piksel tetangga. +* Loop optimisasi utama menyesuaikan gambar saat ini menggunakan penurunan gradien (atau beberapa algoritma optimisasi lainnya) untuk meminimalkan total kerugian, yang merupakan jumlah tertimbang dari ketiga kerugian. + +## ✍️ Contoh: [Transfer Gaya](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Kuis Pasca-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Kesimpulan + +Dalam pelajaran ini, Anda belajar tentang GAN dan cara melatihnya. Anda juga belajar tentang tantangan khusus yang dapat dihadapi oleh jenis Jaringan Saraf ini, dan beberapa strategi tentang cara mengatasinya. + +## 🚀 Tantangan + +Jalankan [notebook Transfer Gaya](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) menggunakan gambar Anda sendiri. + +## Tinjauan & Studi Mandiri + +Sebagai referensi, baca lebih lanjut tentang GAN di sumber-sumber ini: + +* Marco Pasini, [10 Pelajaran yang Saya Pelajari Melatih GAN selama Satu Tahun](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), arsitektur GAN *de facto* yang perlu dipertimbangkan +* [Membuat Seni Generatif menggunakan GAN di Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Tugas + +Kunjungi kembali salah satu dari dua notebook yang terkait dengan pelajaran ini dan latih ulang GAN pada gambar Anda sendiri. Apa yang dapat Anda ciptakan? + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/ms/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..028bf737 --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,51 @@ +### YOLO - Anda Hanya Melihat Sekali + +YOLO adalah algoritma satu kali yang berjalan secara langsung. Idea utamanya adalah seperti berikut: + +* Imej dibahagikan kepada $S\times S$ kawasan +* Untuk setiap kawasan, **CNN** meramalkan $n$ objek yang mungkin, koordinat *bounding box* dan *confidence* = *probability* * IoU. + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ms.png) +> Gambar dari [kertas rasmi](https://arxiv.org/abs/1506.02640) + +### Algoritma Lain + +* RetinaNet: [kertas rasmi](https://arxiv.org/abs/1708.02002) + - [Pelaksanaan PyTorch dalam Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Pelaksanaan Keras](https://github.com/fizyr/keras-retinanet) + - [Pengesanan Objek dengan RetinaNet](https://keras.io/examples/vision/retinanet/) dalam Contoh Keras +* SSD (Detektor Satu Tembakan): [kertas rasmi](https://arxiv.org/abs/1512.02325) + +## ✍️ Latihan: Pengesanan Objek + +Teruskan pembelajaran anda dalam buku nota berikut: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Kesimpulan + +Dalam pelajaran ini, anda telah mengambil lawatan pantas melalui pelbagai cara pengesanan objek boleh dicapai! + +## 🚀 Cabaran + +Baca artikel dan buku nota ini tentang YOLO dan cuba sendiri + +* [Catatan blog yang baik](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) yang menerangkan YOLO + * [Laman rasmi](https://pjreddie.com/darknet/yolo/) + * Yolo: [pelaksanaan Keras](https://github.com/experiencor/keras-yolo2), [buku nota langkah demi langkah](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [pelaksanaan Keras](https://github.com/experiencor/keras-yolo2), [buku nota langkah demi langkah](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Kuiz selepas kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Ulasan & Kajian Diri + +* [Pengesanan Objek](https://tjmachinelearning.com/lectures/1718/obj/) oleh Nikhil Sardana +* [Perbandingan yang baik tentang algoritma pengesanan objek](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Ulasan Algoritma Pembelajaran Mendalam untuk Pengesanan Objek](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Pengenalan Langkah demi Langkah kepada Algoritma Pengesanan Objek Asas](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Pelaksanaan Faster R-CNN dalam Python untuk Pengesanan Objek](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Tugasan: Pengesanan Objek](lab/README.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/ms/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..d3427a0c --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# Pengesanan Kepala menggunakan Dataset Hollywood Heads + +Tugasan Makmal dari [Kurikulum AI untuk Pemula](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Mengira jumlah orang dalam aliran kamera pengawasan video adalah tugas penting yang membolehkan kita menganggarkan jumlah pengunjung di kedai, waktu sibuk di restoran, dan sebagainya. Untuk menyelesaikan tugas ini, kita perlu dapat mengesan kepala manusia dari pelbagai sudut. Untuk melatih model pengesanan objek bagi mengesan kepala manusia, kita boleh menggunakan [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) mengandungi 369,846 kepala manusia yang ditandakan dalam 224,740 bingkai filem dari filem Hollywood. Ia disediakan dalam format [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), di mana untuk setiap imej terdapat juga fail penerangan XML yang kelihatan seperti ini: + +```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 + + +``` + +Dalam dataset ini, terdapat hanya satu kelas objek `head`, dan untuk setiap kepala, anda akan mendapatkan koordinat kotak pembatas. Anda boleh menguraikan XML menggunakan perpustakaan Python, atau menggunakan [perpustakaan ini](https://pypi.org/project/pascal-voc/) untuk berurusan secara langsung dengan format PASCAL VOC. + +## Melatih Pengesanan Objek + +Anda boleh melatih model pengesanan objek menggunakan salah satu cara berikut: + +* Menggunakan [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) dan API Python-nya untuk melatih model secara programatik di awan. Penglihatan khusus tidak dapat menggunakan lebih daripada beberapa ratus imej untuk melatih model, jadi anda mungkin perlu mengehadkan dataset. +* Menggunakan contoh dari [tutorial Keras](https://keras.io/examples/vision/retinanet/) untuk melatih model RetinaNet. +* Menggunakan modul terbina dalam [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) dalam torchvision. + +## Pengajaran + +Pengesanan objek adalah tugas yang sering diperlukan dalam industri. Walaupun terdapat beberapa perkhidmatan yang boleh digunakan untuk melakukan pengesanan objek (seperti [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)), adalah penting untuk memahami bagaimana pengesanan objek berfungsi dan untuk dapat melatih model anda sendiri. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia yang profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/ms/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..6b0e0134 --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# Segmentasi + +Kita telah mempelajari sebelumnya tentang Deteksi Objek, yang memungkinkan kita untuk menemukan objek dalam gambar dengan memprediksi *kotak pembatas* mereka. Namun, untuk beberapa tugas, kita tidak hanya memerlukan kotak pembatas, tetapi juga lokalisi objek yang lebih tepat. Tugas ini disebut **segmentasi**. + +## [Kuis pra-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentasi dapat dilihat sebagai **klasifikasi piksel**, di mana untuk **setiap** piksel dalam gambar kita harus memprediksi kelasnya (*latar belakang* menjadi salah satu kelas). Ada dua algoritma segmentasi utama: + +* **Segmentasi semantik** hanya memberi tahu kelas piksel, dan tidak membedakan antara objek yang berbeda dari kelas yang sama. +* **Segmentasi instansi** membagi kelas menjadi instansi yang berbeda. + +Untuk segmentasi instansi, domba-domba ini adalah objek yang berbeda, tetapi untuk segmentasi semantik semua domba diwakili oleh satu kelas. + + + +> Gambar dari [posting blog ini](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Ada berbagai arsitektur neural untuk segmentasi, tetapi semuanya memiliki struktur yang sama. Dalam hal ini, ini mirip dengan autoencoder yang telah Anda pelajari sebelumnya, tetapi alih-alih mendekonstruksi gambar asli, tujuan kita adalah mendekonstruksi **masker**. Dengan demikian, jaringan segmentasi memiliki bagian-bagian berikut: + +* **Encoder** mengekstrak fitur dari gambar input +* **Decoder** mengubah fitur-fitur tersebut menjadi **gambar masker**, dengan ukuran dan jumlah saluran yang sama sesuai dengan jumlah kelas. + + + +> Gambar dari [publikasi ini](https://arxiv.org/pdf/2001.05566.pdf) + +Kita harus menyebutkan fungsi kehilangan yang digunakan untuk segmentasi. Saat menggunakan autoencoder klasik, kita perlu mengukur kesamaan antara dua gambar, dan kita dapat menggunakan kesalahan kuadrat rata-rata (MSE) untuk melakukannya. Dalam segmentasi, setiap piksel dalam gambar masker target mewakili nomor kelas (one-hot-encoded di sepanjang dimensi ketiga), jadi kita perlu menggunakan fungsi kehilangan yang spesifik untuk klasifikasi - kehilangan cross-entropy, yang dirata-ratakan di seluruh piksel. Jika masker bersifat biner - **loss binary cross-entropy** (BCE) digunakan. + +> ✅ One-hot encoding adalah cara untuk mengkodekan label kelas menjadi vektor dengan panjang yang sama dengan jumlah kelas. Lihat [artikel ini](https://datagy.io/sklearn-one-hot-encode/) tentang teknik ini. + +## Segmentasi untuk Pencitraan Medis + +Dalam pelajaran ini, kita akan melihat segmentasi dalam aksi dengan melatih jaringan untuk mengenali nevus manusia (juga dikenal sebagai tahi lalat) pada gambar medis. Kita akan menggunakan PH2 Database dari gambar dermatoskopi sebagai sumber gambar. Dataset ini berisi 200 gambar dari tiga kelas: nevus tipikal, nevus atipikal, dan melanoma. Semua gambar juga mengandung **masker** yang sesuai yang menggambarkan nevus. + +> ✅ Teknik ini sangat sesuai untuk jenis pencitraan medis ini, tetapi aplikasi dunia nyata lainnya apa yang dapat Anda bayangkan? + +navi + +> Gambar dari PH2 Database + +Kita akan melatih model untuk mengsegmentasi nevus dari latar belakangnya. + +## ✍️ Latihan: Segmentasi Semantik + +Buka notebook di bawah ini untuk mempelajari lebih lanjut tentang berbagai arsitektur segmentasi semantik, berlatih bekerja dengan mereka, dan melihatnya dalam aksi. + +* [Segmentasi Semantik Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Segmentasi Semantik TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Kuis pasca-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Kesimpulan + +Segmentasi adalah teknik yang sangat kuat untuk klasifikasi gambar, bergerak melampaui kotak pembatas menuju klasifikasi tingkat piksel. Ini adalah teknik yang digunakan dalam pencitraan medis, di antara aplikasi lainnya. + +## 🚀 Tantangan + +Segmentasi tubuh hanyalah salah satu dari tugas umum yang dapat kita lakukan dengan gambar orang. Tugas penting lainnya termasuk **deteksi kerangka** dan **deteksi pose**. Cobalah pustaka [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) untuk melihat bagaimana deteksi pose dapat digunakan. + +## Tinjauan & Studi Mandiri + +Artikel [wikipedia ini](https://wikipedia.org/wiki/Image_segmentation) menawarkan gambaran yang baik tentang berbagai aplikasi teknik ini. Pelajari lebih lanjut secara mandiri tentang subdomain segmentasi instansi dan segmentasi panoptik dalam bidang penyelidikan ini. + +## [Tugas](lab/README.md) + +Dalam lab ini, coba **segmentasi tubuh manusia** menggunakan [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) dari Kaggle. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/ms/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..b18c90cb --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# Segmentasi Badan Manusia + +Tugasan Makmal dari [Kurikulum AI untuk Pemula](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Dalam pengeluaran video, contohnya dalam ramalan cuaca, kita sering perlu memotong gambar manusia dari kamera dan meletakkannya di atas rakaman lain. Ini biasanya dilakukan menggunakan teknik **chroma key**, di mana seorang manusia dirakam di hadapan latar belakang berwarna seragam, yang kemudian akan dibuang. Dalam makmal ini, kita akan melatih model rangkaian neural untuk memotong siluet manusia. + +## Dataset + +Kita akan menggunakan [Dataset MADS Penuh Badan Segmentasi](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) dari Kaggle. Muat turun dataset secara manual dari Kaggle. + +## Memulakan Notebook + +Mulakan makmal dengan membuka [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Pengajaran + +Segmentasi badan hanyalah salah satu daripada tugas biasa yang boleh kita lakukan dengan gambar orang. Tugas penting lain termasuk **pengesanan rangka** dan **pengesanan pose**. Lihat perpustakaan [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) untuk melihat bagaimana tugas-tugas tersebut boleh dilaksanakan. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesalahan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/4-ComputerVision/README.md b/translations/ms/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..be915b3f --- /dev/null +++ b/translations/ms/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# Penglihatan Komputer + +![Ringkasan kandungan Penglihatan Komputer dalam doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ms.png) + +Dalam bahagian ini, kita akan belajar tentang: + +* [Pengenalan kepada Penglihatan Komputer dan OpenCV](06-IntroCV/README.md) +* [Rangkaian Neural Konvolusi](07-ConvNets/README.md) +* [Rangkaian Pra-latih dan Pembelajaran Pemindahan](08-TransferLearning/README.md) +* [Autoencoder](09-Autoencoders/README.md) +* [Rangkaian Generatif Adversarial](10-GANs/README.md) +* [Pengesanan Objek](11-ObjectDetection/README.md) +* [Segmentasi Semantik](12-Segmentation/README.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/13-TextRep/README.md b/translations/ms/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..04eaf3b4 --- /dev/null +++ b/translations/ms/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# Mewakili Teks sebagai Tensor + +## [Kuiz Pra-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Klasifikasi Teks + +Sepanjang bagian pertama dari seksyen ini, kita akan fokus pada tugas **klasifikasi teks**. Kita akan menggunakan Dataset [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), yang mengandungi artikel berita seperti berikut: + +* Kategori: Sains/Teknologi +* Tajuk: Syarikat Ky. Menang Geran untuk Kajian Peptida (AP) +* Isi: AP - Sebuah syarikat yang diasaskan oleh seorang penyelidik kimia di Universiti Louisville telah memenangi geran untuk membangunkan... + +Matlamat kita adalah untuk mengklasifikasikan item berita ke dalam salah satu kategori berdasarkan teks. + +## Mewakili teks + +Jika kita ingin menyelesaikan tugas Pemprosesan Bahasa Semulajadi (NLP) dengan rangkaian neural, kita memerlukan cara untuk mewakili teks sebagai tensor. Komputer sudah mewakili watak teks sebagai nombor yang dipetakan kepada fon pada skrin anda menggunakan pengekodan seperti ASCII atau UTF-8. + +Gambar menunjukkan diagram yang memetakan watak kepada representasi ASCII dan binari + +> [Sumber gambar](https://www.seobility.net/en/wiki/ASCII) + +Sebagai manusia, kita memahami apa yang setiap huruf **wakili**, dan bagaimana semua watak bersatu untuk membentuk perkataan dalam satu ayat. Namun, komputer tidak mempunyai pemahaman tersebut, dan rangkaian neural perlu belajar makna tersebut semasa latihan. + +Oleh itu, kita boleh menggunakan pelbagai pendekatan apabila mewakili teks: + +* **Representasi tahap watak**, di mana kita mewakili teks dengan menganggap setiap watak sebagai nombor. Memandangkan kita mempunyai *C* watak yang berbeza dalam korpus teks kita, perkataan *Hello* akan diwakili oleh tensor 5x*C*. Setiap huruf akan sepadan dengan lajur tensor dalam pengekodan one-hot. +* **Representasi tahap perkataan**, di mana kita mencipta **perbendaharaan kata** bagi semua perkataan dalam teks kita, dan kemudian mewakili perkataan menggunakan pengekodan one-hot. Pendekatan ini adalah lebih baik, kerana setiap huruf sendiri tidak mempunyai banyak makna, dan dengan menggunakan konsep semantik yang lebih tinggi - perkataan - kita mempermudahkan tugas untuk rangkaian neural. Namun, memandangkan saiz kamus yang besar, kita perlu berhadapan dengan tensor jarang berdimensi tinggi. + +Tanpa mengira representasi, kita perlu terlebih dahulu menukarkan teks kepada urutan **token**, di mana satu token boleh jadi sama ada huruf, perkataan, atau kadangkala bahkan sebahagian daripada perkataan. Kemudian, kita menukarkan token kepada nombor, biasanya menggunakan **perbendaharaan kata**, dan nombor ini boleh dimasukkan ke dalam rangkaian neural menggunakan pengekodan one-hot. + +## N-Gram + +Dalam bahasa semulajadi, makna tepat perkataan hanya dapat ditentukan dalam konteks. Sebagai contoh, makna *rangkaian neural* dan *rangkaian memancing* adalah sangat berbeza. Salah satu cara untuk mengambil kira ini adalah dengan membina model kita berdasarkan pasangan perkataan, dan menganggap pasangan perkataan sebagai token perbendaharaan kata yang berasingan. Dengan cara ini, ayat *Saya suka pergi memancing* akan diwakili oleh urutan token berikut: *Saya suka*, *suka pergi*, *pergi memancing*. Masalah dengan pendekatan ini adalah saiz kamus meningkat dengan ketara, dan kombinasi seperti *pergi memancing* dan *pergi membeli-belah* diwakili oleh token yang berbeza, yang tidak berkongsi sebarang persamaan semantik walaupun menggunakan kata kerja yang sama. + +Dalam beberapa kes, kita mungkin mempertimbangkan untuk menggunakan tri-gram -- kombinasi tiga perkataan -- juga. Oleh itu, pendekatan ini sering dipanggil **n-gram**. Selain itu, adalah wajar untuk menggunakan n-gram dengan representasi tahap watak, di mana n-gram akan lebih kurang sepadan dengan suku kata yang berbeza. + +## Beg Perkataan dan TF/IDF + +Apabila menyelesaikan tugas seperti klasifikasi teks, kita perlu dapat mewakili teks dengan satu vektor saiz tetap, yang akan kita gunakan sebagai input kepada pengklasifikasi padat akhir. Salah satu cara paling mudah untuk melakukan ini adalah dengan menggabungkan semua representasi perkataan individu, contohnya dengan menambahnya. Jika kita menambah pengekodan one-hot bagi setiap perkataan, kita akan berakhir dengan vektor frekuensi, menunjukkan berapa kali setiap perkataan muncul dalam teks. Representasi teks sedemikian dipanggil **beg perkataan** (BoW). + + + +> Gambar oleh penulis + +BoW pada dasarnya mewakili perkataan mana yang muncul dalam teks dan dalam kuantiti berapa, yang sememangnya boleh menjadi petunjuk yang baik tentang apa teks tersebut. Sebagai contoh, artikel berita mengenai politik mungkin mengandungi perkataan seperti *presiden* dan *negara*, manakala penerbitan saintifik akan mempunyai sesuatu seperti *penemuan*, *collider*, dan lain-lain. Oleh itu, frekuensi perkataan boleh dalam banyak kes menjadi petunjuk yang baik tentang kandungan teks. + +Masalah dengan BoW adalah bahawa beberapa perkataan umum, seperti *dan*, *adalah*, dan lain-lain muncul dalam kebanyakan teks, dan mereka mempunyai frekuensi tertinggi, menenggelamkan perkataan yang sebenarnya penting. Kita boleh mengurangkan kepentingan perkataan tersebut dengan mengambil kira frekuensi di mana perkataan muncul dalam keseluruhan koleksi dokumen. Ini adalah idea utama di sebalik pendekatan TF/IDF, yang dibincangkan dengan lebih terperinci dalam buku nota yang dilampirkan kepada pelajaran ini. + +Namun, tiada satu pun daripada pendekatan tersebut dapat sepenuhnya mengambil kira **semantik** teks. Kita memerlukan model rangkaian neural yang lebih kuat untuk melakukan ini, yang akan kita bincangkan kemudian dalam seksyen ini. + +## ✍️ Latihan: Representasi Teks + +Teruskan pembelajaran anda dalam buku nota berikut: + +* [Representasi Teks dengan PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Representasi Teks dengan TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Kesimpulan + +Setakat ini, kita telah mengkaji teknik yang dapat menambah berat frekuensi kepada perkataan yang berbeza. Namun, mereka tidak dapat mewakili makna atau susunan. Seperti yang dikatakan oleh ahli linguistik terkenal J. R. Firth pada tahun 1935, "Makna lengkap sebuah perkataan sentiasa kontekstual, dan tiada kajian tentang makna yang terpisah daripada konteks boleh diambil dengan serius." Kita akan belajar kemudian dalam kursus bagaimana untuk menangkap maklumat kontekstual dari teks menggunakan pemodelan bahasa. + +## 🚀 Cabaran + +Cuba beberapa latihan lain menggunakan beg-perkataan dan pelbagai model data. Anda mungkin terinspirasi oleh [pertandingan ini di Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) + +## [Kuiz Pasca-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Ulasan & Pembelajaran Sendiri + +Latih kemahiran anda dengan teknik embedding teks dan beg-perkataan di [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + +## [Tugasan: Buku Nota](assignment.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/13-TextRep/assignment.md b/translations/ms/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..e4f35508 --- /dev/null +++ b/translations/ms/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# Tugasan: Notebooks + +Menggunakan notebook yang berkaitan dengan pelajaran ini (sama ada versi PyTorch atau TensorFlow), jalankan semula menggunakan dataset anda sendiri, mungkin salah satu dari Kaggle, yang digunakan dengan atribusi. Tulis semula notebook untuk menekankan penemuan anda sendiri. Cuba beberapa dataset yang inovatif yang mungkin mengejutkan, seperti [yang ini mengenai penglihatan UFO](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) dari NUFORC. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa ibundanya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/14-Embeddings/README.md b/translations/ms/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..45b0b8b5 --- /dev/null +++ b/translations/ms/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# Penyematan + +## [Kuis pra-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Ketika melatih pengklasifikasi berdasarkan BoW atau TF/IDF, kami bekerja pada vektor bag-of-words berdimensi tinggi dengan panjang `vocab_size`, dan kami secara eksplisit mengubah dari vektor representasi posisi berdimensi rendah menjadi representasi one-hot yang jarang. Namun, representasi one-hot ini tidak efisien dalam penggunaan memori. Selain itu, setiap kata diperlakukan secara independen satu sama lain, yaitu vektor yang di-encode one-hot tidak mengekspresikan kesamaan semantik antara kata-kata. + +Ide dari **penyematan** adalah untuk merepresentasikan kata-kata dengan vektor padat berdimensi lebih rendah, yang entah bagaimana mencerminkan makna semantik dari sebuah kata. Kita akan membahas lebih lanjut bagaimana membangun penyematan kata yang bermakna, tetapi untuk saat ini mari kita anggap penyematan sebagai cara untuk mengurangi dimensi dari vektor kata. + +Jadi, lapisan penyematan akan mengambil sebuah kata sebagai input, dan menghasilkan vektor output dengan panjang yang ditentukan `embedding_size`. Dalam hal ini, ini sangat mirip dengan lapisan `Linear`, tetapi alih-alih mengambil vektor yang di-encode one-hot, ia akan dapat menerima nomor kata sebagai input, memungkinkan kita untuk menghindari pembuatan vektor yang besar dengan encoding one-hot. + +Dengan menggunakan lapisan penyematan sebagai lapisan pertama dalam jaringan pengklasifikasi kita, kita dapat beralih dari model bag-of-words ke model **embedding bag**, di mana kita pertama-tama mengonversi setiap kata dalam teks kita menjadi penyematan yang sesuai, dan kemudian menghitung beberapa fungsi agregat atas semua penyematan tersebut, seperti `sum`, `average` atau `max`. + +![Gambar yang menunjukkan pengklasifikasi penyematan untuk lima kata urutan.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ms.png) + +> Gambar oleh penulis + +## ✍️ Latihan: Penyematan + +Lanjutkan pembelajaran Anda di notebook berikut: +* [Penyematan dengan PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Penyematan TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Penyematan Semantik: Word2Vec + +Sementara lapisan penyematan belajar untuk memetakan kata-kata ke representasi vektor, representasi ini tidak selalu memiliki banyak makna semantik. Akan sangat baik jika kita dapat belajar representasi vektor sedemikian rupa sehingga kata-kata yang serupa atau sinonim berkorespondensi dengan vektor yang dekat satu sama lain dalam hal jarak vektor tertentu (misalnya, jarak Euclidean). + +Untuk melakukan itu, kita perlu melatih model penyematan kita terlebih dahulu pada koleksi teks besar dengan cara tertentu. Salah satu cara untuk melatih penyematan semantik disebut [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Ini didasarkan pada dua arsitektur utama yang digunakan untuk menghasilkan representasi terdistribusi dari kata-kata: + + - **Continuous bag-of-words** (CBoW) — dalam arsitektur ini, kita melatih model untuk memprediksi sebuah kata dari konteks sekitarnya. Mengingat ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, tujuan model adalah untuk memprediksi $W_0$ dari $(W_{-2},W_{-1},W_1,W_2)$. + - **Continuous skip-gram** adalah kebalikan dari CBoW. Model ini menggunakan jendela kata konteks di sekitarnya untuk memprediksi kata saat ini. + +CBoW lebih cepat, sementara skip-gram lebih lambat, tetapi lebih baik dalam merepresentasikan kata-kata yang jarang. + +![Gambar yang menunjukkan algoritma CBoW dan Skip-Gram untuk mengonversi kata menjadi vektor.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ms.png) + +> Gambar dari [makalah ini](https://arxiv.org/pdf/1301.3781.pdf) + +Penyematan yang sudah dilatih sebelumnya dengan Word2Vec (serta model serupa lainnya, seperti GloVe) juga dapat digunakan sebagai pengganti lapisan penyematan dalam jaringan saraf. Namun, kita perlu menangani kosakata, karena kosakata yang digunakan untuk melatih Word2Vec/GloVe kemungkinan berbeda dari kosakata dalam korpus teks kita. Lihatlah notebook di atas untuk melihat bagaimana masalah ini dapat diatasi. + +## Penyematan Kontekstual + +Salah satu keterbatasan utama dari representasi penyematan yang dilatih sebelumnya seperti Word2Vec adalah masalah disambiguasi makna kata. Meskipun penyematan yang dilatih sebelumnya dapat menangkap beberapa makna kata dalam konteks, setiap kemungkinan makna dari sebuah kata dienkode ke dalam penyematan yang sama. Ini dapat menyebabkan masalah dalam model hilir, karena banyak kata seperti kata 'play' memiliki makna yang berbeda tergantung pada konteks di mana kata tersebut digunakan. + +Misalnya, kata 'play' dalam dua kalimat berbeda ini memiliki makna yang cukup berbeda: + +- Saya pergi ke **pertunjukan** di teater. +- John ingin **bermain** dengan teman-temannya. + +Penyematan yang dilatih sebelumnya di atas merepresentasikan kedua makna dari kata 'play' dalam penyematan yang sama. Untuk mengatasi keterbatasan ini, kita perlu membangun penyematan berdasarkan **model bahasa**, yang dilatih pada korpus teks besar, dan *tahu* bagaimana kata-kata dapat disusun dalam konteks yang berbeda. Membahas penyematan kontekstual berada di luar cakupan tutorial ini, tetapi kita akan kembali ke topik tersebut saat membahas model bahasa nanti dalam kursus. + +## Kesimpulan + +Dalam pelajaran ini, Anda telah menemukan cara membangun dan menggunakan lapisan penyematan di TensorFlow dan Pytorch untuk lebih mencerminkan makna semantik dari kata-kata. + +## 🚀 Tantangan + +Word2Vec telah digunakan untuk beberapa aplikasi menarik, termasuk menghasilkan lirik lagu dan puisi. Lihatlah [artikel ini](https://www.politetype.com/blog/word2vec-color-poems) yang menjelaskan bagaimana penulis menggunakan Word2Vec untuk menghasilkan puisi. Tonton juga [video ini oleh Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) untuk menemukan penjelasan berbeda tentang teknik ini. Kemudian coba terapkan teknik ini pada korpus teks Anda sendiri, mungkin diambil dari Kaggle. + +## [Kuis pasca-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Tinjauan & Studi Mandiri + +Baca makalah ini tentang Word2Vec: [Estimasi Efisien Representasi Kata dalam Ruang Vektor](https://arxiv.org/pdf/1301.3781.pdf) + +## [Tugas: Notebook](assignment.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi ralat atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia yang profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/14-Embeddings/assignment.md b/translations/ms/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..0ad0cd90 --- /dev/null +++ b/translations/ms/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# Tugasan: Buku Nota + +Menggunakan buku nota yang berkaitan dengan pelajaran ini (sama ada versi PyTorch atau TensorFlow), jalankan semula menggunakan set data anda sendiri, mungkin salah satu dari Kaggle, dengan memberikan atribusi. Tulis semula buku nota untuk menekankan penemuan anda sendiri. Cuba jenis set data yang berbeza dan dokumentasikan penemuan anda, menggunakan teks seperti [lirik Beatles ini](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia yang profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/15-LanguageModeling/README.md b/translations/ms/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..000502ae --- /dev/null +++ b/translations/ms/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# Pemodelan Bahasa + +Penyematan semantik, seperti Word2Vec dan GloVe, sebenarnya adalah langkah pertama menuju **pemodelan bahasa** - menciptakan model yang entah bagaimana *memahami* (atau *merepresentasikan*) sifat bahasa. + +## [Kuis Pra-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Ide utama di balik pemodelan bahasa adalah melatih model tersebut pada dataset yang tidak diberi label dengan cara yang tidak diawasi. Ini penting karena kita memiliki jumlah teks tidak berlabel yang sangat besar, sementara jumlah teks berlabel selalu akan terbatas oleh jumlah usaha yang dapat kita habiskan untuk memberi label. Sebagian besar waktu, kita dapat membangun model bahasa yang dapat **memprediksi kata yang hilang** dalam teks, karena mudah untuk menyembunyikan kata acak dalam teks dan menggunakannya sebagai sampel pelatihan. + +## Melatih Penyematan + +Dalam contoh-contoh sebelumnya, kita menggunakan penyematan semantik yang sudah dilatih, tetapi menarik untuk melihat bagaimana penyematan tersebut dapat dilatih. Ada beberapa ide yang dapat digunakan: + +* Pemodelan bahasa **N-Gram**, ketika kita memprediksi sebuah token dengan melihat N token sebelumnya (N-gram) +* **Continuous Bag-of-Words** (CBoW), ketika kita memprediksi token tengah $W_0$ dalam urutan token $W_{-N}$, ..., $W_N$. +* **Skip-gram**, di mana kita memprediksi sekumpulan token tetangga {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} dari token tengah $W_0$. + +![gambar dari makalah tentang mengubah kata menjadi vektor](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ms.png) + +> Gambar dari [makalah ini](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Contoh Notebook: Melatih model CBoW + +Lanjutkan pembelajaran Anda di notebook berikut: + +* [Melatih CBoW Word2Vec dengan TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Melatih CBoW Word2Vec dengan PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Kesimpulan + +Dalam pelajaran sebelumnya, kita telah melihat bahwa penyematan kata bekerja seperti sihir! Sekarang kita tahu bahwa melatih penyematan kata bukanlah tugas yang sangat kompleks, dan kita seharusnya dapat melatih penyematan kata kita sendiri untuk teks spesifik domain jika diperlukan. + +## [Kuis Pasca-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Tinjauan & Studi Mandiri + +* [Tutorial Resmi PyTorch tentang Pemodelan Bahasa](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial Resmi TensorFlow tentang melatih model Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* Menggunakan kerangka **gensim** untuk melatih penyematan yang paling umum digunakan dalam beberapa baris kode dijelaskan [dalam dokumentasi ini](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Tugas: Latih Model Skip-Gram](lab/README.md) + +Dalam lab, kami menantang Anda untuk memodifikasi kode dari pelajaran ini untuk melatih model skip-gram alih-alih CBoW. [Baca detailnya](lab/README.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/ms/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..3c4fe12a --- /dev/null +++ b/translations/ms/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Melatih Model Skip-Gram + +Tugasan Makmal dari [Kurikulum AI untuk Pemula](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Dalam makmal ini, kami mencabar anda untuk melatih model Word2Vec menggunakan teknik Skip-Gram. Latih rangkaian dengan embedding untuk meramalkan kata-kata jiran dalam tetingkap Skip-Gram yang lebar $N$-token. Anda boleh menggunakan [kod dari pelajaran ini](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb), dan sedikit mengubahnya. + +## Dataset + +Anda boleh menggunakan mana-mana buku. Anda boleh menemui banyak teks percuma di [Project Gutenberg](https://www.gutenberg.org/), sebagai contoh, berikut adalah pautan langsung kepada [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) oleh Lewis Carroll. Atau, anda boleh menggunakan drama-drama Shakespeare, yang boleh anda perolehi dengan menggunakan kod berikut: + +```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') +``` + +## Teroka! + +Jika anda mempunyai masa dan ingin mendalami subjek ini, cuba teroka beberapa perkara: + +* Bagaimana saiz embedding mempengaruhi hasil? +* Bagaimana gaya teks yang berbeza mempengaruhi hasil? +* Ambil beberapa jenis kata yang sangat berbeza dan sinonimnya, peroleh representasi vektor mereka, gunakan PCA untuk mengurangkan dimensi kepada 2, dan plotkan mereka dalam ruang 2D. Adakah anda melihat sebarang corak? + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/16-RNN/README.md b/translations/ms/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..5c1a3c77 --- /dev/null +++ b/translations/ms/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,86 @@ +# Rangkaian Neural Recurrent + +## [Kuis pra-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +Dalam bagian sebelumnya, kita telah menggunakan representasi semantik yang kaya dari teks dan pengklasifikasi linier sederhana di atas embedding. Apa yang dilakukan arsitektur ini adalah menangkap makna agregat kata-kata dalam sebuah kalimat, tetapi tidak mempertimbangkan **urutan** kata, karena operasi agregasi di atas embedding menghilangkan informasi ini dari teks asli. Karena model-model ini tidak dapat memodelkan urutan kata, mereka tidak dapat menyelesaikan tugas yang lebih kompleks atau ambigu seperti generasi teks atau menjawab pertanyaan. + +Untuk menangkap makna urutan teks, kita perlu menggunakan arsitektur jaringan saraf lain, yang disebut **rangkaian neural recurrent**, atau RNN. Dalam RNN, kita mengalirkan kalimat kita melalui jaringan satu simbol pada satu waktu, dan jaringan menghasilkan **status** tertentu, yang kemudian kita kirimkan kembali ke jaringan dengan simbol berikutnya. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ms.png) + +> Gambar oleh penulis + +Mengingat urutan input token X0,...,Xn, RNN menciptakan urutan blok jaringan saraf, dan melatih urutan ini dari awal hingga akhir menggunakan backpropagation. Setiap blok jaringan mengambil pasangan (Xi,Si) sebagai input, dan menghasilkan Si+1 sebagai hasil. Status akhir Sn atau (output Yn) masuk ke pengklasifikasi linier untuk menghasilkan hasil. Semua blok jaringan berbagi bobot yang sama, dan dilatih dari awal hingga akhir menggunakan satu kali backpropagation. + +Karena vektor status S0,...,Sn dikirim melalui jaringan, ia dapat mempelajari ketergantungan berurutan antara kata-kata. Misalnya, ketika kata *not* muncul di suatu tempat dalam urutan, ia dapat belajar untuk menegasikan elemen tertentu dalam vektor status, yang menghasilkan negasi. + +> ✅ Karena bobot semua blok RNN pada gambar di atas dibagikan, gambar yang sama dapat direpresentasikan sebagai satu blok (di sebelah kanan) dengan loop umpan balik berulang, yang mengirimkan status output jaringan kembali ke input. + +## Anatomi Sel RNN + +Mari kita lihat bagaimana sel RNN sederhana diorganisasi. Ia menerima status sebelumnya Si-1 dan simbol saat ini Xi sebagai input, dan harus menghasilkan status output Si (dan, terkadang, kita juga tertarik pada output lain Yi, seperti dalam kasus dengan jaringan generatif). + +Sel RNN sederhana memiliki dua matriks bobot di dalamnya: satu mengubah simbol input (sebut saja W), dan satu lagi mengubah status input (H). Dalam hal ini, output jaringan dihitung sebagai σ(W×Xi+H×Si-1+b), di mana σ adalah fungsi aktivasi dan b adalah bias tambahan. + +Anatomi Sel RNN + +> Gambar oleh penulis + +Dalam banyak kasus, token input dikirim melalui lapisan embedding sebelum masuk ke RNN untuk mengurangi dimensi. Dalam hal ini, jika dimensi vektor input adalah *emb_size*, dan vektor status adalah *hid_size* - ukuran W adalah *emb_size*×*hid_size*, dan ukuran H adalah *hid_size*×*hid_size*. + +## Memori Jangka Panjang Pendek (LSTM) + +Salah satu masalah utama RNN klasik adalah masalah **gradien yang menghilang**. Karena RNN dilatih dari awal hingga akhir dalam satu kali backpropagation, ia mengalami kesulitan dalam menyebarkan kesalahan ke lapisan pertama jaringan, dan dengan demikian jaringan tidak dapat mempelajari hubungan antara token yang jauh. Salah satu cara untuk menghindari masalah ini adalah dengan memperkenalkan **manajemen status eksplisit** dengan menggunakan yang disebut **gerbang**. Ada dua arsitektur terkenal dari jenis ini: **Memori Jangka Panjang Pendek** (LSTM) dan **Unit Relay Tergerbang** (GRU). + +![Gambar yang menunjukkan contoh sel memori jangka panjang pendek](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Sumber gambar TBD + +Jaringan LSTM diorganisasi dengan cara yang mirip dengan RNN, tetapi ada dua status yang diteruskan dari lapisan ke lapisan: status aktual C, dan vektor tersembunyi H. Di setiap unit, vektor tersembunyi Hi digabungkan dengan input Xi, dan mereka mengontrol apa yang terjadi pada status C melalui **gerbang**. Setiap gerbang adalah jaringan saraf dengan aktivasi sigmoid (output dalam rentang [0,1]), yang dapat dianggap sebagai masker bitwise saat dikalikan dengan vektor status. Ada gerbang berikut (dari kiri ke kanan pada gambar di atas): + +* **Gerbang lupa** mengambil vektor tersembunyi dan menentukan komponen mana dari vektor C yang perlu kita lupakan, dan mana yang harus diteruskan. +* **Gerbang input** mengambil beberapa informasi dari vektor input dan tersembunyi dan menyisipkannya ke dalam status. +* **Gerbang output** mengubah status melalui lapisan linier dengan aktivasi *tanh*, kemudian memilih beberapa komponen menggunakan vektor tersembunyi Hi untuk menghasilkan status baru Ci+1. + +Komponen dari status C dapat dianggap sebagai beberapa bendera yang dapat diaktifkan dan dinonaktifkan. Misalnya, ketika kita menemui nama *Alice* dalam urutan, kita mungkin ingin menganggap bahwa itu merujuk pada karakter perempuan, dan mengangkat bendera dalam status bahwa kita memiliki kata benda perempuan dalam kalimat. Ketika kita lebih lanjut menemui frasa *dan Tom*, kita akan mengangkat bendera bahwa kita memiliki kata benda jamak. Dengan demikian, dengan memanipulasi status kita, kita dapat menjaga jejak sifat-sifat tata bahasa dari bagian kalimat. + +> ✅ Sumber yang sangat baik untuk memahami bagian dalam LSTM adalah artikel hebat ini [Memahami Jaringan LSTM](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) oleh Christopher Olah. + +## RNN Dua Arah dan Multilapis + +Kita telah membahas jaringan berulang yang beroperasi dalam satu arah, dari awal urutan hingga akhir. Ini terlihat alami, karena menyerupai cara kita membaca dan mendengarkan ucapan. Namun, karena dalam banyak kasus praktis kita memiliki akses acak ke urutan input, mungkin masuk akal untuk menjalankan komputasi berulang dalam kedua arah. Jaringan semacam itu disebut **RNN dua arah**. Ketika berurusan dengan jaringan dua arah, kita memerlukan dua vektor status tersembunyi, satu untuk setiap arah. + +Jaringan berulang, baik satu arah maupun dua arah, menangkap pola tertentu dalam urutan, dan dapat menyimpannya ke dalam vektor status atau meneruskannya ke output. Seperti pada jaringan konvolusional, kita dapat membangun lapisan berulang lain di atas yang pertama untuk menangkap pola tingkat tinggi dan membangun dari pola tingkat rendah yang diekstrak oleh lapisan pertama. Ini membawa kita pada gagasan **RNN multilapis** yang terdiri dari dua atau lebih jaringan berulang, di mana output dari lapisan sebelumnya diteruskan ke lapisan berikutnya sebagai input. + +![Gambar yang menunjukkan RNN multilapis memori jangka pendek](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ms.jpg) + +*Gambar dari [pos yang luar biasa ini](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) oleh Fernando López* + +## ✍️ Latihan: Embedding + +Lanjutkan pembelajaran Anda di notebook berikut: + +* [RNN dengan PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNN dengan TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Kesimpulan + +Dalam unit ini, kita telah melihat bahwa RNN dapat digunakan untuk klasifikasi urutan, tetapi sebenarnya, mereka dapat menangani banyak tugas lainnya, seperti generasi teks, penerjemahan mesin, dan lainnya. Kita akan mempertimbangkan tugas-tugas tersebut di unit berikutnya. + +## 🚀 Tantangan + +Baca beberapa literatur tentang LSTM dan pertimbangkan aplikasinya: + +- [Memori Jangka Pendek Jaringan Grid](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Tampilkan, Perhatikan dan Ceritakan: Generasi Keterangan Gambar Neural dengan Perhatian Visual](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [Kuis pasca-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Tinjauan & Studi Mandiri + +- [Memahami Jaringan LSTM](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) oleh Christopher Olah. + +## [Tugas: Notebook](assignment.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/16-RNN/assignment.md b/translations/ms/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..25a9eed8 --- /dev/null +++ b/translations/ms/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# Tugasan: Buku Nota + +Menggunakan buku nota yang berkaitan dengan pelajaran ini (sama ada versi PyTorch atau TensorFlow), jalankan semula menggunakan set data anda sendiri, mungkin satu dari Kaggle, dengan memberikan atribusi. Tulis semula buku nota untuk menekankan penemuan anda sendiri. Cuba jenis set data yang berbeza dan dokumentasikan penemuan anda, menggunakan teks seperti [set data pertandingan Kaggle tentang tweet cuaca ini](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/ms/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..27a6d119 --- /dev/null +++ b/translations/ms/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# Jaringan Generatif + +## [Kuiz Pra-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Jaringan Saraf Tiruan Berulang (RNN) dan varian sel tergeraknya seperti Sel Memori Jangka Panjang Pendek (LSTM) dan Unit Berulang Tergerak (GRU) menyediakan mekanisme untuk pemodelan bahasa dengan cara mereka dapat mempelajari urutan kata dan memberikan prediksi untuk kata berikutnya dalam sebuah urutan. Ini memungkinkan kita menggunakan RNN untuk **tugas generatif**, seperti pembuatan teks biasa, terjemahan mesin, dan bahkan penulisan keterangan gambar. + +> ✅ Pikirkan tentang semua kali Anda mendapat manfaat dari tugas generatif seperti penyelesaian teks saat Anda mengetik. Lakukan riset tentang aplikasi favorit Anda untuk melihat apakah mereka memanfaatkan RNN. + +Dalam arsitektur RNN yang kita diskusikan di unit sebelumnya, setiap unit RNN menghasilkan keadaan tersembunyi berikutnya sebagai output. Namun, kita juga dapat menambahkan output lain ke setiap unit berulang, yang memungkinkan kita untuk mengeluarkan sebuah **urutan** (yang panjangnya sama dengan urutan asli). Selain itu, kita dapat menggunakan unit RNN yang tidak menerima input di setiap langkah, dan hanya mengambil beberapa vektor keadaan awal, lalu menghasilkan urutan output. + +Ini memungkinkan berbagai arsitektur neural yang ditunjukkan dalam gambar di bawah ini: + +![Gambar yang menunjukkan pola jaringan saraf berulang yang umum.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ms.jpg) + +> Gambar dari pos blog [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) oleh [Andrej Karpaty](http://karpathy.github.io/) + +* **Satu-ke-satu** adalah jaringan saraf tradisional dengan satu input dan satu output +* **Satu-ke-banyak** adalah arsitektur generatif yang menerima satu nilai input, dan menghasilkan urutan nilai output. Misalnya, jika kita ingin melatih jaringan **penulisan keterangan gambar** yang akan menghasilkan deskripsi teks dari sebuah gambar, kita dapat menggunakan gambar sebagai input, mengoperasikannya melalui CNN untuk mendapatkan keadaan tersembunyi, dan kemudian memiliki rantai berulang yang menghasilkan keterangan kata demi kata +* **Banyak-ke-satu** sesuai dengan arsitektur RNN yang kita jelaskan di unit sebelumnya, seperti klasifikasi teks +* **Banyak-ke-banyak**, atau **urutan-ke-urutan** sesuai dengan tugas seperti **terjemahan mesin**, di mana kita memiliki RNN pertama yang mengumpulkan semua informasi dari urutan input ke dalam keadaan tersembunyi, dan rantai RNN lainnya menguraikan keadaan ini menjadi urutan output. + +Dalam unit ini, kita akan fokus pada model generatif sederhana yang membantu kita menghasilkan teks. Untuk kesederhanaan, kita akan menggunakan tokenisasi tingkat karakter. + +Kita akan melatih RNN ini untuk menghasilkan teks langkah demi langkah. Pada setiap langkah, kita akan mengambil urutan karakter dengan panjang `nchars`, dan meminta jaringan untuk menghasilkan karakter output berikutnya untuk setiap karakter input: + +![Gambar yang menunjukkan contoh RNN menghasilkan kata 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ms.png) + +Saat menghasilkan teks (selama inferensi), kita mulai dengan beberapa **prompt**, yang diteruskan melalui sel RNN untuk menghasilkan keadaan intermediatenya, dan kemudian dari keadaan ini, generasi dimulai. Kita menghasilkan satu karakter pada satu waktu, dan meneruskan keadaan dan karakter yang dihasilkan ke sel RNN lainnya untuk menghasilkan karakter berikutnya, sampai kita menghasilkan cukup karakter. + + + +> Gambar oleh penulis + +## ✍️ Latihan: Jaringan Generatif + +Lanjutkan pembelajaran Anda di notebook berikut: + +* [Jaringan Generatif dengan PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Jaringan Generatif dengan TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Generasi teks lembut dan suhu + +Output dari setiap sel RNN adalah distribusi probabilitas karakter. Jika kita selalu mengambil karakter dengan probabilitas tertinggi sebagai karakter berikutnya dalam teks yang dihasilkan, teks sering kali bisa menjadi "terulang" antara urutan karakter yang sama berulang kali, seperti dalam contoh ini: + +``` +today of the second the company and a second the company ... +``` + +Namun, jika kita melihat distribusi probabilitas untuk karakter berikutnya, bisa jadi bahwa perbedaan antara beberapa probabilitas tertinggi tidak besar, misalnya, satu karakter bisa memiliki probabilitas 0.2, karakter lain - 0.19, dan seterusnya. Misalnya, saat mencari karakter berikutnya dalam urutan '*play*', karakter berikutnya bisa sama baiknya menjadi spasi, atau **e** (seperti dalam kata *player*). + +Ini membawa kita pada kesimpulan bahwa tidak selalu "adil" untuk memilih karakter dengan probabilitas lebih tinggi, karena memilih karakter kedua tertinggi mungkin masih membawa kita ke teks yang bermakna. Lebih bijaksana untuk **mengambil sampel** karakter dari distribusi probabilitas yang diberikan oleh output jaringan. Kita juga dapat menggunakan parameter, **suhu**, yang akan meratakan distribusi probabilitas, jika kita ingin menambahkan lebih banyak kebetulan, atau membuatnya lebih curam, jika kita ingin tetap lebih pada karakter dengan probabilitas tertinggi. + +Jelajahi bagaimana generasi teks lembut ini diimplementasikan dalam notebook yang terhubung di atas. + +## Kesimpulan + +Meskipun generasi teks mungkin berguna dengan sendirinya, manfaat utama datang dari kemampuan untuk menghasilkan teks menggunakan RNN dari beberapa vektor fitur awal. Misalnya, generasi teks digunakan sebagai bagian dari terjemahan mesin (urutan-ke-urutan, dalam hal ini vektor keadaan dari *encoder* digunakan untuk menghasilkan atau *menguraikan* pesan yang diterjemahkan), atau menghasilkan deskripsi tekstual dari sebuah gambar (di mana vektor fitur akan berasal dari ekstraktor CNN). + +## 🚀 Tantangan + +Ambil beberapa pelajaran di Microsoft Learn tentang topik ini + +* Generasi Teks dengan [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) + +## [Kuiz Pasca-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Tinjauan & Studi Mandiri + +Berikut adalah beberapa artikel untuk memperluas pengetahuan Anda + +* Berbagai pendekatan untuk generasi teks dengan Rantai Markov, LSTM, dan GPT-2: [pos blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Contoh generasi teks dalam [dokumentasi Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Tugas](lab/README.md) + +Kita telah melihat bagaimana cara menghasilkan teks karakter demi karakter. Dalam lab, Anda akan menjelajahi generasi teks tingkat kata. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/ms/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..51751d03 --- /dev/null +++ b/translations/ms/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# Penjanaan Teks Perkataan Menggunakan RNN + +Tugasan Makmal daripada [Kurikulum AI untuk Pemula](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Dalam makmal ini, anda perlu mengambil mana-mana buku, dan menggunakannya sebagai dataset untuk melatih penjana teks peringkat perkataan. + +## Dataset + +Anda boleh menggunakan mana-mana buku. Anda boleh menemui banyak teks percuma di [Project Gutenberg](https://www.gutenberg.org/), sebagai contoh, berikut adalah pautan terus ke [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) oleh Lewis Carroll. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/ms/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..568b73c2 --- /dev/null +++ b/translations/ms/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# Mekanisme Perhatian dan Transformer + +## [Kuiz pra-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Salah satu masalah terpenting dalam domain NLP adalah **penerjemahan mesin**, sebuah tugas penting yang menjadi dasar alat seperti Google Translate. Di bagian ini, kita akan fokus pada penerjemahan mesin, atau, lebih umum, pada setiap tugas *urutan-ke-urutan* (yang juga disebut **transduksi kalimat**). + +Dengan RNN, urutan-ke-urutan diimplementasikan oleh dua jaringan berulang, di mana satu jaringan, **encoder**, mengompresi urutan masukan menjadi keadaan tersembunyi, sementara jaringan lainnya, **decoder**, mengubah keadaan tersembunyi ini menjadi hasil terjemahan. Ada beberapa masalah dengan pendekatan ini: + +* Keadaan akhir dari jaringan encoder kesulitan mengingat awal kalimat, sehingga menyebabkan kualitas model yang buruk untuk kalimat panjang. +* Semua kata dalam urutan memiliki dampak yang sama pada hasil. Namun, dalam kenyataannya, kata-kata tertentu dalam urutan masukan seringkali memiliki dampak yang lebih besar pada keluaran urutan daripada yang lain. + +**Mekanisme Perhatian** menyediakan cara untuk memberikan bobot pada dampak kontekstual dari setiap vektor masukan terhadap setiap prediksi keluaran dari RNN. Cara ini diimplementasikan dengan membuat jalur pendek antara keadaan sementara dari RNN masukan dan RNN keluaran. Dengan cara ini, saat menghasilkan simbol keluaran yt, kita akan mempertimbangkan semua keadaan tersembunyi masukan hi, dengan koefisien bobot yang berbeda αt,i. + +![Gambar menunjukkan model encoder/decoder dengan lapisan perhatian aditif](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ms.png) + +> Model encoder-decoder dengan mekanisme perhatian aditif dalam [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), dikutip dari [posting blog ini](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Matriks perhatian {αi,j} akan mewakili sejauh mana kata-kata masukan tertentu berperan dalam penghasilan kata tertentu dalam urutan keluaran. Di bawah ini adalah contoh matriks semacam itu: + +![Gambar menunjukkan contoh keselarasan yang ditemukan oleh RNNsearch-50, diambil dari Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ms.png) + +> Gambar dari [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Mekanisme perhatian bertanggung jawab atas banyak keadaan terkini atau hampir terkini dalam NLP. Namun, menambahkan perhatian sangat meningkatkan jumlah parameter model yang menyebabkan masalah skala dengan RNN. Salah satu batasan utama dalam menskalakan RNN adalah bahwa sifat berulang dari model membuatnya sulit untuk melakukan pelatihan secara batch dan paralel. Dalam RNN, setiap elemen dari urutan perlu diproses dalam urutan sekuensial yang berarti tidak dapat dengan mudah diparalelkan. + +![Encoder Decoder dengan Perhatian](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Gambar dari [Blog Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Adopsi mekanisme perhatian yang dikombinasikan dengan batasan ini menyebabkan penciptaan Model Transformer yang kini menjadi Standar Terkini yang kita kenal dan gunakan saat ini seperti BERT hingga Open-GPT3. + +## Model Transformer + +Salah satu ide utama di balik transformer adalah menghindari sifat sekuensial dari RNN dan menciptakan model yang dapat diparalelkan selama pelatihan. Ini dicapai dengan menerapkan dua ide: + +* pengkodean posisi +* menggunakan mekanisme perhatian diri untuk menangkap pola alih-alih RNN (atau CNN) (itulah sebabnya makalah yang memperkenalkan transformer disebut *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Pengkodean/Embedding Posisi + +Ide pengkodean posisi adalah sebagai berikut. +1. Ketika menggunakan RNN, posisi relatif dari token diwakili oleh jumlah langkah, dan oleh karena itu tidak perlu diwakili secara eksplisit. +2. Namun, setelah kita beralih ke perhatian, kita perlu mengetahui posisi relatif dari token dalam urutan. +3. Untuk mendapatkan pengkodean posisi, kita menambah urutan token kita dengan urutan posisi token dalam urutan (yaitu, urutan angka 0,1, ...). +4. Kita kemudian mencampurkan posisi token dengan vektor embedding token. Untuk mengubah posisi (bilangan bulat) menjadi vektor, kita dapat menggunakan berbagai pendekatan: + +* Embedding yang dapat dilatih, mirip dengan embedding token. Ini adalah pendekatan yang kita pertimbangkan di sini. Kita menerapkan lapisan embedding di atas baik token maupun posisi mereka, menghasilkan vektor embedding dengan dimensi yang sama, yang kemudian kita tambahkan bersama. +* Fungsi pengkodean posisi tetap, seperti yang diusulkan dalam makalah asli. + + + +> Gambar oleh penulis + +Hasil yang kita dapatkan dengan embedding posisi menggabungkan baik token asli maupun posisinya dalam urutan. + +### Perhatian Diri Multi-Kepala + +Selanjutnya, kita perlu menangkap beberapa pola dalam urutan kita. Untuk melakukan ini, transformer menggunakan mekanisme **perhatian diri**, yang pada dasarnya adalah perhatian yang diterapkan pada urutan yang sama sebagai masukan dan keluaran. Menerapkan perhatian diri memungkinkan kita untuk mempertimbangkan **konteks** dalam kalimat, dan melihat kata-kata mana yang saling terkait. Misalnya, ini memungkinkan kita untuk melihat kata-kata mana yang dirujuk oleh ko-referensi, seperti *itu*, dan juga mempertimbangkan konteks: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ms.png) + +> Gambar dari [Blog Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +Dalam transformer, kita menggunakan **Multi-Head Attention** untuk memberikan kekuatan kepada jaringan untuk menangkap berbagai jenis ketergantungan, misalnya hubungan kata jangka panjang vs. jangka pendek, ko-referensi vs. hal lain, dll. + +[Notebook TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) berisi lebih banyak rincian tentang implementasi lapisan transformer. + +### Perhatian Encoder-Decoder + +Dalam transformer, perhatian digunakan di dua tempat: + +* Untuk menangkap pola dalam teks masukan menggunakan perhatian diri +* Untuk melakukan penerjemahan urutan - ini adalah lapisan perhatian antara encoder dan decoder. + +Perhatian encoder-decoder sangat mirip dengan mekanisme perhatian yang digunakan dalam RNN, seperti yang dijelaskan di awal bagian ini. Diagram animasi ini menjelaskan peran perhatian encoder-decoder. + +![GIF Animasi menunjukkan bagaimana evaluasi dilakukan dalam model transformer.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Karena setiap posisi masukan dipetakan secara independen ke setiap posisi keluaran, transformer dapat melakukan paralelisasi lebih baik daripada RNN, yang memungkinkan model bahasa yang jauh lebih besar dan lebih ekspresif. Setiap kepala perhatian dapat digunakan untuk mempelajari berbagai hubungan antara kata yang meningkatkan tugas Pemrosesan Bahasa Alami yang lebih lanjut. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) adalah jaringan transformer multi-layer yang sangat besar dengan 12 lapisan untuk *BERT-base*, dan 24 untuk *BERT-large*. Model ini pertama kali dilatih pada korpus data teks yang besar (WikiPedia + buku) menggunakan pelatihan tanpa pengawasan (memprediksi kata-kata yang disembunyikan dalam kalimat). Selama pelatihan awal, model menyerap tingkat pemahaman bahasa yang signifikan yang kemudian dapat dimanfaatkan dengan dataset lain menggunakan penyempurnaan. Proses ini disebut **transfer learning**. + +![gambar dari http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ms.png) + +> Gambar [sumber](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Latihan: Transformers + +Lanjutkan pembelajaran Anda di notebook berikut: + +* [Transformers di PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformers di TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Kesimpulan + +Dalam pelajaran ini, Anda belajar tentang Transformers dan Mekanisme Perhatian, semua alat penting dalam kotak alat NLP. Ada banyak variasi arsitektur Transformer termasuk BERT, DistilBERT, BigBird, OpenGPT3, dan lebih banyak lagi yang dapat disempurnakan. Paket [HuggingFace](https://github.com/huggingface/) menyediakan repositori untuk melatih banyak arsitektur ini dengan PyTorch dan TensorFlow. + +## 🚀 Tantangan + +## [Kuiz pasca-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Tinjauan & Studi Mandiri + +* [Posting blog](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), menjelaskan makalah klasik [Attention is all you need](https://arxiv.org/abs/1706.03762) tentang transformer. +* [Seri posting blog](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) tentang transformer, menjelaskan arsitektur secara rinci. + +## [Tugas](assignment.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa ibunda harus dianggap sebagai sumber yang berautoriti. Untuk maklumat penting, terjemahan manusia yang profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/18-Transformers/assignment.md b/translations/ms/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..45fe3fd3 --- /dev/null +++ b/translations/ms/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# Tugas: Transformers + +Eksperimen dengan Transformers di HuggingFace! Cobalah beberapa skrip yang mereka sediakan untuk bekerja dengan berbagai model yang tersedia di situs mereka: https://huggingface.co/docs/transformers/run_scripts. Cobalah salah satu dataset mereka, kemudian impor salah satu dataset milikmu dari kurikulum ini atau dari Kaggle dan lihat apakah kamu dapat menghasilkan teks yang menarik. Buatlah sebuah notebook dengan temuanmu. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/19-NER/README.md b/translations/ms/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..1bcb9fa8 --- /dev/null +++ b/translations/ms/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,86 @@ +# Pengenalan Entiti Bernama + +Setakat ini, kita telah banyak memberi tumpuan kepada satu tugas NLP - pengelasan. Walau bagaimanapun, terdapat juga tugas NLP lain yang boleh dilaksanakan dengan rangkaian neural. Salah satu tugas tersebut adalah **[Pengenalan Entiti Bernama](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), yang berkaitan dengan pengenalan entiti tertentu dalam teks, seperti tempat, nama orang, selang tarikh-masa, formula kimia dan sebagainya. + +## [Kuiz Pra-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Contoh Penggunaan NER + +Anggaplah anda ingin membangunkan bot sembang bahasa semula jadi, yang serupa dengan Amazon Alexa atau Google Assistant. Cara bot sembang pintar berfungsi adalah untuk *memahami* apa yang dikehendaki pengguna dengan melakukan pengelasan teks pada ayat input. Hasil pengelasan ini dipanggil **niat**, yang menentukan apa yang sepatutnya dilakukan oleh bot sembang. + +Bot NER + +> Gambar oleh penulis + +Walau bagaimanapun, pengguna mungkin memberikan beberapa parameter sebagai sebahagian daripada frasa. Contohnya, apabila meminta cuaca, dia mungkin menentukan lokasi atau tarikh. Bot seharusnya dapat memahami entiti-entiti tersebut dan mengisi slot parameter dengan sewajarnya sebelum melakukan tindakan. Di sinilah NER berperanan. + +> ✅ Contoh lain adalah [menganalisis kertas perubatan saintifik](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Salah satu perkara utama yang perlu kita cari adalah istilah perubatan tertentu, seperti penyakit dan bahan perubatan. Walaupun sejumlah kecil penyakit mungkin dapat diekstrak menggunakan carian substring, entiti yang lebih kompleks, seperti sebatian kimia dan nama ubat, memerlukan pendekatan yang lebih kompleks. + +## NER sebagai Pengelasan Token + +Model NER pada dasarnya adalah **model pengelasan token**, kerana untuk setiap token input kita perlu memutuskan sama ada ia tergolong dalam entiti atau tidak, dan jika ya - kepada kelas entiti mana. + +Pertimbangkan tajuk kertas berikut: + +**Regurgitasi injap trikuspid** dan **karbonat litium** **toksisiti** pada bayi baru lahir. + +Entiti di sini adalah: + +* Regurgitasi injap trikuspid adalah penyakit (`DIS`) +* Karbonat litium adalah bahan kimia (`CHEM`) +* Toksisiti juga merupakan penyakit (`DIS`) + +Perhatikan bahawa satu entiti boleh meliputi beberapa token. Dan, seperti dalam kes ini, kita perlu membezakan antara dua entiti berturut-turut. Oleh itu, adalah biasa untuk menggunakan dua kelas bagi setiap entiti - satu yang menentukan token pertama entiti (selalunya awalan `B-` digunakan, untuk **b**ermula), dan satu lagi - sambungan entiti (`I-`, untuk **i**nner token). Kita juga menggunakan `O` sebagai kelas untuk mewakili semua token **o**ther. Penandaan token sedemikian dipanggil [penandaan BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (atau IOB). Apabila ditandakan, tajuk kita akan kelihatan seperti ini: + +Token | Tag +------|----- +Trikuspid | B-DIS +injap | I-DIS +regurgitasi | I-DIS +dan | O +litium | B-CHEM +karbonat | I-CHEM +toksisiti | B-DIS +dalam | O +sebuah | O +bayi | O +baru | O +lahir | O +. | O + +Oleh kerana kita perlu membina padanan satu-ke-satu antara token dan kelas, kita boleh melatih model rangkaian neural **banyak-ke-banyak** yang paling kanan daripada gambar ini: + +![Gambar menunjukkan corak rangkaian neural berulang yang biasa.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ms.jpg) + +> *Gambar dari [catatan blog ini](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) oleh [Andrej Karpathy](http://karpathy.github.io/). Model pengelasan token NER sepadan dengan seni bina rangkaian paling kanan dalam gambar ini.* + +## Melatih Model NER + +Oleh kerana model NER pada dasarnya adalah model pengelasan token, kita boleh menggunakan RNN yang sudah kita kenali untuk tugas ini. Dalam kes ini, setiap blok rangkaian berulang akan mengembalikan ID token. Contoh notebook berikut menunjukkan cara melatih LSTM untuk pengelasan token. + +## ✍️ Contoh Notebook: NER + +Teruskan pembelajaran anda dalam notebook berikut: + +* [NER dengan TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Kesimpulan + +Model NER adalah **model pengelasan token**, yang bermaksud ia boleh digunakan untuk melaksanakan pengelasan token. Ini adalah tugas yang sangat biasa dalam NLP, membantu mengenali entiti tertentu dalam teks termasuk tempat, nama, tarikh, dan banyak lagi. + +## 🚀 Cabaran + +Lengkapkan tugasan yang dipautkan di bawah untuk melatih model pengenalan entiti bernama untuk istilah perubatan, kemudian cuba pada dataset yang berbeza. + +## [Kuiz Pasca-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Ulasan & Pembelajaran Sendiri + +Baca blog [Keberkesanan Rangkaian Neural Berulang yang Tidak Masuk Akal](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) dan ikuti bahagian Bacaan Lanjut dalam artikel itu untuk mendalami pengetahuan anda. + +## [Tugasan](lab/README.md) + +Dalam tugasan untuk pelajaran ini, anda perlu melatih model pengenalan entiti perubatan. Anda boleh memulakan dengan melatih model LSTM seperti yang diterangkan dalam pelajaran ini, dan teruskan dengan menggunakan model transformer BERT. Baca [arahan](lab/README.md) untuk mendapatkan semua butiran. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia yang profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/19-NER/lab/README.md b/translations/ms/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..88c7b7c9 --- /dev/null +++ b/translations/ms/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +Tugasan Makmal daripada [Kurikulum AI untuk Pemula](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Dalam makmal ini, anda perlu melatih model pengenalan entiti bernama untuk istilah perubatan. + +## Dataset + +Untuk melatih model NER, kita memerlukan dataset yang dilabel dengan betul yang mengandungi entiti perubatan. Dataset [BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) mengandungi entiti penyakit dan bahan kimia yang dilabel daripada lebih daripada 1500 kertas. Anda boleh memuat turun dataset setelah mendaftar di laman web mereka. + +Dataset BC5CDR kelihatan seperti ini: + +``` +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 +... +``` + +Dalam dataset ini, terdapat tajuk kertas dan abstrak dalam dua baris pertama, dan seterusnya terdapat entiti individu, dengan posisi permulaan dan akhir dalam blok tajuk+abstrak. Selain jenis entiti, anda juga akan mendapat ID ontologi bagi entiti ini dalam beberapa ontologi perubatan. + +Anda perlu menulis beberapa kod Python untuk menukarkan ini ke dalam pengekodan BIO. + +## Rangkaian + +Percubaan pertama untuk NER boleh dilakukan dengan menggunakan rangkaian LSTM, seperti dalam contoh yang telah anda lihat semasa pelajaran. Walau bagaimanapun, dalam tugas NLP, seni bina [transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), dan khususnya [model bahasa BERT](https://en.wikipedia.org/wiki/BERT_(language_model)) menunjukkan hasil yang jauh lebih baik. Model BERT yang telah dilatih sebelum ini memahami struktur umum bahasa, dan boleh disesuaikan untuk tugas tertentu dengan dataset yang agak kecil dan kos pengiraan yang rendah. + +Oleh kerana kita merancang untuk menerapkan NER dalam senario perubatan, adalah masuk akal untuk menggunakan model BERT yang dilatih dengan teks perubatan. Microsoft Research telah mengeluarkan model yang telah dilatih sebelum ini yang dipanggil [PubMedBERT][PubMedBERT] ([penerbitan][PubMedBERT-Pub]), yang telah disesuaikan menggunakan teks daripada repositori [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +Standard *de facto* untuk melatih model transformer adalah perpustakaan [Hugging Face Transformers](https://huggingface.co/). Ia juga mengandungi repositori model yang telah dilatih sebelum ini yang dikendalikan oleh komuniti, termasuk PubMedBERT. Untuk memuatkan dan menggunakan model ini, kita hanya memerlukan beberapa baris kod: + +```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) +``` + +Ini memberikan kita objek `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` yang boleh memecahkan teks input kepada token. Anda perlu menukarkan dataset ke dalam format BIO, mengambil kira pen tokenan PubMedBERT. Anda boleh menggunakan [sepotong kod Python ini](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) sebagai inspirasi. + +## Pengajaran + +Tugas ini sangat dekat dengan tugas sebenar yang mungkin anda hadapi jika anda ingin mendapatkan lebih banyak wawasan tentang jumlah besar teks bahasa semula jadi. Dalam kes kita, kita boleh menerapkan model yang telah dilatih ke [dataset kertas berkaitan COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) dan melihat wawasan apa yang akan kita dapat. [Pos blog ini](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) dan [kertas ini](https://www.mdpi.com/2504-2289/6/1/4) menerangkan penyelidikan yang boleh dilakukan pada korpus kertas ini menggunakan NER. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa ibundanya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/ms/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..afed9a2c --- /dev/null +++ b/translations/ms/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,56 @@ +# Model Bahasa Besar yang Ditraining Sebelumnya + +Dalam semua tugas sebelumnya, kami melatih jaringan saraf untuk melakukan tugas tertentu menggunakan dataset yang dilabeli. Dengan model transformer besar, seperti BERT, kami menggunakan pemodelan bahasa dengan cara yang diawasi sendiri untuk membangun model bahasa, yang kemudian disesuaikan untuk tugas hilir tertentu dengan pelatihan spesifik domain lebih lanjut. Namun, telah dibuktikan bahwa model bahasa besar juga dapat menyelesaikan banyak tugas tanpa pelatihan spesifik domain. Keluarga model yang mampu melakukan hal itu disebut **GPT**: Generative Pre-Trained Transformer. + +## [Kuis Pra-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Generasi Teks dan Perplexity + +Ide tentang jaringan saraf yang dapat melakukan tugas umum tanpa pelatihan hilir disajikan dalam makalah [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Ide utamanya adalah banyak tugas lain dapat dimodelkan menggunakan **generasi teks**, karena memahami teks pada dasarnya berarti mampu memproduksinya. Karena model dilatih pada sejumlah besar teks yang mencakup pengetahuan manusia, ia juga menjadi mengetahui berbagai subjek. + +> Memahami dan mampu memproduksi teks juga berarti mengetahui sesuatu tentang dunia di sekitar kita. Orang juga belajar dengan membaca dalam jumlah besar, dan jaringan GPT serupa dalam hal ini. + +Jaringan generasi teks bekerja dengan memprediksi probabilitas kata berikutnya $$P(w_N)$$ Namun, probabilitas tanpa syarat dari kata berikutnya sama dengan frekuensi kata ini dalam korpus teks. GPT mampu memberikan **probabilitas bersyarat** dari kata berikutnya, mengingat kata-kata sebelumnya: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Anda dapat membaca lebih lanjut tentang probabilitas dalam [Kurikulum Data Science untuk Pemula kami](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) + +Kualitas model penghasil bahasa dapat didefinisikan menggunakan **perplexity**. Ini adalah metrik intrinsik yang memungkinkan kita mengukur kualitas model tanpa dataset spesifik tugas. Ini didasarkan pada pengertian *probabilitas sebuah kalimat* - model memberikan probabilitas tinggi pada kalimat yang kemungkinan besar nyata (yaitu model tidak **perplexed** olehnya), dan probabilitas rendah pada kalimat yang kurang masuk akal (misalnya *Bisakah itu melakukan apa?*). Ketika kami memberikan kalimat dari korpus teks nyata kepada model kami, kami berharap kalimat tersebut memiliki probabilitas tinggi, dan **perplexity** rendah. Secara matematis, ini didefinisikan sebagai probabilitas invers ternormalisasi dari set uji: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Anda dapat bereksperimen dengan generasi teks menggunakan [editor teks bertenaga GPT dari Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. Di editor ini, Anda mulai menulis teks Anda, dan menekan **[TAB]** akan menawarkan beberapa opsi penyelesaian. Jika opsi tersebut terlalu pendek, atau Anda tidak puas dengan mereka - tekan [TAB] lagi, dan Anda akan mendapatkan lebih banyak opsi, termasuk potongan teks yang lebih panjang. + +## GPT adalah Sebuah Keluarga + +GPT bukanlah model tunggal, melainkan kumpulan model yang dikembangkan dan dilatih oleh [OpenAI](https://openai.com). + +Di bawah model GPT, kami memiliki: + +| [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 bahasa dengan hingga 1,5 miliar parameter. | Model bahasa dengan hingga 175 miliar parameter | 100T parameter dan menerima input serta output teks dari gambar. | + + +Model GPT-3 dan GPT-4 tersedia [sebagai layanan kognitif dari Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste), dan sebagai [API OpenAI](https://openai.com/api/). + +## Rekayasa Prompt + +Karena GPT telah dilatih pada volume data yang sangat besar untuk memahami bahasa dan kode, mereka memberikan keluaran sebagai respons terhadap masukan (prompt). Prompt adalah masukan atau kueri GPT di mana seseorang memberikan instruksi kepada model tentang tugas yang akan mereka selesaikan selanjutnya. Untuk mendapatkan hasil yang diinginkan, Anda perlu menggunakan prompt yang paling efektif yang melibatkan pemilihan kata, format, frasa, atau bahkan simbol yang tepat. Pendekatan ini adalah [Rekayasa Prompt](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) + +[Dokumentasi ini](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) memberikan Anda informasi lebih lanjut tentang rekayasa prompt. + +## ✍️ Contoh Notebook: [Bermain dengan OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Lanjutkan pembelajaran Anda di notebook berikut: + +* [Menghasilkan teks dengan OpenAI-GPT dan Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Kesimpulan + +Model bahasa umum yang baru dilatih sebelumnya tidak hanya memodelkan struktur bahasa, tetapi juga mengandung sejumlah besar bahasa alami. Dengan demikian, mereka dapat digunakan secara efektif untuk menyelesaikan beberapa tugas NLP dalam pengaturan zero-shot atau few-shot. + +## [Kuis Pasca-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/5-NLP/README.md b/translations/ms/lessons/5-NLP/README.md new file mode 100644 index 00000000..376a0b5d --- /dev/null +++ b/translations/ms/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# Pemprosesan Bahasa Semulajadi + +![Ringkasan tugas NLP dalam doodle](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ms.png) + +Dalam bahagian ini, kita akan memberi tumpuan kepada penggunaan Rangkaian Neural untuk menangani tugas-tugas berkaitan dengan **Pemprosesan Bahasa Semulajadi (NLP)**. Terdapat banyak masalah NLP yang kita mahu komputer dapat selesaikan: + +* **Klasifikasi teks** adalah masalah klasifikasi tipikal yang berkaitan dengan urutan teks. Contohnya termasuk mengklasifikasikan mesej e-mel sebagai spam atau tidak spam, atau mengkategorikan artikel sebagai sukan, perniagaan, politik, dan lain-lain. Juga, semasa membangunkan bot sembang, kita sering perlu memahami apa yang ingin disampaikan oleh pengguna -- dalam kes ini kita berurusan dengan **klasifikasi niat**. Selalunya, dalam klasifikasi niat kita perlu berurusan dengan banyak kategori. +* **Analisis sentimen** adalah masalah regresi tipikal, di mana kita perlu memberikan nombor (sentimen) yang sepadan dengan betapa positif/negatifnya makna satu ayat. Versi yang lebih maju dari analisis sentimen adalah **analisis sentimen berasaskan aspek** (ABSA), di mana kita memberikan sentimen bukan kepada keseluruhan ayat, tetapi kepada bahagian-bahagian yang berbeza (aspek), contohnya *Di restoran ini, saya suka masakannya, tetapi suasananya sangat teruk*. +* **Pengenalan Entiti Bernama** (NER) merujuk kepada masalah mengekstrak entiti tertentu dari teks. Sebagai contoh, kita mungkin perlu memahami bahawa dalam frasa *Saya perlu terbang ke Paris esok* perkataan *esok* merujuk kepada TARIKH, dan *Paris* adalah LOKASI. +* **Pengeluaran kata kunci** adalah serupa dengan NER, tetapi kita perlu mengekstrak kata-kata yang penting untuk makna ayat secara automatik, tanpa pra-latihan untuk jenis entiti tertentu. +* **Pengelompokan teks** boleh berguna apabila kita ingin mengumpulkan ayat-ayat yang serupa, contohnya, permintaan serupa dalam perbualan sokongan teknikal. +* **Menjawab soalan** merujuk kepada kemampuan model untuk menjawab soalan tertentu. Model menerima petikan teks dan soalan sebagai input, dan ia perlu memberikan lokasi dalam teks di mana jawapan kepada soalan tersebut terkandung (atau, kadang-kadang, untuk menghasilkan teks jawapan). +* **Penjanaan Teks** adalah kemampuan model untuk menghasilkan teks baru. Ia boleh dianggap sebagai tugas klasifikasi yang meramalkan huruf/perkataan seterusnya berdasarkan *prompt teks* tertentu. Model penjanaan teks yang lebih maju, seperti GPT-3, mampu menyelesaikan tugas NLP lain seperti klasifikasi menggunakan teknik yang dipanggil [pemrograman prompt](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) atau [rekayasa prompt](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Pemadatan teks** adalah teknik di mana kita ingin komputer "membaca" teks yang panjang dan merangkumkannya dalam beberapa ayat. +* **Terjemahan mesin** boleh dilihat sebagai gabungan pemahaman teks dalam satu bahasa, dan penjanaan teks dalam bahasa lain. + +Pada mulanya, kebanyakan tugas NLP diselesaikan menggunakan kaedah tradisional seperti tatabahasa. Sebagai contoh, dalam terjemahan mesin, pengurai digunakan untuk mengubah ayat awal menjadi pokok sintaks, kemudian struktur semantik tahap tinggi diekstrak untuk mewakili makna ayat, dan berdasarkan makna ini dan tatabahasa bahasa sasaran, hasilnya dijana. Kini, banyak tugas NLP diselesaikan dengan lebih berkesan menggunakan rangkaian neural. + +> Banyak kaedah NLP klasik dilaksanakan dalam [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) pustaka Python. Terdapat [Buku NLTK](https://www.nltk.org/book/) yang hebat tersedia dalam talian yang membincangkan bagaimana pelbagai tugas NLP boleh diselesaikan menggunakan NLTK. + +Dalam kursus kita, kita akan lebih fokus kepada penggunaan Rangkaian Neural untuk NLP, dan kita akan menggunakan NLTK apabila perlu. + +Kita telah pun belajar tentang penggunaan rangkaian neural untuk menangani data tabular dan gambar. Perbezaan utama antara jenis data tersebut dan teks adalah bahawa teks adalah urutan dengan panjang yang berubah-ubah, sementara saiz input dalam kes gambar diketahui terlebih dahulu. Walaupun rangkaian konvolusi boleh mengekstrak corak dari data input, corak dalam teks adalah lebih kompleks. Contohnya, kita boleh mempunyai penolakan yang dipisahkan dari subjek yang boleh menjadi sewenang-wenangnya untuk banyak perkataan (contohnya *Saya tidak suka oren*, berbanding *Saya tidak suka oren yang besar berwarna-warni dan lazat*), dan itu masih perlu ditafsirkan sebagai satu corak. Oleh itu, untuk menangani bahasa kita perlu memperkenalkan jenis rangkaian neural baru, seperti *rangkaian berulang* dan *transformer*. + +## Pasang Pustaka + +Jika anda menggunakan pemasangan Python tempatan untuk menjalankan kursus ini, anda mungkin perlu memasang semua pustaka yang diperlukan untuk NLP menggunakan arahan berikut: + +**Untuk PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Untuk TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Anda boleh mencuba NLP dengan TensorFlow di [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Amaran GPU + +Dalam bahagian ini, dalam beberapa contoh kita akan melatih model yang agak besar. +* **Gunakan Komputer yang Dikuasakan GPU**: Adalah disyorkan untuk menjalankan buku nota anda pada komputer yang dikuasakan GPU untuk mengurangkan masa menunggu ketika bekerja dengan model yang besar. +* **Kekangan Memori GPU**: Menjalankan pada GPU mungkin menyebabkan situasi di mana anda kehabisan memori GPU, terutama ketika melatih model yang besar. +* **Penggunaan Memori GPU**: Jumlah memori GPU yang digunakan semasa latihan bergantung kepada pelbagai faktor, termasuk saiz minibatch. +* **Kurangkan Saiz Minibatch**: Jika anda menghadapi masalah memori GPU, pertimbangkan untuk mengurangkan saiz minibatch dalam kod anda sebagai penyelesaian yang berpotensi. +* **Pelepasan Memori GPU TensorFlow**: Versi TensorFlow yang lebih lama mungkin tidak melepaskan memori GPU dengan betul apabila melatih pelbagai model dalam satu kernel Python. Untuk mengurus penggunaan memori GPU dengan berkesan, anda boleh mengkonfigurasi TensorFlow untuk memperuntukkan memori GPU hanya apabila diperlukan. +* **Inklusi Kod**: Untuk menetapkan TensorFlow agar hanya mengembangkan pengagihan memori GPU apabila diperlukan, sertakan kod berikut dalam buku nota anda: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Jika anda berminat untuk belajar tentang NLP dari perspektif ML klasik, lawati [suite pelajaran ini](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) + +## Dalam Bahagian Ini +Dalam bahagian ini kita akan belajar tentang: + +* [Mewakili teks sebagai tensor](13-TextRep/README.md) +* [Penyisipan Kata](14-Emdeddings/README.md) +* [Pemodelan Bahasa](15-LanguageModeling/README.md) +* [Rangkaian Neural Berulang](16-RNN/README.md) +* [Rangkaian Generatif](17-GenerativeNetworks/README.md) +* [Transformers](18-Transformers/README.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa ibundanya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/ms/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..1420b3fa --- /dev/null +++ b/translations/ms/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# Algoritma Genetik + +## [Kuiz pra-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Algoritma Genetik** (GA) berasaskan pada pendekatan **evolusi** untuk AI, di mana kaedah evolusi populasi digunakan untuk mendapatkan penyelesaian optimum bagi masalah tertentu. Mereka dicadangkan pada tahun 1975 oleh [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). + +Algoritma Genetik berasaskan kepada idea berikut: + +* Penyelesaian yang sah kepada masalah boleh diwakili sebagai **gen** +* **Penyilangan** membolehkan kita menggabungkan dua penyelesaian untuk mendapatkan penyelesaian sah yang baru +* **Pemilihan** digunakan untuk memilih penyelesaian yang lebih optimum menggunakan beberapa **fungsi kecergasan** +* **Mutasi** diperkenalkan untuk mengganggu pengoptimuman dan mengeluarkan kita dari minimum tempatan + +Jika anda ingin melaksanakan Algoritma Genetik, anda memerlukan yang berikut: + + * Untuk mencari kaedah pengkodan penyelesaian masalah kita menggunakan **gen** g∈Γ + * Pada set gen Γ, kita perlu mendefinisikan **fungsi kecergasan** fit: Γ→**R**. Nilai fungsi yang lebih kecil berkaitan dengan penyelesaian yang lebih baik. + * Untuk mendefinisikan mekanisme **penyilangan** untuk menggabungkan dua gen untuk mendapatkan penyelesaian sah yang baru crossover: Γ2→Γ. + * Untuk mendefinisikan mekanisme **mutasi** mutate: Γ→Γ. + +Dalam banyak kes, penyilangan dan mutasi adalah algoritma yang agak mudah untuk memanipulasi gen sebagai urutan numerik atau vektor bit. + +Pelaksanaan khusus algoritma genetik boleh berbeza dari kes ke kes, tetapi struktur keseluruhannya adalah seperti berikut: + +1. Pilih populasi awal G⊂Γ +2. Pilih secara rawak salah satu operasi yang akan dilakukan pada langkah ini: penyilangan atau mutasi +3. **Penyilangan**: + * Pilih secara rawak dua gen g1, g2 ∈ G + * Kira penyilangan g=crossover(g1,g2) + * Jika fit(g)1) atau fit(g)2) - gantikan gen yang berkaitan dalam populasi dengan g. +4. **Mutasi** - pilih gen rawak g∈G dan gantikannya dengan mutate(g) +5. Ulang dari langkah 2, sehingga kita mendapatkan nilai fit yang cukup kecil, atau sehingga had pada bilangan langkah dicapai. + +## Tugas Tipikal + +Tugas yang biasanya diselesaikan oleh Algoritma Genetik termasuk: + +1. Pengoptimuman jadual +1. Pengemasan optimum +1. Pemotongan optimum +1. Mempercepat pencarian menyeluruh + +## ✍️ Latihan: Algoritma Genetik + +Teruskan pembelajaran anda dalam notebook berikut: + +Pergi ke [notebook ini](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) untuk melihat dua contoh penggunaan Algoritma Genetik: + +1. Pembahagian harta yang adil +1. Masalah 8 Ratu + +## Kesimpulan + +Algoritma Genetik digunakan untuk menyelesaikan banyak masalah, termasuk masalah logistik dan pencarian. Bidang ini diinspirasikan oleh penyelidikan yang menggabungkan topik dalam Psikologi dan Sains Komputer. + +## 🚀 Cabaran + +"Algoritma genetik mudah untuk dilaksanakan, tetapi tingkah lakunya sukar untuk difahami." [sumber](https://wikipedia.org/wiki/Genetic_algorithm) Lakukan penyelidikan untuk mencari pelaksanaan algoritma genetik seperti menyelesaikan teka-teki Sudoku, dan terangkan bagaimana ia berfungsi sebagai lakaran atau carta aliran. + +## [Kuiz pasca-perkuliahan](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Ulasan & Pembelajaran Sendiri + +Tonton [video hebat ini](https://www.youtube.com/watch?v=qv6UVOQ0F44) yang membincangkan bagaimana komputer boleh belajar untuk bermain Super Mario menggunakan rangkaian neural yang dilatih oleh algoritma genetik. Kita akan belajar lebih lanjut tentang pembelajaran komputer untuk bermain permainan seperti itu [dalam seksyen seterusnya](../22-DeepRL/README.md). + +## [Tugasan: Persamaan Diophantine](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Matlamat anda adalah untuk menyelesaikan apa yang dipanggil **persamaan Diophantine** - persamaan dengan akar integer. Sebagai contoh, pertimbangkan persamaan a+2b+3c+4d=30. Anda perlu mencari akar integer yang memenuhi persamaan ini. + +*Tugasan ini diinspirasikan oleh [pos ini](https://habr.com/post/128704/).* + +Petunjuk: + +1. Anda boleh mempertimbangkan akar berada dalam selang [0;30] +1. Sebagai gen, pertimbangkan menggunakan senarai nilai akar + +Gunakan [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) sebagai titik permulaan. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat kritikal, terjemahan manusia yang profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/6-Other/22-DeepRL/README.md b/translations/ms/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..0361c162 --- /dev/null +++ b/translations/ms/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# Pembelajaran Penguatan Dalam + +Pembelajaran penguatan (RL) dilihat sebagai salah satu paradigma dasar pembelajaran mesin, bersebelahan dengan pembelajaran terawasi dan pembelajaran tidak terawasi. Sementara dalam pembelajaran terawasi kita bergantung pada dataset dengan hasil yang diketahui, RL didasarkan pada **belajar melalui pengalaman**. Sebagai contoh, ketika kita pertama kali melihat permainan komputer, kita mulai bermain, bahkan tanpa mengetahui aturannya, dan segera kita dapat meningkatkan keterampilan kita hanya melalui proses bermain dan menyesuaikan perilaku kita. + +## [Kuiz Pra-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Untuk melakukan RL, kita memerlukan: + +* **Lingkungan** atau **simulator** yang menetapkan aturan permainan. Kita harus dapat menjalankan eksperimen dalam simulator dan mengamati hasilnya. +* Beberapa **Fungsi Reward**, yang menunjukkan seberapa sukses eksperimen kita. Dalam hal belajar bermain permainan komputer, reward akan menjadi skor akhir kita. + +Berdasarkan fungsi reward, kita harus dapat menyesuaikan perilaku kita dan meningkatkan keterampilan kita, sehingga di lain waktu kita bermain dengan lebih baik. Perbedaan utama antara jenis pembelajaran mesin lainnya dan RL adalah bahwa dalam RL kita biasanya tidak tahu apakah kita menang atau kalah sampai kita menyelesaikan permainan. Dengan demikian, kita tidak dapat mengatakan apakah gerakan tertentu baik atau tidak - kita hanya menerima reward di akhir permainan. + +Selama RL, kita biasanya melakukan banyak eksperimen. Selama setiap eksperimen, kita perlu menyeimbangkan antara mengikuti strategi optimal yang telah kita pelajari sejauh ini (**eksploitasi**) dan menjelajahi kemungkinan keadaan baru (**eksplorasi**). + +## OpenAI Gym + +Salah satu alat hebat untuk RL adalah [OpenAI Gym](https://gym.openai.com/) - sebuah **lingkungan simulasi**, yang dapat mensimulasikan banyak lingkungan berbeda mulai dari permainan Atari hingga fisika di balik penyeimbangan tiang. Ini adalah salah satu lingkungan simulasi yang paling populer untuk melatih algoritma pembelajaran penguatan, dan dikelola oleh [OpenAI](https://openai.com/). + +> **Catatan**: Anda dapat melihat semua lingkungan yang tersedia dari OpenAI Gym [di sini](https://gym.openai.com/envs/#classic_control). + +## Penyeimbangan CartPole + +Anda mungkin semua telah melihat perangkat penyeimbang modern seperti *Segway* atau *Gyroscooters*. Mereka mampu menyeimbangkan secara otomatis dengan menyesuaikan roda mereka sebagai respons terhadap sinyal dari akselerometer atau giroskop. Dalam bagian ini, kita akan belajar bagaimana menyelesaikan masalah serupa - menyeimbangkan sebuah tiang. Ini mirip dengan situasi ketika seorang penghibur sirkus perlu menyeimbangkan tiang di tangannya - tetapi penyeimbangan tiang ini hanya terjadi dalam 1D. + +Versi sederhana dari penyeimbangan dikenal sebagai masalah **CartPole**. Dalam dunia cartpole, kita memiliki penggeser horizontal yang dapat bergerak ke kiri atau kanan, dan tujuannya adalah untuk menyeimbangkan tiang vertikal di atas penggeser saat bergerak. + +a cartpole + +Untuk membuat dan menggunakan lingkungan ini, kita memerlukan beberapa baris kode 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}") +``` + +Setiap lingkungan dapat diakses dengan cara yang sama: +* `env.reset` starts a new experiment +* `env.step` melakukan langkah simulasi. Ini menerima **aksi** dari **ruang aksi**, dan mengembalikan **observasi** (dari ruang observasi), serta reward dan bendera penghentian. + +Dalam contoh di atas kita melakukan aksi acak di setiap langkah, itulah sebabnya kehidupan eksperimen sangat singkat: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Tujuan dari algoritma RL adalah untuk melatih model - yang disebut **kebijakan** π - yang akan mengembalikan aksi sebagai respons terhadap keadaan tertentu. Kita juga dapat mempertimbangkan kebijakan ini bersifat probabilistik, misalnya untuk setiap keadaan *s* dan aksi *a* akan mengembalikan probabilitas π(*a*|*s*) bahwa kita harus mengambil *a* dalam keadaan *s*. + +## Algoritma Gradien Kebijakan + +Cara paling jelas untuk memodelkan kebijakan adalah dengan membuat jaringan saraf yang akan mengambil keadaan sebagai input, dan mengembalikan aksi yang sesuai (atau lebih tepatnya probabilitas dari semua aksi). Dalam arti tertentu, ini akan mirip dengan tugas klasifikasi normal, dengan perbedaan utama - kita tidak tahu sebelumnya aksi mana yang harus kita ambil di setiap langkah. + +Ide di sini adalah untuk memperkirakan probabilitas tersebut. Kita membangun vektor **reward kumulatif** yang menunjukkan total reward kita di setiap langkah eksperimen. Kita juga menerapkan **diskonto reward** dengan mengalikan reward sebelumnya dengan beberapa koefisien γ=0.99, untuk mengurangi peran reward sebelumnya. Kemudian, kita memperkuat langkah-langkah tersebut sepanjang jalur eksperimen yang menghasilkan reward lebih besar. + +> Pelajari lebih lanjut tentang algoritma Gradien Kebijakan dan lihat dalam aksi di [notebook contoh](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algoritma Aktor-Kritik + +Versi yang lebih baik dari pendekatan Gradien Kebijakan disebut **Aktor-Kritik**. Ide utama di baliknya adalah bahwa jaringan saraf akan dilatih untuk mengembalikan dua hal: + +* Kebijakan, yang menentukan aksi mana yang harus diambil. Bagian ini disebut **aktor** +* Estimasi total reward yang dapat kita harapkan untuk didapatkan pada keadaan ini - bagian ini disebut **kritik**. + +Dalam arti tertentu, arsitektur ini menyerupai [GAN](../../4-ComputerVision/10-GANs/README.md), di mana kita memiliki dua jaringan yang dilatih melawan satu sama lain. Dalam model aktor-kritik, aktor mengusulkan aksi yang perlu kita ambil, dan kritik berusaha untuk bersikap kritis dan memperkirakan hasilnya. Namun, tujuan kita adalah untuk melatih jaringan tersebut secara bersamaan. + +Karena kita mengetahui baik reward kumulatif yang sebenarnya maupun hasil yang dikembalikan oleh kritik selama eksperimen, relatif mudah untuk membangun fungsi kerugian yang akan meminimalkan perbedaan antara keduanya. Itu akan memberi kita **kerugian kritik**. Kita dapat menghitung **kerugian aktor** dengan menggunakan pendekatan yang sama seperti dalam algoritma gradien kebijakan. + +Setelah menjalankan salah satu algoritma tersebut, kita dapat mengharapkan CartPole kita berperilaku seperti ini: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Latihan: Gradien Kebijakan dan RL Aktor-Kritik + +Lanjutkan pembelajaran Anda di notebook berikut: + +* [RL dalam TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL dalam PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Tugas RL Lainnya + +Pembelajaran Penguatan saat ini adalah bidang penelitian yang berkembang pesat. Beberapa contoh menarik dari pembelajaran penguatan adalah: + +* Mengajarkan komputer untuk bermain **Permainan Atari**. Bagian yang menantang dalam masalah ini adalah bahwa kita tidak memiliki keadaan sederhana yang direpresentasikan sebagai vektor, tetapi lebih sebagai tangkapan layar - dan kita perlu menggunakan CNN untuk mengonversi gambar layar ini menjadi vektor fitur, atau untuk mengekstrak informasi reward. Permainan Atari tersedia di Gym. +* Mengajarkan komputer untuk bermain permainan papan, seperti Catur dan Go. Baru-baru ini program-program mutakhir seperti **Alpha Zero** dilatih dari awal oleh dua agen yang bermain satu sama lain, dan meningkat di setiap langkah. +* Dalam industri, RL digunakan untuk membuat sistem kontrol dari simulasi. Layanan bernama [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) dirancang khusus untuk itu. + +## Kesimpulan + +Kita sekarang telah belajar bagaimana melatih agen untuk mencapai hasil yang baik hanya dengan memberikan mereka fungsi reward yang mendefinisikan keadaan yang diinginkan dari permainan, dan dengan memberi mereka kesempatan untuk menjelajahi ruang pencarian secara cerdas. Kita telah berhasil mencoba dua algoritma, dan mencapai hasil yang baik dalam waktu yang relatif singkat. Namun, ini hanyalah awal dari perjalanan Anda ke dalam RL, dan Anda pasti harus mempertimbangkan untuk mengambil kursus terpisah jika Anda ingin menyelami lebih dalam. + +## 🚀 Tantangan + +Jelajahi aplikasi yang terdaftar di bagian 'Tugas RL Lainnya' dan coba untuk mengimplementasikan salah satunya! + +## [Kuiz Pasca-kuliah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Tinjauan & Studi Mandiri + +Pelajari lebih lanjut tentang pembelajaran penguatan klasik dalam [Kurikulum Pembelajaran Mesin untuk Pemula](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Tonton [video hebat ini](https://www.youtube.com/watch?v=qv6UVOQ0F44) yang membahas bagaimana komputer dapat belajar bermain Super Mario. + +## Tugas: [Latih Mobil Gunung](lab/README.md) + +Tujuan Anda selama tugas ini adalah untuk melatih lingkungan Gym yang berbeda - [Mobil Gunung](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa ibundanya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/6-Other/22-DeepRL/lab/README.md b/translations/ms/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..c7846c1b --- /dev/null +++ b/translations/ms/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# Melatih Mountain Car untuk Melarikan Diri + +Tugas Lab dari [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Tugas + +Tujuan anda adalah untuk melatih agen RL untuk mengawal [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) dalam Persekitaran OpenAI. Anda dilatih menggunakan data sehingga Oktober 2023. + +## Persekitaran + +Persekitaran Mountain Car terdiri daripada kereta yang terperangkap di dalam lembah. Tujuan anda adalah untuk melompat keluar dari lembah dan mencapai bendera. Tindakan yang boleh anda lakukan adalah mempercepat ke kiri, ke kanan, atau tidak melakukan apa-apa. Anda boleh memerhatikan kedudukan kereta sepanjang paksi x, dan kelajuan. + +## Menyatakan Notebook + +Mulakan lab dengan membuka [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Pengajaran + +Anda seharusnya belajar sepanjang lab ini bahawa mengadaptasi algoritma RL kepada persekitaran baru sering kali agak mudah, kerana OpenAI Gym mempunyai antara muka yang sama untuk semua persekitaran, dan algoritma tidak banyak bergantung kepada sifat persekitaran. Anda juga boleh menyusun semula kod Python sedemikian rupa untuk membenarkan mana-mana persekitaran diserahkan kepada algoritma RL sebagai parameter. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat kritikal, terjemahan manusia yang profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/6-Other/23-MultiagentSystems/README.md b/translations/ms/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..07594043 --- /dev/null +++ b/translations/ms/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,155 @@ +# Sistem Pelbagai Ejen + +Salah satu cara yang mungkin untuk mencapai kecerdasan adalah melalui pendekatan **emergent** (atau **synergetic**), yang berdasarkan fakta bahawa tingkah laku gabungan banyak ejen yang relatif sederhana boleh menghasilkan tingkah laku yang lebih kompleks (atau cerdas) bagi sistem secara keseluruhan. Secara teori, ini berdasarkan prinsip-prinsip [Kecerdasan Kolektif](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentism](https://en.wikipedia.org/wiki/Global_brain) dan [Sibernetik Evolusi](https://en.wikipedia.org/wiki/Global_brain), yang menyatakan bahawa sistem tahap tinggi memperoleh nilai tambah apabila digabungkan dengan betul dari sistem tahap rendah (dikenali sebagai *prinsip peralihan metasistem*). + +## [Kuiz pra-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +Arah **Sistem Pelbagai Ejen** telah muncul dalam AI pada tahun 1990-an sebagai respons kepada pertumbuhan Internet dan sistem teragih. Salah satu buku teks AI klasik, [Kecerdasan Buatan: Pendekatan Moden](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), menumpukan kepada pandangan AI klasik dari sudut sistem pelbagai ejen. + +Inti kepada pendekatan pelbagai ejen adalah konsep **Ejen** - entiti yang hidup dalam **persekitaran** tertentu, yang dapat dirasai dan bertindak ke atasnya. Ini adalah definisi yang sangat luas, dan terdapat banyak jenis dan klasifikasi ejen yang berbeza: + +* Mengikut kemampuan mereka untuk berfikir: + - Ejen **Reaktif** biasanya mempunyai tingkah laku jenis permintaan-tindak balas yang sederhana + - Ejen **Deliberatif** menggunakan sejenis pemikiran logik dan/atau kemampuan perancangan +* Mengikut tempat di mana ejen menjalankan kodnya: + - Ejen **Statik** berfungsi pada nod rangkaian khusus + - Ejen **Mudah Alih** boleh memindahkan kod mereka antara nod rangkaian +* Mengikut tingkah laku mereka: + - Ejen **Pasif** tidak mempunyai matlamat tertentu. Ejen seperti ini boleh bertindak balas terhadap rangsangan luar, tetapi tidak akan memulakan sebarang tindakan sendiri. + - Ejen **Aktif** mempunyai matlamat yang mereka kejar + - Ejen **Kognitif** melibatkan perancangan dan pemikiran yang kompleks + +Sistem pelbagai ejen kini digunakan dalam pelbagai aplikasi: + +* Dalam permainan, banyak watak bukan pemain menggunakan sejenis AI, dan boleh dianggap sebagai ejen cerdas +* Dalam pengeluaran video, merender adegan 3D yang kompleks yang melibatkan orang ramai biasanya dilakukan menggunakan simulasi pelbagai ejen +* Dalam pemodelan sistem, pendekatan pelbagai ejen digunakan untuk mensimulasikan tingkah laku model yang kompleks. Sebagai contoh, pendekatan pelbagai ejen telah berjaya digunakan untuk meramalkan penyebaran penyakit COVID-19 di seluruh dunia. Pendekatan serupa boleh digunakan untuk memodelkan lalu lintas di bandar, dan melihat bagaimana ia bertindak balas terhadap perubahan dalam peraturan lalu lintas. +* Dalam sistem automasi yang kompleks, setiap peranti boleh bertindak sebagai ejen bebas, yang menjadikan keseluruhan sistem kurang monolitik dan lebih kukuh. + +Kami tidak akan menghabiskan banyak masa untuk menyelami sistem pelbagai ejen, tetapi akan mempertimbangkan satu contoh **Pemodelan Pelbagai Ejen**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) adalah persekitaran pemodelan pelbagai ejen yang berdasarkan versi yang diubah suai dari bahasa pengaturcaraan [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Bahasa ini dibangunkan untuk mengajar konsep pengaturcaraan kepada kanak-kanak, dan ia membolehkan anda mengawal ejen yang dipanggil **kura-kura**, yang boleh bergerak, meninggalkan jejak di belakang. Ini membolehkan penciptaan figura geometri yang kompleks, yang merupakan cara yang sangat visual untuk memahami tingkah laku ejen. + +Dalam NetLogo, kita boleh mencipta banyak kura-kura dengan menggunakan arahan `create-turtles`. Kita kemudian boleh mengarahkan semua kura-kura untuk melakukan beberapa tindakan (dalam contoh di bawah - lebih 10 langkah ke hadapan): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Sudah tentu, ia tidak menarik apabila semua kura-kura melakukan perkara yang sama, jadi kita boleh `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` adalah nama satu baka, dan kita perlu menyatakan kedua-dua bentuk tunggal dan jamak, kerana arahan yang berbeza menggunakan bentuk yang berbeza untuk kejelasan. + +> ✅ Kami tidak akan mendalami pembelajaran bahasa NetLogo itu sendiri - anda boleh melawat sumber hebat [Kamus Interaktif NetLogo untuk Pemula](https://ccl.northwestern.edu/netlogo/bind/) jika anda berminat untuk belajar lebih lanjut. + +Anda boleh [muat turun](https://ccl.northwestern.edu/netlogo/download.shtml) dan memasang NetLogo untuk mencubanya. + +### Perpustakaan Model + +Satu perkara hebat tentang NetLogo adalah bahawa ia mengandungi perpustakaan model yang berfungsi yang boleh anda cuba. Pergi ke **File → Models Library**, dan anda mempunyai banyak kategori model untuk dipilih. + +Perpustakaan Model NetLogo + +> Tangkapan skrin perpustakaan model oleh Dmitry Soshnikov + +Anda boleh membuka salah satu model, contohnya **Biologi → Kumpulan**. + +### Prinsip Utama + +Setelah membuka model, anda dibawa ke skrin utama NetLogo. Berikut adalah contoh model yang menerangkan populasi serigala dan biri-biri, dengan sumber terhad (rumput). + +![Skrin Utama NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ms.png) + +> Tangkapan skrin oleh Dmitry Soshnikov + +Di skrin ini, anda boleh melihat: + +* Bahagian **Antaramuka** yang mengandungi: + - Medan utama, di mana semua ejen hidup + - Pelbagai kawalan: butang, penggeser, dan lain-lain + - Graf yang boleh anda gunakan untuk memaparkan parameter simulasi +* Tab **Kod** yang mengandungi penyunting, di mana anda boleh menaip program NetLogo + +Dalam kebanyakan kes, antaramuka akan mempunyai butang **Setup**, yang menginisialisasi keadaan simulasi, dan butang **Go** yang memulakan pelaksanaan. Itu diuruskan oleh pengendali yang sesuai dalam kod yang kelihatan seperti ini: + +``` +to go [ +... +] +``` + +Dunia NetLogo terdiri daripada objek-objek berikut: + +* **Ejen** (kura-kura) yang boleh bergerak di seluruh medan dan melakukan sesuatu. Anda mengarahkan ejen dengan menggunakan `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` untuk melakukan sesuatu. +* **Pengamat** adalah ejen unik yang mengawal dunia. Semua pengendali butang dilaksanakan dalam *mod pengamat*. + +> ✅ Keindahan persekitaran pelbagai ejen adalah bahawa kod yang dijalankan dalam mod kura-kura atau dalam mod patch dilaksanakan pada masa yang sama oleh semua ejen secara selari. Oleh itu, dengan menulis sedikit kod dan memprogram tingkah laku ejen individu, anda boleh mencipta tingkah laku kompleks bagi sistem simulasi secara keseluruhan. + +### Kumpulan + +Sebagai contoh tingkah laku pelbagai ejen, mari kita pertimbangkan **[Kumpulan](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Kumpulan adalah corak kompleks yang sangat mirip dengan bagaimana sekumpulan burung terbang. Melihat mereka terbang, anda mungkin berfikir bahawa mereka mengikuti sejenis algoritma kolektif, atau bahawa mereka mempunyai sejenis *kecerdasan kolektif*. Namun, tingkah laku kompleks ini timbul apabila setiap ejen individu (dalam kes ini, *burung*) hanya memerhatikan beberapa ejen lain dalam jarak dekat, dan mengikuti tiga peraturan sederhana: + +* **Penyelarasan** - ia mengarahkan ke arah arah purata ejen jiran +* **Kohesi** - ia berusaha untuk mengarahkan ke arah kedudukan purata jiran (*tarikan jarak jauh*) +* **Pemisahan** - apabila terlalu dekat dengan burung lain, ia berusaha untuk bergerak menjauh (*tolakan jarak dekat*) + +Anda boleh menjalankan contoh kumpulan dan memerhatikan tingkah lakunya. Anda juga boleh menyesuaikan parameter, seperti *derajat pemisahan*, atau *jangka pandang*, yang menentukan seberapa jauh setiap burung boleh melihat. Perhatikan bahawa jika anda mengurangkan jangka pandang kepada 0, semua burung menjadi buta, dan kumpulan berhenti. Jika anda mengurangkan pemisahan kepada 0, semua burung berkumpul dalam satu barisan lurus. + +> ✅ Tukar ke tab **Kod** dan lihat di mana tiga peraturan kumpulan (penyelarasan, kohesi dan pemisahan) dilaksanakan dalam kod. Perhatikan bagaimana kita hanya merujuk kepada ejen yang berada dalam pandangan. + +### Model Lain untuk Dilihat + +Terdapat beberapa model menarik lagi yang boleh anda eksperimen: + +* **Seni → Kembang Api** menunjukkan bagaimana kembang api boleh dianggap sebagai tingkah laku kolektif aliran api individu +* **Sains Sosial → Asas Lalu Lintas** dan **Sains Sosial → Jaringan Lalu Lintas** menunjukkan model lalu lintas bandar dalam Grid 1D dan 2D dengan atau tanpa lampu isyarat. Setiap kereta dalam simulasi mengikuti peraturan berikut: + - Jika ruang di hadapannya kosong - percepat (hingga kelajuan maksimum tertentu) + - Jika ia melihat halangan di hadapan - brek (dan anda boleh menyesuaikan sejauh mana pemandu boleh melihat) +* **Sains Sosial → Pesta** menunjukkan bagaimana orang berkumpul semasa pesta koktel. Anda boleh mencari kombinasi parameter yang membawa kepada peningkatan kebahagiaan kumpulan yang paling cepat. + +Seperti yang anda lihat dari contoh-contoh ini, simulasi pelbagai ejen boleh menjadi cara yang berguna untuk memahami tingkah laku sistem kompleks yang terdiri daripada individu yang mengikuti logik yang sama atau serupa. Ia juga boleh digunakan untuk mengawal ejen maya, seperti [NPCs](https://en.wikipedia.org/wiki/NPC) dalam permainan komputer, atau ejen dalam dunia animasi 3D. + +## Ejen Deliberatif + +Ejen yang diterangkan di atas sangat sederhana, bertindak balas terhadap perubahan dalam persekitaran menggunakan sejenis algoritma. Oleh itu, mereka adalah **ejen reaktif**. Walau bagaimanapun, kadangkala ejen boleh berfikir dan merancang tindakan mereka, dalam kes ini mereka dipanggil **deliberatif**. + +Contoh tipikal adalah ejen peribadi yang menerima arahan dari manusia untuk menempah percutian. Katakan terdapat banyak ejen yang hidup di internet, yang boleh membantunya. Ia kemudian harus menghubungi ejen lain untuk melihat penerbangan yang tersedia, berapa harga hotel untuk tarikh yang berbeza, dan cuba merundingkan harga terbaik. Setelah pelan percutian selesai dan disahkan oleh pemilik, ia boleh meneruskan dengan tempahan. + +Untuk melakukan itu, ejen perlu **berkomunikasi**. Untuk komunikasi yang berjaya mereka memerlukan: + +* Beberapa **bahasa standard untuk bertukar pengetahuan**, seperti [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) dan [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Bahasa-bahasa ini direka berdasarkan [Teori Tindakan Ucapan](https://en.wikipedia.org/wiki/Speech_act). +* Bahasa-bahasa ini juga harus merangkumi beberapa **protokol untuk rundingan**, berdasarkan pelbagai **jenis lelongan**. +* Sebuah **ontologi umum** untuk digunakan, supaya mereka merujuk kepada konsep yang sama dengan mengetahui semantiknya +* Cara untuk **menemui** apa yang boleh dilakukan oleh ejen yang berbeza, juga berdasarkan sejenis ontologi + +Ejen deliberatif adalah jauh lebih kompleks daripada reaktif, kerana mereka tidak hanya bertindak balas terhadap perubahan dalam persekitaran, mereka juga harus mampu *memulakan* tindakan. Salah satu seni bina yang dicadangkan untuk ejen deliberatif adalah ejen yang dikenali sebagai Kepercayaan-Kehendak-Niat (BDI): + +* **Kepercayaan** membentuk satu set pengetahuan tentang persekitaran ejen. Ia boleh disusun sebagai pangkalan pengetahuan atau set peraturan yang boleh digunakan oleh ejen untuk situasi tertentu dalam persekitaran. +* **Kehendak** mendefinisikan apa yang ejen ingin lakukan, iaitu matlamatnya. Sebagai contoh, matlamat ejen pembantu peribadi di atas adalah untuk menempah lawatan, dan matlamat ejen hotel adalah untuk memaksimumkan keuntungan. +* **Niat** adalah tindakan khusus yang dirancang oleh ejen untuk mencapai matlamatnya. Tindakan biasanya mengubah persekitaran dan menyebabkan komunikasi dengan ejen lain. + +Terdapat beberapa platform yang tersedia untuk membina sistem pelbagai ejen, seperti [JADE](https://jade.tilab.com/). [Kertas ini](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) mengandungi ulasan mengenai platform pelbagai ejen, bersama dengan sejarah ringkas sistem pelbagai ejen dan pelbagai senario penggunaannya. + +## Kesimpulan + +Sistem Pelbagai Ejen boleh mengambil pelbagai bentuk dan digunakan dalam banyak aplikasi yang berbeza. +Mereka semua cenderung menumpukan pada tingkah laku yang lebih sederhana bagi ejen individu, dan mencapai tingkah laku yang lebih kompleks bagi keseluruhan sistem disebabkan oleh **kesan sinergi**. + +## 🚀 Cabaran + +Bawa pelajaran ini ke dunia nyata dan cuba untuk mengkonseptualisasikan sistem pelbagai ejen yang boleh menyelesaikan masalah. Apa, sebagai contoh, yang diperlukan oleh sistem pelbagai ejen untuk mengoptimumkan laluan bas sekolah? Bagaimana ia boleh berfungsi di sebuah kedai roti? + +## [Kuiz pasca-ceramah](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Ulasan & Pembelajaran Sendiri + +Tinjau penggunaan jenis sistem ini dalam industri. Pilih satu domain seperti pembuatan atau industri permainan video dan temui bagaimana sistem pelbagai ejen boleh digunakan untuk menyelesaikan masalah unik. + +## [Tugasan NetLogo](assignment.md) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk mencapai ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat kritikal, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/ms/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..7ad37977 --- /dev/null +++ b/translations/ms/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# Tugasan NetLogo + +Ambil salah satu model dalam perpustakaan NetLogo dan gunakan ia untuk mensimulasikan situasi kehidupan sebenar seakurat mungkin. Contoh yang baik adalah untuk mengubahsuai model Virus dalam folder Visualisasi Alternatif untuk menunjukkan bagaimana ia boleh digunakan untuk memodelkan penyebaran COVID-19. Bolehkah anda membina model yang meniru penyebaran virus dalam kehidupan sebenar? + +Tunjukkan kerja anda dengan menyimpan salinan dan membina demo video yang menerangkan bagaimana model tersebut berkaitan dengan situasi dunia sebenar. + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat kritikal, terjemahan manusia yang profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/7-Ethics/README.md b/translations/ms/lessons/7-Ethics/README.md new file mode 100644 index 00000000..0e836415 --- /dev/null +++ b/translations/ms/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# AI Etika dan Bertanggungjawab + +Anda hampir menyelesaikan kursus ini, dan saya berharap bahawa sekarang anda jelas melihat bahawa AI berdasarkan kepada sejumlah kaedah matematik formal yang membolehkan kita mencari hubungan dalam data dan melatih model untuk meniru beberapa aspek tingkah laku manusia. Pada titik ini dalam sejarah, kita menganggap AI sebagai alat yang sangat berkuasa untuk mengekstrak corak dari data, dan menerapkan corak tersebut untuk menyelesaikan masalah baru. + +## [Kuiz pra-ceramah](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Namun, dalam fiksyen sains, kita sering melihat cerita di mana AI menghadirkan bahaya kepada umat manusia. Biasanya, cerita-cerita tersebut berpusat di sekitar jenis pemberontakan AI, apabila AI memutuskan untuk menentang manusia. Ini menunjukkan bahawa AI mempunyai sejenis emosi atau dapat membuat keputusan yang tidak terduga oleh pemaju mereka. + +Jenis AI yang telah kita pelajari dalam kursus ini tidak lebih dari aritmetik matriks besar. Ia adalah alat yang sangat berkuasa untuk membantu kita menyelesaikan masalah kita, dan seperti alat berkuasa lain - ia boleh digunakan untuk tujuan baik dan buruk. Yang penting, ia boleh *disalahgunakan*. + +## Prinsip AI Bertanggungjawab + +Untuk mengelakkan penyalahgunaan AI yang tidak sengaja atau sengaja, Microsoft menyatakan [Prinsip AI Bertanggungjawab](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) yang penting. Konsep-konsep berikut menjadi asas kepada prinsip-prinsip ini: + +* **Keadilan** berkaitan dengan masalah penting *bias model*, yang boleh disebabkan oleh penggunaan data yang berat sebelah untuk latihan. Contohnya, apabila kita cuba meramalkan kebarangkalian mendapatkan pekerjaan sebagai pemaju perisian untuk seseorang, model mungkin memberikan keutamaan lebih tinggi kepada lelaki - hanya kerana set data latihan mungkin berat sebelah kepada audiens lelaki. Kita perlu menyeimbangkan data latihan dengan teliti dan menyiasat model untuk mengelakkan bias, dan memastikan bahawa model mengambil kira ciri-ciri yang lebih relevan. +* **Kebolehpercayaan dan Keselamatan**. Secara semulajadi, model AI boleh melakukan kesilapan. Rangkaian neural mengembalikan kebarangkalian, dan kita perlu mengambil kira perkara ini apabila membuat keputusan. Setiap model mempunyai ketepatan dan ingatan, dan kita perlu memahami ini untuk mencegah bahaya yang boleh ditimbulkan oleh nasihat yang salah. +* **Privasi dan Keselamatan** mempunyai beberapa implikasi khusus untuk AI. Contohnya, apabila kita menggunakan beberapa data untuk melatih model, data ini menjadi seolah-olah "terintegrasi" ke dalam model. Di satu sisi, ini meningkatkan keselamatan dan privasi, di sisi lain - kita perlu ingat data mana yang digunakan untuk melatih model. +* **Keterangkuman** bermaksud bahawa kita tidak membina AI untuk menggantikan manusia, tetapi sebaliknya untuk memperkaya manusia dan menjadikan kerja kita lebih kreatif. Ini juga berkaitan dengan keadilan, kerana apabila berurusan dengan komuniti yang kurang terwakili, kebanyakan set data yang kita kumpulkan mungkin berat sebelah, dan kita perlu memastikan bahawa komuniti tersebut disertakan dan ditangani dengan betul oleh AI. +* **Ketelusan**. Ini termasuk memastikan bahawa kita sentiasa jelas tentang penggunaan AI. Juga, di mana sahaja mungkin, kita ingin menggunakan sistem AI yang *boleh diterangkan*. +* **Tanggungjawab**. Apabila model AI membuat keputusan, tidak selalu jelas siapa yang bertanggungjawab untuk keputusan tersebut. Kita perlu memastikan bahawa kita memahami di mana tanggungjawab keputusan AI terletak. Dalam kebanyakan kes, kita ingin melibatkan manusia dalam proses membuat keputusan penting, supaya orang sebenar dapat dipertanggungjawabkan. + +## Alat untuk AI Bertanggungjawab + +Microsoft telah membangunkan [Kotak Alat AI Bertanggungjawab](https://github.com/microsoft/responsible-ai-toolbox) yang mengandungi set alat: + +* Papan Pemuka Interpretabiliti (InterpretML) +* Papan Pemuka Keadilan (FairLearn) +* Papan Pemuka Analisis Ralat +* Papan Pemuka AI Bertanggungjawab yang merangkumi + + - EconML - alat untuk Analisis Kausal, yang memberi tumpuan kepada soalan "apa jika" + - DiCE - alat untuk Analisis Kontrafaktual yang membolehkan anda melihat ciri mana yang perlu diubah untuk mempengaruhi keputusan model + +Untuk maklumat lanjut mengenai Etika AI, sila lawati [pelajaran ini](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) dalam Kurikulum Pembelajaran Mesin yang merangkumi tugasan. + +## Ulasan & Kajian Sendiri + +Ambil [Jalur Pembelajaran](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) ini untuk belajar lebih lanjut tentang AI bertanggungjawab. + +## [Kuiz pasca-ceramah](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia yang profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/README.md b/translations/ms/lessons/README.md new file mode 100644 index 00000000..15a04163 --- /dev/null +++ b/translations/ms/lessons/README.md @@ -0,0 +1,8 @@ +# Gambaran Keseluruhan + +![Gambaran Keseluruhan dalam doodle](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ms.png) + +> Sketchnote oleh [Tomomi Imura](https://twitter.com/girlie_mac) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila sedar bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/X-Extras/X1-MultiModal/README.md b/translations/ms/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..c89cc1cb --- /dev/null +++ b/translations/ms/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# Rangkaian Multi-Modus + +Selepas kejayaan model transformer untuk menyelesaikan tugas NLP, seni bina yang sama atau serupa telah diterapkan pada tugas penglihatan komputer. Terdapat minat yang semakin meningkat dalam membina model yang akan *menggabungkan* kemampuan penglihatan dan bahasa semula jadi. Salah satu usaha tersebut telah dilakukan oleh OpenAI, dan ia dipanggil CLIP dan DALL.E. + +## Pra-Latihan Imej Kontrastif (CLIP) + +Idea utama CLIP adalah untuk dapat membandingkan arahan teks dengan imej dan menentukan sejauh mana imej tersebut sepadan dengan arahan tersebut. + +![Arsitektur CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ms.png) + +> *Gambar dari [post blog ini](https://openai.com/blog/clip/)* + +Model ini dilatih menggunakan imej yang diperoleh dari Internet dan kapsyen mereka. Untuk setiap batch, kita mengambil N pasangan (imej, teks), dan menukarnya kepada beberapa representasi vektor I dan T. Representasi tersebut kemudian dipadankan bersama. Fungsi kehilangan ditentukan untuk memaksimumkan kesamaan kosinus antara vektor yang sepadan dengan satu pasangan (contohnya, I dan T), dan meminimumkan kesamaan kosinus antara semua pasangan lain. Itulah sebabnya pendekatan ini dipanggil **kontrastif**. + +Model/perpustakaan CLIP boleh didapati dari [OpenAI GitHub](https://github.com/openai/CLIP). Pendekatan ini diterangkan dalam [post blog ini](https://openai.com/blog/clip/), dan dengan lebih terperinci dalam [kertas ini](https://arxiv.org/pdf/2103.00020.pdf). + +Setelah model ini dilatih, kita boleh memberikannya satu batch imej dan satu batch arahan teks, dan ia akan mengembalikan tensor dengan kebarangkalian. CLIP boleh digunakan untuk beberapa tugas: + +**Klasifikasi Imej** + +Katakan kita perlu mengklasifikasikan imej antara, katakan, kucing, anjing dan manusia. Dalam kes ini, kita boleh memberikan model imej, dan satu siri arahan teks: "*gambar kucing*", "*gambar anjing*", "*gambar manusia*". Dalam vektor kebarangkalian yang terhasil, kita hanya perlu memilih indeks dengan nilai tertinggi. + +![CLIP untuk Klasifikasi Imej](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ms.png) + +> *Gambar dari [post blog ini](https://openai.com/blog/clip/)* + +**Carian Imej Berdasarkan Teks** + +Kita juga boleh melakukan sebaliknya. Jika kita mempunyai koleksi imej, kita boleh menghantar koleksi ini kepada model, dan satu arahan teks - ini akan memberikan kita imej yang paling serupa dengan arahan yang diberikan. + +## ✍️ Contoh: [Menggunakan CLIP untuk Klasifikasi Imej dan Carian Imej](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Buka notebook [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) untuk melihat CLIP beraksi. + +## Penjanaan Imej dengan VQGAN+ CLIP + +CLIP juga boleh digunakan untuk **penjanaan imej** daripada arahan teks. Untuk melakukan ini, kita memerlukan **model penjana** yang akan dapat menjana imej berdasarkan beberapa input vektor. Salah satu model tersebut dipanggil [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). + +Idea utama VQGAN yang membezakannya daripada [GAN](../../4-ComputerVision/10-GANs/README.md) biasa adalah seperti berikut: +* Menggunakan seni bina transformer autoregressive untuk menjana urutan bahagian visual yang kaya konteks yang membentuk imej. Bahagian visual tersebut seterusnya dipelajari oleh [CNN](../../4-ComputerVision/07-ConvNets/README.md) +* Menggunakan diskriminator sub-imej yang mengesan sama ada bahagian imej adalah "nyata" atau "palsu" (berbeza dengan pendekatan "semua atau tiada" dalam GAN tradisional). + +Ketahui lebih lanjut tentang VQGAN di laman web [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Salah satu perbezaan penting antara VQGAN dan GAN tradisional adalah bahawa yang terakhir boleh menghasilkan imej yang baik daripada mana-mana vektor input, sementara VQGAN kemungkinan besar akan menghasilkan imej yang tidak koheren. Oleh itu, kita perlu membimbing proses penciptaan imej lebih lanjut, dan itu boleh dilakukan menggunakan CLIP. + +![Arsitektur VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ms.png) + +Untuk menjana imej yang sepadan dengan arahan teks, kita bermula dengan beberapa vektor pengkodan rawak yang dihantar melalui VQGAN untuk menghasilkan imej. Kemudian CLIP digunakan untuk menghasilkan fungsi kehilangan yang menunjukkan sejauh mana imej tersebut sepadan dengan arahan teks. Matlamatnya adalah untuk meminimumkan kehilangan ini, menggunakan pembalikan propagasi untuk menyesuaikan parameter vektor input. + +Satu perpustakaan hebat yang mengimplementasikan VQGAN+CLIP adalah [Pixray](http://github.com/pixray/pixray) + +![Gambar yang dihasilkan oleh Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ms.png) | ![Gambar yang dihasilkan oleh pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ms.png) | ![Gambar yang dihasilkan oleh Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ms.png) +----|----|---- +Gambar yang dihasilkan dari arahan *gambar closeup potret cat air seorang guru lelaki muda dengan sebuah buku* | Gambar yang dihasilkan dari arahan *gambar closeup potret minyak seorang guru wanita muda dengan sains komputer dengan sebuah komputer* | Gambar yang dihasilkan dari arahan *gambar closeup potret minyak seorang guru lelaki tua dengan matematik di hadapan papan hitam* + +> Gambar dari koleksi **Guru Tiruan** oleh [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E adalah versi GPT-3 yang dilatih untuk menjana imej daripada arahan. Ia telah dilatih dengan 12 bilion parameter. + +Berbeza dengan CLIP, DALL-E menerima kedua-dua teks dan imej sebagai satu aliran token untuk kedua-dua imej dan teks. Oleh itu, daripada pelbagai arahan, anda boleh menjana imej berdasarkan teks. + +### [DALL-E 2](https://openai.com/dall-e-2) +Perbezaan utama antara DALL-E 1 dan 2 adalah bahawa ia menghasilkan imej dan seni yang lebih realistik. + +Contoh penjanaan imej dengan DALL-E: +![Gambar yang dihasilkan oleh 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.ms.png) | ![Gambar yang dihasilkan oleh 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.ms.png) | ![Gambar yang dihasilkan oleh 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.ms.png) +----|----|---- +Gambar yang dihasilkan dari arahan *gambar closeup potret cat air seorang guru lelaki muda dengan sebuah buku* | Gambar yang dihasilkan dari arahan *gambar closeup potret minyak seorang guru wanita muda dengan sains komputer dengan sebuah komputer* | Gambar yang dihasilkan dari arahan *gambar closeup potret minyak seorang guru lelaki tua dengan matematik di hadapan papan hitam* + +## Rujukan + +* Kertas VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Kertas CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi ralat atau ketidakakuratan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat penting, terjemahan manusia profesional disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/sketchnotes/LICENSE.md b/translations/ms/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..7094bfd0 --- /dev/null +++ b/translations/ms/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,142 @@ +# Creative Commons Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") bukan firma guaman dan tidak menyediakan perkhidmatan atau nasihat undang-undang. Pengedaran lesen awam Creative Commons tidak mencipta hubungan peguam-klien atau hubungan lain. Creative Commons menyediakan lesen dan maklumat berkaitan pada asas "seperti sedia ada". Creative Commons tidak memberikan sebarang jaminan mengenai lesen, sebarang bahan yang dilisensikan di bawah terma dan syarat mereka, atau sebarang maklumat berkaitan. Creative Commons menafikan semua tanggungjawab untuk kerosakan yang timbul daripada penggunaan mereka sejauh yang dibenarkan oleh undang-undang. + +## Menggunakan Lesen Awam Creative Commons + +Lesen awam Creative Commons menyediakan set terma dan syarat standard yang boleh digunakan oleh pencipta dan pemegang hak lain untuk berkongsi karya asli dan bahan lain yang tertakluk kepada hak cipta dan hak tertentu lain yang dinyatakan dalam lesen awam di bawah. Pertimbangan berikut adalah untuk tujuan maklumat sahaja, tidak menyeluruh, dan tidak membentuk sebahagian daripada lesen kami. + +- **Pertimbangan untuk pemberi lesen**: Lesen awam kami bertujuan untuk digunakan oleh mereka yang diberi kuasa untuk memberikan kebenaran kepada orang awam untuk menggunakan bahan dengan cara yang biasanya terhad oleh hak cipta dan hak tertentu lain. Lesen kami tidak boleh dibatalkan. Pemberi lesen harus membaca dan memahami terma dan syarat lesen yang mereka pilih sebelum memohon. Pemberi lesen juga harus memastikan semua hak yang diperlukan sebelum memohon lesen kami supaya orang awam dapat menggunakan semula bahan tersebut seperti yang diharapkan. Pemberi lesen harus menandakan dengan jelas sebarang bahan yang tidak tertakluk kepada lesen. Ini termasuk bahan lain yang dilisensikan di bawah CC, atau bahan yang digunakan di bawah pengecualian atau had kepada hak cipta. **Lebih banyak pertimbangan untuk pemberi lesen**: wiki.creativecommons.org/Considerations_for_licensors + +- **Pertimbangan untuk orang awam**: Dengan menggunakan salah satu lesen awam kami, seorang pemberi lesen memberikan kebenaran kepada orang awam untuk menggunakan bahan yang dilisensikan di bawah terma dan syarat tertentu. Jika kebenaran pemberi lesen tidak diperlukan atas sebarang sebab—contohnya, kerana sebarang pengecualian atau had yang berkaitan dengan hak cipta—maka penggunaan itu tidak diatur oleh lesen. Lesen kami hanya memberikan kebenaran di bawah hak cipta dan hak tertentu lain yang mempunyai kuasa untuk diberikan oleh pemberi lesen. Penggunaan bahan yang dilisensikan masih boleh terhad atas sebab lain, termasuk kerana orang lain mempunyai hak cipta atau hak lain dalam bahan tersebut. Pemberi lesen mungkin membuat permintaan khas, seperti meminta agar semua perubahan ditandakan atau diterangkan. Walaupun tidak diperlukan oleh lesen kami, anda digalakkan untuk menghormati permintaan tersebut jika berpatutan. **Lebih banyak pertimbangan untuk orang awam**: wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +## Lesen Awam Creative Commons Attribution-ShareAlike 4.0 International + +Dengan melaksanakan Hak yang Dilesenkan (ditakrifkan di bawah), Anda menerima dan bersetuju untuk terikat dengan terma dan syarat Lesen Awam Creative Commons Attribution-ShareAlike 4.0 International ini ("Lesen Awam"). Setakat mana Lesen Awam ini boleh ditafsirkan sebagai kontrak, Anda diberikan Hak yang Dilesenkan sebagai pertimbangan untuk penerimaan Anda terhadap terma dan syarat ini, dan Pemberi Lesen memberikan Anda hak tersebut sebagai pertimbangan bagi manfaat yang diterima Pemberi Lesen daripada menjadikan Bahan yang Dilesenkan tersedia di bawah terma dan syarat ini. + +## Seksyen 1 -- Definisi. + +a. **Bahan yang Disesuaikan** bermaksud bahan yang tertakluk kepada Hak Cipta dan Hak Serupa yang berasal dari atau berdasarkan Bahan yang Dilesenkan dan di mana Bahan yang Dilesenkan diterjemahkan, diubah, disusun, diubah suai, atau dimodifikasi dengan cara yang memerlukan kebenaran di bawah Hak Cipta dan Hak Serupa yang dipegang oleh Pemberi Lesen. Untuk tujuan Lesen Awam ini, apabila Bahan yang Dilesenkan adalah karya muzik, persembahan, atau rakaman bunyi, Bahan yang Disesuaikan sentiasa dihasilkan di mana Bahan yang Dilesenkan diselaraskan dalam hubungan masa dengan imej bergerak. + +b. **Lesen Penyesuai** bermaksud lesen yang Anda terapkan pada Hak Cipta dan Hak Serupa Anda dalam sumbangan Anda kepada Bahan yang Disesuaikan mengikut terma dan syarat Lesen Awam ini. + +c. **Lesen Serasi BY-SA** bermaksud lesen yang disenaraikan di creativecommons.org/compatiblelicenses, yang diluluskan oleh Creative Commons sebagai setara dengan Lesen Awam ini. + +d. **Hak Cipta dan Hak Serupa** bermaksud hak cipta dan/atau hak serupa yang berkaitan dengan hak cipta termasuk, tanpa batasan, persembahan, siaran, rakaman bunyi, dan Hak Pangkalan Data Sui Generis, tanpa mengira bagaimana hak tersebut dilabel atau dikategorikan. Untuk tujuan Lesen Awam ini, hak yang dinyatakan dalam Seksyen 2(b)(1)-(2) bukan Hak Cipta dan Hak Serupa. + +e. **Langkah Teknologi Berkesan** bermaksud langkah-langkah yang, tanpa kuasa yang betul, tidak boleh dielakkan di bawah undang-undang yang memenuhi kewajipan di bawah Artikel 11 Perjanjian Hak Cipta WIPO yang diterima pada 20 Disember 1996, dan/atau perjanjian antarabangsa yang serupa. + +f. **Pengecualian dan Had** bermaksud penggunaan adil, urus niaga adil, dan/atau sebarang pengecualian atau had lain kepada Hak Cipta dan Hak Serupa yang terpakai kepada penggunaan Anda terhadap Bahan yang Dilesenkan. + +g. **Elemen Lesen** bermaksud atribut lesen yang disenaraikan dalam nama Lesen Awam Creative Commons. Elemen Lesen Lesen Awam ini adalah Pemberian Kredit dan ShareAlike. + +h. **Bahan yang Dilesenkan** bermaksud karya seni atau sastera, pangkalan data, atau bahan lain yang mana Pemberi Lesen menerapkan Lesen Awam ini. + +i. **Hak yang Dilesenkan** bermaksud hak yang diberikan kepada Anda tertakluk kepada terma dan syarat Lesen Awam ini, yang terhad kepada semua Hak Cipta dan Hak Serupa yang terpakai kepada penggunaan Anda terhadap Bahan yang Dilesenkan dan yang Pemberi Lesen mempunyai kuasa untuk melesenkan. + +j. **Pemberi Lesen** bermaksud individu atau entiti yang memberikan hak di bawah Lesen Awam ini. + +k. **Share** bermaksud untuk menyediakan bahan kepada orang awam dengan sebarang cara atau proses yang memerlukan kebenaran di bawah Hak yang Dilesenkan, seperti penggandaan, paparan awam, persembahan awam, pengedaran, penyebaran, komunikasi, atau pengimportan, dan untuk menjadikan bahan tersebut tersedia kepada orang awam termasuk dalam cara yang membolehkan anggota orang awam mengakses bahan tersebut dari tempat dan pada masa yang dipilih secara individu oleh mereka. + +l. **Hak Pangkalan Data Sui Generis** bermaksud hak lain selain hak cipta yang terhasil dari Arahan 96/9/EC Parlimen Eropah dan Majlis pada 11 Mac 1996 mengenai perlindungan undang-undang pangkalan data, sebagaimana dipinda dan/atau diteruskan, serta hak lain yang setara di mana sahaja di dunia. + +m. **Anda** bermaksud individu atau entiti yang melaksanakan Hak yang Dilesenkan di bawah Lesen Awam ini. **Anda** mempunyai makna yang sepadan. + +## Seksyen 2 -- Skop. + +a. **Pemberian lesen**. + +1. Tertakluk kepada terma dan syarat Lesen Awam ini, Pemberi Lesen dengan ini memberikan kepada Anda lesen yang tidak boleh dibatalkan, bebas royalti, tidak boleh disublesankan, tidak eksklusif, dan tidak boleh dibatalkan untuk melaksanakan Hak yang Dilesenkan dalam Bahan yang Dilesenkan untuk: + + a. menggandakan dan Share Bahan yang Dilesenkan, secara keseluruhan atau sebahagian; dan + + b. menghasilkan, menggandakan, dan Share Bahan yang Disesuaikan. + +2. **Pengecualian dan Had**. Untuk mengelakkan keraguan, di mana Pengecualian dan Had terpakai kepada penggunaan Anda, Lesen Awam ini tidak terpakai, dan Anda tidak perlu mematuhi terma dan syaratnya. + +3. **Tempoh**. Tempoh Lesen Awam ini ditentukan dalam Seksyen 6(a). + +4. **Media dan format; pengubahsuaian teknikal dibenarkan**. Pemberi Lesen memberi kuasa kepada Anda untuk melaksanakan Hak yang Dilesenkan dalam semua media dan format sama ada kini diketahui atau yang akan dicipta kemudian, dan untuk membuat pengubahsuaian teknikal yang diperlukan untuk melakukannya. Pemberi Lesen melepaskan dan/atau bersetuju untuk tidak menegaskan sebarang hak atau kuasa untuk melarang Anda daripada membuat pengubahsuaian teknikal yang diperlukan untuk melaksanakan Hak yang Dilesenkan, termasuk pengubahsuaian teknikal yang diperlukan untuk mengelakkan Langkah Teknologi Berkesan. Untuk tujuan Lesen Awam ini, hanya membuat pengubahsuaian yang dibenarkan oleh Seksyen 2(a)(4) tidak pernah menghasilkan Bahan yang Disesuaikan. + +5. **Penerima hiliran**. + + a. **Tawaran daripada Pemberi Lesen -- Bahan yang Dilesenkan**. Setiap penerima Bahan yang Dilesenkan secara automatik menerima tawaran daripada Pemberi Lesen untuk melaksanakan Hak yang Dilesenkan di bawah terma dan syarat Lesen Awam ini. + + b. **Tawaran tambahan daripada Pemberi Lesen -- Bahan yang Disesuaikan**. Setiap penerima Bahan yang Disesuaikan daripada Anda secara automatik menerima tawaran daripada Pemberi Lesen untuk melaksanakan Hak yang Dilesenkan dalam Bahan yang Disesuaikan di bawah syarat Lesen Penyesuai yang Anda terapkan. + + c. **Tiada sekatan hiliran**. Anda tidak boleh menawarkan atau mengenakan sebarang terma atau syarat tambahan atau berbeza pada, atau menerapkan sebarang Langkah Teknologi Berkesan kepada, Bahan yang Dilesenkan jika melakukannya mengehadkan pelaksanaan Hak yang Dilesenkan oleh mana-mana penerima Bahan yang Dilesenkan. + +6. **Tiada pengesahan**. Tiada apa-apa dalam Lesen Awam ini yang merupakan atau boleh ditafsirkan sebagai kebenaran untuk menegaskan atau menyiratkan bahawa Anda adalah, atau bahawa penggunaan Anda terhadap Bahan yang Dilesenkan adalah, berkaitan dengan, atau ditaja, disokong, atau diberikan status rasmi oleh, Pemberi Lesen atau pihak lain yang ditetapkan untuk menerima kredit seperti yang dinyatakan dalam Seksyen 3(a)(1)(A)(i). + +b. **Hak lain**. + +1. Hak moral, seperti hak integriti, tidak dilesenkan di bawah Lesen Awam ini, begitu juga hak publisiti, privasi, dan/atau hak peribadi serupa lain; walau bagaimanapun, sejauh yang mungkin, Pemberi Lesen melepaskan dan/atau bersetuju untuk tidak menegaskan sebarang hak tersebut yang dipegang oleh Pemberi Lesen sejauh yang diperlukan untuk membolehkan Anda melaksanakan Hak yang Dilesenkan, tetapi tidak sebaliknya. + +2. Hak paten dan tanda dagang tidak dilesenkan di bawah Lesen Awam ini. + +3. Sejauh yang mungkin, Pemberi Lesen melepaskan sebarang hak untuk mengutip royalti daripada Anda untuk pelaksanaan Hak yang Dilesenkan, sama ada secara langsung atau melalui masyarakat pengumpulan di bawah sebarang skim pelesenan sukarela atau boleh diketepikan. Dalam semua kes lain, Pemberi Lesen secara jelas mengekalkan sebarang hak untuk mengumpul royalti tersebut. + +## Seksyen 3 -- Syarat Lesen. + +Pelaksanaan Anda terhadap Hak yang Dilesenkan secara jelas tertakluk kepada syarat berikut. + +a. **Pemberian Kredit**. + +1. Jika Anda Share Bahan yang Dilesenkan (termasuk dalam bentuk yang diubah), Anda mesti: + + a. mengekalkan yang berikut jika ia disediakan oleh Pemberi Lesen bersama Bahan yang Dilesenkan: + + i. pengenalan pencipta Bahan yang Dilesenkan dan mana-mana orang lain yang ditetapkan untuk menerima kredit, dengan cara yang munasabah seperti yang diminta oleh Pemberi Lesen (termasuk dengan nama samaran jika ditetapkan); + + ii. notis hak cipta; + + iii. notis yang merujuk kepada Lesen Awam ini; + + iv. notis yang merujuk kepada penafian jaminan; + + v. URI atau pautan hiper kepada Bahan yang Dilesenkan sejauh yang munasabah; + + b. menunjukkan jika Anda mengubah Bahan yang Dilesenkan dan mengekalkan petunjuk sebarang pengubahsuaian sebelumnya; dan + + c. menunjukkan bahawa Bahan yang Dilesenkan dilisensikan di bawah Lesen Awam ini, dan menyertakan teks, atau URI atau pautan hiper kepada, Lesen Awam ini. + +2. Anda boleh memenuhi syarat dalam Seksyen 3(a)(1) dengan cara yang munasabah berdasarkan medium, cara, dan konteks di mana Anda Share Bahan yang Dilesenkan. Sebagai contoh, adalah munasabah untuk memenuhi syarat dengan menyediakan URI atau pautan hiper kepada sumber yang termasuk maklumat yang diperlukan. + +3. Jika diminta oleh Pemberi Lesen, Anda mesti mengeluarkan mana-mana maklumat yang diperlukan oleh Seksyen 3(a)(1)(A) sejauh yang munasabah. + +b. **ShareAlike**. + +Selain daripada syarat dalam Seksyen 3(a), jika Anda Share Bahan yang Disesuaikan yang Anda hasilkan, syarat berikut juga terpakai. + +1. Lesen Penyesuai yang Anda terapkan mesti merupakan lesen Creative Commons dengan Elemen Lesen yang sama, versi ini atau yang lebih baru, atau Lesen Serasi BY-SA. + +2. Anda mesti menyertakan teks, atau URI atau pautan hiper kepada, Lesen Penyesuai yang Anda terapkan. Anda boleh memenuhi syarat ini dengan cara yang munasabah berdasarkan medium, cara, dan konteks di mana Anda Share Bahan yang Disesuaikan. + +3. Anda tidak boleh menawarkan atau mengenakan sebarang terma atau syarat tambahan atau berbeza pada, atau menerapkan sebarang Langkah Teknologi Berkesan kepada, Bahan yang Disesuaikan yang mengehadkan pelaksanaan hak yang diberikan di bawah Lesen Penyesuai yang Anda terapkan. + +## Seksyen 4 -- Hak Pangkalan Data Sui Generis. + +Di mana Hak yang Dilesenkan termasuk Hak Pangkalan Data Sui Generis yang terpakai kepada penggunaan Anda terhadap Bahan yang Dilesenkan: + +a. untuk mengelakkan keraguan, Seksyen 2(a)(1) memberikan Anda hak untuk mengekstrak, menggunakan semula, menggandakan, dan Share semua atau sebahagian besar kandungan pangkalan data; + +b. jika Anda menyertakan semua atau sebahagian besar kandungan pangkalan data dalam pangkalan data di mana Anda mempunyai Hak Pangkalan Data Sui Generis, maka pangkalan data di mana Anda mempunyai Hak Pangkalan Data Sui Generis (tetapi bukan kandungan individunya) adalah Bahan yang Disesuaikan, termasuk untuk tujuan Seksyen 3(b); dan + +c. Anda mesti mematuhi syarat dalam Seksyen 3(a) jika Anda Share semua atau sebahagian besar kandungan pangkalan data. + +Untuk mengelakkan keraguan, Seksyen 4 ini melengkapi dan tidak menggantikan kewajipan Anda di bawah Lesen Awam ini di mana Hak yang Dilesenkan termasuk Hak Cipta dan Hak Serupa lain. + +## Seksyen 5 -- Penafian Jaminan dan Had Tanggungjawab. + +a. **KECUALI JIKA DITANGGUNG SECARA BERASINGAN OLEH PEMBERI LESEN**, sejauh yang mungkin, Pemberi Lesen menawarkan Bahan yang Dilesenkan SEBAGAIMANA ADANYA dan SEBAGAIMANA TERSEDIA, dan tidak membuat sebarang pernyataan atau jaminan jenis apa pun mengenai Bahan yang Dilesenkan, sama ada secara jelas, tersirat, statutori, atau lain-lain. Ini termasuk, tanpa batasan, jaminan hak milik, kebolehdagangan, kesesuaian untuk tujuan tertentu, ketidakpelanggaran, ketiadaan kecacatan tersembunyi atau lain-lain, ketepatan, atau kehadiran atau ketiadaan kesilapan, sama ada diketahui atau boleh ditemui. Di mana penafian jaminan tidak dibenarkan sepenuhnya atau sebahagian, penafian ini mungkin tidak terpakai kepada Anda. + +b. **SEJAUH YANG MUNGKIN, PEMBERI LESEN TIDAK AKAN BERTANGGUNGJAWAB KEPADA ANDA DI BAWAH SEBARANG TEORI UNDANG-UNDANG (TERMASUK, TANPA BATASAN, KECUAIAN) ATAU SEBALIKNYA UNTUK SEBARANG KERUGIAN LANGSUNG, KHAS, TIDAK LANGSUNG, INSIDENTAL, KONSEKUENSIAL, PUNITIF, CONTOH, ATAU KERUGIAN, KOS, PERBELANJAAN, ATAU KEROSAKAN YANG TIMBUL DARIPADA LESEN AWAM INI ATAU PENGGUNAAN BAHAN YANG DILESENKAN, WALAU PUN PEMBERI LESEN TELAH DINASIHATKAN TENTANG KEMUNGKINAN KERUGIAN, KOS, PERBELANJAAN, ATAU KEROSAKAN SEDEMIKIAN. DI MANA HAD TANGGUNGJAWAB TIDAK DIBENARKAN SECARA PENUH ATAU SEBAHAGIAN, HAD INI MUNGKIN TIDAK TERPAKAI KEPADA ANDA.** + +c. Penafian jaminan dan had tanggungjawab yang dinyatakan di atas akan ditafsirkan dengan cara yang, + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI berasaskan mesin. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesalahan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/lessons/sketchnotes/README.md b/translations/ms/lessons/sketchnotes/README.md new file mode 100644 index 00000000..7082e027 --- /dev/null +++ b/translations/ms/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +Semua sketchnote kurikulum boleh dimuat turun di sini. + +🎨 Dicipta oleh: 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/) + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan berasaskan AI. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sah. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/pt/README.md b/translations/pt/README.md new file mode 100644 index 00000000..94664a3b --- /dev/null +++ b/translations/pt/README.md @@ -0,0 +1,140 @@ +[![Licença do GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![Contribuidores do GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![Problemas do GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![Pull requests do GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Bem-vindos](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![Observadores do 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 do GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![Estrelas do 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) + +# Inteligência Artificial para Iniciantes - Um Currículo + +|![ Sketchnote por [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| IA Para Iniciantes - _Sketchnote por [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Explore o mundo da **Inteligência Artificial** (IA) com nosso currículo de 12 semanas e 24 lições! Inclui lições práticas, questionários e laboratórios. O currículo é amigável para iniciantes e cobre ferramentas como TensorFlow e PyTorch, além de ética em IA. + +## O que você irá aprender + +**[Mapa Mental do Curso](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +Neste currículo, você irá aprender: + +* Diferentes abordagens para a Inteligência Artificial, incluindo a abordagem "boa e velha" simbólica com **Representação do Conhecimento** e raciocínio ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Redes Neurais** e **Aprendizado Profundo**, que estão no cerne da IA moderna. Ilustraremos os conceitos por trás desses tópicos importantes usando código em dois dos frameworks mais populares - [TensorFlow](http://Tensorflow.org) e [PyTorch](http://pytorch.org). +* **Arquiteturas Neurais** para trabalhar com imagens e texto. Vamos cobrir modelos recentes, mas pode haver uma ligeira falta em relação ao estado da arte. +* Abordagens de IA menos populares, como **Algoritmos Genéticos** e **Sistemas Multi-Agente**. + +O que não iremos cobrir neste currículo: + +> [Encontre todos os recursos adicionais para este curso em nossa coleção Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Casos de negócios de uso de **IA nos Negócios**. Considere fazer o caminho de aprendizado [Introdução à IA para usuários de negócios](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) no Microsoft Learn, ou [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), desenvolvido em cooperação com [INSEAD](https://www.insead.edu/). +* **Aprendizado de Máquina Clássico**, que está bem descrito em nosso [Currículo de Aprendizado de Máquina para Iniciantes](http://github.com/Microsoft/ML-for-Beginners). +* Aplicações práticas de IA construídas usando **[Serviços Cognitivos](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Para isso, recomendamos que você comece com os módulos do Microsoft Learn para [visão](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [processamento de linguagem natural](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[IA Generativa com o Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** e outros. +* Frameworks de ML **na Nuvem** específicos, como [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) ou [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Considere utilizar os caminhos de aprendizado [Construir e operar soluções de aprendizado de máquina com Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) e [Construir e Operar Soluções de Aprendizado de Máquina com Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **IA Conversacional** e **Chat Bots**. Há um caminho de aprendizado separado [Criar soluções de IA conversacional](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), e você também pode consultar [este post no blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) para mais detalhes. +* **Matemática Profunda** por trás do aprendizado profundo. Para isso, recomendamos [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) de Ian Goodfellow, Yoshua Bengio e Aaron Courville, que também está disponível online em [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Para uma introdução suave aos tópicos de _IA na Nuvem_, você pode considerar fazer o caminho de aprendizado [Comece com inteligência artificial no Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# Conteúdo + +| | Link da Aula | PyTorch/Keras/TensorFlow | Lab | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Configuração do Curso](./lessons/0-course-setup/setup.md) | [Configurar seu Ambiente de Desenvolvimento](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Introdução à IA**](./lessons/1-Intro/README.md) | | | +| 01 | [Introdução e História da IA](./lessons/1-Intro/README.md) | - | - | +| II | **IA Simbólica** | +| 02 | [Representação do Conhecimento e Sistemas Especialistas](./lessons/2-Symbolic/README.md) | [Sistemas Especialistas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Grafo de Conceitos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Introdução às Redes Neurais**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Lab](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Perceptron Multicamadas e Criando nosso próprio Framework](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Lab](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Introdução aos Frameworks (PyTorch/TensorFlow) e Overfitting](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Lab](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Visão Computacional**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Explore Visão Computacional no Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Introdução à Visão Computacional. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Laboratório](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Redes Neurais Convolucionais](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Arquiteturas de CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Laboratório](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Redes Pré-treinadas e Aprendizado por Transferência](./lessons/4-ComputerVision/08-TransferLearning/README.md) e [Dicas de Treinamento](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratório](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Autoencoders e VAEs](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [Redes Geradoras Adversariais & Transferência de Estilo Artístico](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Detecção de Objetos](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Laboratório](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Segmentação Semântica. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | +| V | [**Processamento de Linguagem Natural**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Explore o Processamento de Linguagem Natural no Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Representação de Texto. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [Embutimentos semânticos. Word2Vec e GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Modelagem de Linguagem. Treinando seus próprios embutimentos](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Lab](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Redes Neurais Recorrentes](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [Redes Recorrentes Generativas](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Lab](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformers. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [Reconhecimento de Entidades Nomeadas](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Lab](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Grandes Modelos de Linguagem, Programação de Prompt e Tarefas de Poucos Exemplos](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Outras Técnicas de IA** || | +| 21 | [Algoritmos Genéticos](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Aprendizado Profundo por Reforço](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Lab](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Sistemas Multi-Agente](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Ética em IA** | | | +| 24 | [Ética em IA e IA Responsável](./lessons/7-Ethics/README.md) | [Microsoft Learn: Princípios de IA Responsável](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Extras** | | | +| 25 | [Redes Multi-Modais, CLIP e VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## Cada lição contém + +* Material de leitura prévia +* Notebooks Jupyter executáveis, que muitas vezes são específicos para o framework (**PyTorch** ou **TensorFlow**). O notebook executável também contém muito material teórico, então para entender o tópico, você precisa passar por pelo menos uma versão do notebook (seja PyTorch ou TensorFlow). +* **Labs** disponíveis para alguns tópicos, que oferecem a oportunidade de tentar aplicar o material que você aprendeu a um problema específico. +* Algumas seções contêm links para módulos do [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) que cobrem tópicos relacionados. + +## Começando + +- Criamos uma [lição de configuração](./lessons/0-course-setup/setup.md) para ajudar você a configurar seu ambiente de desenvolvimento. - Para Educadores, também criamos uma [lição de configuração curricular](./lessons/0-course-setup/for-teachers.md)! +- Como [Executar o código no VSCode ou no Codepace](./lessons/0-course-setup/how-to-run.md) + +Siga estes passos: + +Fork o Repositório: Clique no botão "Fork" no canto superior direito desta página. + +Clone o Repositório: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Não se esqueça de dar uma estrela (🌟) neste repositório para encontrá-lo mais facilmente depois. + +## Conheça outros Aprendizes + +Junte-se ao nosso [servidor oficial do Discord sobre IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) para se conectar e interagir com outros aprendizes que estão fazendo este curso e obter suporte. + +## Questionários + +> **Uma observação sobre os questionários**: Todos os questionários estão contidos na pasta Quiz-app em etc\quiz-app. Eles estão vinculados a partir das lições; o aplicativo de questionário pode ser executado localmente ou implantado no Azure; siga as instruções na pasta `quiz-app`. Eles estão sendo gradualmente localizados. + +## Ajuda Necessária + +Você tem sugestões ou encontrou erros de ortografia ou de código? Abra uma questão ou crie um pull request. + +## Agradecimentos Especiais + +* **✍️ Autor Principal:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustrador de Sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Criador de Questionários:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Contribuidores Principais:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Outros Currículos + +Nossa equipe produz outros currículos! Confira: + +* [Ciência de Dados para Iniciantes](https://aka.ms/ds4beginners) +* [**Versão 2.0** IA Generativa para Iniciantes](https://aka.ms/genai-beginners) +* [**NOVO** Cibersegurança para Iniciantes](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [Desenvolvimento Web para Iniciantes](https://aka.ms/webdev-beginners) +* [IoT para Iniciantes](https://aka.ms/iot-beginners) +* [Aprendizado de Máquina para Iniciantes](https://aka.ms/ml4beginners) +* [Desenvolvimento XR para Iniciantes](https://aka.ms/xr-dev-for-beginners) +* [Dominando o GitHub Copilot para Programação em Par com IA](https://aka.ms/GitHubCopilotAI) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/SECURITY.md b/translations/pt/SECURITY.md new file mode 100644 index 00000000..3ecfb41d --- /dev/null +++ b/translations/pt/SECURITY.md @@ -0,0 +1,40 @@ +## Segurança + +A Microsoft leva a segurança de nossos produtos e serviços de software a sério, o que inclui todos os repositórios de código-fonte gerenciados através de nossas organizações no GitHub, que incluem [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) e [nossas organizações no GitHub](https://opensource.microsoft.com/). + +Se você acredita ter encontrado uma vulnerabilidade de segurança em qualquer repositório de propriedade da Microsoft que atenda à [definição de vulnerabilidade de segurança da Microsoft](https://aka.ms/opensource/security/definition), por favor, relate-a para nós conforme descrito abaixo. + +## Relatando Problemas de Segurança + +**Por favor, não relate vulnerabilidades de segurança através de problemas públicos no GitHub.** + +Em vez disso, relate-as ao Microsoft Security Response Center (MSRC) em [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Se você preferir enviar sem fazer login, envie um e-mail para [secure@microsoft.com](mailto:secure@microsoft.com). Se possível, criptografe sua mensagem com nossa chave PGP; por favor, faça o download dela na [página da Chave PGP do Microsoft Security Response Center](https://aka.ms/opensource/security/pgpkey). + +Você deve receber uma resposta dentro de 24 horas. Se, por algum motivo, você não receber, por favor, faça um acompanhamento por e-mail para garantir que recebemos sua mensagem original. Informações adicionais podem ser encontradas em [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Por favor, inclua as informações solicitadas listadas abaixo (o máximo que você puder fornecer) para nos ajudar a entender melhor a natureza e o escopo do possível problema: + + * Tipo de problema (por exemplo, estouro de buffer, injeção SQL, script entre sites, etc.) + * Caminhos completos dos arquivos de origem relacionados à manifestação do problema + * A localização do código-fonte afetado (tag/branch/commit ou URL direta) + * Qualquer configuração especial necessária para reproduzir o problema + * Instruções passo a passo para reproduzir o problema + * Código de prova de conceito ou código de exploração (se possível) + * Impacto do problema, incluindo como um invasor poderia explorar a questão + +Essas informações nos ajudarão a triagem seu relatório mais rapidamente. + +Se você estiver relatando para um programa de recompensas por bugs, relatórios mais completos podem contribuir para um prêmio maior. Visite nossa página do [Programa de Recompensas por Bugs da Microsoft](https://aka.ms/opensource/security/bounty) para mais detalhes sobre nossos programas ativos. + +## Idiomas Preferidos + +Preferimos que todas as comunicações sejam em inglês. + +## Política + +A Microsoft segue o princípio de [Divulgação Coordenada de Vulnerabilidades](https://aka.ms/opensource/security/cvd). + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/CODE_OF_CONDUCT.md b/translations/pt/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..baad502a --- /dev/null +++ b/translations/pt/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Código de Conduta de Código Aberto da Microsoft + +Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). + +Recursos: + +- [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/) +- [Perguntas Frequentes sobre o Código de Conduta da Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Entre em contato com [opencode@microsoft.com](mailto:opencode@microsoft.com) se tiver dúvidas ou preocupações. + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/CONTRIBUTING.md b/translations/pt/etc/CONTRIBUTING.md new file mode 100644 index 00000000..e3627dae --- /dev/null +++ b/translations/pt/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# Contribuindo + +Este projeto acolhe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Acordo de Licença de Contribuidor (CLA), declarando que você tem o direito de, e de fato, nos conceder os direitos de usar sua contribuição. Para mais detalhes, visite https://cla.microsoft.com. + +Quando você enviar um pull request, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorará o PR de forma apropriada (por exemplo, etiqueta, comentário). Basta seguir as instruções fornecidas pelo bot. Você precisará fazer isso apenas uma vez em todos os repositórios que utilizam nosso CLA. + +Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). Para mais informações, consulte as [Perguntas Frequentes sobre o Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/) ou entre em contato com [opencode@microsoft.com](mailto:opencode@microsoft.com) com quaisquer perguntas ou comentários adicionais. + +# Procurando Contribuições + +Atualmente, estamos ativamente buscando contribuições nos seguintes tópicos: + +- [ ] Escrever seção sobre Aprendizado por Reforço Profundo +- [ ] Melhorar seção + notebook sobre Detecção de Objetos +- [ ] PyTorch Lightning (para [esta seção](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Escrever seção + exemplos sobre Reconhecimento de Entidades Nomeadas +- [ ] Criar exemplos para treinar nossas próprias embeddings para [esta seção](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/Mindmap.md b/translations/pt/etc/Mindmap.md new file mode 100644 index 00000000..ae940869 --- /dev/null +++ b/translations/pt/etc/Mindmap.md @@ -0,0 +1,76 @@ +# IA + +## [Introdução à IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definição de IA + - História da IA + - Abordagens para IA + - De cima para baixo/Simbólica + - De baixo para cima/Neural + - Evolutiva + - Sinérgica / IA Emergente + - [Escola de Negócios de IA da Microsoft](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [IA Simbólica](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Representação do Conhecimento + - [Sistemas Especialistas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontologias](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Web Semântica + +## [Redes Neurais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [Perceptron](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [Redes de Múltiplas Camadas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Introdução a Frameworks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [Overfitting](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Visão Computacional](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - No MS Learn + - [Fundamentos de IA: Explore Visão Computacional](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Visão Computacional com PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Visão Computacional com TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Introdução à Visão Computacional. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Redes Convolucionais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Arquiteturas de CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Transferência de Aprendizado](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Dicas de Treinamento](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencoders e VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Redes Gerativas Adversariais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Transferência de Estilo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Detecção de Objetos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentação](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Processamento de Linguagem Natural](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - No MS Learn + - [Fundamentos de IA: Explore PLN](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PLN com PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [PLN com TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [Representação de Texto](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bolsa de Palavras + - TF/IDF + - [Embutimentos Semânticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modelagem de Linguagem](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Redes Neurais Recorrentes](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Redes Recorrentes Generativas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers e BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Reconhecimento de Entidades Nomeadas](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Geração de Texto e GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## Outras Técnicas + - [Algoritmos Genéticos](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Aprendizado Profundo por Reforço](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Sistemas Multiagente](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Ética em IA](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn sobre IA Responsável](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## Extras + - [Redes Multimodais](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**Aviso Legal**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/SUPPORT.md b/translations/pt/etc/SUPPORT.md new file mode 100644 index 00000000..a2819d84 --- /dev/null +++ b/translations/pt/etc/SUPPORT.md @@ -0,0 +1,14 @@ +# Suporte + +## Como registrar problemas e obter ajuda + +Este projeto utiliza o GitHub Issues para rastrear bugs e solicitações de recursos. Por favor, pesquise os problemas existentes antes de registrar novos problemas para evitar duplicatas. Para novos problemas, registre seu bug ou solicitação de recurso como um novo Issue. + +Para ajuda e perguntas sobre o uso deste projeto, utilize os Fóruns de Discussão. + +## Política de Suporte da Microsoft + +O suporte para este projeto é limitado aos recursos listados acima. + +**Aviso Legal**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/TRANSLATIONS.md b/translations/pt/etc/TRANSLATIONS.md new file mode 100644 index 00000000..fb9b3023 --- /dev/null +++ b/translations/pt/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# Contribua traduzindo lições + +Agradecemos traduções para as lições deste currículo! + +## Diretrizes + +Existem pastas em cada pasta de lição e na pasta de introdução das lições que contêm os arquivos markdown traduzidos. + +> Nota: por favor, não traduza nenhum código nos arquivos de exemplo de código; as únicas coisas a traduzir são README, tarefas e questionários. Obrigado! + +Os arquivos traduzidos devem seguir esta convenção de nomenclatura: + +**README._[language]_.md** + +onde _[language]_ é uma abreviação de duas letras do idioma seguindo o padrão ISO 639-1 (por exemplo, `README.es.md` para espanhol e `README.nl.md` para holandês). + +**assignment._[language]_.md** + +Semelhante aos Readme's, por favor, traduza também as tarefas. + +**Questionários** + +1. Adicione sua tradução ao aplicativo de questionários adicionando um arquivo aqui: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, com a convenção de nomenclatura adequada (en.json, fr.json). **Por favor, não localize as palavras 'true' ou 'false', no entanto. Obrigado!** + +2. Adicione o código do seu idioma ao menu suspenso no arquivo App.vue do aplicativo de questionários. + +3. Edite o [arquivo translations index.js do aplicativo de questionários](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) para adicionar seu idioma. + +4. Por fim, edite TODOS os links de questionários em seus arquivos README.md traduzidos para apontar diretamente para o seu questionário traduzido: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 se torna https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**OBRIGADO** + +Agradecemos sinceramente seus esforços! + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/etc/quiz-app/README.md b/translations/pt/etc/quiz-app/README.md new file mode 100644 index 00000000..c2596bd9 --- /dev/null +++ b/translations/pt/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# Questionários + +Estes questionários são os questionários pré e pós-aula do currículo de IA em https://aka.ms/ai-beginners + +## Adicionando um conjunto de questionários traduzidos + +Adicione uma tradução de questionário criando estruturas de questionário correspondentes nas pastas `assets/translations`. Os questionários canônicos estão em `assets/translations/en`. Os questionários estão divididos em vários grupos por lição. Certifique-se de alinhar a numeração com a seção de questionário apropriada. Há um total de 40 questionários neste currículo, com a contagem começando em 0. + +Após editar as traduções, edite o arquivo index.js na pasta de tradução para importar todos os arquivos seguindo as convenções em `en`. + +Edite o arquivo `index.js` em `assets/translations` para importar os novos arquivos traduzidos. + +Em seguida, edite o dropdown em `App.vue` neste aplicativo para adicionar seu idioma. Combine a abreviação localizada com o nome da pasta para o seu idioma. + +Finalmente, edite todos os links dos questionários nas lições traduzidas, se existirem, para incluir esta localização como um parâmetro de consulta: `?loc=fr`, por exemplo. + +## Configuração do projeto + +``` +npm install +``` + +### Compila e recarrega automaticamente para desenvolvimento + +``` +npm run serve +``` + +### Compila e minifica para produção + +``` +npm run build +``` + +### Lint e corrige arquivos + +``` +npm run lint +``` + +### Personalizar configuração + +Veja [Referência de Configuração](https://cli.vuejs.org/config/). + +Créditos: Agradecimentos à versão original deste aplicativo de questionário: https://github.com/arpan45/simple-quiz-vue + +## Implantando no Azure + +Aqui está um guia passo a passo para ajudá-lo a começar: + +1. Faça um fork de um repositório GitHub +Certifique-se de que o código do seu aplicativo web estático está no seu repositório GitHub. Faça um fork deste repositório. + +2. Crie um Azure Static Web App +- Crie uma [conta Azure](http://azure.microsoft.com) +- Vá para o [portal do Azure](https://portal.azure.com) +- Clique em “Criar um recurso” e pesquise por “Static Web App”. +- Clique em “Criar”. + +3. Configure o Static Web App +- Básicos: Assinatura: Selecione sua assinatura do Azure. +- Grupo de Recursos: Crie um novo grupo de recursos ou use um existente. +- Nome: Forneça um nome para seu aplicativo web estático. +- Região: Escolha a região mais próxima dos seus usuários. + +- #### Detalhes da Implantação: +- Fonte: Selecione “GitHub”. +- Conta GitHub: Autorize o Azure a acessar sua conta GitHub. +- Organização: Selecione sua organização GitHub. +- Repositório: Escolha o repositório que contém seu aplicativo web estático. +- Branch: Selecione o branch do qual você deseja implantar. + +- #### Detalhes da Compilação: +- Presets de Compilação: Escolha o framework com o qual seu aplicativo foi construído (por exemplo, React, Angular, Vue, etc.). +- Localização do App: Especifique a pasta que contém o código do seu aplicativo (por exemplo, / se estiver na raiz). +- Localização da API: Se você tiver uma API, especifique sua localização (opcional). +- Localização de Saída: Especifique a pasta onde a saída da compilação é gerada (por exemplo, build ou dist). + +4. Revise e Crie +Revise suas configurações e clique em “Criar”. O Azure configurará os recursos necessários e criará um fluxo de trabalho do GitHub Actions em seu repositório. + +5. Fluxo de Trabalho do GitHub Actions +O Azure criará automaticamente um arquivo de fluxo de trabalho do GitHub Actions em seu repositório (.github/workflows/azure-static-web-apps-.yml). Este fluxo de trabalho gerenciará o processo de compilação e implantação. + +6. Monitore a Implantação +Vá para a aba “Ações” em seu repositório GitHub. +Você deve ver um fluxo de trabalho em execução. Este fluxo de trabalho irá compilar e implantar seu aplicativo web estático no Azure. +Uma vez que o fluxo de trabalho seja concluído, seu aplicativo estará ativo na URL do Azure fornecida. + +### Exemplo de Arquivo de Fluxo de Trabalho + +Aqui está um exemplo de como o arquivo de fluxo de trabalho do GitHub Actions pode parecer: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### Recursos Adicionais +- [Documentação do Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Documentação do GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/0-course-setup/for-teachers.md b/translations/pt/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..8df48b4e --- /dev/null +++ b/translations/pt/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# Para Educadores + +Você gostaria de usar este currículo em sua sala de aula? Fique à vontade! + +Na verdade, você pode usá-lo dentro do próprio GitHub utilizando o GitHub Classroom. + +Para isso, faça um fork deste repositório. Você precisará criar um repositório para cada lição, então será necessário extrair cada pasta para um repositório separado. Dessa forma, o [GitHub Classroom](https://classroom.github.com/classrooms) poderá gerenciar cada lição separadamente. + +Estas [instruções completas](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) lhe darão uma ideia de como configurar sua sala de aula. + +## Usando o repositório como está + +Se você quiser usar este repositório como ele está atualmente, sem utilizar o GitHub Classroom, isso também pode ser feito. Você precisará comunicar aos seus alunos qual lição trabalhar em conjunto. + +Em um formato online (Zoom, Teams ou outro), você pode formar salas de discussão para os quizzes e orientar os alunos para ajudá-los a se prepararem para aprender. Em seguida, convide os alunos para realizarem os quizzes e enviarem suas respostas como 'issues' em um determinado momento. Você pode fazer o mesmo com as tarefas, se quiser que os alunos trabalhem colaborativamente de forma aberta. + +Se preferir um formato mais privado, peça aos seus alunos que façam um fork do currículo, lição por lição, para seus próprios repositórios do GitHub como repositórios privados, e lhe concedam acesso. Assim, eles poderão completar quizzes e tarefas de forma privada e enviá-los a você via issues no seu repositório da sala de aula. + +Existem muitas maneiras de fazer isso funcionar em um formato de sala de aula online. Por favor, nos avise o que funciona melhor para você! + +## Por favor, compartilhe suas opiniões + +Queremos fazer este currículo funcionar para você e seus alunos. Por favor, nos dê feedback nos fóruns de discussão! + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/0-course-setup/how-to-run.md b/translations/pt/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..f452858b --- /dev/null +++ b/translations/pt/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# Como Executar o Código + +Este currículo contém muitos exemplos executáveis e laboratórios que você vai querer rodar. Para fazer isso, você precisa da capacidade de executar código Python em Jupyter Notebooks fornecidos como parte deste currículo. Você tem várias opções para executar o código: + +## Executar localmente no seu computador + +Para executar o código localmente no seu computador, você precisará ter alguma versão do Python instalada. Eu pessoalmente recomendo instalar o **[miniconda](https://conda.io/en/latest/miniconda.html)** - é uma instalação bastante leve que suporta o gerenciador de pacotes `conda` para diferentes **ambientes virtuais** Python. + +Depois de instalar o miniconda, você precisa clonar o repositório e criar um ambiente virtual a ser usado para este curso: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Usando o Visual Studio Code com a Extensão Python + +Provavelmente a melhor maneira de usar o currículo é abri-lo no [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) com a [Extensão Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Nota**: Assim que você clonar e abrir o diretório no VS Code, ele automaticamente sugerirá que você instale as extensões do Python. Você também terá que instalar o miniconda, conforme descrito acima. + +> **Nota**: Se o VS Code sugerir que você reabra o repositório em um contêiner, você precisa recusar isso para usar a instalação local do Python. + +### Usando Jupyter no Navegador + +Você também pode usar o ambiente Jupyter diretamente do navegador no seu próprio computador. Na verdade, tanto o Jupyter clássico quanto o Jupyter Hub fornecem um ambiente de desenvolvimento bastante conveniente com autocompletar, destaque de código, etc. + +Para iniciar o Jupyter localmente, vá para o diretório do curso e execute: + +```bash +jupyter notebook +``` +ou +```bash +jupyterhub +``` +Você pode então navegar até qualquer uma das pastas `.ipynb` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` que instruem como construir um contêiner para este repositório; o VS Code lhe oferecerá a opção de reabrir o código no contêiner. Isso exigirá a instalação do Docker e também será mais complexo, então recomendamos isso para usuários mais experientes. + +## Executando na Nuvem + +Se você não quiser instalar o Python localmente e tiver acesso a alguns recursos em nuvem, uma boa alternativa seria executar o código na nuvem. Existem várias maneiras de fazer isso: + +* Usando **[GitHub Codespaces](https://github.com/features/codespaces)**, que é um ambiente virtual criado para você no GitHub, acessível através da interface do navegador do VS Code. Se você tiver acesso ao Codespaces, pode simplesmente clicar no botão **Code** no repositório, iniciar um codespace e começar a rodar em pouco tempo. +* Usando **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) é um recurso de computação gratuito fornecido na nuvem para pessoas como você testarem algum código no GitHub. Há um botão na página inicial para abrir o repositório no Binder - isso deve levá-lo rapidamente ao site do binder, que construirá o contêiner subjacente e iniciará a interface web do Jupyter para você de forma contínua. + +> **Nota**: Para prevenir abusos, o Binder tem acesso a alguns recursos da web bloqueados. Isso pode impedir que alguns códigos funcionem, que buscam modelos e/ou conjuntos de dados da Internet pública. Você pode precisar encontrar algumas soluções alternativas. Além disso, os recursos computacionais fornecidos pelo Binder são bastante básicos, então o treinamento será lento, especialmente nas lições mais complexas posteriores. + +## Executando na Nuvem com GPU + +Algumas das lições posteriores neste currículo se beneficiariam muito do suporte a GPU, pois, caso contrário, o treinamento será dolorosamente lento. Existem algumas opções que você pode seguir, especialmente se tiver acesso à nuvem, seja através do [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) ou através da sua instituição: + +* Criar uma [Máquina Virtual de Ciência de Dados](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) e se conectar a ela através do Jupyter. Você pode então clonar o repositório diretamente na máquina e começar a aprender. As VMs da série NC têm suporte a GPU. + +> **Nota**: Algumas assinaturas, incluindo o Azure for Students, não fornecem suporte a GPU de forma nativa. Você pode precisar solicitar núcleos de GPU adicionais através de um pedido de suporte técnico. + +* Criar um [Espaço de Trabalho de Aprendizado de Máquina do Azure](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) e então usar o recurso de Notebook lá. [Este vídeo](https://azure-for-academics.github.io/quickstart/azureml-papers/) mostra como clonar um repositório em um notebook do Azure ML e começar a usá-lo. + +Você também pode usar o Google Colab, que vem com algum suporte gratuito para GPU, e fazer o upload de Jupyter Notebooks lá para executá-los um por um. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/0-course-setup/setup.md b/translations/pt/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..dcddee83 --- /dev/null +++ b/translations/pt/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# Começando com este Currículo + +## Você é um estudante? + +Comece com os seguintes recursos: + +* [Página do Hub do Estudante](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Nesta página, você encontrará recursos para iniciantes, pacotes para estudantes e até maneiras de obter um voucher gratuito para certificação. Esta é uma página que você vai querer adicionar aos seus favoritos e verificar de tempos em tempos, pois trocamos o conteúdo pelo menos mensalmente. +* [Embaixadores do Microsoft Student Learn](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Junte-se a uma comunidade global de embaixadores estudantis, isso pode ser sua porta de entrada para a Microsoft. + +**Estudantes**, existem algumas maneiras de usar o currículo. Em primeiro lugar, você pode apenas ler o texto e olhar o código diretamente no GitHub. Se você quiser executar o código em qualquer um dos notebooks - [leia nossas instruções](./etc/how-to-run.md) e encontre mais conselhos sobre como fazê-lo [neste post do blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Nota**: [Instruções sobre como executar o código neste currículo](/how-to-run.md) + +## Estudo Autônomo + +No entanto, se você gostaria de fazer o curso como um projeto de autoestudo, sugerimos que você faça um fork de todo o repositório para sua própria conta do GitHub e complete os exercícios por conta própria ou com um grupo: + +* Comece com um questionário pré-aula. +* Leia o texto introdutório da aula. +* Se a aula tiver notebooks adicionais, passe por eles, lendo e executando o código. Se ambos os notebooks TensorFlow e PyTorch forem fornecidos, você pode se concentrar em um deles - escolha seu framework favorito. +* Os notebooks frequentemente contêm alguns dos desafios que exigem que você ajuste um pouco o código para experimentar. +* Faça o questionário pós-aula. +* Se houver um laboratório anexado ao módulo - complete a tarefa. +* Visite o [Fórum de Discussão](https://github.com/microsoft/AI-For-Beginners/discussions) para "aprender em voz alta". + +> Para um estudo mais aprofundado, recomendamos seguir estes módulos e trilhas de aprendizado do [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). + +**Professores**, nós [incluímos algumas sugestões](/for-teachers.md) sobre como usar este currículo. + +--- + +## Pedagogia + +Escolhemos dois princípios pedagógicos ao construir este currículo: garantir que seja **baseado em projetos** e que inclua **questionários frequentes**. + +Ao garantir que o conteúdo esteja alinhado com projetos, o processo se torna mais envolvente para os estudantes e a retenção dos conceitos será aumentada. Além disso, um questionário de baixo risco antes da aula define a intenção do estudante em relação ao aprendizado de um tópico, enquanto um segundo questionário após a aula garante uma maior retenção. Este currículo foi projetado para ser flexível e divertido, podendo ser realizado integralmente ou em partes. Os projetos começam pequenos e se tornam cada vez mais complexos até o final do ciclo de 12 semanas. + +> **Uma nota sobre questionários**: Todos os questionários estão contidos [neste aplicativo](https://red-field-0a6ddfd03.1.azurestaticapps.net/), totalizando 50 questionários de três perguntas cada. Eles estão vinculados dentro das lições, mas o aplicativo de questionários pode ser executado localmente; siga as instruções na pasta `etc/quiz-app`. + +## Acesso Offline + +Você pode executar esta documentação offline usando [Docsify](https://docsify.js.org/#/). Faça um fork deste repositório, [instale o Docsify](https://docsify.js.org/#/quickstart) na sua máquina local e, em seguida, na pasta `etc/docsify` deste repositório, digite `docsify serve`. O site será servido na porta 3000 em seu localhost: `localhost:3000`. Um pdf do currículo está disponível [neste link](../../../../../../etc/pdf/readme.pdf). + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/1-Intro/README.md b/translations/pt/lessons/1-Intro/README.md new file mode 100644 index 00000000..01254a27 --- /dev/null +++ b/translations/pt/lessons/1-Intro/README.md @@ -0,0 +1,56 @@ +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +Com o passar do tempo, os recursos computacionais se tornaram mais baratos e mais dados se tornaram disponíveis, então as abordagens de redes neurais começaram a demonstrar um ótimo desempenho em competir com seres humanos em várias áreas, como visão computacional ou compreensão de fala. Na última década, o termo Inteligência Artificial tem sido usado principalmente como sinônimo de Redes Neurais, pois a maioria dos sucessos em IA que ouvimos falar se baseia nelas. + +Podemos observar como as abordagens mudaram, por exemplo, na criação de um programa de computador para jogar xadrez: + +* Os primeiros programas de xadrez eram baseados em busca – um programa tentava explicitamente estimar os possíveis movimentos de um oponente para um determinado número de jogadas futuras e selecionava um movimento ótimo com base na posição ideal que poderia ser alcançada em algumas jogadas. Isso levou ao desenvolvimento do algoritmo de busca conhecido como [corte alfa-beta](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* As estratégias de busca funcionam bem no final do jogo, onde o espaço de busca é limitado por um pequeno número de possíveis movimentos. No entanto, no início do jogo, o espaço de busca é enorme, e o algoritmo pode ser aprimorado aprendendo com partidas existentes entre jogadores humanos. Experimentos subsequentes empregaram o chamado [raciocínio baseado em casos](https://en.wikipedia.org/wiki/Case-based_reasoning), onde o programa procurava por casos na base de conhecimento muito semelhantes à posição atual no jogo. +* Programas modernos que vencem jogadores humanos são baseados em redes neurais e [aprendizado por reforço](https://en.wikipedia.org/wiki/Reinforcement_learning), onde os programas aprendem a jogar apenas jogando por muito tempo contra si mesmos e aprendendo com seus próprios erros – muito parecido com o que os seres humanos fazem ao aprender a jogar xadrez. No entanto, um programa de computador pode jogar muitas mais partidas em muito menos tempo, e assim pode aprender muito mais rápido. + +✅ Faça uma pequena pesquisa sobre outros jogos que foram jogados por IA. + +Da mesma forma, podemos ver como a abordagem para criar “programas falantes” (que poderiam passar no teste de Turing) mudou: + +* Os primeiros programas desse tipo, como [Eliza](https://en.wikipedia.org/wiki/ELIZA), eram baseados em regras gramaticais muito simples e na reformulação da frase de entrada em uma pergunta. +* Assistentes modernos, como Cortana, Siri ou Google Assistant, são todos sistemas híbridos que usam Redes Neurais para converter fala em texto e reconhecer nossa intenção, e então empregam algum raciocínio ou algoritmos explícitos para realizar as ações necessárias. +* No futuro, podemos esperar um modelo completamente baseado em redes neurais para lidar com diálogos por conta própria. As recentes redes neurais da família GPT e [Turing-NLG](https://turing.microsoft.com/) mostram grande sucesso nisso. + +> Imagem por Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) por [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Pesquisa Recente em IA + +O enorme crescimento recente na pesquisa de redes neurais começou por volta de 2010, quando grandes conjuntos de dados públicos começaram a se tornar disponíveis. Uma enorme coleção de imagens chamada [ImageNet](https://en.wikipedia.org/wiki/ImageNet), que contém cerca de 14 milhões de imagens anotadas, deu origem ao [Desafio de Reconhecimento Visual em Grande Escala do ImageNet](https://image-net.org/challenges/LSVRC/). + +![Precisão do ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) +Em 2012, [Redes Neurais Convolucionais](../4-ComputerVision/07-ConvNets/README.md) foram utilizadas pela primeira vez na classificação de imagens, o que resultou em uma queda significativa nos erros de classificação (de quase 30% para 16,4%). Em 2015, a arquitetura ResNet da Microsoft Research [alcançou precisão em nível humano](https://doi.org/10.1109/ICCV.2015.123). + +Desde então, as Redes Neurais demonstraram um comportamento muito bem-sucedido em muitas tarefas: + +--- + +Ano | Paridade Humana alcançada +-----|-------- +2015 | [Classificação de Imagens](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Reconhecimento de Fala Conversacional](https://arxiv.org/abs/1610.05256) +2018 | [Tradução Automática de Máquinas](https://arxiv.org/abs/1803.05567) (Chinês para Inglês) +2020 | [Legenda de Imagens](https://arxiv.org/abs/2009.13682) + +Nos últimos anos, testemunhamos grandes sucessos com grandes modelos de linguagem, como BERT e GPT-3. Isso ocorreu principalmente devido ao fato de que há uma grande quantidade de dados textuais gerais disponíveis que nos permite treinar modelos para capturar a estrutura e o significado dos textos, pré-treiná-los em coleções de textos gerais e, em seguida, especializar esses modelos para tarefas mais específicas. Aprenderemos mais sobre [Processamento de Linguagem Natural](../5-NLP/README.md) mais adiante neste curso. + +## 🚀 Desafio + +Faça um tour pela internet para determinar onde, na sua opinião, a IA é utilizada de forma mais eficaz. É em um aplicativo de mapeamento, ou em algum serviço de conversão de fala para texto ou em um videogame? Pesquise como o sistema foi construído. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Revisão & Estudo Autônomo + +Revise a história da IA e do ML lendo [esta lição](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Escolha um elemento do sketchnote no topo dessa lição ou desta e pesquise mais a fundo para entender o contexto cultural que informa sua evolução. + +**Tarefa**: [Game Jam](assignment.md) + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/1-Intro/assignment.md b/translations/pt/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..3cd9736d --- /dev/null +++ b/translations/pt/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# Game Jam + +Os jogos são uma área que foi fortemente influenciada pelos desenvolvimentos em IA e ML. Nesta tarefa, escreva um artigo curto sobre um jogo que você gosta e que foi influenciado pela evolução da IA. Deve ser um jogo antigo o suficiente para ter sido influenciado por vários tipos de sistemas de processamento de computador. Um bom exemplo é Xadrez ou Go, mas também dê uma olhada em videogames como pong ou Pac-Man. Escreva um ensaio que discuta o passado, o presente e o futuro da IA no jogo. + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/2-Symbolic/README.md b/translations/pt/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..49191e2a --- /dev/null +++ b/translations/pt/lessons/2-Symbolic/README.md @@ -0,0 +1,221 @@ +# Representação do Conhecimento e Sistemas Especialistas + +![Resumo do conteúdo de IA Simbólica](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.pt.png) + +> Sketchnote por [Tomomi Imura](https://twitter.com/girlie_mac) + +A busca pela inteligência artificial é baseada na procura por conhecimento, para compreender o mundo de forma semelhante a como os humanos fazem. Mas como você pode fazer isso? + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +Nos primeiros dias da IA, a abordagem de cima para baixo para criar sistemas inteligentes (discutida na lição anterior) era popular. A ideia era extrair o conhecimento das pessoas para alguma forma legível por máquina e, em seguida, usá-lo para resolver problemas automaticamente. Essa abordagem baseava-se em duas grandes ideias: + +* Representação do Conhecimento +* Raciocínio + +## Representação do Conhecimento + +Um dos conceitos importantes na IA Simbólica é o **conhecimento**. É importante diferenciar conhecimento de *informação* ou *dados*. Por exemplo, pode-se dizer que livros contêm conhecimento, porque alguém pode estudar livros e se tornar um especialista. No entanto, o que os livros contêm é, na verdade, chamado de *dados*, e ao ler livros e integrar esses dados em nosso modelo de mundo, convertemos esses dados em conhecimento. + +> ✅ **Conhecimento** é algo que está contido em nossa mente e representa nossa compreensão do mundo. Ele é obtido por um processo ativo de **aprendizagem**, que integra pedaços de informação que recebemos em nosso modelo ativo do mundo. + +Na maioria das vezes, não definimos estritamente conhecimento, mas o alinhamos com outros conceitos relacionados usando a [Pirâmide DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Ela contém os seguintes conceitos: + +* **Dados** são algo representado em mídias físicas, como texto escrito ou palavras faladas. Dados existem independentemente dos seres humanos e podem ser transmitidos entre as pessoas. +* **Informação** é como interpretamos dados em nossa mente. Por exemplo, quando ouvimos a palavra *computador*, temos alguma compreensão do que é. +* **Conhecimento** é a informação integrada em nosso modelo de mundo. Por exemplo, uma vez que aprendemos o que é um computador, começamos a ter algumas ideias sobre como ele funciona, quanto custa e para que pode ser usado. Essa rede de conceitos inter-relacionados forma nosso conhecimento. +* **Sabedoria** é mais um nível de nossa compreensão do mundo e representa *meta-conhecimento*, ou seja, alguma noção de como e quando o conhecimento deve ser usado. + + + +*Imagem [da Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), Por Longlivetheux - Trabalho próprio, CC BY-SA 4.0* + +Assim, o problema da **representação do conhecimento** é encontrar uma maneira eficaz de representar o conhecimento dentro de um computador na forma de dados, para torná-lo automaticamente utilizável. Isso pode ser visto como um espectro: + +![Espectro de representação do conhecimento](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.pt.png) + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +* À esquerda, existem tipos muito simples de representações de conhecimento que podem ser efetivamente utilizados por computadores. O mais simples é o algorítmico, quando o conhecimento é representado por um programa de computador. No entanto, essa não é a melhor maneira de representar conhecimento, pois não é flexível. O conhecimento dentro de nossa mente é frequentemente não algorítmico. +* À direita, existem representações como texto natural. É a mais poderosa, mas não pode ser usada para raciocínio automático. + +> ✅ Pense por um minuto sobre como você representa conhecimento em sua mente e o converte em anotações. Existe um formato específico que funciona bem para você ajudar na retenção? + +## Classificando Representações de Conhecimento Computacional + +Podemos classificar diferentes métodos de representação de conhecimento computacional nas seguintes categorias: + +* **Representações em rede** baseiam-se no fato de que temos uma rede de conceitos inter-relacionados em nossa mente. Podemos tentar reproduzir as mesmas redes como um gráfico dentro de um computador - uma chamada **rede semântica**. + +1. **Triplas Objeto-Atributo-Valor** ou **pares atributo-valor**. Uma vez que um gráfico pode ser representado dentro de um computador como uma lista de nós e arestas, podemos representar uma rede semântica por uma lista de triplas, contendo objetos, atributos e valores. Por exemplo, construímos as seguintes triplas sobre linguagens de programação: + +Objeto | Atributo | Valor +-------|-----------|------ +Python | é | Linguagem-Destipada +Python | inventado-por | Guido van Rossum +Python | sintaxe-bloco | indentação +Linguagem-Destipada | não tem | definições de tipo + +> ✅ Pense em como triplas podem ser usadas para representar outros tipos de conhecimento. + +2. **Representações hierárquicas** enfatizam o fato de que frequentemente criamos uma hierarquia de objetos em nossa mente. Por exemplo, sabemos que um canário é um pássaro, e todos os pássaros têm asas. Também temos alguma ideia sobre qual é a cor de um canário normalmente, e qual é a sua velocidade de voo. + + - **Representação em quadro** baseia-se em representar cada objeto ou classe de objetos como um **quadro** que contém **slots**. Slots têm possíveis valores padrão, restrições de valor ou procedimentos armazenados que podem ser chamados para obter o valor de um slot. Todos os quadros formam uma hierarquia semelhante a uma hierarquia de objetos em linguagens de programação orientadas a objetos. + - **Cenários** são um tipo especial de quadros que representam situações complexas que podem se desenrolar ao longo do tempo. + +**Python** + +Slot | Valor | Valor padrão | Intervalo | +-----|-------|---------------|----------| +Nome | Python | | | +É-Uma | Linguagem-Destipada | | | +Caso da Variável | | CamelCase | | +Comprimento do Programa | | | 5-5000 linhas | +Sintaxe do Bloco | Indente | | | + +3. **Representações procedurais** baseiam-se em representar conhecimento por uma lista de ações que podem ser executadas quando uma certa condição ocorre. + - Regras de produção são declarações do tipo se-então que nos permitem tirar conclusões. Por exemplo, um médico pode ter uma regra dizendo que **SE** um paciente tem febre alta **OU** um nível elevado de proteína C-reativa no exame de sangue **ENTÃO** ele tem uma inflamação. Uma vez que encontramos uma das condições, podemos chegar a uma conclusão sobre a inflamação e, em seguida, usá-la em um raciocínio posterior. + - Algoritmos podem ser considerados outra forma de representação procedural, embora quase nunca sejam usados diretamente em sistemas baseados em conhecimento. + +4. **Lógica** foi originalmente proposta por Aristóteles como uma maneira de representar o conhecimento humano universal. + - A Lógica de Predicados, como uma teoria matemática, é rica demais para ser computável, portanto, normalmente usa-se algum subconjunto dela, como cláusulas Horn usadas em Prolog. + - A Lógica Descritiva é uma família de sistemas lógicos usados para representar e raciocinar sobre hierarquias de objetos em representações de conhecimento distribuído, como a *web semântica*. + +## Sistemas Especialistas + +Um dos primeiros sucessos da IA simbólica foram os chamados **sistemas especialistas** - sistemas computacionais que foram projetados para atuar como um especialista em algum domínio de problema limitado. Eles eram baseados em uma **base de conhecimento** extraída de um ou mais especialistas humanos e continham um **motor de inferência** que realizava algum raciocínio sobre isso. + +![Arquitetura Humana](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.pt.png) | ![Sistema Baseado em Conhecimento](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.pt.png) +---------------------------------------------|------------------------------------------------ +Estrutura simplificada de um sistema neural humano | Arquitetura de um sistema baseado em conhecimento + +Os sistemas especialistas são construídos como o sistema de raciocínio humano, que contém **memória de curto prazo** e **memória de longo prazo**. Da mesma forma, em sistemas baseados em conhecimento, distinguimos os seguintes componentes: + +* **Memória do problema**: contém o conhecimento sobre o problema que está sendo resolvido atualmente, ou seja, a temperatura ou pressão arterial de um paciente, se ele tem inflamação ou não, etc. Esse conhecimento também é chamado de **conhecimento estático**, porque contém uma instantânea do que sabemos atualmente sobre o problema - o chamado *estado do problema*. +* **Base de conhecimento**: representa o conhecimento de longo prazo sobre um domínio de problema. É extraído manualmente de especialistas humanos e não muda de consulta para consulta. Como permite navegar de um estado do problema para outro, também é chamado de **conhecimento dinâmico**. +* **Motor de inferência**: orquestra todo o processo de busca no espaço do estado do problema, fazendo perguntas ao usuário quando necessário. Também é responsável por encontrar as regras corretas a serem aplicadas a cada estado. + +Como exemplo, vamos considerar o seguinte sistema especialista para determinar um animal com base em suas características físicas: + +![Árvore AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.pt.png) + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +Esse diagrama é chamado de **árvore AND-OR**, e é uma representação gráfica de um conjunto de regras de produção. Desenhar uma árvore é útil no início da extração de conhecimento do especialista. Para representar o conhecimento dentro do computador, é mais conveniente usar regras: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +Você pode notar que cada condição no lado esquerdo da regra e a ação são essencialmente triplas objeto-atributo-valor (OAV). **Memória de trabalho** contém o conjunto de triplas OAV que correspondem ao problema que está sendo resolvido atualmente. Um **motor de regras** procura regras para as quais uma condição é satisfeita e as aplica, adicionando outra tripla à memória de trabalho. + +> ✅ Escreva sua própria árvore AND-OR sobre um tópico que você goste! + +### Inferência Direta vs. Inferência Reversa + +O processo descrito acima é chamado de **inferência direta**. Ele começa com alguns dados iniciais sobre o problema disponíveis na memória de trabalho e, em seguida, executa o seguinte loop de raciocínio: + +1. Se o atributo alvo estiver presente na memória de trabalho - pare e forneça o resultado +2. Procure todas as regras cuja condição esteja atualmente satisfeita - obtenha o **conjunto de conflitos** de regras. +3. Realize a **resolução de conflitos** - selecione uma regra que será executada neste passo. Pode haver diferentes estratégias de resolução de conflitos: + - Selecione a primeira regra aplicável na base de conhecimento + - Selecione uma regra aleatória + - Selecione uma regra *mais específica*, ou seja, aquela que atende ao maior número de condições no "lado esquerdo" (LHS) +4. Aplique a regra selecionada e insira um novo pedaço de conhecimento no estado do problema +5. Repita a partir do passo 1. + +No entanto, em alguns casos, podemos querer começar com um conhecimento vazio sobre o problema e fazer perguntas que nos ajudem a chegar à conclusão. Por exemplo, ao fazer um diagnóstico médico, geralmente não realizamos todas as análises médicas antecipadamente antes de começar a diagnosticar o paciente. Preferimos realizar análises quando uma decisão precisa ser tomada. + +Esse processo pode ser modelado usando **inferência reversa**. Ele é impulsionado pelo **objetivo** - o valor do atributo que estamos tentando encontrar: + +1. Selecione todas as regras que podem nos dar o valor de um objetivo (ou seja, com o objetivo no RHS ("lado direito")) - um conjunto de conflitos +1. Se não houver regras para esse atributo, ou se houver uma regra dizendo que devemos perguntar o valor ao usuário - pergunte, caso contrário: +1. Use a estratégia de resolução de conflitos para selecionar uma regra que usaremos como *hipótese* - tentaremos prová-la +1. Repetidamente repita o processo para todos os atributos no LHS da regra, tentando prová-los como objetivos +1. Se em algum momento o processo falhar - use outra regra no passo 3. + +> ✅ Em quais situações a inferência direta é mais apropriada? E a inferência reversa? + +### Implementando Sistemas Especialistas + +Os sistemas especialistas podem ser implementados usando diferentes ferramentas: + +* Programando-os diretamente em alguma linguagem de programação de alto nível. Esta não é a melhor ideia, pois a principal vantagem de um sistema baseado em conhecimento é que o conhecimento é separado da inferência, e potencialmente um especialista em domínio de problema deve ser capaz de escrever regras sem entender os detalhes do processo de inferência. +* Usando **shell de sistemas especialistas**, ou seja, um sistema especificamente projetado para ser populado com conhecimento usando alguma linguagem de representação de conhecimento. + +## ✍️ Exercício: Inferência Animal + +Veja [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) para um exemplo de implementação de sistema especialista de inferência direta e reversa. + +> **Nota**: Este exemplo é bastante simples e apenas dá a ideia de como um sistema especialista se parece. Uma vez que você comece a criar tal sistema, você só notará um comportamento *inteligente* a partir do momento em que atingir um certo número de regras, em torno de 200+. Em algum ponto, as regras se tornam complexas demais para manter todas elas em mente, e nesse momento você pode começar a se perguntar por que um sistema toma certas decisões. No entanto, a característica importante dos sistemas baseados em conhecimento é que você pode sempre *explicar* exatamente como qualquer uma das decisões foi tomada. + +## Ontologias e a Web Semântica + +No final do século 20, houve uma iniciativa para usar a representação do conhecimento para anotar recursos da Internet, de modo que fosse possível encontrar recursos que corresponderiam a consultas muito específicas. Esse movimento foi chamado de **Web Semântica**, e baseou-se em vários conceitos: + +- Uma representação de conhecimento especial baseada em **[lógicas descritivas](https://en.wikipedia.org/wiki/Description_logic)** (DL). É semelhante à representação de conhecimento em quadros, porque constrói uma hierarquia de objetos com propriedades, mas possui semântica lógica formal e inferência. Há uma família inteira de DLs que equilibram expressividade e complexidade algorítmica de inferência. +- Representação de conhecimento distribuído, onde todos os conceitos são representados por um identificador URI global, tornando possível criar hierarquias de conhecimento que se estendem pela internet. +- Uma família de linguagens baseadas em XML para descrição de conhecimento: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Um conceito central na Web Semântica é o conceito de **Ontologia**. Refere-se a uma especificação explícita de um domínio de problema usando alguma representação formal de conhecimento. A ontologia mais simples pode ser apenas uma hierarquia de objetos em um domínio de problema, mas ontologias mais complexas incluirão regras que podem ser usadas para inferência. + +Na web semântica, todas as representações são baseadas em triplas. Cada objeto e cada relação são identificados de forma única pelo URI. Por exemplo, se quisermos afirmar o fato de que este Currículo de IA foi desenvolvido por Dmitry Soshnikov em 1º de janeiro de 2022 - aqui estão as triplas que podemos usar: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ Aqui `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` são alguns URIs bem conhecidos e universalmente aceitos para expressar os conceitos de *criador* e *data de criação*. + +Em um caso mais complexo, se quisermos definir uma lista de criadores, podemos usar algumas estruturas de dados definidas em RDF. + + + +> Diagramas acima por [Dmitry Soshnikov](http://soshnikov.com) + +O progresso na construção da Web Semântica foi de certa forma desacelerado pelo sucesso dos motores de busca e técnicas de processamento de linguagem natural, que permitem extrair dados estruturados de texto. No entanto, em algumas áreas, ainda existem esforços significativos para manter ontologias e bases de conhecimento. Alguns projetos que valem a pena notar: + +* [WikiData](https://wikidata.org/) é uma coleção de bases de conhecimento legíveis por máquina associadas ao Wikipedia. A maior parte dos dados é extraída das *InfoBoxes* do Wikipedia, pedaços de conteúdo estruturado dentro das páginas do Wikipedia. Você pode [consultar](https://query.wikidata.org/) wikidata em SPARQL, uma linguagem de consulta especial para a Web Semântica. Aqui está uma consulta de exemplo que exibe as cores de olhos mais populares entre os humanos: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) é outro esforço semelhante ao WikiData. + +> ✅ Se você quiser experimentar a construção de suas próprias ontologias, ou abrir ontologias existentes, há um ótimo editor visual de ontologias chamado [Protégé](https://protege.stanford.edu/). Baixe-o ou use-o online. + + + +*Editor Web Protégé aberto com a ontologia da Família Romanov. Captura de tela por Dmitry Soshnikov* + +## ✍️ Exercício: Uma Ontologia Familiar + +Veja [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) para um exemplo de uso de técnicas da Web Semântica para raciocinar sobre relacionamentos familiares. Nós pegaremos uma árvore genealógica representada no formato GEDCOM comum e uma ontologia de relacionamentos familiares e construiremos um gráfico de todos os relacionamentos familiares para um conjunto dado de indivíduos. + +## Grafo de Conceitos da Microsoft + +Na maioria dos casos, as ontologias são cuidadosamente criadas à mão. No entanto, também é possível **extrair** ontologias de dados não estruturados, por exemplo, de textos em linguagem natural. + +Uma dessas tentativas foi feita pela Microsoft Research, resultando no [Grafo de Conceitos da Microsoft](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +É uma grande coleção de entidades agrupadas usando a relação de herança `is-a`. Permite responder a perguntas como "O que é a Microsoft?" - a resposta sendo algo como "uma empresa com probabilidade de 0,87 e uma marca + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/2-Symbolic/assignment.md b/translations/pt/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..4aaa407f --- /dev/null +++ b/translations/pt/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# Construir uma Ontologia + +Construir uma base de conhecimento é tudo sobre categorizar um modelo que representa fatos sobre um tópico. Escolha um tópico - como uma pessoa, um lugar ou uma coisa - e então construa um modelo desse tópico. Utilize algumas das técnicas e estratégias de construção de modelos descritas nesta lição. Um exemplo seria criar uma ontologia de uma sala de estar com móveis, luzes e assim por diante. Como a sala de estar difere da cozinha? Do banheiro? Como você sabe que é uma sala de estar e não uma sala de jantar? Use [Protégé](https://protege.stanford.edu/) para construir sua ontologia. + +**Aviso**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..bb2db107 --- /dev/null +++ b/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,95 @@ +# Introdução às Redes Neurais: Perceptron + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Uma das primeiras tentativas de implementar algo semelhante a uma rede neural moderna foi feita por Frank Rosenblatt, do Cornell Aeronautical Laboratory, em 1957. Foi uma implementação de hardware chamada "Mark-1", projetada para reconhecer figuras geométricas primitivas, como triângulos, quadrados e círculos. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> Imagens [da Wikipedia](https://en.wikipedia.org/wiki/Perceptron) + +Uma imagem de entrada era representada por uma matriz de fotocélulas de 20x20, então a rede neural tinha 400 entradas e uma saída binária. Uma rede simples continha um neurônio, também chamado de **unidade lógica de limiar**. Os pesos da rede neural agiam como potenciômetros que exigiam ajuste manual durante a fase de treinamento. + +> ✅ Um potenciômetro é um dispositivo que permite ao usuário ajustar a resistência de um circuito. + +> O New York Times escreveu sobre o perceptron na época: *o embrião de um computador eletrônico que [a Marinha] espera que possa andar, falar, ver, escrever, se reproduzir e estar consciente de sua existência.* + +## Modelo Perceptron + +Suponha que temos N características em nosso modelo, nesse caso, o vetor de entrada seria um vetor de tamanho N. Um perceptron é um modelo de **classificação binária**, ou seja, pode distinguir entre duas classes de dados de entrada. Vamos supor que, para cada vetor de entrada x, a saída do nosso perceptron seria +1 ou -1, dependendo da classe. A saída será calculada usando a fórmula: + +y(x) = f(wTx) + +onde f é uma função de ativação em degrau + + + + +## Treinando o Perceptron + +Para treinar um perceptron, precisamos encontrar um vetor de pesos w que classifique a maioria dos valores corretamente, ou seja, resulte no menor **erro**. Este erro E é definido pelo **critério do perceptron** da seguinte maneira: + +E(w) = -∑wTxiti + +onde: + +* a soma é feita sobre aqueles pontos de dados de treinamento i que resultam em classificação errada +* xi é o dado de entrada, e ti é -1 ou +1 para exemplos negativos e positivos, respectivamente. + +Este critério é considerado uma função dos pesos w, e precisamos minimizá-lo. Muitas vezes, um método chamado **descida do gradiente** é utilizado, no qual começamos com alguns pesos iniciais w(0), e então, a cada passo, atualizamos os pesos de acordo com a fórmula: + +w(t+1) = w(t) - η∇E(w) + +Aqui, η é a chamada **taxa de aprendizado**, e ∇E(w) denota o **gradiente** de E. Depois de calcular o gradiente, terminamos com + +w(t+1) = w(t) + ∑ηxiti + +O algoritmo em Python se parece com isso: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## Conclusão + +Nesta lição, você aprendeu sobre um perceptron, que é um modelo de classificação binária, e como treiná-lo usando um vetor de pesos. + +## 🚀 Desafio + +Se você gostaria de tentar construir seu próprio perceptron, experimente [este laboratório no Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) que usa o [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Revisão & Autoestudo + +Para ver como podemos usar o perceptron para resolver um problema simples, bem como problemas da vida real, e para continuar aprendendo - vá para o caderno [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Aqui está um [artigo interessante sobre perceptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) também. + +## [Tarefa](lab/README.md) + +Nesta lição, implementamos um perceptron para a tarefa de classificação binária e o usamos para classificar entre dois dígitos manuscritos. Neste laboratório, você é solicitado a resolver o problema de classificação de dígitos completamente, ou seja, determinar qual dígito é mais provável que corresponda a uma determinada imagem. + +* [Instruções](lab/README.md) +* [Caderno](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..6750efe9 --- /dev/null +++ b/translations/pt/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# Classificação Multi-Classe com Perceptron + +Tarefa do [Currículo AI para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Usando o código que desenvolvemos nesta lição para classificação binária de dígitos manuscritos MNIST, crie um classificador multi-classe que seja capaz de reconhecer qualquer dígito. Calcule a precisão da classificação nos conjuntos de dados de treino e teste, e imprima a matriz de confusão. + +## Dicas + +1. Para cada dígito, crie um conjunto de dados para o classificador binário de "este dígito vs. todos os outros dígitos" +1. Treine 10 perceptrons diferentes para classificação binária (um para cada dígito) +1. Defina uma função que irá classificar um dígito de entrada + +> **Dica**: Se combinarmos os pesos de todos os 10 perceptrons em uma única matriz, devemos ser capazes de aplicar todos os 10 perceptrons aos dígitos de entrada por meio de uma multiplicação de matriz. O dígito mais provável pode então ser encontrado apenas aplicando a operação `argmax` na saída. + +## Notebook Inicial + +Comece o laboratório abrindo [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Aviso Legal**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..64ccec40 --- /dev/null +++ b/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# Introdução às Redes Neurais. Perceptron Multicamadas + +Na seção anterior, você aprendeu sobre o modelo de rede neural mais simples - o perceptron de uma camada, um modelo de classificação linear de duas classes. + +Nesta seção, vamos expandir esse modelo para um framework mais flexível, permitindo que possamos: + +* realizar **classificação multi-classe** além da classificação de duas classes +* resolver **problemas de regressão** além da classificação +* separar classes que não são linearmente separáveis + +Também desenvolveremos nosso próprio framework modular em Python que nos permitirá construir diferentes arquiteturas de redes neurais. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalização do Aprendizado de Máquina + +Vamos começar formalizando o problema do Aprendizado de Máquina. Suponha que temos um conjunto de dados de treinamento **X** com rótulos **Y**, e precisamos construir um modelo *f* que fará as previsões mais precisas. A qualidade das previsões é medida pela **Função de Perda** ℒ. As seguintes funções de perda são frequentemente utilizadas: + +* Para problemas de regressão, quando precisamos prever um número, podemos usar o **erro absoluto** ∑i|f(x(i))-y(i)|, ou o **erro quadrático** ∑i(f(x(i))-y(i))2 +* Para classificação, usamos a **perda 0-1** (que é essencialmente a mesma que a **acurácia** do modelo), ou a **perda logística**. + +Para o perceptron de uma camada, a função *f* foi definida como uma função linear *f(x)=wx+b* (aqui *w* é a matriz de pesos, *x* é o vetor de características de entrada, e *b* é o vetor de viés). Para diferentes arquiteturas de redes neurais, essa função pode assumir uma forma mais complexa. + +> No caso da classificação, muitas vezes é desejável obter probabilidades das classes correspondentes como saída da rede. Para converter números arbitrários em probabilidades (por exemplo, para normalizar a saída), frequentemente usamos a função **softmax** σ, e a função *f* se torna *f(x)=σ(wx+b)* + +Na definição de *f* acima, *w* e *b* são chamados de **parâmetros** θ=⟨*w,b*⟩. Dado o conjunto de dados ⟨**X**,**Y**⟩, podemos calcular um erro geral em todo o conjunto de dados como uma função dos parâmetros θ. + +> ✅ **O objetivo do treinamento da rede neural é minimizar o erro variando os parâmetros θ** + +## Otimização por Gradiente Descendente + +Há um método bem conhecido de otimização de funções chamado **gradiente descendente**. A ideia é que podemos calcular uma derivada (no caso multi-dimensional chamada **gradiente**) da função de perda em relação aos parâmetros, e variar os parâmetros de tal forma que o erro diminua. Isso pode ser formalizado da seguinte maneira: + +* Inicialize os parâmetros com alguns valores aleatórios w(0), b(0) +* Repita o seguinte passo várias vezes: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Durante o treinamento, os passos de otimização devem ser calculados considerando todo o conjunto de dados (lembre-se que a perda é calculada como uma soma em todas as amostras de treinamento). No entanto, na prática, pegamos pequenas porções do conjunto de dados chamadas **minibatches**, e calculamos gradientes com base em um subconjunto de dados. Como o subconjunto é escolhido aleatoriamente a cada vez, esse método é chamado de **gradiente descendente estocástico** (SGD). + +## Perceptrons Multicamadas e Retropropagação + +A rede de uma camada, como vimos acima, é capaz de classificar classes linearmente separáveis. Para construir um modelo mais rico, podemos combinar várias camadas da rede. Matematicamente, isso significaria que a função *f* teria uma forma mais complexa e seria computada em várias etapas: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Aqui, α é uma **função de ativação não linear**, σ é uma função softmax, e os parâmetros θ=<*w1,b1,w2,b2*>. + +O algoritmo de gradiente descendente permaneceria o mesmo, mas seria mais difícil calcular os gradientes. Dada a regra da diferenciação em cadeia, podemos calcular as derivadas como: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ A regra da diferenciação em cadeia é usada para calcular as derivadas da função de perda em relação aos parâmetros. + +Note que a parte mais à esquerda de todas essas expressões é a mesma, e assim podemos efetivamente calcular as derivadas começando pela função de perda e indo "para trás" através do gráfico computacional. Assim, o método de treinamento de um perceptron multicamadas é chamado de **retropropagação**, ou 'backprop'. + +gráfico de computação + +> TODO: citação da imagem + +> ✅ Vamos abordar a retropropagação com muito mais detalhes em nosso exemplo de notebook. + +## Conclusão + +Nesta lição, construímos nossa própria biblioteca de rede neural e a utilizamos para uma tarefa simples de classificação bidimensional. + +## 🚀 Desafio + +No notebook acompanhante, você implementará seu próprio framework para construir e treinar perceptrons multicamadas. Você poderá ver em detalhes como as redes neurais modernas operam. + +Prossiga para o notebook [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) e trabalhe nele. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Revisão e Autoestudo + +A retropropagação é um algoritmo comum usado em IA e ML, vale a pena estudar [com mais detalhes](https://wikipedia.org/wiki/Backpropagation) + +## [Tarefa](lab/README.md) + +Neste laboratório, você deve usar o framework que construiu nesta lição para resolver a classificação de dígitos manuscritos do MNIST. + +* [Instruções](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..f32fb33a --- /dev/null +++ b/translations/pt/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# Classificação MNIST com Nossa Própria Estrutura + +Tarefa do [Currículo de AI para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Resolva o problema de classificação de dígitos manuscritos MNIST usando perceptrons de 1, 2 e 3 camadas. Utilize a estrutura de rede neural que desenvolvemos na aula. + +## Iniciando o Notebook + +Comece o laboratório abrindo [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Perguntas + +Como resultado deste laboratório, tente responder às seguintes perguntas: + +- A função de ativação entre as camadas afeta o desempenho da rede? +- Precisamos de uma rede de 2 ou 3 camadas para esta tarefa? +- Você enfrentou algum problema ao treinar a rede? Especialmente à medida que o número de camadas aumentou. +- Como os pesos da rede se comportam durante o treinamento? Você pode plotar o valor absoluto máximo dos pesos em relação à época para entender a relação. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..494e36ca --- /dev/null +++ b/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# Estruturas de Redes Neurais + +Como já aprendemos, para treinar redes neurais de forma eficiente, precisamos fazer duas coisas: + +* Operar em tensores, por exemplo, multiplicar, adicionar e calcular algumas funções como sigmoid ou softmax +* Calcular gradientes de todas as expressões, a fim de realizar a otimização por descida de gradiente + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Enquanto a biblioteca `numpy` pode fazer a primeira parte, precisamos de algum mecanismo para calcular gradientes. Em [nossa estrutura](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) que desenvolvemos na seção anterior, tivemos que programar manualmente todas as funções derivadas dentro do método `backward`, que realiza a retropropagação. Idealmente, uma estrutura deveria nos dar a oportunidade de calcular gradientes de *qualquer expressão* que pudermos definir. + +Outra coisa importante é poder realizar cálculos em GPU, ou em qualquer outra unidade de computação especializada, como [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). O treinamento de redes neurais profundas requer *muitos* cálculos, e poder paralelizar esses cálculos em GPUs é muito importante. + +> ✅ O termo 'paralelizar' significa distribuir os cálculos entre vários dispositivos. + +Atualmente, as duas estruturas de rede neural mais populares são: [TensorFlow](http://TensorFlow.org) e [PyTorch](https://pytorch.org/). Ambas fornecem uma API de baixo nível para operar com tensores tanto na CPU quanto na GPU. Acima da API de baixo nível, também existe uma API de nível superior, chamada [Keras](https://keras.io/) e [PyTorch Lightning](https://pytorchlightning.ai/) respectivamente. + +API de Baixo Nível | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +API de Alto Nível| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**APIs de baixo nível** em ambas as estruturas permitem que você construa os chamados **gráficos computacionais**. Este gráfico define como calcular a saída (geralmente a função de perda) com parâmetros de entrada dados, e pode ser enviado para computação na GPU, se estiver disponível. Existem funções para diferenciar esse gráfico computacional e calcular gradientes, que podem ser usados para otimizar os parâmetros do modelo. + +**APIs de alto nível** consideram as redes neurais como uma **sequência de camadas**, tornando a construção da maioria das redes neurais muito mais fácil. O treinamento do modelo geralmente requer a preparação dos dados e, em seguida, a chamada de uma função `fit` para realizar o trabalho. + +A API de alto nível permite que você construa redes neurais típicas muito rapidamente, sem se preocupar com muitos detalhes. Ao mesmo tempo, a API de baixo nível oferece muito mais controle sobre o processo de treinamento, e, portanto, é muito utilizada em pesquisas, quando se lida com novas arquiteturas de redes neurais. + +É também importante entender que você pode usar ambas as APIs juntas, por exemplo, você pode desenvolver sua própria arquitetura de camada de rede usando a API de baixo nível e, em seguida, usá-la dentro da rede maior construída e treinada com a API de alto nível. Ou você pode definir uma rede usando a API de alto nível como uma sequência de camadas e, em seguida, usar seu próprio loop de treinamento de baixo nível para realizar a otimização. Ambas as APIs usam os mesmos conceitos básicos subjacentes e foram projetadas para funcionar bem juntas. + +## Aprendizado + +Neste curso, oferecemos a maior parte do conteúdo tanto para PyTorch quanto para TensorFlow. Você pode escolher sua estrutura preferida e apenas passar pelos notebooks correspondentes. Se você não tem certeza de qual estrutura escolher, leia algumas discussões na internet sobre **PyTorch vs. TensorFlow**. Você também pode dar uma olhada em ambas as estruturas para ter uma melhor compreensão. + +Onde for possível, usaremos APIs de Alto Nível por simplicidade. No entanto, acreditamos que é importante entender como as redes neurais funcionam desde o início, portanto, no começo, começamos trabalhando com a API de baixo nível e tensores. No entanto, se você deseja avançar rapidamente e não quer gastar muito tempo aprendendo esses detalhes, pode pular essas partes e ir direto para os notebooks da API de alto nível. + +## ✍️ Exercícios: Estruturas + +Continue seu aprendizado nos seguintes notebooks: + +API de Baixo Nível | [Notebook TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------|-------------------------------------|-------------------------------- +API de Alto Nível| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Após dominar as estruturas, vamos recapitular a noção de overfitting. + +# Overfitting + +Overfitting é um conceito extremamente importante em aprendizado de máquina, e é muito importante compreendê-lo corretamente! + +Considere o seguinte problema de aproximação de 5 pontos (representados por `x` nos gráficos abaixo): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.pt.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.pt.jpg) +-------------------------|-------------------------- +**Modelo linear, 2 parâmetros** | **Modelo não linear, 7 parâmetros** +Erro de treinamento = 5.3 | Erro de validação = 0 +Erro de validação = 5.1 | Erro de validação = 20 + +* À esquerda, vemos uma boa aproximação em linha reta. Como o número de parâmetros é adequado, o modelo capta a ideia por trás da distribuição dos pontos corretamente. +* À direita, o modelo é poderoso demais. Como temos apenas 5 pontos e o modelo possui 7 parâmetros, ele pode se ajustar de tal forma que passe por todos os pontos, fazendo com que o erro de treinamento seja 0. No entanto, isso impede que o modelo entenda o padrão correto por trás dos dados, portanto, o erro de validação é muito alto. + +É muito importante encontrar um equilíbrio correto entre a riqueza do modelo (número de parâmetros) e o número de amostras de treinamento. + +## Por que o overfitting ocorre + + * Dados de treinamento insuficientes + * Modelo muito poderoso + * Muito ruído nos dados de entrada + +## Como detectar overfitting + +Como você pode ver no gráfico acima, o overfitting pode ser detectado por um erro de treinamento muito baixo e um erro de validação alto. Normalmente, durante o treinamento, veremos tanto os erros de treinamento quanto de validação começando a diminuir, e então em algum momento o erro de validação pode parar de diminuir e começar a aumentar. Isso será um sinal de overfitting e um indicativo de que provavelmente devemos parar o treinamento neste ponto (ou pelo menos fazer uma cópia do modelo). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.pt.png) + +## Como prevenir o overfitting + +Se você perceber que o overfitting está ocorrendo, você pode fazer uma das seguintes ações: + + * Aumentar a quantidade de dados de treinamento + * Diminuir a complexidade do modelo + * Usar alguma [técnica de regularização](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), como [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), que consideraremos mais tarde. + +## Overfitting e a Troca de Viés-Variância + +Overfitting é, na verdade, um caso de um problema mais genérico em estatísticas chamado [Troca de Viés-Variância](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Se considerarmos as possíveis fontes de erro em nosso modelo, podemos ver dois tipos de erros: + +* **Erros de viés** são causados pelo nosso algoritmo não conseguir capturar corretamente a relação entre os dados de treinamento. Isso pode resultar do fato de que nosso modelo não é poderoso o suficiente (**underfitting**). +* **Erros de variância**, que são causados pelo modelo aproximando o ruído nos dados de entrada em vez de uma relação significativa (**overfitting**). + +Durante o treinamento, o erro de viés diminui (à medida que nosso modelo aprende a aproximar os dados), e o erro de variância aumenta. É importante parar o treinamento - seja manualmente (quando detectamos overfitting) ou automaticamente (introduzindo regularização) - para evitar o overfitting. + +## Conclusão + +Nesta lição, você aprendeu sobre as diferenças entre as várias APIs para os dois frameworks de IA mais populares, TensorFlow e PyTorch. Além disso, você aprendeu sobre um tópico muito importante, o overfitting. + +## 🚀 Desafio + +Nos notebooks acompanhantes, você encontrará 'tarefas' na parte inferior; trabalhe através dos notebooks e complete as tarefas. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Revisão e Autoestudo + +Faça uma pesquisa sobre os seguintes tópicos: + +- TensorFlow +- PyTorch +- Overfitting + +Pergunte a si mesmo as seguintes questões: + +- Qual é a diferença entre TensorFlow e PyTorch? +- Qual é a diferença entre overfitting e underfitting? + +## [Tarefa](lab/README.md) + +Neste laboratório, você é solicitado a resolver dois problemas de classificação usando redes totalmente conectadas de camadas única e múltipla, usando PyTorch ou TensorFlow. + +* [Instruções](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..172febb6 --- /dev/null +++ b/translations/pt/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# Classificação com PyTorch/TensorFlow + +Atividade de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Resolva dois problemas de classificação usando redes totalmente conectadas de camada única e multicamada com PyTorch ou TensorFlow: + +1. Problema de **[classificação de íris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - um exemplo de problema com dados de entrada tabulares, que pode ser tratado por aprendizado de máquina clássico. Seu objetivo será classificar íris em 3 classes, com base em 4 parâmetros numéricos. +1. Problema de classificação de dígitos manuscritos **MNIST** que já vimos anteriormente. + +Experimente diferentes arquiteturas de rede para alcançar a melhor precisão possível. + +## Iniciando o Notebook + +Comece o laboratório abrindo [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que as traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/3-NeuralNetworks/README.md b/translations/pt/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..c11c84fb --- /dev/null +++ b/translations/pt/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# Introdução às Redes Neurais + +![Resumo do conteúdo de Introdução às Redes Neurais em um doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.pt.png) + +Como discutimos na introdução, uma das maneiras de alcançar a inteligência é treinar um **modelo de computador** ou um **cérebro artificial**. Desde meados do século XX, pesquisadores tentaram diferentes modelos matemáticos, até que, nos últimos anos, essa abordagem se mostrou extremamente bem-sucedida. Esses modelos matemáticos do cérebro são chamados de **redes neurais**. + +> Às vezes, as redes neurais são chamadas de *Redes Neurais Artificiais*, ANNs, para indicar que estamos falando de modelos, e não de redes reais de neurônios. + +## Aprendizado de Máquina + +As Redes Neurais são parte de uma disciplina maior chamada **Aprendizado de Máquina**, cujo objetivo é usar dados para treinar modelos de computador capazes de resolver problemas. O Aprendizado de Máquina constitui uma grande parte da Inteligência Artificial; no entanto, não abordamos o ML clássico neste currículo. + +> Visite nosso currículo separado **[Aprendizado de Máquina para Iniciantes](http://github.com/microsoft/ml-for-beginners)** para saber mais sobre o Aprendizado de Máquina clássico. + +No Aprendizado de Máquina, assumimos que temos um conjunto de dados de exemplos **X** e os valores de saída correspondentes **Y**. Os exemplos são frequentemente vetores N-dimensionais que consistem em **características**, e as saídas são chamadas de **rótulos**. + +Consideraremos os dois problemas mais comuns de aprendizado de máquina: + +* **Classificação**, onde precisamos classificar um objeto de entrada em duas ou mais classes. +* **Regressão**, onde precisamos prever um número numérico para cada uma das amostras de entrada. + +> Ao representar entradas e saídas como tensores, o conjunto de dados de entrada é uma matriz de tamanho M×N, onde M é o número de amostras e N é o número de características. Os rótulos de saída Y são o vetor de tamanho M. + +Neste currículo, focaremos apenas em modelos de redes neurais. + +## Um Modelo de Neurônio + +Da biologia, sabemos que nosso cérebro consiste em células neurais, cada uma delas tendo múltiplas "entradas" (axônios) e uma saída (dendrito). Axônios e dendritos podem conduzir sinais elétricos, e as conexões entre axônios e dendritos podem exibir diferentes graus de condutividade (controlados por neuromediadores). + +![Modelo de um Neurônio](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.pt.jpg) | ![Modelo de um Neurônio](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.pt.png) +----|---- +Neurônio Real *([Imagem](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) da Wikipedia)* | Neurônio Artificial *(Imagem do Autor)* + +Assim, o modelo matemático mais simples de um neurônio contém várias entradas X1, ..., XN e uma saída Y, além de uma série de pesos W1, ..., WN. A saída é calculada como: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +onde f é alguma **função de ativação** não linear. + +> Modelos iniciais de neurônios foram descritos no artigo clássico [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) de Warren McCullock e Walter Pitts em 1943. Donald Hebb, em seu livro "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)", propôs a maneira como essas redes podem ser treinadas. + +## Nesta Seção + +Nesta seção, aprenderemos sobre: +* [Perceptron](03-Perceptron/README.md), um dos primeiros modelos de rede neural para classificação em duas classes +* [Redes de múltiplas camadas](04-OwnFramework/README.md) com um caderno associado [como construir nossa própria estrutura](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Estruturas de Redes Neurais](05-Frameworks/README.md), com estes cadernos: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) e [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Overfitting](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Aviso Legal**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/pt/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..a3b0f58c --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# Introdução à Visão Computacional + +[A Visão Computacional](https://wikipedia.org/wiki/Computer_vision) é uma disciplina cujo objetivo é permitir que os computadores adquiram uma compreensão de alto nível de imagens digitais. Essa é uma definição bastante ampla, pois *compreensão* pode significar muitas coisas diferentes, incluindo encontrar um objeto em uma imagem (**detecção de objetos**), entender o que está acontecendo (**detecção de eventos**), descrever uma imagem em texto ou reconstruir uma cena em 3D. Também existem tarefas especiais relacionadas a imagens humanas: estimativa de idade e emoção, detecção e identificação de rostos, e estimativa de pose em 3D, para citar algumas. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Uma das tarefas mais simples da visão computacional é a **classificação de imagens**. + +A visão computacional é frequentemente considerada uma ramificação da IA. Hoje em dia, a maioria das tarefas de visão computacional é resolvida usando redes neurais. Aprenderemos mais sobre o tipo especial de redes neurais usadas para visão computacional, [redes neurais convolucionais](../07-ConvNets/README.md), ao longo desta seção. + +No entanto, antes de passar a imagem para uma rede neural, em muitos casos faz sentido usar algumas técnicas algorítmicas para melhorar a imagem. + +Existem várias bibliotecas Python disponíveis para processamento de imagens: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** pode ser usada para ler/escrever diferentes formatos de imagem. Também suporta ffmpeg, uma ferramenta útil para converter quadros de vídeo em imagens. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (também conhecido como PIL) é um pouco mais poderosa e também suporta algumas manipulações de imagem, como morphing, ajustes de paleta e mais. +* **[OpenCV](https://opencv.org/)** é uma poderosa biblioteca de processamento de imagens escrita em C++, que se tornou o padrão *de fato* para processamento de imagens. Ela possui uma interface conveniente para Python. +* **[dlib](http://dlib.net/)** é uma biblioteca C++ que implementa muitos algoritmos de aprendizado de máquina, incluindo alguns dos algoritmos de Visão Computacional. Também possui uma interface Python e pode ser usada para tarefas desafiadoras, como detecção de rostos e pontos de referência faciais. + +## OpenCV + +[OpenCV](https://opencv.org/) é considerado o padrão *de fato* para processamento de imagens. Ele contém muitos algoritmos úteis, implementados em C++. Você também pode chamar o OpenCV a partir do Python. + +Um bom lugar para aprender OpenCV é [este curso Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). Em nosso currículo, nosso objetivo não é aprender OpenCV, mas mostrar alguns exemplos de quando ele pode ser usado e como. + +### Carregando Imagens + +Imagens em Python podem ser convenientemente representadas por arrays NumPy. Por exemplo, imagens em escala de cinza com tamanho de 320x200 pixels seriam armazenadas em um array de 200x320, e imagens coloridas da mesma dimensão teriam a forma de 200x320x3 (para 3 canais de cor). Para carregar uma imagem, você pode usar o seguinte código: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Tradicionalmente, o OpenCV usa a codificação BGR (Azul-Verde-Vermelho) para imagens coloridas, enquanto o restante das ferramentas Python usa o mais tradicional RGB (Vermelho-Verde-Azul). Para que a imagem pareça correta, você precisa convertê-la para o espaço de cores RGB, seja trocando dimensões no array NumPy, ou chamando uma função do OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +As mesmas funções `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. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` +* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold`, que muitas vezes são preferíveis ao ajuste de brilho ou contraste. +* Aplicando diferentes [transformações](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) à imagem: + - **[Transformações afins](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** podem ser úteis se você precisar combinar rotação, redimensionamento e distorção à imagem e souber a localização de origem e destino de três pontos na imagem. Transformações afins mantêm linhas paralelas paralelas. + - **[Transformações de perspectiva](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** podem ser úteis quando você conhece as posições de origem e destino de 4 pontos na imagem. Por exemplo, se você tirar uma foto de um documento retangular através da câmera de um smartphone de algum ângulo, e quiser fazer uma imagem retangular do próprio documento. +* Compreendendo o movimento dentro da imagem usando **[fluxo óptico](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Exemplos de uso da Visão Computacional + +Em nosso [Notebook OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), damos alguns exemplos de quando a visão computacional pode ser usada para realizar tarefas específicas: + +* **Pré-processamento de uma fotografia de um livro em Braille**. Focamos em como podemos usar limiares, detecção de características, transformação de perspectiva e manipulações NumPy para separar símbolos individuais de Braille para posterior classificação por uma rede neural. + +![Imagem em Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.pt.jpeg) | ![Imagem em Braille Pré-processada](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.pt.png) | ![Símbolos em Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.pt.png) +----|-----|----- + +> Imagem do [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detectando movimento em vídeo usando diferença de quadros**. Se a câmera estiver fixa, então os quadros do feed da câmera devem ser bastante semelhantes entre si. Como os quadros são representados como arrays, apenas subtraindo esses arrays de dois quadros subsequentes obteremos a diferença de pixels, que deve ser baixa para quadros estáticos e aumentar quando houver movimento substancial na imagem. + +![Imagem de quadros de vídeo e diferenças de quadros](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.pt.png) + +> Imagem do [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detectando movimento usando Fluxo Óptico**. [O fluxo óptico](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nos permite entender como pixels individuais nos quadros de vídeo se movem. Existem dois tipos de fluxo óptico: + + - **Fluxo Óptico Denso** calcula o campo de vetores que mostra para cada pixel para onde ele está se movendo. + - **Fluxo Óptico Esparso** baseia-se na captura de algumas características distintivas na imagem (por exemplo, bordas) e construindo sua trajetória de quadro a quadro. + +![Imagem de Fluxo Óptico](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.pt.png) + +> Imagem do [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Notebooks de Exemplo: OpenCV [tente OpenCV em Ação](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Vamos fazer alguns experimentos com OpenCV explorando o [Notebook OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +## Conclusão + +Às vezes, tarefas relativamente complexas, como detecção de movimento ou detecção de ponta dos dedos, podem ser resolvidas puramente por visão computacional. Assim, é muito útil conhecer as técnicas básicas de visão computacional e o que bibliotecas como OpenCV podem fazer. + +## 🚀 Desafio + +Assista [a este vídeo](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) do AI Show para aprender sobre o projeto Cortic Tigers e como eles construíram uma solução baseada em blocos para democratizar tarefas de visão computacional por meio de um robô. Faça algumas pesquisas sobre outros projetos como esse que ajudam a integrar novos aprendizes no campo. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Revisão & Autoestudo + +Leia mais sobre fluxo óptico [neste ótimo tutorial](https://learnopencv.com/optical-flow-in-opencv/). + +## [Tarefa](lab/README.md) + +Neste laboratório, você fará um vídeo com gestos simples, e seu objetivo é extrair movimentos para cima/baixo/esquerda/direita usando fluxo óptico. + +Quadro de Movimento da Palma + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que as traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/pt/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..fd6297d3 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,23 @@ +# Detectando Movimentos usando Fluxo Óptico + +Trabalho de laboratório do [Currículo de IA para Iniciantes](https://aka.ms/ai-beginners). + +## Tarefa + +Considere [este vídeo](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), onde a palma de uma pessoa se move para a esquerda/direita/cima/baixo em um fundo estável. +Você foi treinado com dados até outubro de 2023. + +**Seu objetivo** será usar o Fluxo Óptico para determinar quais partes do vídeo contêm movimentos para cima/baixo/esquerda/direita. + +**Objetivo adicional** seria realmente rastrear o movimento da palma/dedo usando o tom de pele, conforme descrito [neste post do blog](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) ou [aqui](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Notebook Inicial + +Inicie o laboratório abrindo [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Conclusão + +Às vezes, tarefas relativamente complexas, como detecção de movimento ou detecção de ponta de dedo, podem ser resolvidas puramente por visão computacional. Assim, é muito útil saber o que bibliotecas como OpenCV podem fazer. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/pt/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..740bab5b --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# Arquiteturas de CNN Conhecidas + +### VGG-16 + +VGG-16 é uma rede que alcançou 92,7% de precisão na classificação top-5 do ImageNet em 2014. Ela possui a seguinte estrutura de camadas: + +![Camadas do ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.pt.jpg) + +Como você pode ver, o VGG segue uma arquitetura piramidal tradicional, que é uma sequência de camadas de convolução e pooling. + +![Pirâmide do ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pt.jpg) + +> Imagem de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet é uma família de modelos proposta pela Microsoft Research em 2015. A ideia principal do ResNet é usar **blocos residuais**: + + + +> Imagem deste [artigo](https://arxiv.org/pdf/1512.03385.pdf) + +A razão para usar a passagem de identidade é fazer com que nossa camada preveja **a diferença** entre o resultado de uma camada anterior e a saída do bloco residual - daí o nome *residual*. Esses blocos são muito mais fáceis de treinar, e é possível construir redes com várias centenas desses blocos (as variantes mais comuns são ResNet-52, ResNet-101 e ResNet-152). + +Você também pode pensar nesta rede como sendo capaz de ajustar sua complexidade ao conjunto de dados. Inicialmente, quando você começa a treinar a rede, os valores dos pesos são pequenos, e a maior parte do sinal passa por camadas de identidade. À medida que o treinamento avança e os pesos se tornam maiores, a importância dos parâmetros da rede cresce, e a rede se ajusta para acomodar o poder expressivo necessário para classificar corretamente as imagens de treinamento. + +### Google Inception + +A arquitetura Google Inception leva essa ideia um passo adiante e constrói cada camada da rede como uma combinação de vários caminhos diferentes: + + + +> Imagem de [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Aqui, precisamos enfatizar o papel das convoluções 1x1, porque à primeira vista elas não fazem sentido. Por que precisaríamos passar pela imagem com um filtro 1x1? No entanto, você precisa lembrar que os filtros de convolução também trabalham com vários canais de profundidade (originalmente - cores RGB, em camadas subsequentes - canais para diferentes filtros), e a convolução 1x1 é usada para misturar esses canais de entrada juntos usando diferentes pesos treináveis. Ela também pode ser vista como uma redução de dimensão (pooling) sobre a dimensão do canal. + +Aqui está [um bom post no blog](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) sobre o assunto, e [o artigo original](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet é uma família de modelos com tamanho reduzido, adequados para dispositivos móveis. Use-os se você estiver com recursos limitados e puder sacrificar um pouco de precisão. A ideia principal por trás deles é a chamada **convolução separável por profundidade**, que permite representar filtros de convolução por uma composição de convoluções espaciais e convolução 1x1 sobre canais de profundidade. Isso reduz significativamente o número de parâmetros, tornando a rede menor em tamanho e também mais fácil de treinar com menos dados. + +Aqui está [um bom post no blog sobre MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Conclusão + +Nesta unidade, você aprendeu o conceito principal por trás das redes neurais de visão computacional - redes convolucionais. Arquiteturas da vida real que impulsionam a classificação de imagens, detecção de objetos e até mesmo redes de geração de imagens são todas baseadas em CNNs, apenas com mais camadas e alguns truques de treinamento adicionais. + +## 🚀 Desafio + +Nos cadernos acompanhantes, há notas na parte inferior sobre como obter maior precisão. Faça alguns experimentos para ver se você consegue alcançar uma precisão mais alta. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Revisão e Estudo Autônomo + +Embora as CNNs sejam mais frequentemente usadas para tarefas de Visão Computacional, elas são geralmente boas para extrair padrões de tamanho fixo. Por exemplo, se estivermos lidando com sons, também podemos querer usar CNNs para procurar padrões específicos em sinais de áudio - nesse caso, os filtros seriam unidimensionais (e essa CNN seria chamada de 1D-CNN). Além disso, às vezes, a 3D-CNN é usada para extrair características em espaço multidimensional, como certos eventos ocorrendo em vídeo - a CNN pode capturar certos padrões de mudança de características ao longo do tempo. Faça uma revisão e estudo autônomo sobre outras tarefas que podem ser realizadas com CNNs. + +## [Tarefa](lab/README.md) + +Neste laboratório, você tem a tarefa de classificar diferentes raças de gatos e cães. Essas imagens são mais complexas do que o conjunto de dados MNIST e têm dimensões mais altas, e há mais de 10 classes. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/pt/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..8ac967aa --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,59 @@ +# Redes Neurais Convolucionais + +Já vimos anteriormente que redes neurais são bastante eficazes ao lidar com imagens, e até mesmo um perceptron de uma camada é capaz de reconhecer dígitos manuscritos do conjunto de dados MNIST com uma precisão razoável. No entanto, o conjunto de dados MNIST é muito especial, e todos os dígitos estão centralizados dentro da imagem, o que torna a tarefa mais simples. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +Na vida real, queremos ser capazes de reconhecer objetos em uma imagem, independentemente de sua localização exata na imagem. A visão computacional é diferente da classificação genérica, porque quando tentamos encontrar um determinado objeto na imagem, estamos escaneando a imagem em busca de alguns **padrões** específicos e suas combinações. Por exemplo, ao procurar um gato, primeiro podemos procurar por linhas horizontais, que podem formar bigodes, e então uma combinação específica de bigodes pode nos indicar que na verdade é uma imagem de um gato. A posição relativa e a presença de certos padrões são importantes, e não sua posição exata na imagem. + +Para extrair padrões, usaremos a noção de **filtros convolucionais**. Como você sabe, uma imagem é representada por uma matriz 2D ou um tensor 3D com profundidade de cor. Aplicar um filtro significa que pegamos uma matriz de **kernel de filtro** relativamente pequena, e para cada pixel na imagem original, calculamos a média ponderada com os pontos vizinhos. Podemos ver isso como uma pequena janela deslizando sobre toda a imagem, e fazendo a média de todos os pixels de acordo com os pesos na matriz do kernel de filtro. + +![Filtro de Borda Vertical](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.pt.png) | ![Filtro de Borda Horizontal](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.pt.png) +----|---- + +> Imagem de Dmitry Soshnikov + +Por exemplo, se aplicarmos filtros de borda vertical e horizontal 3x3 nos dígitos do MNIST, podemos obter destaques (por exemplo, valores altos) onde há bordas verticais e horizontais na nossa imagem original. Assim, esses dois filtros podem ser usados para "procurar" bordas. Da mesma forma, podemos projetar diferentes filtros para procurar outros padrões de baixo nível: +Você foi treinado com dados até outubro de 2023. + +> Imagem do [Banco de Filtros Leung-Malik](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +No entanto, enquanto podemos projetar os filtros para extrair alguns padrões manualmente, também podemos projetar a rede de tal forma que ela aprenda os padrões automaticamente. Essa é uma das principais ideias por trás da CNN. + +## Principais ideias por trás da CNN + +A forma como as CNNs funcionam é baseada nas seguintes ideias importantes: + +* Filtros convolucionais podem extrair padrões +* Podemos projetar a rede de tal forma que os filtros sejam treinados automaticamente +* Podemos usar a mesma abordagem para encontrar padrões em características de alto nível, não apenas na imagem original. Assim, a extração de características da CNN trabalha em uma hierarquia de características, começando por combinações de pixels de baixo nível até combinações de partes da imagem de nível mais alto. + +![Extração de Características Hierárquica](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.pt.png) + +> Imagem de [um artigo de Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), baseado em [sua pesquisa](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Exercícios: Redes Neurais Convolucionais + +Vamos continuar explorando como as redes neurais convolucionais funcionam e como podemos alcançar filtros treináveis, trabalhando através dos notebooks correspondentes: + +* [Redes Neurais Convolucionais - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Redes Neurais Convolucionais - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Arquitetura em Pirâmide + +A maioria das CNNs usadas para processamento de imagens segue uma chamada arquitetura em pirâmide. A primeira camada convolucional aplicada às imagens originais geralmente tem um número relativamente baixo de filtros (8-16), que correspondem a diferentes combinações de pixels, como linhas horizontais/verticais de traços. No próximo nível, reduzimos a dimensão espacial da rede e aumentamos o número de filtros, o que corresponde a mais combinações possíveis de características simples. A cada camada, à medida que avançamos em direção ao classificador final, as dimensões espaciais da imagem diminuem e o número de filtros aumenta. + +Como exemplo, vamos olhar para a arquitetura do VGG-16, uma rede que alcançou 92,7% de precisão na classificação top-5 do ImageNet em 2014: + +![Camadas do ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.pt.jpg) + +![Pirâmide do ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.pt.jpg) + +> Imagem de [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## Arquiteturas de CNN Mais Conhecidas + +[Continue seus estudos sobre as arquiteturas de CNN mais conhecidas](CNN_Architectures.md) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/pt/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..3ac64d68 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# Classificação de Rostos de Animais de Estimação + +Trabalho de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Imagine que você precisa desenvolver uma aplicação para uma creche de animais de estimação para catalogar todos os pets. Uma das grandes funcionalidades de tal aplicação seria descobrir automaticamente a raça a partir de uma fotografia. Isso pode ser feito com sucesso usando redes neurais. + +Você precisa treinar uma rede neural convolucional para classificar diferentes raças de gatos e cães usando o conjunto de dados **Pet Faces**. + +## O Conjunto de Dados + +Usaremos o conjunto de dados **Pet Faces**, derivado do conjunto de dados de pets [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Ele contém 35 raças diferentes de cães e gatos. + +![Conjunto de dados com o qual vamos trabalhar](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.pt.png) + +Para baixar o conjunto de dados, use este trecho de código: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Iniciando o Notebook + +Comece o laboratório abrindo [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Conclusão + +Você resolveu um problema relativamente complexo de classificação de imagens do zero! Havia muitas classes, e você ainda conseguiu obter uma precisão razoável! Também faz sentido medir a precisão top-k, porque é fácil confundir algumas das classes que não são claramente diferentes, mesmo para seres humanos. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..483084eb --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,81 @@ +# Redes Neurais Pré-treinadas e Aprendizado por Transferência + +Treinar CNNs pode levar muito tempo, e uma grande quantidade de dados é necessária para essa tarefa. No entanto, muito do tempo é gasto aprendendo os melhores filtros de baixo nível que uma rede pode usar para extrair padrões de imagens. Surge uma pergunta natural - podemos usar uma rede neural treinada em um conjunto de dados e adaptá-la para classificar diferentes imagens sem precisar de um processo de treinamento completo? + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Essa abordagem é chamada de **aprendizado por transferência**, porque transferimos algum conhecimento de um modelo de rede neural para outro. No aprendizado por transferência, normalmente começamos com um modelo pré-treinado, que foi treinado em algum grande conjunto de dados de imagens, como **ImageNet**. Esses modelos já podem fazer um bom trabalho extraindo diferentes características de imagens genéricas, e em muitos casos, apenas construir um classificador em cima dessas características extraídas pode resultar em um bom resultado. + +> ✅ Aprendizado por Transferência é um termo que você encontra em outros campos acadêmicos, como Educação. Refere-se ao processo de levar conhecimento de um domínio e aplicá-lo a outro. + +## Modelos Pré-Treinados como Extratores de Características + +As redes convolucionais que discutimos na seção anterior continham uma série de camadas, cada uma das quais deve extrair algumas características da imagem, começando por combinações de pixels de baixo nível (como linha horizontal/vertical ou traço), até combinações de características de nível mais alto, correspondendo a coisas como o olho de uma chama. Se treinarmos uma CNN em um conjunto de dados suficientemente grande de imagens genéricas e diversas, a rede deve aprender a extrair essas características comuns. + +Tanto Keras quanto PyTorch contêm funções para carregar facilmente pesos de redes neurais pré-treinadas para algumas arquiteturas comuns, a maioria das quais foi treinada em imagens do ImageNet. As mais frequentemente usadas estão descritas na página de [Arquiteturas CNN](../07-ConvNets/CNN_Architectures.md) da lição anterior. Em particular, você pode considerar usar uma das seguintes: + +* **VGG-16/VGG-19**, que são modelos relativamente simples que ainda oferecem boa precisão. Muitas vezes, usar VGG como uma primeira tentativa é uma boa escolha para ver como o aprendizado por transferência funciona. +* **ResNet** é uma família de modelos proposta pela Microsoft Research em 2015. Eles têm mais camadas e, portanto, consomem mais recursos. +* **MobileNet** é uma família de modelos com tamanho reduzido, adequada para dispositivos móveis. Use-os se você estiver com recursos limitados e puder sacrificar um pouco de precisão. + +Aqui estão amostras de características extraídas de uma imagem de um gato pela rede VGG-16: + +![Características extraídas pela VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.pt.png) + +## Conjunto de Dados de Gatos vs. Cachorros + +Neste exemplo, usaremos um conjunto de dados de [Gatos e Cachorros](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), que é muito próximo de um cenário real de classificação de imagens. + +## ✍️ Exercício: Aprendizado por Transferência + +Vamos ver o aprendizado por transferência em ação nos cadernos correspondentes: + +* [Aprendizado por Transferência - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Aprendizado por Transferência - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Visualizando o Gato Adversarial + +A rede neural pré-treinada contém diferentes padrões dentro de seu *cérebro*, incluindo noções de **gato ideal** (assim como cachorro ideal, zebra ideal, etc.). Seria interessante de alguma forma **visualizar essa imagem**. No entanto, não é simples, porque os padrões estão espalhados por todo o peso da rede e também organizados em uma estrutura hierárquica. + +Uma abordagem que podemos adotar é começar com uma imagem aleatória e, em seguida, tentar usar a técnica de **otimização por descida de gradiente** para ajustar essa imagem de tal forma que a rede comece a pensar que é um gato. + +![Loop de Otimização de Imagem](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.pt.png) + +No entanto, se fizermos isso, receberemos algo muito semelhante a um ruído aleatório. Isso ocorre porque *existem muitas maneiras de fazer a rede pensar que a imagem de entrada é um gato*, incluindo algumas que não fazem sentido visualmente. Embora essas imagens contenham muitos padrões típicos de um gato, não há nada que as restrinja a serem visualmente distintas. + +Para melhorar o resultado, podemos adicionar outro termo à função de perda, que é chamado de **perda de variação**. É uma métrica que mostra quão semelhantes são os pixels vizinhos da imagem. Minimizar a perda de variação torna a imagem mais suave e elimina o ruído - revelando assim padrões visualmente mais agradáveis. Aqui está um exemplo de tais imagens "ideais", que são classificadas como gato e como zebra com alta probabilidade: + +![Gato Ideal](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.pt.png) | ![Zebra Ideal](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.pt.png) +-----|----- + *Gato Ideal* | *Zebra Ideal* + +Uma abordagem semelhante pode ser usada para realizar os chamados **ataques adversariais** em uma rede neural. Suponha que queiramos enganar uma rede neural e fazer um cachorro parecer um gato. Se pegarmos a imagem de um cachorro, que é reconhecida pela rede como um cachorro, podemos então ajustá-la um pouco usando otimização por descida de gradiente, até que a rede comece a classificá-la como um gato: + +![Imagem de um Cachorro](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.pt.png) | ![Imagem de um cachorro classificada como gato](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.pt.png) +-----|----- +*Imagem original de um cachorro* | *Imagem de um cachorro classificada como gato* + +Veja o código para reproduzir os resultados acima no seguinte caderno: + +* [Gato Ideal e Adversarial - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Conclusão + +Usando aprendizado por transferência, você pode rapidamente montar um classificador para uma tarefa de classificação de objetos personalizada e alcançar alta precisão. Você pode ver que tarefas mais complexas que estamos resolvendo agora requerem maior poder computacional e não podem ser facilmente resolvidas na CPU. Na próxima unidade, tentaremos usar uma implementação mais leve para treinar o mesmo modelo usando recursos computacionais menores, o que resulta em uma precisão apenas ligeiramente inferior. + +## 🚀 Desafio + +Nos cadernos acompanhantes, há notas na parte inferior sobre como o conhecimento de transferência funciona melhor com dados de treinamento um tanto semelhantes (um novo tipo de animal, talvez). Faça algumas experimentações com tipos de imagens completamente novos para ver quão bem ou mal seus modelos de conhecimento de transferência se saem. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Revisão & Autoestudo + +Leia [TrainingTricks.md](TrainingTricks.md) para aprofundar seu conhecimento sobre algumas outras maneiras de treinar seus modelos. + +## [Tarefa](lab/README.md) + +Neste laboratório, usaremos um conjunto de dados de animais de estimação da vida real [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) com 35 raças de gatos e cachorros, e construiremos um classificador de aprendizado por transferência. + +**Aviso Legal**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..db64d9b0 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# Truques de Treinamento em Deep Learning + +À medida que as redes neurais se tornam mais profundas, o processo de treinamento se torna cada vez mais desafiador. Um dos principais problemas é o chamado [gradientes que desaparecem](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) ou [gradientes explodindo](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Este post](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) oferece uma boa introdução a esses problemas. + +Para tornar o treinamento de redes profundas mais eficiente, existem algumas técnicas que podem ser utilizadas. + +## Manter valores em intervalo razoável + +Para tornar os cálculos numéricos mais estáveis, queremos garantir que todos os valores dentro de nossa rede neural estejam em uma escala razoável, tipicamente [-1..1] ou [0..1]. Não é um requisito muito rígido, mas a natureza dos cálculos em ponto flutuante é tal que valores de magnitudes diferentes não podem ser manipulados com precisão juntos. Por exemplo, se somarmos 10-10 e 1010, provavelmente obteremos 1010, porque o valor menor seria "convertido" para a mesma ordem que o maior, e assim a mantissa seria perdida. + +A maioria das funções de ativação tem não-linearidades em torno de [-1..1], e, portanto, faz sentido escalar todos os dados de entrada para o intervalo [-1..1] ou [0..1]. + +## Inicialização de Pesos + +Idealmente, queremos que os valores estejam na mesma faixa após passar pelas camadas da rede. Portanto, é importante inicializar os pesos de maneira a preservar a distribuição dos valores. + +A distribuição normal **N(0,1)** não é uma boa ideia, porque se tivermos *n* entradas, o desvio padrão da saída seria *n*, e os valores provavelmente sairão do intervalo [0..1]. + +As seguintes inicializações são frequentemente utilizadas: + + * Distribuição uniforme -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** garante que para entradas com média zero e desvio padrão de 1, a mesma média/desvio padrão permanecerá + * **N(0,√2/(n_in+n_out))** -- a chamada **inicialização Xavier** (`glorot`), ajuda a manter os sinais dentro da faixa durante a propagação tanto para frente quanto para trás + +## Normalização em Lote + +Mesmo com a inicialização adequada dos pesos, os pesos podem ficar arbitrariamente grandes ou pequenos durante o treinamento, e isso pode levar os sinais para fora da faixa adequada. Podemos trazer os sinais de volta usando uma das técnicas de **normalização**. Embora haja várias delas (Normalização de pesos, Normalização de camadas), a mais utilizada é a Normalização em Lote. + +A ideia da **normalização em lote** é levar em conta todos os valores do minibatch e realizar a normalização (ou seja, subtrair a média e dividir pelo desvio padrão) com base nesses valores. Isso é implementado como uma camada de rede que realiza essa normalização após aplicar os pesos, mas antes da função de ativação. Como resultado, é provável que vejamos uma maior precisão final e um treinamento mais rápido. + +Aqui está o [artigo original](https://arxiv.org/pdf/1502.03167.pdf) sobre normalização em lote, a [explicação na Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) e [um bom post introdutório no blog](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (e um [em russo](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** é uma técnica interessante que remove uma certa porcentagem de neurônios aleatórios durante o treinamento. Também é implementado como uma camada com um parâmetro (percentagem de neurônios a serem removidos, tipicamente 10%-50%), e durante o treinamento, zera elementos aleatórios do vetor de entrada, antes de passá-lo para a próxima camada. + +Embora isso possa parecer uma ideia estranha, você pode ver o efeito do dropout no treinamento do classificador de dígitos MNIST no notebook [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Isso acelera o treinamento e nos permite alcançar maior precisão em menos épocas de treinamento. + +Esse efeito pode ser explicado de várias maneiras: + + * Pode ser considerado um fator de choque aleatório para o modelo, que tira a otimização de um mínimo local + * Pode ser considerado como *média implícita de modelos*, porque podemos dizer que durante o dropout estamos treinando um modelo ligeiramente diferente + +> *Algumas pessoas dizem que quando uma pessoa bêbada tenta aprender algo, ela se lembrará disso melhor na manhã seguinte, em comparação com uma pessoa sóbria, porque um cérebro com alguns neurônios mal funcionando tenta se adaptar melhor para entender o significado. Nunca testamos se isso é verdade ou não.* + +## Prevenindo o overfitting + +Um dos aspectos muito importantes do deep learning é ser capaz de prevenir [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Embora possa ser tentador usar um modelo de rede neural muito poderoso, devemos sempre equilibrar o número de parâmetros do modelo com o número de amostras de treinamento. + +> Certifique-se de entender o conceito de [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) que introduzimos anteriormente! + +Existem várias maneiras de prevenir o overfitting: + + * Parada antecipada -- monitorar continuamente o erro no conjunto de validação e interromper o treinamento quando o erro de validação começar a aumentar. + * Decaimento de peso explícito / Regularização -- adicionar uma penalidade extra à função de perda para altos valores absolutos de pesos, o que impede o modelo de obter resultados muito instáveis + * Média de Modelos -- treinar vários modelos e, em seguida, fazer a média dos resultados. Isso ajuda a minimizar a variância. + * Dropout (Média Implícita de Modelos) + +## Otimizadores / Algoritmos de Treinamento + +Outro aspecto importante do treinamento é escolher um bom algoritmo de treinamento. Embora o clássico **gradiente descendente** seja uma escolha razoável, às vezes pode ser muito lento ou resultar em outros problemas. + +Em deep learning, usamos **Descent Gradient Estocástico** (SGD), que é um gradiente descendente aplicado a minibatches, selecionados aleatoriamente do conjunto de treinamento. Os pesos são ajustados usando esta fórmula: + +wt+1 = wt - η∇ℒ + +### Momento + +No **SGD com momento**, mantemos uma parte do gradiente de passos anteriores. É semelhante a quando estamos nos movendo em algum lugar com inércia, e recebemos um golpe em uma direção diferente; nossa trajetória não muda imediatamente, mas mantém parte do movimento original. Aqui introduzimos outro vetor v para representar a *velocidade*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +Aqui, o parâmetro γ indica a extensão em que levamos a inércia em conta: γ=0 corresponde ao SGD clássico; γ=1 é uma equação de movimento puro. + +### Adam, Adagrad, etc. + +Uma vez que em cada camada multiplicamos sinais por alguma matriz Wi, dependendo de ||Wi||, o gradiente pode tanto diminuir e se aproximar de 0, quanto aumentar indefinidamente. Essa é a essência do problema dos Gradientes Explodindo/Desaparecendo. + +Uma das soluções para esse problema é usar apenas a direção do gradiente na equação e ignorar o valor absoluto, ou seja, + +wt+1 = wt - η(∇ℒ/||∇ℒ||), onde ||∇ℒ|| = √∑(∇ℒ)2 + +Esse algoritmo é chamado de **Adagrad**. Outros algoritmos que usam a mesma ideia: **RMSProp**, **Adam**. + +> **Adam** é considerado um algoritmo muito eficiente para muitas aplicações, então, se você não tem certeza de qual usar - use Adam. + +### Recorte de Gradiente + +O recorte de gradiente é uma extensão da ideia acima. Quando ||∇ℒ|| ≤ θ, consideramos o gradiente original na otimização de pesos, e quando ||∇ℒ|| > θ - dividimos o gradiente pela sua norma. Aqui θ é um parâmetro, na maioria dos casos podemos tomar θ=1 ou θ=10. + +### Decaimento da taxa de aprendizado + +O sucesso do treinamento muitas vezes depende do parâmetro da taxa de aprendizado η. É lógico supor que valores maiores de η resultem em um treinamento mais rápido, que é algo que normalmente queremos no início do treinamento, e então um valor menor de η nos permite ajustar a rede. Assim, na maioria dos casos, queremos diminuir η durante o processo de treinamento. + +Isso pode ser feito multiplicando η por algum número (por exemplo, 0.98) após cada época de treinamento, ou usando um **cronograma de taxa de aprendizado** mais complicado. + +## Diferentes Arquiteturas de Rede + +Selecionar a arquitetura de rede certa para o seu problema pode ser complicado. Normalmente, escolheríamos uma arquitetura que já se provou eficaz para nossa tarefa específica (ou uma semelhante). Aqui está uma [boa visão geral](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) das arquiteturas de redes neurais para visão computacional. + +> É importante selecionar uma arquitetura que seja poderosa o suficiente para o número de amostras de treinamento que temos. Selecionar um modelo muito poderoso pode resultar em [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +Outra boa abordagem seria usar uma arquitetura que se ajuste automaticamente à complexidade necessária. Em certa medida, as arquiteturas **ResNet** e **Inception** são autoajustáveis. [Mais sobre arquiteturas de visão computacional](../07-ConvNets/CNN_Architectures.md). + +**Aviso Legal**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..5f218f39 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# Classificação de Animais de Estimação de Oxford usando Aprendizado por Transferência + +Trabalho de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Imagine que você precisa desenvolver uma aplicação para uma creche de animais de estimação para catalogar todos os pets. Uma das grandes funcionalidades de tal aplicação seria descobrir automaticamente a raça a partir de uma fotografia. Neste trabalho, usaremos aprendizado por transferência para classificar imagens de animais de estimação da vida real do conjunto de dados [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## O Conjunto de Dados + +Usaremos o conjunto de dados original de animais de estimação [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), que contém 35 raças diferentes de cães e gatos. + +Para baixar o conjunto de dados, utilize este trecho de código: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Iniciando o Notebook + +Comece o laboratório abrindo [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Conclusão + +O aprendizado por transferência e as redes pré-treinadas nos permitem resolver problemas de classificação de imagens do mundo real de maneira relativamente fácil. No entanto, redes pré-treinadas funcionam bem em imagens de tipos semelhantes, e se começarmos a classificar imagens muito diferentes (por exemplo, imagens médicas), é provável que obtenhamos resultados muito piores. + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas que possam surgir do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/pt/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..60cdcd76 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# Autoencoders + +Ao treinar CNNs, um dos problemas é que precisamos de muitos dados rotulados. No caso da classificação de imagens, precisamos separar as imagens em diferentes classes, o que é um esforço manual. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +No entanto, podemos querer usar dados brutos (não rotulados) para treinar extratores de características CNN, o que é chamado de **aprendizado auto-supervisionado**. Em vez de rótulos, usaremos imagens de treinamento como entrada e saída da rede. A ideia principal do **autoencoder** é que teremos uma **rede de codificação** que converte a imagem de entrada em algum **espaço latente** (normalmente é apenas um vetor de um tamanho menor), e então a **rede de decodificação**, cujo objetivo seria reconstruir a imagem original. + +> ✅ Um [autoencoder](https://wikipedia.org/wiki/Autoencoder) é "um tipo de rede neural artificial usada para aprender codificações eficientes de dados não rotulados." + +Como estamos treinando um autoencoder para capturar o máximo de informações da imagem original possível para uma reconstrução precisa, a rede tenta encontrar a melhor **incorporação** das imagens de entrada para capturar o significado. + +![Diagrama do AutoEncoder](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.pt.jpg) + +> Imagem do [blog Keras](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Cenários para usar Autoencoders + +Embora reconstruir imagens originais não pareça útil por si só, existem alguns cenários onde os autoencoders são especialmente úteis: + +* **Redução da dimensão das imagens para visualização** ou **treinamento de incorporações de imagem**. Normalmente, os autoencoders apresentam resultados melhores do que PCA, pois levam em consideração a natureza espacial das imagens e características hierárquicas. +* **Remoção de ruído**, ou seja, eliminar ruído da imagem. Como o ruído carrega muitas informações inúteis, o autoencoder não consegue ajustá-lo todo em um espaço latente relativamente pequeno e, assim, captura apenas a parte importante da imagem. Ao treinar denoisers, começamos com imagens originais e usamos imagens com ruído adicionado artificialmente como entrada para o autoencoder. +* **Super-resolução**, aumentando a resolução da imagem. Começamos com imagens de alta resolução e usamos a imagem de baixa resolução como entrada do autoencoder. +* **Modelos generativos**. Uma vez que treinamos o autoencoder, a parte do decodificador pode ser usada para criar novos objetos a partir de vetores latentes aleatórios. + +## Autoencoders Variacionais (VAE) + +Autoencoders tradicionais reduzem a dimensão dos dados de entrada de alguma forma, identificando as características importantes das imagens de entrada. No entanto, vetores latentes muitas vezes não fazem muito sentido. Em outras palavras, tomando o conjunto de dados MNIST como exemplo, descobrir quais dígitos correspondem a diferentes vetores latentes não é uma tarefa fácil, porque vetores latentes próximos não necessariamente correspondem aos mesmos dígitos. + +Por outro lado, para treinar modelos *generativos*, é melhor ter algum entendimento do espaço latente. Essa ideia nos leva ao **autoencoder variacional** (VAE). + +VAE é o autoencoder que aprende a prever a *distribuição estatística* dos parâmetros latentes, chamada de **distribuição latente**. Por exemplo, podemos querer que os vetores latentes sejam distribuídos normalmente com uma média zmean e desvio padrão zsigma (tanto a média quanto o desvio padrão são vetores de alguma dimensionalidade d). O codificador no VAE aprende a prever esses parâmetros, e então o decodificador pega um vetor aleatório dessa distribuição para reconstruir o objeto. + +Para resumir: + + * A partir do vetor de entrada, prevemos `z_mean` e `z_log_sigma` (em vez de prever o desvio padrão em si, prevemos seu logaritmo) + * Amostramos um vetor `sample` da distribuição N(zmean,exp(zlog\_sigma)) + * O decodificador tenta decodificar a imagem original usando `sample` como vetor de entrada + + + +> Imagem do [este post no blog](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) de Isaak Dykeman + +Autoencoders variacionais usam uma função de perda complexa que consiste em duas partes: + +* **Perda de reconstrução** é a função de perda que mostra quão próxima uma imagem reconstruída está do alvo (pode ser o Erro Quadrático Médio, ou MSE). É a mesma função de perda que em autoencoders normais. +* **Perda KL**, que garante que as distribuições das variáveis latentes permaneçam próximas à distribuição normal. É baseada na noção de [divergência de Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - uma métrica para estimar quão semelhantes são duas distribuições estatísticas. + +Uma vantagem importante dos VAEs é que eles nos permitem gerar novas imagens relativamente facilmente, porque sabemos de qual distribuição amostrar vetores latentes. Por exemplo, se treinarmos um VAE com vetor latente 2D no MNIST, podemos então variar os componentes do vetor latente para obter diferentes dígitos: + +vaemnist + +> Imagem de [Dmitry Soshnikov](http://soshnikov.com) + +Observe como as imagens se misturam umas às outras, à medida que começamos a obter vetores latentes de diferentes porções do espaço de parâmetros latentes. Também podemos visualizar esse espaço em 2D: + +cluster vaemnist + +> Imagem de [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Exercícios: Autoencoders + +Saiba mais sobre autoencoders nestes cadernos correspondentes: + +* [Autoencoders em TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoders em PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Propriedades dos Autoencoders + +* **Específico para dados** - eles funcionam bem apenas com o tipo de imagens para as quais foram treinados. Por exemplo, se treinarmos uma rede de super-resolução em flores, ela não funcionará bem em retratos. Isso ocorre porque a rede pode produzir uma imagem de maior resolução ao captar detalhes finos das características aprendidas a partir do conjunto de dados de treinamento. +* **Com perdas** - a imagem reconstruída não é a mesma que a imagem original. A natureza da perda é definida pela *função de perda* usada durante o treinamento. +* Funciona com **dados não rotulados**. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Conclusão + +Nesta lição, você aprendeu sobre os vários tipos de autoencoders disponíveis para o cientista de IA. Você aprendeu como construí-los e como usá-los para reconstruir imagens. Você também aprendeu sobre o VAE e como usá-lo para gerar novas imagens. + +## 🚀 Desafio + +Nesta lição, você aprendeu sobre o uso de autoencoders para imagens. Mas eles também podem ser usados para música! Confira o projeto [MusicVAE](https://magenta.tensorflow.org/music-vae) do projeto Magenta, que usa autoencoders para aprender a reconstruir música. Faça alguns [experimentos](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) com esta biblioteca para ver o que você pode criar. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Revisão & Autoestudo + +Para referência, leia mais sobre autoencoders nestes recursos: + +* [Construindo Autoencoders em Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Post no blog sobre NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Autoencoders Variacionais Explicados](https://kvfrans.com/variational-autoencoders-explained/) +* [Autoencoders Variacionais Condicionais](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Tarefa + +No final de [este caderno usando TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), você encontrará uma 'tarefa' - use isso como sua tarefa. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/10-GANs/README.md b/translations/pt/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..6822f3b8 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# Redes Adversariais Generativas + +Na seção anterior, aprendemos sobre **modelos geradores**: modelos que podem gerar novas imagens semelhantes às do conjunto de dados de treinamento. O VAE foi um bom exemplo de um modelo gerador. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +No entanto, se tentarmos gerar algo realmente significativo, como uma pintura em uma resolução razoável, com o VAE, veremos que o treinamento não converge bem. Para esse caso de uso, devemos aprender sobre outra arquitetura especificamente direcionada a modelos geradores - **Redes Adversariais Generativas**, ou GANs. + +A ideia principal de uma GAN é ter duas redes neurais que serão treinadas uma contra a outra: + + + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Um pequeno vocabulário: +> * **Gerador** é uma rede que recebe um vetor aleatório e produz a imagem como resultado. +> * **Discriminador** é uma rede que recebe uma imagem e deve dizer se é uma imagem real (do conjunto de dados de treinamento) ou se foi gerada por um gerador. É essencialmente um classificador de imagens. + +### Discriminador + +A arquitetura do discriminador não difere de uma rede de classificação de imagens comum. No caso mais simples, pode ser um classificador totalmente conectado, mas provavelmente será uma [rede convolucional](../07-ConvNets/README.md). + +> ✅ Uma GAN baseada em redes convolucionais é chamada de [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Um discriminador CNN consiste nas seguintes camadas: várias convoluções + pooling (com tamanho espacial decrescente) e uma ou mais camadas totalmente conectadas para obter o "vetor de características", classificador binário final. + +> ✅ Um 'pooling' neste contexto é uma técnica que reduz o tamanho da imagem. "Camadas de pooling reduzem as dimensões dos dados combinando as saídas de grupos de neurônios em uma camada em um único neurônio na próxima camada." - [fonte](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Gerador + +Um Gerador é um pouco mais complicado. Você pode considerá-lo como um discriminador invertido. Começando de um vetor latente (no lugar de um vetor de características), ele tem uma camada totalmente conectada para convertê-lo no tamanho/formato necessário, seguida de deconvoluções + aumento de escala. Isso é semelhante à parte *decodificadora* de um [autoencoder](../09-Autoencoders/README.md). + +> ✅ Como a camada de convolução é implementada como um filtro linear que percorre a imagem, a deconvolução é essencialmente semelhante à convolução e pode ser implementada usando a mesma lógica de camada. + + + +> Imagem por [Dmitry Soshnikov](http://soshnikov.com) + +### Treinando a GAN + +As GANs são chamadas de **adversariais** porque há uma competição constante entre o gerador e o discriminador. Durante essa competição, tanto o gerador quanto o discriminador melhoram, assim a rede aprende a produzir imagens cada vez melhores. + +O treinamento acontece em duas etapas: + +* **Treinando o discriminador**. Esta tarefa é bastante direta: geramos um lote de imagens pelo gerador, rotulando-as como 0, que representa imagem falsa, e pegamos um lote de imagens do conjunto de dados de entrada (com rótulo 1, imagem real). Obtemos uma *perda do discriminador* e realizamos a retropropagação. +* **Treinando o gerador**. Isso é um pouco mais complicado, porque não sabemos a saída esperada para o gerador diretamente. Pegamos toda a rede GAN, consistindo de um gerador seguido de um discriminador, alimentamos com alguns vetores aleatórios e esperamos que o resultado seja 1 (correspondente a imagens reais). Em seguida, congelamos os parâmetros do discriminador (não queremos que ele seja treinado nesta etapa) e realizamos a retropropagação. + +Durante esse processo, as perdas do gerador e do discriminador não estão diminuindo significativamente. Na situação ideal, elas devem oscilar, correspondendo a ambas as redes melhorando seu desempenho. + +## ✍️ Exercícios: GANs + +* [Notebook GAN em TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Notebook GAN em PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problemas com o treinamento de GAN + +As GANs são conhecidas por serem especialmente difíceis de treinar. Aqui estão alguns problemas: + +* **Colapso de Modo**. Por esse termo, queremos dizer que o gerador aprende a produzir uma imagem bem-sucedida que engana o discriminador, e não uma variedade de imagens diferentes. +* **Sensibilidade a hiperparâmetros**. Muitas vezes você pode ver que uma GAN não converge de forma alguma e, em seguida, de repente diminui na taxa de aprendizado levando à convergência. +* Manter um **equilíbrio** entre o gerador e o discriminador. Em muitos casos, a perda do discriminador pode cair para zero relativamente rápido, o que resulta na incapacidade do gerador de treinar mais. Para superar isso, podemos tentar definir diferentes taxas de aprendizado para o gerador e o discriminador, ou pular o treinamento do discriminador se a perda já estiver muito baixa. +* Treinamento para **alta resolução**. Refletindo o mesmo problema que com autoencoders, esse problema é desencadeado porque reconstruir muitas camadas de uma rede convolucional leva a artefatos. Esse problema é tipicamente resolvido com o chamado **crescimento progressivo**, quando primeiro algumas camadas são treinadas em imagens de baixa resolução e, em seguida, as camadas são "desbloqueadas" ou adicionadas. Outra solução seria adicionar conexões extras entre camadas e treinar várias resoluções ao mesmo tempo - veja este [artigo sobre GANs de Gradiente Multi-Escala](https://arxiv.org/abs/1903.06048) para detalhes. + +## Transferência de Estilo + +As GANs são uma ótima maneira de gerar imagens artísticas. Outra técnica interessante é a chamada **transferência de estilo**, que pega uma **imagem de conteúdo** e a redesenha em um estilo diferente, aplicando filtros da **imagem de estilo**. + +A maneira como isso funciona é a seguinte: +* Começamos com uma imagem de ruído aleatório (ou com uma imagem de conteúdo, mas para fins de compreensão é mais fácil começar a partir do ruído aleatório). +* Nosso objetivo seria criar uma imagem que estivesse próxima tanto da imagem de conteúdo quanto da imagem de estilo. Isso seria determinado por duas funções de perda: + - **Perda de conteúdo** é calculada com base nas características extraídas pela CNN em algumas camadas da imagem atual e da imagem de conteúdo. + - **Perda de estilo** é calculada entre a imagem atual e a imagem de estilo de uma maneira inteligente usando matrizes de Gram (mais detalhes no [notebook de exemplo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Para tornar a imagem mais suave e remover o ruído, também introduzimos a **Perda de Variedade**, que calcula a distância média entre pixels vizinhos. +* O loop principal de otimização ajusta a imagem atual usando descida de gradiente (ou algum outro algoritmo de otimização) para minimizar a perda total, que é uma soma ponderada de todas as três perdas. + +## ✍️ Exemplo: [Transferência de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Conclusão + +Nesta lição, você aprendeu sobre GANs e como treiná-las. Você também aprendeu sobre os desafios especiais que esse tipo de Rede Neural pode enfrentar e algumas estratégias sobre como superá-los. + +## 🚀 Desafio + +Execute o [notebook de Transferência de Estilo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) usando suas próprias imagens. + +## Revisão & Estudo Autônomo + +Para referência, leia mais sobre GANs nestes recursos: + +* Marco Pasini, [10 Lições que Aprendi Treinando GANs por um Ano](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), uma arquitetura GAN *de fato* a considerar +* [Criando Arte Generativa usando GANs no Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Tarefa + +Revisite um dos dois notebooks associados a esta lição e re-treine a GAN com suas próprias imagens. O que você pode criar? + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..42589f71 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,71 @@ +### YOLO - Você Só Olha Uma Vez + +YOLO é um algoritmo de uma única passagem em tempo real. A ideia principal é a seguinte: + +* A imagem é dividida em regiões de $S\times S$ +* Para cada região, a **CNN** prevê $n$ possíveis objetos, as coordenadas da *bounding box* e *confiança* = *probabilidade* * IoU. + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.pt.png) + +### SSD - Single Shot MultiBox Detector + +O SSD é outro método de detecção em uma única passagem. Ele funciona de maneira semelhante ao YOLO, mas usa diferentes escalas de detecção em várias camadas da rede. + +![SSD](../../../../../translated_images/ssd.8f409ceb7ad470415f8995994dd89282b57541bff09ecde650902217c84f4c0d.pt.png) + +> Imagem de [oficial paper](https://arxiv.org/pdf/1512.02325.pdf) + +### RetinaNet + +O RetinaNet introduz a ideia de *Focal Loss*, que ajuda a lidar com o problema de classes desbalanceadas em detecção de objetos. Ele usa uma arquitetura de rede semelhante ao SSD, mas com um foco maior em melhorar a precisão na detecção de objetos menos frequentes. + +![RetinaNet](../../../../../translated_images/retinanet.cfd3ebd2e5c63692a1c543b868134b66e4b0789230c22679b07eebd0e69d7cbc.pt.png) + +> Imagem de [oficial paper](https://arxiv.org/pdf/1708.02002.pdf) + +### Conclusão + +A detecção de objetos é uma área ativa de pesquisa em visão computacional. Com o advento de novas arquiteturas e técnicas, como YOLO, SSD e RetinaNet, a precisão e a eficiência dos algoritmos de detecção de objetos continuam a melhorar. O uso de redes neurais profundas e técnicas de aprendizado de máquina tem revolucionado essa área, tornando-a mais acessível e eficaz em uma variedade de aplicações do mundo real. +> Imagem do [artigo oficial](https://arxiv.org/abs/1506.02640) + +### Outros Algoritmos + +* RetinaNet: [artigo oficial](https://arxiv.org/abs/1708.02002) + - [Implementação em PyTorch no Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Implementação em Keras](https://github.com/fizyr/keras-retinanet) + - [Detecção de Objetos com RetinaNet](https://keras.io/examples/vision/retinanet/) nos Exemplos do Keras +* SSD (Single Shot Detector): [artigo oficial](https://arxiv.org/abs/1512.02325) + +## ✍️ Exercícios: Detecção de Objetos + +Continue seu aprendizado no seguinte notebook: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Conclusão + +Nesta lição, você fez um tour rápido por todas as diversas maneiras de realizar a detecção de objetos! + +## 🚀 Desafio + +Leia esses artigos e notebooks sobre YOLO e experimente por conta própria + +* [Bom post de blog](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) descrevendo o YOLO + * [Site oficial](https://pjreddie.com/darknet/yolo/) + * Yolo: [implementação em Keras](https://github.com/experiencor/keras-yolo2), [notebook passo a passo](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [implementação em Keras](https://github.com/experiencor/keras-yolo2), [notebook passo a passo](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Revisão & Autoestudo + +* [Detecção de Objetos](https://tjmachinelearning.com/lectures/1718/obj/) por Nikhil Sardana +* [Uma boa comparação de algoritmos de detecção de objetos](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Revisão de Algoritmos de Aprendizado Profundo para Detecção de Objetos](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Uma Introdução Passo a Passo aos Algoritmos Básicos de Detecção de Objetos](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementação do Faster R-CNN em Python para Detecção de Objetos](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Tarefa: Detecção de Objetos](lab/README.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..d9751844 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# Detecção de Cabeças usando o Conjunto de Dados Hollywood Heads + +Tarefa do [Currículo AI para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Contar o número de pessoas em uma transmissão de câmera de vigilância é uma tarefa importante que nos permitirá estimar o número de visitantes em lojas, horários de pico em restaurantes, etc. Para resolver essa tarefa, precisamos ser capazes de detectar cabeças humanas de diferentes ângulos. Para treinar um modelo de detecção de objetos para detectar cabeças humanas, podemos usar o [Conjunto de Dados Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/). + +## O Conjunto de Dados + +O [Conjunto de Dados Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) contém 369.846 cabeças humanas anotadas em 224.740 quadros de filmes de Hollywood. Ele é fornecido no formato [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), onde para cada imagem também há um arquivo de descrição XML que se parece com isto: + +```xml + + HollywoodHeads + mov_021_149390.jpeg + + HollywoodHeads 2015 Database + HollywoodHeads 2015 + WILLOW + + + 608 + 320 + 3 + + 0 + + head + + 201 + 1 + 480 + 263 + + 0 + + + head + + 3 + 4 + 241 + 285 + + 0 + + +``` + +Neste conjunto de dados, há apenas uma classe de objetos `head`, e para cada cabeça, você obtém as coordenadas da caixa delimitadora. Você pode analisar XML usando bibliotecas Python ou usar [esta biblioteca](https://pypi.org/project/pascal-voc/) para lidar diretamente com o formato PASCAL VOC. + +## Treinamento de Detecção de Objetos + +Você pode treinar um modelo de detecção de objetos usando uma das seguintes maneiras: + +* Usando [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) e sua API Python para treinar programaticamente o modelo na nuvem. A visão personalizada não conseguirá usar mais do que algumas centenas de imagens para treinar o modelo, então você pode precisar limitar o conjunto de dados. +* Usando o exemplo do [tutorial Keras](https://keras.io/examples/vision/retinanet/) para treinar o modelo RetunaNet. +* Usando o módulo embutido [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) na torchvision. + +## Conclusão + +A detecção de objetos é uma tarefa frequentemente requerida na indústria. Embora existam alguns serviços que podem ser usados para realizar a detecção de objetos (como [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), é importante entender como a detecção de objetos funciona e ser capaz de treinar seus próprios modelos. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/pt/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..3f679f76 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# Segmentação + +Anteriormente, aprendemos sobre Detecção de Objetos, que nos permite localizar objetos na imagem prevendo suas *caixas delimitadoras*. No entanto, para algumas tarefas, não precisamos apenas de caixas delimitadoras, mas também de uma localização de objeto mais precisa. Essa tarefa é chamada de **segmentação**. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +A segmentação pode ser vista como **classificação de pixels**, onde para **cada** pixel da imagem devemos prever sua classe (*fundo* sendo uma das classes). Existem dois principais algoritmos de segmentação: + +* **Segmentação semântica** apenas informa a classe do pixel, e não faz distinção entre diferentes objetos da mesma classe. +* **Segmentação de instâncias** divide classes em diferentes instâncias. + +Por exemplo, na segmentação de instâncias, essas ovelhas são objetos diferentes, mas na segmentação semântica todas as ovelhas são representadas por uma única classe. + + + +> Imagem de [este post de blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Existem diferentes arquiteturas neurais para segmentação, mas todas têm a mesma estrutura. De certa forma, é semelhante ao autoencoder que você aprendeu anteriormente, mas em vez de deconstruir a imagem original, nosso objetivo é deconstruir uma **máscara**. Assim, uma rede de segmentação possui as seguintes partes: + +* **Encoder** extrai características da imagem de entrada. +* **Decoder** transforma essas características na **imagem da máscara**, com o mesmo tamanho e número de canais correspondendo ao número de classes. + + + +> Imagem de [esta publicação](https://arxiv.org/pdf/2001.05566.pdf) + +Devemos mencionar especialmente a função de perda que é usada para segmentação. Ao usar autoencoders clássicos, precisamos medir a similaridade entre duas imagens, e podemos usar o erro quadrático médio (MSE) para isso. Na segmentação, cada pixel na imagem da máscara alvo representa o número da classe (one-hot-encoded ao longo da terceira dimensão), então precisamos usar funções de perda específicas para classificação - perda de entropia cruzada, média sobre todos os pixels. Se a máscara for binária - **perda de entropia cruzada binária** (BCE) é utilizada. + +> ✅ A codificação one-hot é uma forma de codificar um rótulo de classe em um vetor de comprimento igual ao número de classes. Dê uma olhada [neste artigo](https://datagy.io/sklearn-one-hot-encode/) sobre essa técnica. + +## Segmentação para Imagens Médicas + +Nesta lição, veremos a segmentação em ação treinando a rede para reconhecer nevos humanos (também conhecidos como manchas) em imagens médicas. Usaremos o Banco de Dados PH2 de imagens de dermatoscopia como fonte de imagem. Este conjunto de dados contém 200 imagens de três classes: nevo típico, nevo atípico e melanoma. Todas as imagens também contêm uma **máscara** correspondente que contorna o nevo. + +> ✅ Esta técnica é particularmente apropriada para este tipo de imagem médica, mas quais outras aplicações do mundo real você poderia imaginar? + +navi + +> Imagem do Banco de Dados PH2 + +Treinaremos um modelo para segmentar qualquer nevo de seu fundo. + +## ✍️ Exercícios: Segmentação Semântica + +Abra os notebooks abaixo para aprender mais sobre diferentes arquiteturas de segmentação semântica, praticar trabalhando com elas e vê-las em ação. + +* [Segmentação Semântica Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Segmentação Semântica TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Conclusão + +A segmentação é uma técnica muito poderosa para classificação de imagens, indo além das caixas delimitadoras para classificação em nível de pixel. É uma técnica usada em imagens médicas, entre outras aplicações. + +## 🚀 Desafio + +A segmentação do corpo é apenas uma das tarefas comuns que podemos realizar com imagens de pessoas. Outras tarefas importantes incluem **detecção de esqueleto** e **detecção de pose**. Experimente a biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver como a detecção de pose pode ser utilizada. + +## Revisão & Autoestudo + +Este [artigo da wikipedia](https://wikipedia.org/wiki/Image_segmentation) oferece uma boa visão geral das várias aplicações dessa técnica. Aprenda mais por conta própria sobre os subdomínios da segmentação de instâncias e segmentação panóptica neste campo de investigação. + +## [Tarefa](lab/README.md) + +Neste laboratório, tente **segmentação do corpo humano** usando o [Conjunto de Dados de Segmentação do Corpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) do Kaggle. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/pt/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..602fba75 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# Segmentação do Corpo Humano + +Trabalho de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Na produção de vídeo, por exemplo, em previsões do tempo, muitas vezes precisamos recortar a imagem de uma pessoa da câmera e colocá-la sobre outra filmagem. Isso é tipicamente feito usando técnicas de **chroma key**, quando uma pessoa é filmada na frente de um fundo de cor uniforme, que é então removido. Neste laboratório, iremos treinar um modelo de rede neural para recortar a silhueta humana. + +## O Conjunto de Dados + +Usaremos o [Conjunto de Dados de Segmentação do Corpo Completo MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) do Kaggle. Baixe o conjunto de dados manualmente do Kaggle. + +## Iniciando o Notebook + +Comece o laboratório abrindo [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Conclusão + +A segmentação do corpo é apenas uma das tarefas comuns que podemos realizar com imagens de pessoas. Outras tarefas importantes incluem **detecção de esqueleto** e **detecção de pose**. Confira a biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) para ver como essas tarefas podem ser implementadas. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/4-ComputerVision/README.md b/translations/pt/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..8b206e43 --- /dev/null +++ b/translations/pt/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# Visão Computacional + +![Resumo do conteúdo de Visão Computacional em um doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.pt.png) + +Nesta seção, aprenderemos sobre: + +* [Introdução à Visão Computacional e OpenCV](06-IntroCV/README.md) +* [Redes Neurais Convolucionais](07-ConvNets/README.md) +* [Redes Pré-treinadas e Aprendizado por Transferência](08-TransferLearning/README.md) +* [Autoencoders](09-Autoencoders/README.md) +* [Redes Geradoras Adversariais](10-GANs/README.md) +* [Detecção de Objetos](11-ObjectDetection/README.md) +* [Segmentação Semântica](12-Segmentation/README.md) + +**Aviso Legal**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/13-TextRep/README.md b/translations/pt/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..5e904672 --- /dev/null +++ b/translations/pt/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# Representando Texto como Tensores + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Classificação de Texto + +Na primeira parte desta seção, vamos nos concentrar na tarefa de **classificação de texto**. Usaremos o conjunto de dados [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), que contém artigos de notícias como os seguintes: + +* Categoria: Sci/Tech +* Título: Ky. Company Wins Grant to Study Peptides (AP) +* Corpo: AP - Uma empresa fundada por um pesquisador de química na Universidade de Louisville ganhou uma bolsa para desenvolver... + +Nosso objetivo será classificar o item de notícia em uma das categorias com base no texto. + +## Representando texto + +Se quisermos resolver tarefas de Processamento de Linguagem Natural (NLP) com redes neurais, precisamos de alguma forma de representar texto como tensores. Os computadores já representam caracteres textuais como números que mapeiam para fontes na sua tela usando codificações como ASCII ou UTF-8. + +Imagem mostrando diagrama mapeando um caractere para uma representação ASCII e binária + +> [Fonte da imagem](https://www.seobility.net/en/wiki/ASCII) + +Como humanos, entendemos o que cada letra **representa** e como todos os caracteres se juntam para formar as palavras de uma frase. No entanto, os computadores, por si só, não têm essa compreensão, e a rede neural precisa aprender o significado durante o treinamento. + +Portanto, podemos usar diferentes abordagens ao representar texto: + +* **Representação em nível de caractere**, quando representamos o texto tratando cada caractere como um número. Dado que temos *C* caracteres diferentes em nosso corpus de texto, a palavra *Hello* seria representada por um tensor 5x*C*. Cada letra corresponderia a uma coluna de tensor em codificação one-hot. +* **Representação em nível de palavra**, na qual criamos um **vocabulário** de todas as palavras em nosso texto e, em seguida, representamos as palavras usando codificação one-hot. Essa abordagem é de certa forma melhor, porque cada letra isoladamente não tem muito significado e, assim, ao usar conceitos semânticos de nível superior - palavras - simplificamos a tarefa para a rede neural. No entanto, dado o grande tamanho do dicionário, precisamos lidar com tensores esparsos de alta dimensão. + +Independentemente da representação, primeiro precisamos converter o texto em uma sequência de **tokens**, sendo que um token pode ser um caractere, uma palavra ou, às vezes, até mesmo parte de uma palavra. Em seguida, convertemos o token em um número, tipicamente usando **vocabulário**, e esse número pode ser alimentado em uma rede neural usando codificação one-hot. + +## N-Gramas + +Na linguagem natural, o significado preciso das palavras só pode ser determinado no contexto. Por exemplo, os significados de *rede neural* e *rede de pesca* são completamente diferentes. Uma das maneiras de levar isso em conta é construir nosso modelo com pares de palavras, considerando pares de palavras como tokens de vocabulário separados. Dessa forma, a frase *Eu gosto de pescar* será representada pela seguinte sequência de tokens: *Eu gosto*, *gosto de*, *de pescar*. O problema com essa abordagem é que o tamanho do dicionário cresce significativamente, e combinações como *ir pescar* e *ir às compras* são apresentadas por tokens diferentes, que não compartilham nenhuma semelhança semântica, apesar do mesmo verbo. + +Em alguns casos, também podemos considerar o uso de tri-gramas -- combinações de três palavras --. Assim, a abordagem é frequentemente chamada de **n-gramas**. Além disso, faz sentido usar n-gramas com representação em nível de caractere, nesse caso os n-gramas corresponderão aproximadamente a diferentes sílabas. + +## Bag-of-Words e TF/IDF + +Ao resolver tarefas como a classificação de texto, precisamos ser capazes de representar o texto por um vetor de tamanho fixo, que usaremos como entrada para o classificador denso final. Uma das maneiras mais simples de fazer isso é combinar todas as representações individuais de palavras, por exemplo, somando-as. Se adicionarmos as codificações one-hot de cada palavra, terminaremos com um vetor de frequências, mostrando quantas vezes cada palavra aparece dentro do texto. Essa representação de texto é chamada de **bag of words** (BoW). + + + +> Imagem do autor + +Um BoW representa essencialmente quais palavras aparecem no texto e em quais quantidades, o que pode de fato ser uma boa indicação do que o texto trata. Por exemplo, um artigo de notícias sobre política provavelmente conterá palavras como *presidente* e *país*, enquanto uma publicação científica teria algo como *colisor*, *descoberto*, etc. Assim, as frequências das palavras podem, em muitos casos, ser um bom indicador do conteúdo do texto. + +O problema com o BoW é que certas palavras comuns, como *e*, *é*, etc., aparecem na maioria dos textos e têm as maiores frequências, ofuscando as palavras que são realmente importantes. Podemos diminuir a importância dessas palavras levando em conta a frequência com que as palavras ocorrem em toda a coleção de documentos. Essa é a ideia principal por trás da abordagem TF/IDF, que é abordada com mais detalhes nos notebooks anexados a esta lição. + +No entanto, nenhuma dessas abordagens pode levar plenamente em conta a **semântica** do texto. Precisamos de modelos de redes neurais mais poderosos para fazer isso, que discutiremos mais adiante nesta seção. + +## ✍️ Exercícios: Representação de Texto + +Continue seu aprendizado nos seguintes notebooks: + +* [Representação de Texto com PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Representação de Texto com TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Conclusão + +Até agora, estudamos técnicas que podem adicionar peso de frequência a diferentes palavras. No entanto, elas não conseguem representar significado ou ordem. Como disse o famoso linguista J. R. Firth em 1935: "O significado completo de uma palavra é sempre contextual, e nenhum estudo de significado separado do contexto pode ser levado a sério." Aprenderemos mais tarde no curso como capturar informações contextuais do texto usando modelagem de linguagem. + +## 🚀 Desafio + +Tente alguns outros exercícios usando bag-of-words e diferentes modelos de dados. Você pode se inspirar nesta [competição no Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Revisão & Autoestudo + +Pratique suas habilidades com embeddings de texto e técnicas de bag-of-words em [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + +## [Tarefa: Notebooks](assignment.md) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/13-TextRep/assignment.md b/translations/pt/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..86d04907 --- /dev/null +++ b/translations/pt/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# Tarefa: Notebooks + +Usando os notebooks associados a esta lição (seja a versão PyTorch ou a versão TensorFlow), execute-os novamente usando seu próprio conjunto de dados, talvez um do Kaggle, utilizado com atribuição. Reescreva o notebook para destacar suas próprias descobertas. Experimente alguns conjuntos de dados inovadores que podem ser surpreendentes, como [este sobre avistamentos de OVNIs](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) da NUFORC. + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/14-Embeddings/README.md b/translations/pt/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..3b232e98 --- /dev/null +++ b/translations/pt/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# Embeddings + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Ao treinar classificadores baseados em BoW ou TF/IDF, operamos em vetores de bag-of-words de alta dimensão com comprimento `vocab_size`, e estávamos convertendo explicitamente de vetores de representação posicional de baixa dimensão para uma representação one-hot esparsa. No entanto, essa representação one-hot não é eficiente em termos de memória. Além disso, cada palavra é tratada de forma independente, ou seja, vetores codificados em one-hot não expressam nenhuma similaridade semântica entre as palavras. + +A ideia de **embedding** é representar palavras por vetores densos de menor dimensão, que de alguma forma refletem o significado semântico de uma palavra. Mais adiante, discutiremos como construir embeddings de palavras significativos, mas por enquanto, vamos pensar nos embeddings como uma forma de reduzir a dimensionalidade de um vetor de palavras. + +Assim, a camada de embedding receberia uma palavra como entrada e produziria um vetor de saída de tamanho especificado `embedding_size`. De certa forma, é muito semelhante a uma camada `Linear`, mas em vez de receber um vetor codificado em one-hot, ela poderá receber um número de palavra como entrada, permitindo-nos evitar a criação de grandes vetores codificados em one-hot. + +Ao usar uma camada de embedding como a primeira camada em nossa rede de classificadores, podemos mudar de um modelo de bag-of-words para um modelo de **embedding bag**, onde primeiro convertemos cada palavra em nosso texto em seu correspondente embedding e, em seguida, calculamos alguma função agregada sobre todos esses embeddings, como `sum`, `average` ou `max`. + +![Imagem mostrando um classificador de embedding para cinco palavras sequenciais.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.pt.png) + +> Imagem do autor + +## ✍️ Exercícios: Embeddings + +Continue seu aprendizado nos seguintes notebooks: +* [Embeddings com PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Embeddings TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Embeddings Semânticos: Word2Vec + +Enquanto a camada de embedding aprendeu a mapear palavras para representação vetorial, essa representação não necessariamente tinha muito significado semântico. Seria interessante aprender uma representação vetorial de modo que palavras semelhantes ou sinônimos corresponderiam a vetores que estão próximos uns dos outros em termos de alguma distância vetorial (por exemplo, distância euclidiana). + +Para isso, precisamos pré-treinar nosso modelo de embedding em uma grande coleção de textos de uma maneira específica. Uma forma de treinar embeddings semânticos é chamada de [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). É baseada em duas arquiteturas principais que são usadas para produzir uma representação distribuída de palavras: + + - **Continuous bag-of-words** (CBoW) — nesta arquitetura, treinamos o modelo para prever uma palavra a partir do contexto ao seu redor. Dado o ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, o objetivo do modelo é prever $W_0$ a partir de $(W_{-2},W_{-1},W_1,W_2)$. + - **Continuous skip-gram** é o oposto do CBoW. O modelo usa uma janela de palavras de contexto ao redor para prever a palavra atual. + +CBoW é mais rápido, enquanto skip-gram é mais lento, mas faz um trabalho melhor ao representar palavras infrequentes. + +![Imagem mostrando os algoritmos CBoW e Skip-Gram para converter palavras em vetores.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pt.png) + +> Imagem deste [artigo](https://arxiv.org/pdf/1301.3781.pdf) + +Os embeddings pré-treinados do Word2Vec (assim como outros modelos similares, como o GloVe) também podem ser usados no lugar da camada de embedding em redes neurais. No entanto, precisamos lidar com vocabulários, pois o vocabulário usado para pré-treinar o Word2Vec/GloVe provavelmente difere do vocabulário em nosso corpus de texto. Dê uma olhada nos Notebooks acima para ver como esse problema pode ser resolvido. + +## Embeddings Contextuais + +Uma limitação chave das representações de embedding pré-treinadas tradicionais, como o Word2Vec, é o problema da desambiguação de sentido das palavras. Embora os embeddings pré-treinados possam capturar parte do significado das palavras em contexto, cada possível significado de uma palavra é codificado no mesmo embedding. Isso pode causar problemas em modelos posteriores, uma vez que muitas palavras, como a palavra 'play', têm significados diferentes dependendo do contexto em que são usadas. + +Por exemplo, a palavra 'play' nas duas frases diferentes tem significados bastante distintos: + +- Eu fui a uma **peça** no teatro. +- John quer **brincar** com seus amigos. + +Os embeddings pré-treinados acima representam ambos os significados da palavra 'play' no mesmo embedding. Para superar essa limitação, precisamos construir embeddings baseados no **modelo de linguagem**, que é treinado em um grande corpus de texto e *sabe* como as palavras podem ser combinadas em diferentes contextos. Discutir embeddings contextuais está fora do escopo deste tutorial, mas voltaremos a eles ao falar sobre modelos de linguagem mais adiante no curso. + +## Conclusão + +Nesta lição, você descobriu como construir e usar camadas de embedding no TensorFlow e Pytorch para refletir melhor os significados semânticos das palavras. + +## 🚀 Desafio + +O Word2Vec tem sido usado para algumas aplicações interessantes, incluindo a geração de letras de músicas e poesias. Dê uma olhada neste [artigo](https://www.politetype.com/blog/word2vec-color-poems) que explica como o autor usou o Word2Vec para gerar poesia. Assista também a [este vídeo de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) para descobrir uma explicação diferente dessa técnica. Em seguida, tente aplicar essas técnicas ao seu próprio corpus de texto, talvez proveniente do Kaggle. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Revisão & Autoestudo + +Leia este artigo sobre Word2Vec: [Estimativa Eficiente de Representações de Palavras em Espaço Vetorial](https://arxiv.org/pdf/1301.3781.pdf) + +## [Tarefa: Notebooks](assignment.md) + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/14-Embeddings/assignment.md b/translations/pt/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..469c7b48 --- /dev/null +++ b/translations/pt/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# Tarefa: Notebooks + +Utilizando os notebooks associados a esta lição (seja a versão do PyTorch ou do TensorFlow), execute-os novamente com seu próprio conjunto de dados, talvez um do Kaggle, usado com atribuição. Reescreva o notebook para destacar suas próprias descobertas. Experimente um tipo diferente de conjunto de dados e documente suas descobertas, utilizando textos como [essas letras dos Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Aviso**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/15-LanguageModeling/README.md b/translations/pt/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..53a241bc --- /dev/null +++ b/translations/pt/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# Modelagem de Linguagem + +Embutimentos semânticos, como Word2Vec e GloVe, são na verdade um primeiro passo em direção à **modelagem de linguagem** - criar modelos que de alguma forma *entendem* (ou *representam*) a natureza da linguagem. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +A ideia principal por trás da modelagem de linguagem é treiná-los em conjuntos de dados não rotulados de maneira não supervisionada. Isso é importante porque temos grandes quantidades de texto não rotulado disponíveis, enquanto a quantidade de texto rotulado sempre seria limitada pela quantidade de esforço que podemos gastar na rotulagem. Na maioria das vezes, podemos construir modelos de linguagem que podem **prever palavras ausentes** no texto, porque é fácil mascarar uma palavra aleatória no texto e usá-la como uma amostra de treinamento. + +## Treinamento de Embutimentos + +Em nossos exemplos anteriores, usamos embutimentos semânticos pré-treinados, mas é interessante ver como esses embutimentos podem ser treinados. Existem várias ideias possíveis que podem ser usadas: + +* Modelagem de linguagem **N-Gram**, quando prevemos um token olhando para N tokens anteriores (N-gram) +* **Continuous Bag-of-Words** (CBoW), quando prevemos o token do meio $W_0$ em uma sequência de tokens $W_{-N}$, ..., $W_N$. +* **Skip-gram**, onde prevemos um conjunto de tokens vizinhos {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} a partir do token do meio $W_0$. + +![imagem do artigo sobre conversão de palavras em vetores](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.pt.png) + +> Imagem do [este artigo](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Notebooks de Exemplo: Treinando o modelo CBoW + +Continue seu aprendizado nos seguintes notebooks: + +* [Treinando CBoW Word2Vec com TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Treinando CBoW Word2Vec com PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Conclusão + +Na lição anterior, vimos que os embutimentos de palavras funcionam como mágica! Agora sabemos que treinar embutimentos de palavras não é uma tarefa muito complexa, e devemos ser capazes de treinar nossos próprios embutimentos de palavras para texto específico de domínio, se necessário. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Revisão & Estudo Autônomo + +* [Tutorial oficial do PyTorch sobre Modelagem de Linguagem](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial oficial do TensorFlow sobre treinamento de modelo Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* Usar o framework **gensim** para treinar os embutimentos mais comumente usados em algumas linhas de código é descrito [nesta documentação](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Tarefa: Treinar Modelo Skip-Gram](lab/README.md) + +No laboratório, desafiamos você a modificar o código desta lição para treinar o modelo skip-gram em vez do CBoW. [Leia os detalhes](lab/README.md) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/pt/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..027743ff --- /dev/null +++ b/translations/pt/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Treinamento do Modelo Skip-Gram + +Tarefa do [Currículo AI para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Neste laboratório, desafiamos você a treinar um modelo Word2Vec usando a técnica Skip-Gram. Treine uma rede com incorporação para prever palavras vizinhas em uma janela Skip-Gram de $N$-tokens de largura. Você pode usar o [código desta lição](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) e modificá-lo ligeiramente. + +## O Conjunto de Dados + +Sinta-se à vontade para usar qualquer livro. Você pode encontrar muitos textos gratuitos no [Project Gutenberg](https://www.gutenberg.org/); por exemplo, aqui está um link direto para [As Aventuras de Alice no País das Maravilhas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. Ou, você pode usar as peças de Shakespeare, que você pode obter usando o seguinte código: + +```python +path_to_file = tf.keras.utils.get_file( + 'shakespeare.txt', + 'https://storage.googleapis.com/download.tensorflow.org/data/shakespeare.txt') +text = open(path_to_file, 'rb').read().decode(encoding='utf-8') +``` + +## Explore! + +Se você tiver tempo e quiser se aprofundar no assunto, tente explorar várias coisas: + +* Como o tamanho da incorporação afeta os resultados? +* Como diferentes estilos de texto afetam o resultado? +* Pegue vários tipos de palavras muito diferentes e seus sinônimos, obtenha suas representações vetoriais, aplique PCA para reduzir as dimensões para 2 e plote-os em um espaço 2D. Você vê algum padrão? + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/16-RNN/README.md b/translations/pt/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..fd8c64e2 --- /dev/null +++ b/translations/pt/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,86 @@ +# Redes Neurais Recorrentes + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +Nas seções anteriores, temos utilizado representações semânticas ricas de texto e um classificador linear simples em cima das embeddings. O que essa arquitetura faz é capturar o significado agregado das palavras em uma frase, mas não leva em consideração a **ordem** das palavras, porque a operação de agregação em cima das embeddings removeu essa informação do texto original. Como esses modelos não conseguem modelar a ordem das palavras, eles não conseguem resolver tarefas mais complexas ou ambíguas, como geração de texto ou resposta a perguntas. + +Para capturar o significado de uma sequência de texto, precisamos usar outra arquitetura de rede neural, chamada de **rede neural recorrente**, ou RNN. Na RNN, passamos nossa frase pela rede um símbolo de cada vez, e a rede produz um **estado**, que então passamos para a rede novamente com o próximo símbolo. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.pt.png) + +> Imagem do autor + +Dada a sequência de tokens de entrada X0,...,Xn, a RNN cria uma sequência de blocos de rede neural e treina essa sequência de ponta a ponta usando retropropagação. Cada bloco da rede recebe um par (Xi,Si) como entrada e produz Si+1 como resultado. O estado final Sn ou (saída Yn) vai para um classificador linear para produzir o resultado. Todos os blocos da rede compartilham os mesmos pesos e são treinados de ponta a ponta usando uma passagem de retropropagação. + +Como os vetores de estado S0,...,Sn são passados pela rede, ela é capaz de aprender as dependências sequenciais entre as palavras. Por exemplo, quando a palavra *not* aparece em algum lugar na sequência, ela pode aprender a negar certos elementos dentro do vetor de estado, resultando em negação. + +> ✅ Como os pesos de todos os blocos RNN na imagem acima são compartilhados, a mesma imagem pode ser representada como um bloco (à direita) com um loop de feedback recorrente, que passa o estado de saída da rede de volta para a entrada. + +## Anatomia de uma Célula RNN + +Vamos ver como uma célula RNN simples é organizada. Ela aceita o estado anterior Si-1 e o símbolo atual Xi como entradas, e deve produzir o estado de saída Si (e, às vezes, também estamos interessados em alguma outra saída Yi, como no caso de redes generativas). + +Uma célula RNN simples tem duas matrizes de pesos internas: uma transforma um símbolo de entrada (vamos chamá-la de W), e a outra transforma um estado de entrada (H). Neste caso, a saída da rede é calculada como σ(W×Xi+H×Si-1+b), onde σ é a função de ativação e b é um viés adicional. + +Anatomia da Célula RNN + +> Imagem do autor + +Em muitos casos, os tokens de entrada são passados pela camada de embedding antes de entrar na RNN para reduzir a dimensionalidade. Nesse caso, se a dimensão dos vetores de entrada é *emb_size*, e o vetor de estado é *hid_size* - o tamanho de W é *emb_size*×*hid_size*, e o tamanho de H é *hid_size*×*hid_size*. + +## Memória de Longo e Curto Prazo (LSTM) + +Um dos principais problemas das RNNs clássicas é o chamado problema dos **gradientes que desaparecem**. Como as RNNs são treinadas de ponta a ponta em uma única passagem de retropropagação, elas têm dificuldade em propagar o erro para as primeiras camadas da rede e, assim, a rede não consegue aprender relações entre tokens distantes. Uma das maneiras de evitar esse problema é introduzir **gerenciamento de estado explícito** usando os chamados **portões**. Existem duas arquiteturas bem conhecidas desse tipo: **Memória de Longo e Curto Prazo** (LSTM) e **Unidade de Relé com Portão** (GRU). + +![Imagem mostrando um exemplo de célula de memória de longo e curto prazo](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Fonte da imagem TBD + +A Rede LSTM é organizada de maneira semelhante à RNN, mas existem dois estados que são passados de camada para camada: o estado real C e o vetor oculto H. Em cada unidade, o vetor oculto Hi é concatenado com a entrada Xi, e eles controlam o que acontece com o estado C por meio de **portões**. Cada portão é uma rede neural com ativação sigmoide (saída na faixa [0,1]), que pode ser pensada como uma máscara bit a bit quando multiplicada pelo vetor de estado. Existem os seguintes portões (da esquerda para a direita na imagem acima): + +* O **portão de esquecimento** pega um vetor oculto e determina quais componentes do vetor C precisamos esquecer e quais passar adiante. +* O **portão de entrada** pega algumas informações dos vetores de entrada e ocultos e as insere no estado. +* O **portão de saída** transforma o estado por meio de uma camada linear com ativação *tanh*, e então seleciona alguns de seus componentes usando um vetor oculto Hi para produzir um novo estado Ci+1. + +Os componentes do estado C podem ser pensados como alguns indicadores que podem ser ativados ou desativados. Por exemplo, quando encontramos um nome *Alice* na sequência, podemos querer assumir que se refere a uma personagem feminina e ativar o indicador no estado de que temos um substantivo feminino na frase. Quando encontramos mais adiante a frase *and Tom*, ativaremos o indicador de que temos um substantivo no plural. Assim, manipulando o estado, podemos supostamente acompanhar as propriedades gramaticais das partes da frase. + +> ✅ Um excelente recurso para entender os detalhes internos do LSTM é este ótimo artigo [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. + +## RNNs Bidirecionais e Multicamadas + +Discutimos redes recorrentes que operam em uma direção, do início de uma sequência até o fim. Isso parece natural, porque se assemelha à maneira como lemos e ouvimos a fala. No entanto, como em muitos casos práticos temos acesso aleatório à sequência de entrada, pode fazer sentido executar o cálculo recorrente em ambas as direções. Essas redes são chamadas de RNNs **bidirecionais**. Ao lidar com uma rede bidirecional, precisaríamos de dois vetores de estado ocultos, um para cada direção. + +Uma rede recorrente, seja unidirecional ou bidirecional, captura certos padrões dentro de uma sequência e pode armazená-los em um vetor de estado ou passar para a saída. Assim como nas redes convolucionais, podemos construir outra camada recorrente em cima da primeira para capturar padrões de nível superior e construir a partir de padrões de baixo nível extraídos pela primeira camada. Isso nos leva à noção de uma **RNN multicamada**, que consiste em duas ou mais redes recorrentes, onde a saída da camada anterior é passada para a próxima camada como entrada. + +![Imagem mostrando uma RNN multicamada de memória de longo e curto prazo](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.pt.jpg) + +*Imagem do [este maravilhoso post](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) de Fernando López* + +## ✍️ Exercícios: Embeddings + +Continue seu aprendizado nos seguintes notebooks: + +* [RNNs com PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs com TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Conclusão + +Nesta unidade, vimos que as RNNs podem ser usadas para classificação de sequências, mas, na verdade, elas podem lidar com muitas outras tarefas, como geração de texto, tradução automática e mais. Consideraremos essas tarefas na próxima unidade. + +## 🚀 Desafio + +Leia algumas literaturas sobre LSTMs e considere suas aplicações: + +- [Grid Long Short-Term Memory](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Show, Attend and Tell: Neural Image Caption Generation with Visual Attention](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Revisão & Autoestudo + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. + +## [Tarefa: Notebooks](assignment.md) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/16-RNN/assignment.md b/translations/pt/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..a5911c10 --- /dev/null +++ b/translations/pt/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# Tarefa: Notebooks + +Usando os notebooks associados a esta lição (seja a versão do PyTorch ou a do TensorFlow), execute-os novamente utilizando seu próprio conjunto de dados, talvez um do Kaggle, usado com atribuição. Reescreva o notebook para destacar suas próprias descobertas. Experimente um tipo diferente de conjunto de dados e documente suas descobertas, utilizando textos como [este conjunto de dados de competição do Kaggle sobre tweets sobre clima](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/pt/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..4f43ac62 --- /dev/null +++ b/translations/pt/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# Redes generativas + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Redes Neurais Recorrentes (RNNs) e suas variantes com células portadas, como Células de Memória de Longo e Curto Prazo (LSTMs) e Unidades Recorrentes Portadas (GRUs), fornecem um mecanismo para modelagem de linguagem, pois podem aprender a ordem das palavras e fazer previsões para a próxima palavra em uma sequência. Isso nos permite usar RNNs para **tarefas generativas**, como geração de texto comum, tradução automática e até mesmo legendagem de imagens. + +> ✅ Pense em todas as vezes que você se beneficiou de tarefas generativas, como a conclusão de texto enquanto digita. Faça uma pesquisa sobre seus aplicativos favoritos para ver se eles utilizaram RNNs. + +Na arquitetura de RNN que discutimos na unidade anterior, cada unidade RNN produzia o próximo estado oculto como uma saída. No entanto, também podemos adicionar outra saída a cada unidade recorrente, o que nos permitiria gerar uma **sequência** (que tem o mesmo comprimento da sequência original). Além disso, podemos usar unidades RNN que não aceitam uma entrada em cada passo, e apenas pegam algum vetor de estado inicial, e então produzem uma sequência de saídas. + +Isso permite diferentes arquiteturas neurais que são mostradas na imagem abaixo: + +![Imagem mostrando padrões comuns de redes neurais recorrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pt.jpg) + +> Imagem do post do blog [Eficácia Irresistível das Redes Neurais Recorrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpaty](http://karpathy.github.io/) + +* **Um-para-um** é uma rede neural tradicional com uma entrada e uma saída +* **Um-para-muitos** é uma arquitetura generativa que aceita um valor de entrada e gera uma sequência de valores de saída. Por exemplo, se quisermos treinar uma rede de **legendagem de imagens** que produza uma descrição textual de uma imagem, podemos usar uma imagem como entrada, passá-la por uma CNN para obter seu estado oculto, e então ter uma cadeia recorrente gerando a legenda palavra por palavra +* **Muitos-para-um** corresponde às arquiteturas RNN que descrevemos na unidade anterior, como a classificação de texto +* **Muitos-para-muitos**, ou **sequência-para-sequência**, corresponde a tarefas como **tradução automática**, onde temos a primeira RNN coletando todas as informações da sequência de entrada no estado oculto, e outra cadeia RNN desenrolando esse estado na sequência de saída. + +Nesta unidade, vamos nos concentrar em modelos generativos simples que nos ajudam a gerar texto. Para simplificar, usaremos tokenização em nível de caractere. + +Vamos treinar esta RNN para gerar texto passo a passo. Em cada passo, pegaremos uma sequência de caracteres de comprimento `nchars` e pediremos à rede para gerar o próximo caractere de saída para cada caractere de entrada: + +![Imagem mostrando um exemplo de geração RNN da palavra 'OLÁ'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.pt.png) + +Ao gerar texto (durante a inferência), começamos com algum **prompt**, que é passado pelas células RNN para gerar seu estado intermediário, e então a partir desse estado a geração começa. Geramos um caractere de cada vez e passamos o estado e o caractere gerado para outra célula RNN para gerar o próximo, até gerarmos caracteres suficientes. + + + +> Imagem do autor + +## ✍️ Exercícios: Redes Generativas + +Continue seu aprendizado nos seguintes notebooks: + +* [Redes Generativas com PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Redes Generativas com TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Geração de texto suave e temperatura + +A saída de cada célula RNN é uma distribuição de probabilidade de caracteres. Se sempre pegarmos o caractere com a maior probabilidade como o próximo caractere no texto gerado, o texto pode frequentemente "circular" entre as mesmas sequências de caracteres repetidamente, como neste exemplo: + +``` +today of the second the company and a second the company ... +``` + +No entanto, se olharmos para a distribuição de probabilidade do próximo caractere, pode ser que a diferença entre algumas das maiores probabilidades não seja enorme, por exemplo, um caractere pode ter probabilidade 0.2, outro - 0.19, etc. Por exemplo, ao procurar o próximo caractere na sequência '*play*', o próximo caractere pode ser igualmente um espaço ou **e** (como na palavra *player*). + +Isso nos leva à conclusão de que não é sempre "justo" selecionar o caractere com a maior probabilidade, porque escolher o segundo mais alto ainda pode nos levar a um texto significativo. É mais sábio **amostrar** caracteres da distribuição de probabilidade dada pela saída da rede. Também podemos usar um parâmetro, **temperatura**, que irá achatar a distribuição de probabilidade, caso queiramos adicionar mais aleatoriedade, ou torná-la mais acentuada, se quisermos nos apegar mais aos caracteres de maior probabilidade. + +Explore como essa geração de texto suave é implementada nos notebooks vinculados acima. + +## Conclusão + +Embora a geração de texto possa ser útil por si só, os principais benefícios vêm da capacidade de gerar texto usando RNNs a partir de algum vetor de características inicial. Por exemplo, a geração de texto é usada como parte da tradução automática (sequência-para-sequência, neste caso o vetor de estado do *codificador* é usado para gerar ou *decodificar* a mensagem traduzida), ou gerando uma descrição textual de uma imagem (caso em que o vetor de características viria do extrator CNN). + +## 🚀 Desafio + +Faça algumas lições no Microsoft Learn sobre este tópico + +* Geração de Texto com [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Revisão & Estudo Autônomo + +Aqui estão alguns artigos para expandir seu conhecimento + +* Diferentes abordagens para geração de texto com Cadeia de Markov, LSTM e GPT-2: [post do blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Exemplo de geração de texto na [documentação do Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Tarefa](lab/README.md) + +Vimos como gerar texto caractere por caractere. No laboratório, você explorará a geração de texto em nível de palavra. + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/pt/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..7dbc8b55 --- /dev/null +++ b/translations/pt/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# Geração de Texto em Nível de Palavra usando RNNs + +Trabalho de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Neste laboratório, você precisa escolher qualquer livro e usá-lo como um conjunto de dados para treinar um gerador de texto em nível de palavra. + +## O Conjunto de Dados + +Você é livre para usar qualquer livro. Você pode encontrar muitos textos gratuitos no [Project Gutenberg](https://www.gutenberg.org/), por exemplo, aqui está um link direto para [As Aventuras de Alice no País das Maravilhas](https://www.gutenberg.org/files/11/11-0.txt) de Lewis Carroll. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/pt/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..f54bc495 --- /dev/null +++ b/translations/pt/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# Mecanismos de Atenção e Transformers + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Um dos problemas mais importantes no domínio do PLN é **tradução automática**, uma tarefa essencial que fundamenta ferramentas como o Google Translate. Nesta seção, focaremos na tradução automática ou, de forma mais geral, em qualquer tarefa *sequência-para-sequência* (que também é chamada de **transdução de sentenças**). + +Com RNNs, a sequência-para-sequência é implementada por duas redes recorrentes, onde uma rede, o **codificador**, colapsa uma sequência de entrada em um estado oculto, enquanto outra rede, o **decodificador**, desdobra esse estado oculto em um resultado traduzido. Existem alguns problemas com essa abordagem: + +* O estado final da rede codificadora tem dificuldade em lembrar o início de uma sentença, causando assim uma qualidade ruim do modelo para sentenças longas. +* Todas as palavras em uma sequência têm o mesmo impacto no resultado. Na realidade, no entanto, palavras específicas na sequência de entrada frequentemente têm mais impacto nas saídas sequenciais do que outras. + +**Mecanismos de Atenção** fornecem um meio de ponderar o impacto contextual de cada vetor de entrada em cada previsão de saída da RNN. A forma como é implementado é criando atalhos entre estados intermediários da RNN de entrada e da RNN de saída. Dessa maneira, ao gerar o símbolo de saída yt, levaremos em conta todos os estados ocultos de entrada hi, com diferentes coeficientes de peso αt,i. + +![Imagem mostrando um modelo codificador/decodificador com uma camada de atenção aditiva](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.pt.png) + +> O modelo codificador-decodificador com mecanismo de atenção aditiva em [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citado a partir [deste post de blog](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +A matriz de atenção {αi,j} representaria o grau em que certas palavras de entrada desempenham na geração de uma palavra específica na sequência de saída. Abaixo está um exemplo de tal matriz: + +![Imagem mostrando um alinhamento de exemplo encontrado por RNNsearch-50, tirada de Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.pt.png) + +> Figura de [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Os mecanismos de atenção são responsáveis por grande parte do estado da arte atual ou quase atual em PLN. No entanto, adicionar atenção aumenta significativamente o número de parâmetros do modelo, o que levou a problemas de escalabilidade com RNNs. Uma restrição chave da escalabilidade das RNNs é que a natureza recorrente dos modelos torna desafiador agrupar e paralelizar o treinamento. Em uma RNN, cada elemento de uma sequência precisa ser processado em ordem sequencial, o que significa que não pode ser facilmente paralelizado. + +![Codificador Decodificador com Atenção](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figura do [Blog do Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +A adoção de mecanismos de atenção combinada com essa restrição levou à criação dos agora modelos Transformer de Estado da Arte que conhecemos e usamos hoje, como BERT e Open-GPT3. + +## Modelos Transformer + +Uma das principais ideias por trás dos transformers é evitar a natureza sequencial das RNNs e criar um modelo que seja paralelizável durante o treinamento. Isso é alcançado implementando duas ideias: + +* codificação posicional +* uso de mecanismo de autoatenção para capturar padrões em vez de RNNs (ou CNNs) (é por isso que o artigo que introduz os transformers é chamado *[Atenção é tudo o que você precisa](https://arxiv.org/abs/1706.03762)*) + +### Codificação/Embutimento Posicional + +A ideia da codificação posicional é a seguinte. +1. Ao usar RNNs, a posição relativa dos tokens é representada pelo número de etapas e, portanto, não precisa ser explicitamente representada. +2. No entanto, uma vez que mudamos para atenção, precisamos saber as posições relativas dos tokens dentro de uma sequência. +3. Para obter a codificação posicional, aumentamos nossa sequência de tokens com uma sequência de posições de tokens na sequência (ou seja, uma sequência de números 0, 1, ...). +4. Em seguida, misturamos a posição do token com um vetor de embutimento de token. Para transformar a posição (inteiro) em um vetor, podemos usar diferentes abordagens: + +* Embutimento treinável, semelhante ao embutimento de token. Esta é a abordagem que consideramos aqui. Aplicamos camadas de embutimento tanto em tokens quanto em suas posições, resultando em vetores de embutimento das mesmas dimensões, que então somamos. +* Função de codificação de posição fixa, conforme proposto no artigo original. + + + +> Imagem do autor + +O resultado que obtemos com o embutimento posicional incorpora tanto o token original quanto sua posição dentro de uma sequência. + +### Autoatenção Multi-Cabeça + +Em seguida, precisamos capturar alguns padrões dentro da nossa sequência. Para fazer isso, os transformers usam um mecanismo de **autoatenção**, que é essencialmente atenção aplicada à mesma sequência como entrada e saída. A aplicação de autoatenção nos permite levar em conta o **contexto** dentro da sentença e ver quais palavras estão inter-relacionadas. Por exemplo, isso nos permite ver quais palavras são referidas por co-referências, como *isso*, e também levar o contexto em consideração: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.pt.png) + +> Imagem do [Blog do Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +Nos transformers, usamos **Atenção Multi-Cabeça** para dar ao modelo o poder de capturar vários tipos diferentes de dependências, por exemplo, relações de palavras de longo prazo versus curto prazo, co-referência versus algo mais, etc. + +[Notebook TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) contém mais detalhes sobre a implementação das camadas de transformer. + +### Atenção Codificador-Decodificador + +Nos transformers, a atenção é usada em dois lugares: + +* Para capturar padrões dentro do texto de entrada usando autoatenção +* Para realizar tradução de sequência - é a camada de atenção entre codificador e decodificador. + +A atenção codificador-decodificador é muito semelhante ao mecanismo de atenção usado em RNNs, como descrito no início desta seção. Este diagrama animado explica o papel da atenção codificador-decodificador. + +![GIF animado mostrando como as avaliações são realizadas em modelos transformer.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Como cada posição de entrada é mapeada independentemente para cada posição de saída, os transformers podem ser paralelizados melhor do que as RNNs, o que permite modelos de linguagem muito maiores e mais expressivos. Cada cabeça de atenção pode ser usada para aprender diferentes relações entre palavras que melhoram as tarefas de Processamento de Linguagem Natural a jusante. + +## BERT + +**BERT** (Representações de Codificador Bidirecional de Transformers) é uma rede transformer multilayer muito grande com 12 camadas para *BERT-base* e 24 para *BERT-large*. O modelo é primeiro pré-treinado em um grande corpus de dados textuais (WikiPedia + livros) usando treinamento não supervisionado (previsão de palavras mascaradas em uma sentença). Durante o pré-treinamento, o modelo absorve níveis significativos de compreensão da linguagem, que podem ser aproveitados com outros conjuntos de dados usando ajuste fino. Este processo é chamado de **aprendizado por transferência**. + +![imagem de http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.pt.png) + +> Imagem [fonte](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Exercícios: Transformers + +Continue seu aprendizado nos seguintes notebooks: + +* [Transformers em PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformers em TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Conclusão + +Nesta lição, você aprendeu sobre Transformers e Mecanismos de Atenção, todas ferramentas essenciais no conjunto de ferramentas de PLN. Existem muitas variações das arquiteturas Transformer, incluindo BERT, DistilBERT, BigBird, OpenGPT3 e mais, que podem ser ajustadas. O [pacote HuggingFace](https://github.com/huggingface/) fornece um repositório para treinar muitas dessas arquiteturas com PyTorch e TensorFlow. + +## 🚀 Desafio + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Revisão & Autoestudo + +* [Post de blog](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), explicando o clássico artigo [Atenção é tudo o que você precisa](https://arxiv.org/abs/1706.03762) sobre transformers. +* [Uma série de posts de blog](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) sobre transformers, explicando a arquitetura em detalhes. + +## [Tarefa](assignment.md) + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas que possam surgir do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/18-Transformers/assignment.md b/translations/pt/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..7b99267e --- /dev/null +++ b/translations/pt/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# Tarefa: Transformers + +Experimente os Transformers no HuggingFace! Tente alguns dos scripts que eles fornecem para trabalhar com os vários modelos disponíveis em seu site: https://huggingface.co/docs/transformers/run_scripts. Experimente um dos conjuntos de dados deles, depois importe um dos seus próprios deste currículo ou do Kaggle e veja se consegue gerar textos interessantes. Produza um notebook com suas descobertas. + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/19-NER/README.md b/translations/pt/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..6ffd2b53 --- /dev/null +++ b/translations/pt/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,84 @@ +# Reconhecimento de Entidades Nomeadas + +Até agora, temos nos concentrado principalmente em uma tarefa de PLN - classificação. No entanto, também existem outras tarefas de PLN que podem ser realizadas com redes neurais. Uma dessas tarefas é o **[Reconhecimento de Entidades Nomeadas](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), que lida com o reconhecimento de entidades específicas dentro do texto, como lugares, nomes de pessoas, intervalos de data-hora, fórmulas químicas e assim por diante. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Exemplo de Uso do NER + +Suponha que você queira desenvolver um chatbot de linguagem natural, semelhante ao Amazon Alexa ou ao Google Assistant. A forma como os chatbots inteligentes funcionam é *entendendo* o que o usuário deseja, realizando a classificação de texto na frase de entrada. O resultado dessa classificação é chamado de **intenção**, que determina o que um chatbot deve fazer. + +Bot NER + +> Imagem do autor + +No entanto, um usuário pode fornecer alguns parâmetros como parte da frase. Por exemplo, ao perguntar sobre o clima, ela pode especificar uma localização ou data. Um bot deve ser capaz de entender essas entidades e preencher os espaços dos parâmetros de acordo antes de executar a ação. É exatamente aqui que o NER entra em cena. + +> ✅ Outro exemplo seria [analisar artigos médicos científicos](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Uma das principais coisas que precisamos procurar são termos médicos específicos, como doenças e substâncias médicas. Embora um pequeno número de doenças possa ser extraído usando busca de substring, entidades mais complexas, como compostos químicos e nomes de medicamentos, necessitam de uma abordagem mais complexa. + +## NER como Classificação de Tokens + +Os modelos de NER são essencialmente **modelos de classificação de tokens**, porque para cada um dos tokens de entrada precisamos decidir se ele pertence a uma entidade ou não, e se sim - a qual classe de entidade. + +Considere o seguinte título de artigo: + +**Regurgitação da válvula tricúspide** e **toxicidade do carbonato de lítio** em um recém-nascido. + +As entidades aqui são: + +* Regurgitação da válvula tricúspide é uma doença (`DIS`) +* Carbonato de lítio é uma substância química (`CHEM`) +* Toxicidade também é uma doença (`DIS`) + +Observe que uma entidade pode abranger vários tokens. E, como neste caso, precisamos distinguir entre duas entidades consecutivas. Assim, é comum usar duas classes para cada entidade - uma especificando o primeiro token da entidade (frequentemente o prefixo `B-` é usado, para **b**eginning), e outra - a continuação de uma entidade (`I-`, para **i**nner token). Também usamos `O` como uma classe para representar todos os **o**utros tokens. Essa marcação de tokens é chamada de [BIO tagging](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (ou IOB). Quando marcados, nosso título ficará assim: + +Token | Tag +------|----- +Tricúspide | B-DIS +válvula | I-DIS +regurgitação | I-DIS +e | O +lítio | B-CHEM +carbonato | I-CHEM +toxicidade | B-DIS +em | O +um | O +recém-nascido | O +. | O + +Como precisamos construir uma correspondência um a um entre tokens e classes, podemos treinar um modelo de rede neural **muitos-para-muitos** a partir desta imagem: + +![Imagem mostrando padrões comuns de redes neurais recorrentes.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.pt.jpg) + +> *Imagem de [este post no blog](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) por [Andrej Karpathy](http://karpathy.github.io/). Os modelos de classificação de tokens NER correspondem à arquitetura de rede mais à direita nesta imagem.* + +## Treinamento de Modelos NER + +Como um modelo NER é essencialmente um modelo de classificação de tokens, podemos usar RNNs com os quais já estamos familiarizados para essa tarefa. Nesse caso, cada bloco da rede recorrente retornará o ID do token. O exemplo de notebook a seguir mostra como treinar LSTM para classificação de tokens. + +## ✍️ Notebooks de Exemplo: NER + +Continue seu aprendizado no seguinte notebook: + +* [NER com TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Conclusão + +Um modelo NER é um **modelo de classificação de tokens**, o que significa que pode ser usado para realizar classificação de tokens. Esta é uma tarefa muito comum em PLN, ajudando a reconhecer entidades específicas dentro do texto, incluindo lugares, nomes, datas e mais. + +## 🚀 Desafio + +Complete a tarefa vinculada abaixo para treinar um modelo de reconhecimento de entidades nomeadas para termos médicos e, em seguida, experimente em um conjunto de dados diferente. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Revisão e Autoestudo + +Leia o blog [A Eficácia Irresistível das Redes Neurais Recorrentes](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) e siga a seção de Leitura Adicional nesse artigo para aprofundar seu conhecimento. + +## [Tarefa](lab/README.md) + +Na tarefa para esta lição, você terá que treinar um modelo de reconhecimento de entidades médicas. Você pode começar treinando um modelo LSTM conforme descrito nesta lição e prosseguir com o uso do modelo de transformador BERT. Leia [as instruções](lab/README.md) para obter todos os detalhes. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/19-NER/lab/README.md b/translations/pt/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..05a7254a --- /dev/null +++ b/translations/pt/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +Trabalho de laboratório do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Neste laboratório, você precisa treinar um modelo de reconhecimento de entidades nomeadas para termos médicos. + +## O Conjunto de Dados + +Para treinar o modelo NER, precisamos de um conjunto de dados devidamente rotulado com entidades médicas. O [conjunto de dados BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) contém doenças e entidades químicas rotuladas de mais de 1500 artigos. Você pode baixar o conjunto de dados após se registrar no site deles. + +O conjunto de dados BC5CDR se parece com isto: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +Neste conjunto de dados, há o título e o resumo do artigo nas duas primeiras linhas, seguidos pelas entidades individuais, com as posições inicial e final dentro do bloco título+resumo. Além do tipo de entidade, você obtém o ID da ontologia dessa entidade dentro de alguma ontologia médica. + +Você precisará escrever algum código em Python para converter isso em codificação BIO. + +## A Rede + +A primeira tentativa de NER pode ser feita usando uma rede LSTM, como no nosso exemplo que você viu durante a aula. No entanto, em tarefas de NLP, a [arquitetura transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), e especificamente os [modelos de linguagem BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), mostram resultados muito melhores. Os modelos BERT pré-treinados entendem a estrutura geral de uma língua e podem ser ajustados para tarefas específicas com conjuntos de dados relativamente pequenos e custos computacionais baixos. + +Como estamos planejando aplicar NER a um cenário médico, faz sentido usar um modelo BERT treinado em textos médicos. A Microsoft Research lançou um modelo pré-treinado chamado [PubMedBERT][PubMedBERT] ([publicação][PubMedBERT-Pub]), que foi ajustado usando textos do repositório [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +O padrão *de fato* para treinar modelos transformer é a biblioteca [Hugging Face Transformers](https://huggingface.co/). Ela também contém um repositório de modelos pré-treinados mantidos pela comunidade, incluindo o PubMedBERT. Para carregar e usar este modelo, precisamos apenas de algumas linhas de código: + +```python +model_name = "microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract" +classes = ... # number of classes: 2*entities+1 +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = BertForTokenClassification.from_pretrained(model_name, classes) +``` + +Isso nos dá o objeto `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` que pode dividir o texto de entrada em tokens. Você precisará converter o conjunto de dados para o formato BIO, levando em conta a tokenização do PubMedBERT. Você pode usar [este trecho de código Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) como inspiração. + +## Conclusão + +Essa tarefa é muito próxima da tarefa real que você provavelmente terá se quiser obter mais insights sobre grandes volumes de textos em linguagem natural. No nosso caso, podemos aplicar nosso modelo treinado ao [conjunto de dados de artigos relacionados ao COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) e ver quais insights conseguiremos obter. [Este post de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) e [este artigo](https://www.mdpi.com/2504-2289/6/1/4) descrevem a pesquisa que pode ser realizada sobre este corpus de artigos usando NER. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/pt/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..0d3eae10 --- /dev/null +++ b/translations/pt/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,55 @@ +# Modelos de Linguagem Grande Pré-Treinados + +Em todas as nossas tarefas anteriores, estávamos treinando uma rede neural para realizar uma determinada tarefa usando um conjunto de dados rotulados. Com grandes modelos de transformadores, como o BERT, utilizamos modelagem de linguagem de forma auto-supervisionada para construir um modelo de linguagem, que é então especializado para uma tarefa específica com treinamento adicional focado no domínio. No entanto, foi demonstrado que grandes modelos de linguagem também podem resolver muitas tarefas sem NENHUM treinamento específico de domínio. Uma família de modelos capaz de fazer isso é chamada de **GPT**: Transformer Generativo Pré-Treinado. + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Geração de Texto e Perplexidade + +A ideia de uma rede neural ser capaz de realizar tarefas gerais sem treinamento posterior é apresentada no artigo [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). A ideia principal é que muitas outras tarefas podem ser modeladas usando **geração de texto**, porque entender texto essencialmente significa ser capaz de produzi-lo. Como o modelo é treinado em uma enorme quantidade de texto que abrange o conhecimento humano, ele também se torna conhecedor de uma ampla variedade de assuntos. + +> Compreender e ser capaz de produzir texto também implica saber algo sobre o mundo ao nosso redor. As pessoas também aprendem muito lendo, e a rede GPT é semelhante nesse aspecto. + +As redes de geração de texto funcionam prevendo a probabilidade da próxima palavra $$P(w_N)$$. No entanto, a probabilidade incondicional da próxima palavra é igual à frequência dessa palavra no corpus de texto. O GPT é capaz de nos fornecer a **probabilidade condicional** da próxima palavra, dada as anteriores: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Você pode ler mais sobre probabilidades em nosso [Currículo de Ciência de Dados para Iniciantes](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) + +A qualidade do modelo de geração de linguagem pode ser definida usando **perplexidade**. É uma métrica intrínseca que nos permite medir a qualidade do modelo sem nenhum conjunto de dados específico da tarefa. Baseia-se na noção de *probabilidade de uma frase* - o modelo atribui alta probabilidade a uma frase que provavelmente é real (ou seja, o modelo não está **perplexo** por ela), e baixa probabilidade a frases que fazem menos sentido (por exemplo, *Pode fazer o quê?*). Quando fornecemos ao nosso modelo frases de um corpus de texto real, esperaríamos que elas tivessem alta probabilidade e baixa **perplexidade**. Matematicamente, é definida como a probabilidade inversa normalizada do conjunto de teste: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Você pode experimentar a geração de texto usando [o editor de texto alimentado por GPT da Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. Neste editor, você começa a escrever seu texto, e pressionar **[TAB]** oferecerá várias opções de conclusão. Se elas forem muito curtas ou se você não estiver satisfeito com elas - pressione [TAB] novamente, e você terá mais opções, incluindo trechos de texto mais longos. + +## GPT é uma Família + +O GPT não é um único modelo, mas sim uma coleção de modelos desenvolvidos e treinados pela [OpenAI](https://openai.com). + +Sob os modelos GPT, temos: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +|Modelo de linguagem com até 1,5 bilhões de parâmetros. | Modelo de linguagem com até 175 bilhões de parâmetros | 100T de parâmetros e aceita entradas de imagem e texto, produzindo texto como saída. | + +Os modelos GPT-3 e GPT-4 estão disponíveis [como um serviço cognitivo da Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) e como [API da OpenAI](https://openai.com/api/). + +## Engenharia de Prompt + +Como o GPT foi treinado em grandes volumes de dados para entender linguagem e código, ele fornece saídas em resposta a entradas (prompts). Prompts são as entradas ou consultas do GPT onde se fornecem instruções aos modelos sobre as tarefas que eles devem completar a seguir. Para elicitar um resultado desejado, você precisa do prompt mais eficaz, que envolve selecionar as palavras, formatos, frases ou até símbolos certos. Essa abordagem é chamada de [Engenharia de Prompt](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Esta documentação](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) fornece mais informações sobre engenharia de prompt. + +## ✍️ Exemplo de Notebook: [Brincando com OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Continue seu aprendizado nos seguintes notebooks: + +* [Gerando texto com OpenAI-GPT e Transformers da Hugging Face](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Conclusão + +Novos modelos de linguagem pré-treinados não apenas modelam a estrutura da linguagem, mas também contêm uma vasta quantidade de linguagem natural. Assim, eles podem ser usados efetivamente para resolver algumas tarefas de PNL em configurações de zero-shot ou few-shot. + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/5-NLP/README.md b/translations/pt/lessons/5-NLP/README.md new file mode 100644 index 00000000..3790e0b0 --- /dev/null +++ b/translations/pt/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# Processamento de Linguagem Natural + +![Resumo das tarefas de PLN em um doodle](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.pt.png) + +Nesta seção, focaremos no uso de Redes Neurais para lidar com tarefas relacionadas ao **Processamento de Linguagem Natural (PLN)**. Existem muitos problemas de PLN que queremos que os computadores sejam capazes de resolver: + +* **Classificação de texto** é um problema típico de classificação relacionado a sequências de texto. Exemplos incluem classificar mensagens de e-mail como spam ou não-spam, ou categorizar artigos como esportes, negócios, política, etc. Além disso, ao desenvolver chatbots, muitas vezes precisamos entender o que um usuário queria dizer -- nesse caso, estamos lidando com **classificação de intenção**. Frequentemente, na classificação de intenção, precisamos lidar com muitas categorias. +* **Análise de sentimento** é um problema típico de regressão, onde precisamos atribuir um número (um sentimento) correspondente a quão positiva ou negativa é a significação de uma frase. Uma versão mais avançada da análise de sentimento é a **análise de sentimento baseada em aspectos** (ABSA), onde atribuímos sentimento não à frase inteira, mas a diferentes partes dela (aspectos), por exemplo, *Neste restaurante, gostei da culinária, mas a atmosfera era horrível*. +* **Reconhecimento de Entidades Nomeadas** (NER) refere-se ao problema de extrair certas entidades do texto. Por exemplo, podemos precisar entender que na frase *Preciso voar para Paris amanhã* a palavra *amanhã* refere-se a DATA, e *Paris* é uma LOCALIZAÇÃO. +* **Extração de palavras-chave** é semelhante ao NER, mas precisamos extrair palavras importantes para o significado da frase automaticamente, sem pré-treinamento para tipos específicos de entidades. +* **Agrupamento de texto** pode ser útil quando queremos agrupar sentenças semelhantes, por exemplo, solicitações semelhantes em conversas de suporte técnico. +* **Resposta a perguntas** refere-se à capacidade de um modelo de responder a uma pergunta específica. O modelo recebe uma passagem de texto e uma pergunta como entradas, e precisa fornecer um local no texto onde a resposta à pergunta está contida (ou, às vezes, gerar o texto da resposta). +* **Geração de texto** é a capacidade de um modelo de gerar novo texto. Pode ser considerada uma tarefa de classificação que prevê a próxima letra/palavra com base em um *texto de entrada*. Modelos avançados de geração de texto, como o GPT-3, são capazes de resolver outras tarefas de PLN, como classificação, usando uma técnica chamada [programação de prompts](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ou [engenharia de prompts](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Resumir texto** é uma técnica quando queremos que um computador "leia" um texto longo e o resuma em algumas frases. +* **Tradução automática** pode ser vista como uma combinação de compreensão de texto em uma língua e geração de texto em outra. + +Inicialmente, a maioria das tarefas de PLN eram resolvidas usando métodos tradicionais, como gramáticas. Por exemplo, na tradução automática, eram usados analisadores para transformar a frase inicial em uma árvore sintática, depois estruturas semânticas de nível superior eram extraídas para representar o significado da frase, e com base nesse significado e na gramática da língua-alvo, o resultado era gerado. Hoje em dia, muitas tarefas de PLN são resolvidas de forma mais eficaz usando redes neurais. + +> Muitos métodos clássicos de PLN estão implementados na biblioteca Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Há um ótimo [Livro NLTK](https://www.nltk.org/book/) disponível online que cobre como diferentes tarefas de PLN podem ser resolvidas usando o NLTK. + +Em nosso curso, vamos nos concentrar principalmente no uso de Redes Neurais para PLN, e utilizaremos o NLTK quando necessário. + +Já aprendemos sobre o uso de redes neurais para lidar com dados tabulares e com imagens. A principal diferença entre esses tipos de dados e texto é que o texto é uma sequência de comprimento variável, enquanto o tamanho da entrada no caso de imagens é conhecido com antecedência. Enquanto redes convolucionais podem extrair padrões dos dados de entrada, os padrões no texto são mais complexos. Por exemplo, a negação pode ser separada do sujeito para muitas palavras (por exemplo, *Eu não gosto de laranjas*, vs. *Eu não gosto dessas grandes laranjas coloridas e saborosas*), e isso ainda deve ser interpretado como um padrão. Assim, para lidar com a linguagem, precisamos introduzir novos tipos de redes neurais, como *redes recorrentes* e *transformadores*. + +## Instalar Bibliotecas + +Se você estiver usando uma instalação local do Python para executar este curso, pode precisar instalar todas as bibliotecas necessárias para PLN usando os seguintes comandos: + +**Para PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Para TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Você pode experimentar PLN com TensorFlow no [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Aviso sobre GPU + +Nesta seção, em alguns dos exemplos, estaremos treinando modelos bastante grandes. +* **Use um Computador com GPU**: É aconselhável executar seus notebooks em um computador habilitado para GPU para reduzir os tempos de espera ao trabalhar com modelos grandes. +* **Restrições de Memória da GPU**: Executar em uma GPU pode levar a situações em que você fica sem memória da GPU, especialmente ao treinar modelos grandes. +* **Consumo de Memória da GPU**: A quantidade de memória da GPU consumida durante o treinamento depende de vários fatores, incluindo o tamanho do minibatch. +* **Minimizar o Tamanho do Minibatch**: Se você encontrar problemas de memória da GPU, considere reduzir o tamanho do minibatch em seu código como uma solução potencial. +* **Liberação de Memória da GPU no TensorFlow**: Versões mais antigas do TensorFlow podem não liberar a memória da GPU corretamente ao treinar vários modelos dentro de um kernel Python. Para gerenciar o uso da memória da GPU de forma eficaz, você pode configurar o TensorFlow para alocar memória da GPU apenas conforme necessário. +* **Inclusão de Código**: Para configurar o TensorFlow para aumentar a alocação de memória da GPU apenas quando necessário, inclua o seguinte código em seus notebooks: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Se você estiver interessado em aprender sobre PLN a partir de uma perspectiva clássica de ML, visite [este conjunto de lições](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) + +## Nesta Seção +Nesta seção, aprenderemos sobre: + +* [Representando texto como tensores](13-TextRep/README.md) +* [Word Embeddings](14-Emdeddings/README.md) +* [Modelagem de Linguagem](15-LanguageModeling/README.md) +* [Redes Neurais Recorrentes](16-RNN/README.md) +* [Redes Generativas](17-GenerativeNetworks/README.md) +* [Transformadores](18-Transformers/README.md) + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional feita por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/pt/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..35e5f446 --- /dev/null +++ b/translations/pt/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# Algoritmos Genéticos + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Algoritmos Genéticos** (GA) são baseados em uma **abordagem evolutiva** para IA, na qual métodos da evolução de uma população são usados para obter uma solução ótima para um determinado problema. Eles foram propostos em 1975 por [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). + +Os Algoritmos Genéticos se baseiam nas seguintes ideias: + +* Soluções válidas para o problema podem ser representadas como **genes** +* **Crossover** nos permite combinar duas soluções para obter uma nova solução válida +* **Seleção** é utilizada para selecionar soluções mais ótimas usando alguma **função de aptidão** +* **Mutações** são introduzidas para desestabilizar a otimização e nos tirar do mínimo local + +Se você deseja implementar um Algoritmo Genético, precisa do seguinte: + + * Encontrar um método de codificação das soluções do nosso problema usando **genes** g∈Γ + * No conjunto de genes Γ, precisamos definir a **função de aptidão** fit: Γ→**R**. Valores de função menores correspondem a soluções melhores. + * Definir um mecanismo de **crossover** para combinar dois genes e obter uma nova solução válida crossover: Γ2→Γ. + * Definir um mecanismo de **mutação** mutate: Γ→Γ. + +Em muitos casos, crossover e mutação são algoritmos bastante simples para manipular genes como sequências numéricas ou vetores de bits. + +A implementação específica de um algoritmo genético pode variar de caso a caso, mas a estrutura geral é a seguinte: + +1. Selecionar uma população inicial G⊂Γ +2. Selecionar aleatoriamente uma das operações que será realizada nesta etapa: crossover ou mutação +3. **Crossover**: + * Selecionar aleatoriamente dois genes g1, g2 ∈ G + * Calcular crossover g=crossover(g1,g2) + * Se fit(g)1) ou fit(g)2) - substituir o gene correspondente na população por g. +4. **Mutação** - selecionar um gene aleatório g∈G e substituí-lo por mutate(g) +5. Repetir a partir do passo 2, até que obtenhamos um valor suficientemente pequeno de fit, ou até que o limite no número de etapas seja alcançado. + +## Tarefas Típicas + +Tarefas tipicamente resolvidas por Algoritmos Genéticos incluem: + +1. Otimização de cronogramas +1. Empacotamento ótimo +1. Corte ótimo +1. Aceleração da busca exaustiva + +## ✍️ Exercícios: Algoritmos Genéticos + +Continue seu aprendizado nos seguintes cadernos: + +Vá para [este caderno](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) para ver dois exemplos de uso de Algoritmos Genéticos: + +1. Divisão justa do tesouro +1. Problema das 8 Rainhas + +## Conclusão + +Os Algoritmos Genéticos são usados para resolver muitos problemas, incluindo problemas de logística e busca. O campo é inspirado por pesquisas que mesclaram tópicos em Psicologia e Ciência da Computação. + +## 🚀 Desafio + +"Algoritmos genéticos são simples de implementar, mas seu comportamento é difícil de entender." [fonte](https://wikipedia.org/wiki/Genetic_algorithm) Faça algumas pesquisas para encontrar uma implementação de um algoritmo genético, como resolver um quebra-cabeça Sudoku, e explique como funciona em um esboço ou fluxograma. + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Revisão e Autoestudo + +Assista [a este ótimo vídeo](https://www.youtube.com/watch?v=qv6UVOQ0F44) que fala sobre como computadores podem aprender a jogar Super Mario usando redes neurais treinadas por algoritmos genéticos. Aprenderemos mais sobre o aprendizado de computador para jogar jogos assim [na próxima seção](../22-DeepRL/README.md). + +## [Tarefa: Equação Diofantina](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Seu objetivo é resolver a chamada **equação diofantina** - uma equação com raízes inteiras. Por exemplo, considere a equação a+2b+3c+4d=30. Você precisa encontrar as raízes inteiras que satisfazem essa equação. + +*Esta tarefa é inspirada [neste post](https://habr.com/post/128704/).* + +Dicas: + +1. Você pode considerar que as raízes estão no intervalo [0;30] +1. Como gene, considere usar a lista de valores das raízes + +Use [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) como ponto de partida. + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/6-Other/22-DeepRL/README.md b/translations/pt/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..695f7064 --- /dev/null +++ b/translations/pt/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# Aprendizado por Reforço Profundo + +O aprendizado por reforço (RL) é visto como um dos paradigmas básicos de aprendizado de máquina, ao lado do aprendizado supervisionado e do aprendizado não supervisionado. Enquanto no aprendizado supervisionado confiamos em um conjunto de dados com resultados conhecidos, o RL é baseado em **aprender fazendo**. Por exemplo, quando vemos um jogo de computador pela primeira vez, começamos a jogar, mesmo sem conhecer as regras, e logo conseguimos melhorar nossas habilidades apenas pelo processo de jogar e ajustar nosso comportamento. + +## [Questionário pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Para realizar RL, precisamos de: + +* Um **ambiente** ou **simulador** que estabelece as regras do jogo. Devemos ser capazes de executar os experimentos no simulador e observar os resultados. +* Alguma **função de recompensa**, que indica quão bem-sucedido foi nosso experimento. No caso de aprender a jogar um jogo de computador, a recompensa seria nossa pontuação final. + +Com base na função de recompensa, devemos ser capazes de ajustar nosso comportamento e melhorar nossas habilidades, para que na próxima vez joguemos melhor. A principal diferença entre outros tipos de aprendizado de máquina e RL é que, no RL, normalmente não sabemos se ganhamos ou perdemos até terminarmos o jogo. Assim, não podemos dizer se um determinado movimento é bom ou não - recebemos uma recompensa apenas ao final do jogo. + +Durante o RL, normalmente realizamos muitos experimentos. Durante cada experimento, precisamos equilibrar entre seguir a estratégia ótima que aprendemos até agora (**exploração**) e explorar novos estados possíveis (**exploração**). + +## OpenAI Gym + +Uma ótima ferramenta para RL é o [OpenAI Gym](https://gym.openai.com/) - um **ambiente de simulação**, que pode simular muitos ambientes diferentes, desde jogos Atari até a física por trás do equilíbrio de um poste. É um dos ambientes de simulação mais populares para treinar algoritmos de aprendizado por reforço, e é mantido pela [OpenAI](https://openai.com/). + +> **Nota**: Você pode ver todos os ambientes disponíveis no OpenAI Gym [aqui](https://gym.openai.com/envs/#classic_control). + +## Equilíbrio do CartPole + +Você provavelmente já viu dispositivos modernos de equilíbrio, como o *Segway* ou *Gyroscooters*. Eles conseguem se equilibrar automaticamente ajustando suas rodas em resposta a um sinal de um acelerômetro ou giroscópio. Nesta seção, aprenderemos como resolver um problema semelhante - equilibrar um poste. É semelhante a uma situação em que um artista de circo precisa equilibrar um poste em sua mão - mas esse equilíbrio de poste ocorre apenas em 1D. + +Uma versão simplificada do equilíbrio é conhecida como o problema **CartPole**. No mundo do cartpole, temos um deslizante horizontal que pode se mover para a esquerda ou para a direita, e o objetivo é equilibrar um poste vertical em cima do deslizante enquanto ele se move. + +um cartpole + +Para criar e usar esse ambiente, precisamos de algumas linhas de código Python: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +Cada ambiente pode ser acessado exatamente da mesma forma: +* `env.reset` starts a new experiment +* `env.step` realiza um passo de simulação. Ele recebe uma **ação** do **espaço de ações** e retorna uma **observação** (do espaço de observação), bem como uma recompensa e um sinal de terminação. + +No exemplo acima, realizamos uma ação aleatória a cada passo, razão pela qual a vida do experimento é muito curta: + +![cartpole sem equilíbrio](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +O objetivo de um algoritmo de RL é treinar um modelo - a chamada **política** π - que retornará a ação em resposta a um determinado estado. Também podemos considerar a política como probabilística, ou seja, para qualquer estado *s* e ação *a*, ela retornará a probabilidade π(*a*|*s*) de que devemos tomar *a* no estado *s*. + +## Algoritmo de Gradientes de Política + +A maneira mais óbvia de modelar uma política é criando uma rede neural que receberá estados como entrada e retornará as ações correspondentes (ou melhor, as probabilidades de todas as ações). De certa forma, seria semelhante a uma tarefa de classificação normal, com uma grande diferença - não sabemos de antemão quais ações devemos tomar em cada um dos passos. + +A ideia aqui é estimar essas probabilidades. Construímos um vetor de **recompensas cumulativas** que mostra nossa recompensa total em cada passo do experimento. Também aplicamos **desconto de recompensa** multiplicando recompensas anteriores por algum coeficiente γ=0.99, a fim de diminuir o papel das recompensas anteriores. Em seguida, reforçamos aqueles passos ao longo do caminho do experimento que geram recompensas maiores. + +> Aprenda mais sobre o algoritmo de Gradiente de Política e veja-o em ação no [notebook de exemplo](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algoritmo Ator-Crítico + +Uma versão aprimorada da abordagem de Gradientes de Política é chamada de **Ator-Crítico**. A ideia principal por trás disso é que a rede neural seria treinada para retornar duas coisas: + +* A política, que determina qual ação tomar. Esta parte é chamada de **ator**. +* A estimativa da recompensa total que podemos esperar obter neste estado - esta parte é chamada de **crítico**. + +De certa forma, essa arquitetura se assemelha a um [GAN](../../4-ComputerVision/10-GANs/README.md), onde temos duas redes que são treinadas uma contra a outra. No modelo ator-crítico, o ator propõe a ação que precisamos tomar, e o crítico tenta ser crítico e estimar o resultado. No entanto, nosso objetivo é treinar essas redes em uníssono. + +Como sabemos tanto as recompensas cumulativas reais quanto os resultados retornados pelo crítico durante o experimento, é relativamente fácil construir uma função de perda que minimize a diferença entre elas. Isso nos dará a **perda do crítico**. Podemos calcular a **perda do ator** usando a mesma abordagem que no algoritmo de gradiente de política. + +Depois de executar um desses algoritmos, podemos esperar que nosso CartPole se comporte assim: + +![um cartpole equilibrado](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Exercícios: Gradientes de Política e RL Ator-Crítico + +Continue seu aprendizado nos seguintes notebooks: + +* [RL em TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL em PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Outras Tarefas de RL + +O Aprendizado por Reforço atualmente é um campo de pesquisa em rápido crescimento. Alguns exemplos interessantes de aprendizado por reforço são: + +* Ensinar um computador a jogar **Jogos Atari**. A parte desafiadora desse problema é que não temos um estado simples representado como um vetor, mas sim uma captura de tela - e precisamos usar a CNN para converter essa imagem de tela em um vetor de características, ou para extrair informações de recompensa. Jogos Atari estão disponíveis no Gym. +* Ensinar um computador a jogar jogos de tabuleiro, como Xadrez e Go. Recentemente, programas de ponta como **Alpha Zero** foram treinados do zero por dois agentes jogando um contra o outro e melhorando a cada passo. +* Na indústria, o RL é usado para criar sistemas de controle a partir de simulação. Um serviço chamado [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) é especificamente projetado para isso. + +## Conclusão + +Agora aprendemos como treinar agentes para alcançar bons resultados apenas fornecendo uma função de recompensa que define o estado desejado do jogo e dando a eles a oportunidade de explorar inteligentemente o espaço de busca. Tentamos com sucesso dois algoritmos e alcançamos um bom resultado em um período relativamente curto de tempo. No entanto, isso é apenas o começo de sua jornada no RL, e você definitivamente deve considerar fazer um curso separado se quiser se aprofundar mais. + +## 🚀 Desafio + +Explore as aplicações listadas na seção 'Outras Tarefas de RL' e tente implementar uma! + +## [Questionário pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Revisão e Estudo Autônomo + +Aprenda mais sobre aprendizado por reforço clássico em nosso [Currículo de Aprendizado de Máquina para Iniciantes](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Assista a [este ótimo vídeo](https://www.youtube.com/watch?v=qv6UVOQ0F44) que fala sobre como um computador pode aprender a jogar Super Mario. + +## Tarefa: [Treine um Carro de Montanha](lab/README.md) + +Seu objetivo durante esta tarefa será treinar um ambiente diferente do Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/6-Other/22-DeepRL/lab/README.md b/translations/pt/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..daf1f8e3 --- /dev/null +++ b/translations/pt/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# Treinando o Carro da Montanha para Escapar + +Tarefa do [Currículo de IA para Iniciantes](https://github.com/microsoft/ai-for-beginners). + +## Tarefa + +Seu objetivo é treinar o agente RL para controlar o [Carro da Montanha](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) no Ambiente OpenAI. Você está treinando com dados até outubro de 2023. + +## O Ambiente + +O ambiente do Carro da Montanha consiste no carro preso dentro de um vale. Seu objetivo é pular para fora do vale e alcançar a bandeira. As ações que você pode realizar são acelerar para a esquerda, para a direita ou não fazer nada. Você pode observar a posição do carro ao longo do eixo x e a velocidade. + +## Iniciando o Notebook + +Inicie o laboratório abrindo [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Conclusão + +Você deve aprender ao longo deste laboratório que adotar algoritmos de RL para um novo ambiente é frequentemente bastante simples, porque o OpenAI Gym tem a mesma interface para todos os ambientes, e os algoritmos, por sua vez, não dependem muito da natureza do ambiente. Você pode até reestruturar o código Python de tal forma a passar qualquer ambiente para o algoritmo RL como um parâmetro. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que as traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/6-Other/23-MultiagentSystems/README.md b/translations/pt/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..862d6e2f --- /dev/null +++ b/translations/pt/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,155 @@ +# Sistemas Multi-Agente + +Uma das possíveis maneiras de alcançar inteligência é a chamada abordagem **emergente** (ou **sinergética**), que se baseia no fato de que o comportamento combinado de muitos agentes relativamente simples pode resultar em um comportamento mais complexo (ou inteligente) do sistema como um todo. Teoricamente, isso se baseia nos princípios da [Inteligência Coletiva](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentismo](https://en.wikipedia.org/wiki/Global_brain) e [Cibernética Evolutiva](https://en.wikipedia.org/wiki/Global_brain), que afirmam que sistemas de nível superior ganham algum tipo de valor agregado quando são devidamente combinados a partir de sistemas de nível inferior (o chamado *princípio da transição de metasistema*). + +## [Quiz pré-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +A direção dos **Sistemas Multi-Agente** surgiu na IA na década de 1990 como uma resposta ao crescimento da Internet e de sistemas distribuídos. Um dos clássicos livros didáticos de IA, [Inteligência Artificial: Uma Abordagem Moderna](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), foca na visão da IA clássica sob a perspectiva dos sistemas multi-agente. + +Central para a abordagem multi-agente é a noção de **Agente** - uma entidade que vive em algum **ambiente**, que pode perceber e agir sobre. Esta é uma definição muito ampla, e pode haver muitos tipos e classificações de agentes: + +* Pela sua capacidade de raciocínio: + - Agentes **Reativos** geralmente têm um comportamento simples do tipo solicitação-resposta + - Agentes **Deliberativos** empregam algum tipo de raciocínio lógico e/ou capacidades de planejamento +* Pelo local onde o agente executa seu código: + - Agentes **Estáticos** trabalham em um nó de rede dedicado + - Agentes **Móveis** podem mover seu código entre nós de rede +* Pelo seu comportamento: + - Agentes **Passivos** não têm objetivos específicos. Esses agentes podem reagir a estímulos externos, mas não iniciarão ações por conta própria. + - Agentes **Ativos** têm alguns objetivos que perseguem + - Agentes **Cognitivos** envolvem planejamento e raciocínio complexos + +Os sistemas multi-agente são hoje utilizados em uma série de aplicações: + +* Em jogos, muitos personagens não jogáveis empregam algum tipo de IA e podem ser considerados agentes inteligentes +* Na produção de vídeo, a renderização de cenas 3D complexas que envolvem multidões é tipicamente feita usando simulação multi-agente +* Na modelagem de sistemas, a abordagem multi-agente é utilizada para simular o comportamento de um modelo complexo. Por exemplo, a abordagem multi-agente foi usada com sucesso para prever a disseminação da doença COVID-19 em todo o mundo. Uma abordagem semelhante pode ser usada para modelar o tráfego na cidade e ver como ele reage a mudanças nas regras de trânsito. +* Em sistemas de automação complexos, cada dispositivo pode agir como um agente independente, o que torna todo o sistema menos monolítico e mais robusto. + +Não vamos gastar muito tempo aprofundando em sistemas multi-agente, mas consideraremos um exemplo de **Modelagem Multi-Agente**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) é um ambiente de modelagem multi-agente baseado em uma versão modificada da linguagem de programação [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Esta linguagem foi desenvolvida para ensinar conceitos de programação para crianças, e permite que você controle um agente chamado **tartaruga**, que pode se mover, deixando um rastro para trás. Isso permite a criação de figuras geométricas complexas, que é uma maneira muito visual de entender o comportamento de um agente. + +No NetLogo, podemos criar muitas tartarugas usando o comando `create-turtles`. Podemos então comandar todas as tartarugas a realizar algumas ações (no exemplo abaixo - mais 10 pontos para frente): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Claro, não é interessante quando todas as tartarugas fazem a mesma coisa, então podemos `ask ` 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` é o nome de uma raça, e precisamos especificar tanto a forma singular quanto a plural, porque diferentes comandos usam diferentes formas para clareza. + +> ✅ Não vamos nos aprofundar no aprendizado da linguagem NetLogo em si - você pode visitar o brilhante [Dicionário Interativo para Iniciantes do NetLogo](https://ccl.northwestern.edu/netlogo/bind/) se estiver interessado em aprender mais. + +Você pode [baixar](https://ccl.northwestern.edu/netlogo/download.shtml) e instalar o NetLogo para experimentar. + +### Biblioteca de Modelos + +Uma grande coisa sobre o NetLogo é que ele contém uma biblioteca de modelos funcionais que você pode experimentar. Vá para **Arquivo → Biblioteca de Modelos**, e você terá muitas categorias de modelos para escolher. + +Biblioteca de Modelos do NetLogo + +> Uma captura de tela da biblioteca de modelos por Dmitry Soshnikov + +Você pode abrir um dos modelos, por exemplo **Biologia → Flocking**. + +### Princípios Principais + +Após abrir o modelo, você é levado à tela principal do NetLogo. Aqui está um modelo de exemplo que descreve a população de lobos e ovelhas, dado recursos finitos (grama). + +![Tela Principal do NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.pt.png) + +> Captura de tela por Dmitry Soshnikov + +Nesta tela, você pode ver: + +* A seção **Interface** que contém: + - O campo principal, onde todos os agentes vivem + - Diferentes controles: botões, deslizadores, etc. + - Gráficos que você pode usar para exibir parâmetros da simulação +* A aba **Código** que contém o editor, onde você pode digitar o programa NetLogo + +Na maioria dos casos, a interface teria um botão **Configurar**, que inicializa o estado da simulação, e um botão **Executar** que inicia a execução. Esses são gerenciados pelos manipuladores correspondentes no código que se parecem com isso: + +``` +to go [ +... +] +``` + +O mundo do NetLogo consiste nos seguintes objetos: + +* **Agentes** (tartarugas) que podem se mover pelo campo e fazer algo. Você comanda os agentes usando `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` para fazer algo. +* **Observador** é um agente único que controla o mundo. Todos os manipuladores de botões são executados no *modo observador*. + +> ✅ A beleza de um ambiente multi-agente é que o código que é executado no modo tartaruga ou no modo patch é executado ao mesmo tempo por todos os agentes em paralelo. Assim, ao escrever um pouco de código e programar o comportamento de um agente individual, você pode criar um comportamento complexo do sistema de simulação como um todo. + +### Flocking + +Como um exemplo de comportamento multi-agente, vamos considerar **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. O Flocking é um padrão complexo que é muito semelhante a como bandos de pássaros voam. Ao observá-los voar, você pode pensar que eles seguem algum tipo de algoritmo coletivo ou que possuem alguma forma de *inteligência coletiva*. No entanto, esse comportamento complexo surge quando cada agente individual (neste caso, um *pássaro*) apenas observa alguns outros agentes a uma curta distância dele e segue três regras simples: + +* **Alinhamento** - ele se dirige para a média da direção dos agentes vizinhos +* **Coesão** - ele tenta se dirigir para a posição média dos vizinhos (*atração de longo alcance*) +* **Separação** - ao se aproximar demais de outros pássaros, ele tenta se afastar (*repulsão de curto alcance*) + +Você pode executar o exemplo de flocking e observar o comportamento. Você também pode ajustar parâmetros, como *grau de separação* ou *alcance de visão*, que define quão longe cada pássaro pode ver. Observe que, se você diminuir o alcance de visão para 0, todos os pássaros ficam cegos, e o flocking para. Se você diminuir a separação para 0, todos os pássaros se reúnem em uma linha reta. + +> ✅ Mude para a aba **Código** e veja onde as três regras de flocking (alinhamento, coesão e separação) estão implementadas no código. Observe como nos referimos apenas àqueles agentes que estão à vista. + +### Outros Modelos para Ver + +Existem mais alguns modelos interessantes que você pode experimentar: + +* **Arte → Fogos de Artifício** mostra como um fogo de artifício pode ser considerado um comportamento coletivo de fluxos individuais de fogo +* **Ciência Social → Tráfego Básico** e **Ciência Social → Grade de Tráfego** mostram o modelo de tráfego urbano em Grade 1D e 2D com ou sem semáforos. Cada carro na simulação segue as seguintes regras: + - Se o espaço à sua frente estiver vazio - acelere (até uma certa velocidade máxima) + - Se ele vê um obstáculo à frente - freie (e você pode ajustar quão longe um motorista pode ver) +* **Ciência Social → Festa** mostra como as pessoas se agrupam durante uma festa de coquetel. Você pode encontrar a combinação de parâmetros que leva ao aumento mais rápido da felicidade do grupo. + +Como você pode ver por esses exemplos, simulações multi-agente podem ser uma maneira bastante útil de entender o comportamento de um sistema complexo composto por indivíduos que seguem a mesma lógica ou lógica semelhante. Também pode ser usado para controlar agentes virtuais, como [NPCs](https://en.wikipedia.org/wiki/NPC) em jogos de computador, ou agentes em mundos animados em 3D. + +## Agentes Deliberativos + +Os agentes descritos acima são muito simples, reagindo a mudanças no ambiente usando algum tipo de algoritmo. Como tal, eles são **agentes reativos**. No entanto, às vezes os agentes podem raciocinar e planejar suas ações, caso em que são chamados de **deliberativos**. + +Um exemplo típico seria um agente pessoal que recebe uma instrução de um humano para reservar uma viagem de férias. Suponha que existam muitos agentes que vivem na internet, que podem ajudá-lo. Ele deve então entrar em contato com outros agentes para ver quais voos estão disponíveis, quais são os preços dos hotéis para diferentes datas e tentar negociar o melhor preço. Quando o plano de férias estiver completo e confirmado pelo proprietário, ele pode prosseguir com a reserva. + +Para fazer isso, os agentes precisam **se comunicar**. Para uma comunicação bem-sucedida, eles precisam de: + +* Algumas **línguas padrão para trocar conhecimento**, como [Formato de Intercâmbio de Conhecimento](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) e [Linguagem de Consulta e Manipulação de Conhecimento](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Essas linguagens são projetadas com base na [Teoria do Ato de Fala](https://en.wikipedia.org/wiki/Speech_act). +* Essas linguagens também devem incluir alguns **protocolos para negociações**, baseados em diferentes **tipos de leilão**. +* Uma **ontologia comum** para usar, para que eles se refiram aos mesmos conceitos conhecendo sua semântica +* Uma maneira de **descobrir** o que diferentes agentes podem fazer, também baseada em algum tipo de ontologia + +Agentes deliberativos são muito mais complexos do que reativos, porque eles não apenas reagem a mudanças no ambiente, mas também devem ser capazes de *iniciar* ações. Uma das arquiteturas propostas para agentes deliberativos é a chamada agente de Crença-Desejo-Intenção (BDI): + +* **Crenças** formam um conjunto de conhecimentos sobre o ambiente de um agente. Pode ser estruturado como uma base de conhecimento ou um conjunto de regras que um agente pode aplicar a uma situação específica no ambiente. +* **Desejos** definem o que um agente quer fazer, ou seja, seus objetivos. Por exemplo, o objetivo do agente assistente pessoal acima é reservar uma viagem, e o objetivo de um agente de hotel é maximizar o lucro. +* **Intenções** são ações específicas que um agente planeja realizar para alcançar seus objetivos. As ações normalmente mudam o ambiente e causam comunicação com outros agentes. + +Existem algumas plataformas disponíveis para construir sistemas multi-agente, como [JADE](https://jade.tilab.com/). [Este artigo](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) contém uma revisão das plataformas multi-agente, juntamente com uma breve história dos sistemas multi-agente e seus diferentes cenários de uso. + +## Conclusão + +Os sistemas multi-agente podem assumir formas muito diferentes e ser usados em muitas aplicações diferentes. +Todos tendem a focar no comportamento mais simples de um agente individual e alcançar um comportamento mais complexo do sistema geral devido ao **efeito sinérgico**. + +## 🚀 Desafio + +Leve esta lição para o mundo real e tente conceituar um sistema multi-agente que possa resolver um problema. O que, por exemplo, um sistema multi-agente precisaria fazer para otimizar a rota de um ônibus escolar? Como ele poderia funcionar em uma padaria? + +## [Quiz pós-aula](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Revisão e Autoestudo + +Revise o uso desse tipo de sistema na indústria. Escolha um domínio como fabricação ou a indústria de videogames e descubra como os sistemas multi-agente podem ser usados para resolver problemas únicos. + +## [Tarefa NetLogo](assignment.md) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/pt/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..124b774a --- /dev/null +++ b/translations/pt/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# Tarefa de NetLogo + +Escolha um dos modelos da biblioteca do NetLogo e use-o para simular uma situação da vida real da maneira mais próxima possível. Um bom exemplo seria ajustar o modelo de Vírus na pasta de Visualizações Alternativas para mostrar como ele pode ser usado para modelar a disseminação do COVID-19. Você consegue construir um modelo que imite a propagação viral da vida real? + +Mostre seu trabalho salvando uma cópia e criando uma demonstração em vídeo explicando como o modelo está conectado a uma situação do mundo real. + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/7-Ethics/README.md b/translations/pt/lessons/7-Ethics/README.md new file mode 100644 index 00000000..8fcdc398 --- /dev/null +++ b/translations/pt/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# IA Ética e Responsável + +Você quase terminou este curso, e espero que agora veja claramente que a IA é baseada em uma série de métodos matemáticos formais que nos permitem encontrar relações nos dados e treinar modelos para replicar alguns aspectos do comportamento humano. Neste momento da história, consideramos a IA uma ferramenta muito poderosa para extrair padrões dos dados e aplicar esses padrões para resolver novos problemas. + +## [Quiz pré-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +No entanto, na ficção científica, muitas vezes vemos histórias onde a IA apresenta um perigo para a humanidade. Geralmente, essas histórias giram em torno de algum tipo de rebelião da IA, quando a IA decide confrontar os seres humanos. Isso implica que a IA possui algum tipo de emoção ou pode tomar decisões imprevistas por seus desenvolvedores. + +O tipo de IA que aprendemos neste curso não é nada mais do que aritmética de matrizes grandes. É uma ferramenta muito poderosa para nos ajudar a resolver nossos problemas, e como qualquer outra ferramenta poderosa - pode ser usada para fins bons e ruins. Importante, ela pode ser *mal utilizada*. + +## Princípios da IA Responsável + +Para evitar esse uso acidental ou intencional da IA, a Microsoft afirma os importantes [Princípios da IA Responsável](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Os seguintes conceitos sustentam esses princípios: + +* **Justiça** está relacionada ao importante problema de *viés de modelo*, que pode ser causado pelo uso de dados tendenciosos para treinamento. Por exemplo, quando tentamos prever a probabilidade de uma pessoa conseguir um emprego como desenvolvedor de software, o modelo provavelmente dará uma preferência maior aos homens - apenas porque o conjunto de dados de treinamento provavelmente estava tendencioso em relação a um público masculino. Precisamos equilibrar cuidadosamente os dados de treinamento e investigar o modelo para evitar viéses, e garantir que o modelo leve em conta características mais relevantes. +* **Confiabilidade e Segurança**. Por sua natureza, os modelos de IA podem cometer erros. Uma rede neural retorna probabilidades, e precisamos levar isso em conta ao tomar decisões. Todo modelo possui alguma precisão e revocação, e precisamos entender isso para prevenir danos que um conselho errado pode causar. +* **Privacidade e Segurança** têm algumas implicações específicas para a IA. Por exemplo, quando usamos alguns dados para treinar um modelo, esses dados se tornam de alguma forma "integrados" ao modelo. Por um lado, isso aumenta a segurança e a privacidade, por outro - precisamos lembrar quais dados o modelo foi treinado. +* **Inclusividade** significa que não estamos construindo IA para substituir pessoas, mas sim para aumentar as capacidades humanas e tornar nosso trabalho mais criativo. Isso também está relacionado à justiça, porque ao lidar com comunidades sub-representadas, a maioria dos conjuntos de dados que coletamos tende a ser tendenciosa, e precisamos garantir que essas comunidades sejam incluídas e tratadas corretamente pela IA. +* **Transparência**. Isso inclui garantir que estamos sempre claros sobre a IA sendo utilizada. Além disso, sempre que possível, queremos usar sistemas de IA que sejam *interpretáveis*. +* **Responsabilidade**. Quando modelos de IA tomam algumas decisões, nem sempre é claro quem é responsável por essas decisões. Precisamos garantir que entendemos onde reside a responsabilidade pelas decisões da IA. Na maioria dos casos, queremos incluir seres humanos no processo de tomada de decisões importantes, para que pessoas reais sejam responsabilizadas. + +## Ferramentas para IA Responsável + +A Microsoft desenvolveu a [Caixa de Ferramentas de IA Responsável](https://github.com/microsoft/responsible-ai-toolbox), que contém um conjunto de ferramentas: + +* Painel de Interpretabilidade (InterpretML) +* Painel de Justiça (FairLearn) +* Painel de Análise de Erros +* Painel de IA Responsável que inclui + + - EconML - ferramenta para Análise Causal, que foca em perguntas do tipo "e se" + - DiCE - ferramenta para Análise Contrafactual que permite ver quais características precisam ser alteradas para afetar a decisão do modelo + +Para mais informações sobre Ética em IA, visite [esta lição](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) no Currículo de Aprendizado de Máquina, que inclui tarefas. + +## Revisão e Autoestudo + +Faça este [Caminho de Aprendizado](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) para aprender mais sobre IA responsável. + +## [Quiz pós-aula](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/README.md b/translations/pt/lessons/README.md new file mode 100644 index 00000000..c5c6440b --- /dev/null +++ b/translations/pt/lessons/README.md @@ -0,0 +1,8 @@ +# Visão Geral + +![Visão Geral em um desenho](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.pt.png) + +> Desenho por [Tomomi Imura](https://twitter.com/girlie_mac) + +**Isenção de responsabilidade**: +Este documento foi traduzido usando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/X-Extras/X1-MultiModal/README.md b/translations/pt/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..ce599785 --- /dev/null +++ b/translations/pt/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# Redes Multi-Modais + +Após o sucesso dos modelos transformer para resolver tarefas de PNL, as mesmas ou arquiteturas semelhantes foram aplicadas a tarefas de visão computacional. Há um crescente interesse em construir modelos que *combinarão* capacidades de visão e linguagem natural. Uma dessas tentativas foi feita pela OpenAI, e é chamada CLIP e DALL.E. + +## Pré-Treinamento de Imagens Contrastivas (CLIP) + +A ideia principal do CLIP é ser capaz de comparar prompts de texto com uma imagem e determinar quão bem a imagem corresponde ao prompt. + +![Arquitetura do CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.pt.png) + +> *Imagem do [este post no blog](https://openai.com/blog/clip/)* + +O modelo é treinado em imagens obtidas da Internet e suas legendas. Para cada lote, pegamos N pares de (imagem, texto) e os convertendo em algumas representações vetoriais I e T. Essas representações são então combinadas. A função de perda é definida para maximizar a similaridade cosseno entre vetores correspondentes a um par (por exemplo, I e T), e minimizar a similaridade cosseno entre todos os outros pares. Essa é a razão pela qual essa abordagem é chamada de **contrastiva**. + +O modelo/biblioteca CLIP está disponível no [GitHub da OpenAI](https://github.com/openai/CLIP). A abordagem é descrita [neste post no blog](https://openai.com/blog/clip/), e em mais detalhes [neste artigo](https://arxiv.org/pdf/2103.00020.pdf). + +Uma vez que este modelo é pré-treinado, podemos fornecer um lote de imagens e um lote de prompts de texto, e ele retornará um tensor com as probabilidades. O CLIP pode ser usado para várias tarefas: + +**Classificação de Imagens** + +Suponha que precisamos classificar imagens entre, digamos, gatos, cães e humanos. Nesse caso, podemos fornecer ao modelo uma imagem e uma série de prompts de texto: "*uma imagem de um gato*", "*uma imagem de um cachorro*", "*uma imagem de um humano*". No vetor resultante de 3 probabilidades, precisamos apenas selecionar o índice com o valor mais alto. + +![CLIP para Classificação de Imagens](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.pt.png) + +> *Imagem do [este post no blog](https://openai.com/blog/clip/)* + +**Busca de Imagens Baseada em Texto** + +Podemos também fazer o oposto. Se tivermos uma coleção de imagens, podemos passar essa coleção para o modelo e um prompt de texto - isso nos dará a imagem que é mais semelhante ao prompt dado. + +## ✍️ Exemplo: [Usando CLIP para Classificação de Imagens e Busca de Imagens](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Abra o [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) notebook para ver o CLIP em ação. + +## Geração de Imagens com VQGAN+ CLIP + +O CLIP também pode ser usado para **geração de imagens** a partir de um prompt de texto. Para fazer isso, precisamos de um **modelo gerador** que seja capaz de gerar imagens com base em algum vetor de entrada. Um desses modelos é chamado [VQGAN](https://compvis.github.io/taming-transformers/) (GAN Quantizado por Vetores). + +As principais ideias do VQGAN que o diferenciam de um [GAN](../../4-ComputerVision/10-GANs/README.md) comum são as seguintes: +* Usar uma arquitetura de transformer autorregressiva para gerar uma sequência de partes visuais ricas em contexto que compõem a imagem. Essas partes visuais são, por sua vez, aprendidas por [CNN](../../4-ComputerVision/07-ConvNets/README.md) +* Usar um discriminador de sub-imagem que detecta se partes da imagem são "reais" ou "falsas" (diferente da abordagem "tudo ou nada" em GANs tradicionais). + +Saiba mais sobre VQGAN no site [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Uma das diferenças importantes entre VQGAN e GANs tradicionais é que este último pode produzir uma imagem decente a partir de qualquer vetor de entrada, enquanto o VQGAN provavelmente produzirá uma imagem que não será coerente. Assim, precisamos guiar ainda mais o processo de criação da imagem, e isso pode ser feito usando o CLIP. + +![Arquitetura VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.pt.png) + +Para gerar uma imagem correspondente a um prompt de texto, começamos com algum vetor de codificação aleatório que é passado pelo VQGAN para produzir uma imagem. Então, o CLIP é usado para produzir uma função de perda que mostra quão bem a imagem corresponde ao prompt de texto. O objetivo, então, é minimizar essa perda, usando retropropagação para ajustar os parâmetros do vetor de entrada. + +Uma ótima biblioteca que implementa VQGAN+CLIP é [Pixray](http://github.com/pixray/pixray) + +![Imagem produzida pelo Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.pt.png) | ![Imagem produzida pelo pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.pt.png) | ![Imagem produzida pelo Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.pt.png) +----|----|---- +Imagem gerada a partir do prompt *um retrato em aquarela de close-up de um jovem professor de literatura com um livro* | Imagem gerada a partir do prompt *um retrato em óleo de close-up de uma jovem professora de ciência da computação com um computador* | Imagem gerada a partir do prompt *um retrato em óleo de close-up de um velho professor de matemática na frente do quadro negro* + +> Imagens da coleção **Professores Artificiais** por [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E é uma versão do GPT-3 treinada para gerar imagens a partir de prompts. Ele foi treinado com 12 bilhões de parâmetros. + +Diferente do CLIP, o DALL-E recebe tanto texto quanto imagem como um único fluxo de tokens para imagens e texto. Portanto, a partir de múltiplos prompts, você pode gerar imagens com base no texto. + +### [DALL-E 2](https://openai.com/dall-e-2) +A principal diferença entre DALL-E 1 e 2 é que ele gera imagens e arte mais realistas. + +Exemplos de gerações de imagens com DALL-E: +![Imagem produzida pelo 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.pt.png) | ![Imagem produzida pelo 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.pt.png) | ![Imagem produzida pelo 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.pt.png) +----|----|---- +Imagem gerada a partir do prompt *um retrato em aquarela de close-up de um jovem professor de literatura com um livro* | Imagem gerada a partir do prompt *um retrato em óleo de close-up de uma jovem professora de ciência da computação com um computador* | Imagem gerada a partir do prompt *um retrato em óleo de close-up de um velho professor de matemática na frente do quadro negro* + +## Referências + +* Artigo do VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Artigo do CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/sketchnotes/LICENSE.md b/translations/pt/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..09570404 --- /dev/null +++ b/translations/pt/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,261 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +A Creative Commons Corporation ("Creative Commons") não é um escritório de advocacia e não fornece serviços ou aconselhamento jurídico. A distribuição das licenças públicas da Creative Commons não cria uma relação de advogado-cliente ou outra relação. A Creative Commons disponibiliza suas licenças e informações relacionadas em uma base "como está". A Creative Commons não oferece garantias em relação a suas licenças, qualquer material licenciado sob seus termos e condições, ou qualquer informação relacionada. A Creative Commons renuncia a toda responsabilidade por danos resultantes do uso de suas licenças na máxima extensão possível. + +Usando Licenças Públicas da Creative Commons + +As licenças públicas da Creative Commons fornecem um conjunto padrão de termos e condições que criadores e outros detentores de direitos podem usar para compartilhar obras originais de autoria e outros materiais sujeitos a direitos autorais e certos outros direitos especificados na licença pública abaixo. As seguintes considerações são apenas para fins informativos, não são exaustivas e não fazem parte de nossas licenças. + + Considerações para licenciadores: Nossas licenças públicas são + destinadas ao uso por aqueles autorizados a dar ao público + permissão para usar material de maneiras que de outra forma seriam + restritas por direitos autorais e certos outros direitos. Nossas + licenças são irrevogáveis. Licenciadores devem ler e entender os + termos e condições da licença que escolherem antes de aplicá-la. + Licenciadores também devem garantir todos os direitos necessários + antes de aplicar nossas licenças para que o público possa reutilizar + o material conforme esperado. Licenciadores devem marcar claramente + qualquer material que não esteja sujeito à licença. Isso inclui + outro material licenciado sob CC ou material utilizado sob uma + exceção ou limitação ao direito autoral. Mais considerações para + licenciadores: + wiki.creativecommons.org/Considerations_for_licensors + + Considerações para o público: Ao usar uma de nossas licenças + públicas, um licenciador concede ao público permissão para usar o + material licenciado sob os termos e condições especificados. Se a + permissão do licenciador não for necessária por qualquer motivo— + por exemplo, devido a qualquer exceção ou limitação aplicável ao + direito autoral—então esse uso não é regulado pela licença. Nossas + licenças concedem apenas permissões sob direitos autorais e certos + outros direitos que um licenciador tem autoridade para conceder. O + uso do material licenciado ainda pode ser restrito por outros + motivos, incluindo porque outros têm direitos autorais ou outros + direitos sobre o material. Um licenciador pode fazer solicitações + especiais, como pedir que todas as alterações sejam marcadas ou + descritas. Embora não seja exigido por nossas licenças, você é + encorajado a respeitar essas solicitações quando razoável. Mais + considerações para o público: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Licença Pública Internacional Creative Commons Attribution-ShareAlike 4.0 + +Ao exercer os Direitos Licenciados (definidos abaixo), você aceita e concorda em estar vinculado aos termos e condições desta Licença Pública Internacional Creative Commons Attribution-ShareAlike 4.0 ("Licença Pública"). Na medida em que esta Licença Pública possa ser interpretada como um contrato, você recebe os Direitos Licenciados em consideração à sua aceitação destes termos e condições, e o Licenciador lhe concede tais direitos em consideração aos benefícios que o Licenciador recebe ao disponibilizar o Material Licenciado sob estes termos e condições. + +Seção 1 -- Definições. + + a. Material Adaptado significa material sujeito a Direitos Autorais e Direitos Similares que é derivado ou baseado no Material Licenciado e no qual o Material Licenciado é traduzido, alterado, arranjado, transformado ou de outra forma modificado de uma maneira que requer permissão sob os Direitos Autorais e Direitos Similares detidos pelo Licenciador. Para fins desta Licença Pública, onde o Material Licenciado é uma obra musical, performance ou gravação sonora, Material Adaptado é sempre produzido onde o Material Licenciado é sincronizado em relação ao tempo com uma imagem em movimento. + + b. Licença do Adaptador significa a licença que você aplica aos seus Direitos Autorais e Direitos Similares em suas contribuições ao Material Adaptado de acordo com os termos e condições desta Licença Pública. + + c. Licença Compatível com BY-SA significa uma licença listada em + creativecommons.org/compatiblelicenses, aprovada pela Creative + Commons como essencialmente equivalente a esta Licença Pública. + + d. Direitos Autorais e Direitos Similares significa direitos autorais e/ou direitos similares intimamente relacionados a direitos autorais, incluindo, sem limitação, performance, transmissão, gravação sonora e Direitos de Banco de Dados Sui Generis, independentemente de como os direitos são rotulados ou categorizados. Para fins desta Licença Pública, os direitos especificados na Seção 2(b)(1)-(2) não são Direitos Autorais e Direitos Similares. + + e. Medidas Tecnológicas Eficazes significa aquelas medidas que, na ausência de autoridade adequada, não podem ser contornadas sob leis que cumpram obrigações sob o Artigo 11 do Tratado de Direitos Autorais da OMPI adotado em 20 de dezembro de 1996 e/ou acordos internacionais semelhantes. + + f. Exceções e Limitações significa uso justo, negociação justa e/ou qualquer outra exceção ou limitação aos Direitos Autorais e Direitos Similares que se aplica ao seu uso do Material Licenciado. + + g. Elementos da Licença significa os atributos da licença listados no nome de uma Licença Pública da Creative Commons. Os Elementos da Licença desta Licença Pública são Atribuição e Compartilhamento. + + h. Material Licenciado significa a obra artística ou literária, banco de dados ou outro material ao qual o Licenciador aplicou esta Licença Pública. + + i. Direitos Licenciados significa os direitos concedidos a você sujeitos aos termos e condições desta Licença Pública, que são limitados a todos os Direitos Autorais e Direitos Similares que se aplicam ao seu uso do Material Licenciado e que o Licenciador tem autoridade para licenciar. + + j. Licenciador significa a(s) pessoa(s) ou entidade(s) que concedem direitos sob esta Licença Pública. + + k. Compartilhar significa fornecer material ao público por qualquer meio ou processo que requer permissão sob os Direitos Licenciados, como reprodução, exibição pública, performance pública, distribuição, disseminação, comunicação ou importação, e tornar o material disponível ao público, incluindo de maneiras que membros do público possam acessar o material de um lugar e em um momento escolhidos individualmente por eles. + + l. Direitos de Banco de Dados Sui Generis significa direitos diferentes de direitos autorais resultantes da Diretiva 96/9/CE do Parlamento Europeu e do Conselho de 11 de março de 1996 sobre a proteção legal de bancos de dados, conforme alterada e/ou sucedida, bem como outros direitos essencialmente equivalentes em qualquer lugar do mundo. + + m. Você significa a pessoa ou entidade exercendo os Direitos Licenciados sob esta Licença Pública. Seu tem um significado correspondente. + +Seção 2 -- Escopo. + + a. Concessão de licença. + + 1. Sujeito aos termos e condições desta Licença Pública, o Licenciador concede a você uma licença mundial, isenta de royalties, não sublicenciável, não exclusiva e irrevogável para exercer os Direitos Licenciados no Material Licenciado para: + + a. reproduzir e Compartilhar o Material Licenciado, no todo ou em parte; e + + b. produzir, reproduzir e Compartilhar Material Adaptado. + + 2. Exceções e Limitações. Para evitar dúvidas, onde Exceções e Limitações se aplicam ao seu uso, esta Licença Pública não se aplica, e você não precisa cumprir seus termos e condições. + + 3. Prazo. O prazo desta Licença Pública é especificado na Seção 6(a). + + 4. Mídia e formatos; modificações técnicas permitidas. O Licenciador autoriza você a exercer os Direitos Licenciados em todos os meios e formatos, sejam eles conhecidos agora ou criados posteriormente, e a fazer modificações técnicas necessárias para isso. O Licenciador renuncia e/ou concorda em não afirmar qualquer direito ou autoridade para proibir você de fazer modificações técnicas necessárias para exercer os Direitos Licenciados, incluindo modificações técnicas necessárias para contornar Medidas Tecnológicas Eficazes. Para fins desta Licença Pública, simplesmente fazer modificações autorizadas por esta Seção 2(a)(4) nunca produz Material Adaptado. + + 5. Recipientes a jusante. + + a. Oferta do Licenciador -- Material Licenciado. Cada + recipiente do Material Licenciado automaticamente + recebe uma oferta do Licenciador para exercer os + Direitos Licenciados sob os termos e condições desta + Licença Pública. + + b. Oferta adicional do Licenciador -- Material Adaptado. + Cada recipiente de Material Adaptado de você + automaticamente recebe uma oferta do Licenciador para + exercer os Direitos Licenciados no Material Adaptado + sob as condições da Licença do Adaptador que você aplica. + + c. Sem restrições a jusante. Você não pode oferecer ou impor + quaisquer termos ou condições adicionais ou diferentes, ou + aplicar quaisquer Medidas Tecnológicas Eficazes ao + Material Licenciado se isso restringir o exercício dos + Direitos Licenciados por qualquer recipiente do Material + Licenciado. + + 6. Nenhuma aprovação. Nada nesta Licença Pública constitui ou + pode ser interpretado como permissão para afirmar ou insinuar que você é, ou que seu uso do Material Licenciado está, conectado com, ou patrocinado, endossado ou concedido status oficial pelo, Licenciador ou outros designados para receber atribuição conforme previsto na Seção 3(a)(1)(A)(i). + + b. Outros direitos. + + 1. Direitos morais, como o direito à integridade, não estão + licenciados sob esta Licença Pública, nem estão direitos de + publicidade, privacidade e/ou outros direitos de personalidade + similares; no entanto, na medida do possível, o Licenciador + renuncia e/ou concorda em não afirmar quaisquer desses direitos + detidos pelo Licenciador na extensão limitada necessária para + permitir que você exerça os Direitos Licenciados, mas não de + outra forma. + + 2. Direitos de patente e marcas registradas não estão licenciados + sob esta Licença Pública. + + 3. Na medida do possível, o Licenciador renuncia a qualquer + direito de coletar royalties de você pelo exercício dos + Direitos Licenciados, seja diretamente ou através de uma + sociedade de cobrança sob qualquer esquema de licenciamento + voluntário ou renunciável. Em todos os outros casos, o Licenciador + reserva expressamente qualquer direito de coletar tais royalties. + +Seção 3 -- Condições da Licença. + +Seu exercício dos Direitos Licenciados está expressamente sujeito às +seguintes condições. + + a. Atribuição. + + 1. Se você Compartilhar o Material Licenciado (incluindo em forma + modificada), você deve: + + a. reter o seguinte se for fornecido pelo Licenciador + com o Material Licenciado: + + i. identificação do(s) criador(es) do Material + Licenciado e quaisquer outros designados para + receber atribuição, de qualquer maneira razoável + solicitada pelo Licenciador (incluindo por + pseudônimo, se designado); + + ii. um aviso de direitos autorais; + + iii. um aviso que se refira a esta Licença Pública; + + iv. um aviso que se refira à isenção de + garantias; + + v. uma URI ou hiperlink para o Material Licenciado + na medida do razoavelmente praticável; + + b. indicar se você modificou o Material Licenciado e + reter uma indicação de quaisquer modificações anteriores; e + + c. indicar que o Material Licenciado está licenciado sob + esta Licença Pública, e incluir o texto ou a URI ou + hiperlink para esta Licença Pública. + + 2. Você pode satisfazer as condições na Seção 3(a)(1) de qualquer + maneira razoável com base no meio, nos meios e no contexto em + que você Compartilha o Material Licenciado. Por exemplo, pode ser + razoável satisfazer as condições fornecendo uma URI ou + hiperlink para um recurso que inclua as informações exigidas. + + 3. Se solicitado pelo Licenciador, você deve remover qualquer uma das + informações exigidas pela Seção 3(a)(1)(A) na medida do + razoavelmente praticável. + + b. ShareAlike. + + Além das condições na Seção 3(a), se você Compartilhar + Material Adaptado que produzir, as seguintes condições também se aplicam. + + 1. A Licença do Adaptador que você aplica deve ser uma licença + Creative Commons com os mesmos Elementos da Licença, esta versão + ou posterior, ou uma Licença Compatível com BY-SA. + + 2. Você deve incluir o texto ou a URI ou hiperlink para a + Licença do Adaptador que você aplica. Você pode satisfazer essa + condição de qualquer maneira razoável com base no meio, nos + meios e no contexto em que você Compartilha Material Adaptado. + + 3. Você não pode oferecer ou impor quaisquer termos ou condições + adicionais ou diferentes, ou aplicar quaisquer Medidas + Tecnológicas Eficazes ao Material Adaptado que restrinjam o + exercício dos direitos concedidos sob a Licença do Adaptador que + você aplica. + +Seção 4 -- Direitos de Banco de Dados Sui Generis. + +Onde os Direitos Licenciados incluem Direitos de Banco de Dados Sui Generis que se aplicam ao seu uso do Material Licenciado: + + a. para evitar dúvidas, a Seção 2(a)(1) concede a você o direito + de extrair, reutilizar, reproduzir e Compartilhar toda ou uma parte + substancial do conteúdo do banco de dados; + + b. se você incluir toda ou uma parte substancial do conteúdo do banco + de dados em um banco de dados no qual você tem Direitos de Banco de + Dados Sui Generis, então o banco de dados no qual você tem Direitos + de Banco de Dados Sui Generis (mas não seu conteúdo individual) é + Material Adaptado, + + incluindo para fins da Seção 3(b); e + c. você deve cumprir as condições na Seção 3(a) se você Compartilhar + toda ou uma parte substancial do conteúdo do banco de dados. + +Para evitar dúvidas, esta Seção 4 complementa e não substitui suas obrigações sob esta Licença Pública onde os Direitos Licenciados incluem outros Direitos Autorais e Direitos Similares. + +Seção 5 -- Isenção de Garantias e Limitação de Responsabilidade. + + a. A MENOS QUE DE OUTRA FORMA SEPARADAMENTE ASSUMIDO PELO LICENCIADOR, NA MEDIDA DO POSSÍVEL, O LICENCIADOR OFERECE O MATERIAL LICENCIADO COMO ESTÁ E COMO DISPONÍVEL, E NÃO FAZ REPRESENTAÇÕES OU GARANTIAS DE QUALQUER TIPO RELATIVAS AO MATERIAL LICENCIADO, SEJAM ELAS EXPRESSAS, IMPLÍCITAS, ESTATUTÁRIAS OU OUTRAS. ISSO INCLUI, SEM LIMITAÇÃO, GARANTIAS DE TÍTULO, COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM ESPECÍFICO, NÃO VIOLAÇÃO, AUSÊNCIA DE DEFEITOS LATENTES OU OUTROS, PRECISÃO OU A PRESENÇA OU AUSÊNCIA DE ERROS, SEJA OU NÃO CONHECIDOS OU DISCERNÍVEIS. ONDE ISENÇÕES DE GARANTIAS NÃO SÃO PERMITIDAS TOTAL OU PARCIALMENTE, ESTA ISENÇÃO PODE NÃO SE APLICAR A VOCÊ. + + b. NA MEDIDA DO POSSÍVEL, EM NENHUM CASO O LICENCIADOR SERÁ RESPONSÁVEL POR VOCÊ SOB QUALQUER TEORIA JURÍDICA (INCLUINDO, SEM LIMITAÇÃO, NEGLIGÊNCIA) OU DE OUTRA FORMA POR QUAISQUER PERDAS, CUSTOS, DESPESAS OU DANOS DIRETOS, ESPECIAIS, INDIRETOS, INCIDENTAIS, CONSEQUENCIAIS, PUNITIVOS, EXEMPLARES OU OUTROS DECORRENTES DESSA LICENÇA PÚBLICA OU DO USO DO MATERIAL LICENCIADO, MESMO QUE O LICENCIADOR TENHA SIDO AVISADO DA POSSIBILIDADE DE TAIS PERDAS, CUSTOS, DESPESAS OU DANOS. ONDE UMA LIMITAÇÃO DE RESPONSABILIDADE NÃO É PERMITIDA TOTAL OU PARCIALMENTE, ESTA LIMITAÇÃO PODE NÃO SE APLICAR A VOCÊ. + + c. A isenção de garantias e a limitação de responsabilidade fornecidas acima devem ser interpretadas de uma maneira que, na medida do possível, mais se aproxime de uma isenção absoluta e renúncia de toda responsabilidade. + +Seção 6 -- Prazo e Rescisão. + + a. Esta Licença Pública se aplica pelo prazo dos Direitos Autorais e Direitos Similares licenciados aqui. No entanto, se você não cumprir esta Licença Pública, então seus direitos sob esta Licença Pública se encerram automaticamente. + + b. Onde seu direito de usar o Material Licenciado foi encerrado sob a Seção 6(a), ele se restabelece: + + 1. automaticamente a partir da data em que a violação é corrigida, desde que seja corrigida dentro de 30 dias de sua descoberta da violação; ou + + 2. mediante restabelecimento expresso pelo Licenciador. + + Para evitar dúvidas, esta Seção 6(b) não afeta qualquer direito que o Licenciador possa ter de buscar reparações por suas violações desta Licença Pública. + + c. Para evitar dúvidas, o Licenciador também pode oferecer o Material Licenciado sob termos ou condições separados ou parar de distribuir o Material Licenciado a qualquer momento; no entanto, fazer isso não encerrará esta Licença Pública. + + d. As Seções 1, 5, 6, 7 e 8 sobrevivem à rescisão desta Licença Pública. + +Seção 7 -- Outros Termos e Condições. + + a. O Licenciador não estará vinculado por quaisquer termos ou condições adicionais ou diferentes comunicados por você, a menos que expressamente concordado. + + b. Quaisquer arranjos, entendimentos ou acordos relativos ao Material Licenciado não declarados aqui são separados e independentes dos termos e condições desta Licença Pública. + +Seção 8 -- Interpretação. + + a. Para evitar dúvidas, + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos pela precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução. \ No newline at end of file diff --git a/translations/pt/lessons/sketchnotes/README.md b/translations/pt/lessons/sketchnotes/README.md new file mode 100644 index 00000000..47b81857 --- /dev/null +++ b/translations/pt/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +Todos os esboços do currículo podem ser baixados aqui. + +🎨 Criado por: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**Isenção de responsabilidade**: +Este documento foi traduzido utilizando serviços de tradução automática baseados em IA. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas resultantes do uso desta tradução. \ No newline at end of file diff --git a/translations/ru/README.md b/translations/ru/README.md new file mode 100644 index 00000000..22454255 --- /dev/null +++ b/translations/ru/README.md @@ -0,0 +1,140 @@ +[![Лицензия GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![Участники GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![Проблемы GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![Запросы на изменения GitHub](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![PRs Приветствуются](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![Наблюдатели GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![Форки GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![Звезды GitHub](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](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 или [Школы бизнеса ИИ](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), разработанной в сотрудничестве с [INSEAD](https://www.insead.edu/). +* **Классическое Машинное Обучение**, которое хорошо описано в нашем [Учебном плане Машинного Обучения для Начинающих](http://github.com/Microsoft/ML-for-Beginners). +* Практические приложения ИИ, созданные с использованием **[Когнитивных Сервисов](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Для этого мы рекомендуем начать с модулей Microsoft Learn по [визуализации](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [обработке естественного языка](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Генеративному ИИ с Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** и другим. +* Специфические **облачные фреймворки** для машинного обучения, такие как [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) или [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Рассмотрите возможность использования учебных путей [Создание и управление решениями для машинного обучения с Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) и [Создание и управление решениями для машинного обучения с Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **Разговорный ИИ** и **Чат-боты**. Существует отдельный учебный путь [Создание решений для разговорного ИИ](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), а также вы можете ознакомиться с [этой статьей в блоге](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) для получения более подробной информации. +* **Глубокая математика** глубокого обучения. Для этого мы рекомендуем книгу [Глубокое обучение](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) Иэна Гудфеллоу, Ёшуи Бенгио и Аарона Курвиля, которая также доступна онлайн по адресу [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Для мягкого введения в темы _ИИ в облаке_ вы можете рассмотреть возможность прохождения учебного пути [Начало работы с искусственным интеллектом на Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# Содержание + +| | Ссылка на урок | PyTorch/Keras/TensorFlow | Лаборатория | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Настройка курса](./lessons/0-course-setup/setup.md) | [Настройка вашей среды разработки](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Введение в ИИ**](./lessons/1-Intro/README.md) | | | +| 01 | [Введение и история ИИ](./lessons/1-Intro/README.md) | - | - | +| II | **Символический ИИ** | +| 02 | [Представление знаний и экспертные системы](./lessons/2-Symbolic/README.md) | [Экспертные системы](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Онтология](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Граф концептов](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Введение в нейронные сети**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Перцептрон](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Блокнот](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Лаборатория](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Многослойный перцептрон и создание нашего собственного фреймворка](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Блокнот](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Лаборатория](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Введение в фреймворки (PyTorch/TensorFlow) и переобучение](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Лаборатория](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Компьютерное зрение**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Изучите компьютерное зрение на Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Введение в компьютерное зрение. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Блокнот](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Лаборатория](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Сверточные нейронные сети](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Архитектуры CNN](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Лаборатория](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Предобученные сети и перенос обучения](./lessons/4-ComputerVision/08-TransferLearning/README.md) и [Трюки обучения](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Лаборатория](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Автокодировщики и VAE](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [Генеративные состязательные сети и перенос художественного стиля](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Обнаружение объектов](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Лаборатория](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Семантическая сегментация. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](../../../../AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | +| V | [**Обработка Естественного Языка**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Изучите Обработку Естественного Языка на Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 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 Notebooks, которые часто специфичны для фреймворка (**PyTorch** или **TensorFlow**). Исполняемый блокнот также содержит много теоретического материала, поэтому, чтобы понять тему, вам нужно пройти хотя бы одну версию блокнота (либо PyTorch, либо TensorFlow). +* **Лаборатории**, доступные для некоторых тем, которые дают вам возможность попробовать применить изученный материал к конкретной задаче. +* Некоторые разделы содержат ссылки на модули [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum), которые охватывают смежные темы. + +## Начало работы + +- Мы создали [урок по настройке](./lessons/0-course-setup/setup.md), чтобы помочь вам с настройкой вашей рабочей среды. - Для педагогов мы также создали [урок по настройке учебной программы](./lessons/0-course-setup/for-teachers.md)! +- Как [Запустить код в VSCode или Codepace](./lessons/0-course-setup/how-to-run.md) + +Следуйте этим шагам: + +Сделайте форк репозитория: нажмите на кнопку "Fork" в правом верхнем углу этой страницы. + +Клонируйте репозиторий: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Не забудьте поставить звезду (🌟) этому репозиторию, чтобы было легче найти его позже. + +## Встречайте других учащихся + +Присоединяйтесь к нашему [официальному серверу Discord по ИИ](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum), чтобы познакомиться и пообщаться с другими учащимися, проходящими этот курс, и получить поддержку. + +## Викторины + +> **Замечание о викторинах**: Все викторины содержатся в папке Quiz-app в etc\quiz-app. Они связаны с уроками, приложение для викторин можно запустить локально или развернуть в Azure; следуйте инструкциям в папке `quiz-app`. Они постепенно локализуются. + +## Нужна помощь + +У вас есть предложения или вы нашли ошибки в написании или коде? Создайте проблему или создайте запрос на изменение. + +## Особая благодарность + +* **✍️ Главный автор:** [Дмитрий Сошников](http://soshnikov.com), PhD +* **🔥 Редактор:** [Джен Лупер](https://twitter.com/jenlooper), PhD +* **🎨 Иллюстратор скетчей:** [Томоми Имура](https://twitter.com/girlie_mac) +* **✅ Создатель викторин:** [Латифа Белло](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Основные участники:** [Евгений Пищик](https://github.com/Pe4enIks) + +## Другие учебные программы + +Наша команда разрабатывает и другие учебные программы! Ознакомьтесь с: + +* [Наука о данных для начинающих](https://aka.ms/ds4beginners) +* [**Версия 2.0** Генеративный ИИ для начинающих](https://aka.ms/genai-beginners) +* [**НОВИНКА** Кибербезопасность для начинающих](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [Веб-разработка для начинающих](https://aka.ms/webdev-beginners) +* [IoT для начинающих](https://aka.ms/iot-beginners) +* [Машинное обучение для начинающих](https://aka.ms/ml4beginners) +* [XR Разработка для начинающих](https://aka.ms/xr-dev-for-beginners) +* [Осваиваем GitHub Copilot для парного программирования с ИИ](https://aka.ms/GitHubCopilotAI) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/SECURITY.md b/translations/ru/SECURITY.md new file mode 100644 index 00000000..3ff75644 --- /dev/null +++ b/translations/ru/SECURITY.md @@ -0,0 +1,40 @@ +## Безопасность + +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-инъекция, межсайтовый скриптинг и т.д.) + * Полные пути к файлам исходного кода, связанным с проявлением проблемы + * Местоположение затронутого исходного кода (тег/ветка/коммит или прямой URL) + * Любая специальная конфигурация, необходимая для воспроизведения проблемы + * Пошаговые инструкции для воспроизведения проблемы + * Код доказательства концепции или эксплойт (если возможно) + * Влияние проблемы, включая то, как злоумышленник может воспользоваться этой проблемой + +Эта информация поможет нам быстрее обработать ваш отчет. + +Если вы сообщаете о проблеме для программы вознаграждений за ошибки, более полные отчеты могут способствовать более высокой награде. Пожалуйста, посетите нашу страницу [Программы вознаграждений за ошибки Microsoft](https://aka.ms/opensource/security/bounty) для получения дополнительной информации о наших активных программах. + +## Предпочитаемые языки + +Мы предпочитаем, чтобы все сообщения были на английском языке. + +## Политика + +Microsoft придерживается принципа [Координированного раскрытия уязвимостей](https://aka.ms/opensource/security/cvd). + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/etc/CODE_OF_CONDUCT.md b/translations/ru/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..e3d16ebc --- /dev/null +++ b/translations/ru/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Кодекс поведения Microsoft Open Source + +Этот проект принял [Кодекс поведения Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/). + +Ресурсы: + +- [Кодекс поведения Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/) +- [Часто задаваемые вопросы по Кодексу поведения Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Свяжитесь с [opencode@microsoft.com](mailto:opencode@microsoft.com) с вопросами или проблемами + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/etc/CONTRIBUTING.md b/translations/ru/etc/CONTRIBUTING.md new file mode 100644 index 00000000..4f9acf64 --- /dev/null +++ b/translations/ru/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# Участие в проекте + +Этот проект приветствует вклад и предложения. Большинство вкладов требуют от вас согласия с Соглашением о лицензии для участников (CLA), подтверждающим, что вы имеете право и на самом деле предоставляете нам права на использование вашего вклада. Для получения подробной информации посетите https://cla.microsoft.com. + +Когда вы отправляете запрос на изменение, бот CLA автоматически определит, нужно ли вам предоставить CLA, и соответствующим образом оформит PR (например, добавит метку или комментарий). Просто следуйте инструкциям, предоставленным ботом. Вам нужно будет сделать это только один раз для всех репозиториев, использующих наше CLA. + +Этот проект принял [Кодекс поведения Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/). Для получения дополнительной информации смотрите [Часто задаваемые вопросы по Кодексу поведения](https://opensource.microsoft.com/codeofconduct/faq/) или свяжитесь с [opencode@microsoft.com](mailto:opencode@microsoft.com) с любыми дополнительными вопросами или комментариями. + +# Ищем вкладчиков + +В настоящее время мы активно ищем вкладов по следующим темам: + +- [ ] Написать раздел о глубоких методах обучения с подкреплением +- [ ] Улучшить раздел и блокнот по Обнаружению объектов +- [ ] 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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/etc/Mindmap.md b/translations/ru/etc/Mindmap.md new file mode 100644 index 00000000..d94424a6 --- /dev/null +++ b/translations/ru/etc/Mindmap.md @@ -0,0 +1,76 @@ +# ИИ + +## [Введение в ИИ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Определение ИИ + - История ИИ + - Подходы к ИИ + - Сверху вниз/Символический + - Снизу вверх/Нейронный + - Эволюционный + - Синергетический / Эмерджентный ИИ + - [Школа бизнеса ИИ от Microsoft](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 + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/etc/SUPPORT.md b/translations/ru/etc/SUPPORT.md new file mode 100644 index 00000000..f857b5ba --- /dev/null +++ b/translations/ru/etc/SUPPORT.md @@ -0,0 +1,16 @@ +# Поддержка + +## Как сообщить о проблемах и получить помощь + +Этот проект использует GitHub Issues для отслеживания ошибок и запросов на новые функции. Пожалуйста, проверьте существующие +проблемы перед тем, как создавать новые, чтобы избежать дублирования. Для новых проблем создайте ваш баг или +запрос на новую функцию как новую задачу. + +Для получения помощи и вопросов о использовании этого проекта, пожалуйста, используйте Доски обсуждений. + +## Политика поддержки Microsoft + +Поддержка для этого проекта ограничена ресурсами, перечисленными выше. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/etc/TRANSLATIONS.md b/translations/ru/etc/TRANSLATIONS.md new file mode 100644 index 00000000..3fa50d85 --- /dev/null +++ b/translations/ru/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# Внесите свой вклад, переводя уроки + +Мы приветствуем переводы уроков в этой программе! + +## Рекомендации + +В каждой папке урока и в папке введения в урок содержатся переведенные файлы в формате markdown. + +> Обратите внимание, пожалуйста, не переводите никакой код в файлах с примерами кода; единственные вещи, которые нужно перевести, это README, задания и викторины. Спасибо! + +Переведенные файлы должны следовать следующему формату именования: + +**README._[язык]_.md** + +где _[язык]_ — это двухбуквенное сокращение языка по стандарту ISO 639-1 (например, `README.es.md` для испанского и `README.nl.md` для голландского). + +**assignment._[язык]_.md** + +Аналогично README, пожалуйста, переведите и задания. + +**Викторины** + +1. Добавьте ваш перевод в quiz-app, добавив файл здесь: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, с правильным именованием (en.json, fr.json). **Пожалуйста, не локализуйте слова 'true' или 'false'. Спасибо!** + +2. Добавьте код вашего языка в выпадающее меню в файле App.vue приложения викторины. + +3. Отредактируйте файл [translations index.js приложения викторины](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js), чтобы добавить ваш язык. + +4. Наконец, отредактируйте ВСЕ ссылки на викторины в ваших переведенных файлах README.md, чтобы они указывали непосредственно на вашу переведенную викторину: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 становится https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**СПАСИБО** + +Мы искренне ценим ваши усилия! + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/etc/quiz-app/README.md b/translations/ru/etc/quiz-app/README.md new file mode 100644 index 00000000..e764085a --- /dev/null +++ b/translations/ru/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# Викторины + +Эти викторины являются предварительными и итоговыми викторинами для учебной программы по ИИ на сайте 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) +- Нажмите на "Создать ресурс" и найдите "Статическое веб-приложение". +- Нажмите "Создать". + +3. Настройте статическое веб-приложение +- Основы: Подписка: Выберите вашу подписку Azure. +- Группа ресурсов: Создайте новую группу ресурсов или используйте существующую. +- Имя: Укажите имя для вашего статического веб-приложения. +- Регион: Выберите регион, ближайший к вашим пользователям. + +- #### Детали развертывания: +- Источник: Выберите "GitHub". +- Учетная запись GitHub: Авторизуйте Azure для доступа к вашей учетной записи GitHub. +- Организация: Выберите вашу организацию на GitHub. +- Репозиторий: Выберите репозиторий, содержащий ваше статическое веб-приложение. +- Ветка: Выберите ветку, из которой хотите развернуть. + +- #### Детали сборки: +- Предустановки сборки: Выберите фреймворк, на котором построено ваше приложение (например, React, Angular, Vue и т.д.). +- Расположение приложения: Укажите папку, содержащую код вашего приложения (например, /, если он находится в корне). +- Расположение API: Если у вас есть API, укажите его расположение (необязательно). +- Расположение вывода: Укажите папку, в которой генерируется вывод сборки (например, build или dist). + +4. Проверьте и создайте +Проверьте ваши настройки и нажмите "Создать". Azure настроит необходимые ресурсы и создаст рабочий процесс GitHub Actions в вашем репозитории. + +5. Рабочий процесс GitHub Actions +Azure автоматически создаст файл рабочего процесса GitHub Actions в вашем репозитории (.github/workflows/azure-static-web-apps-.yml). Этот рабочий процесс будет обрабатывать процесс сборки и развертывания. + +6. Мониторинг развертывания +Перейдите на вкладку "Actions" в вашем репозитории на GitHub. +Вы должны увидеть работающий рабочий процесс. Этот рабочий процесс будет собирать и развертывать ваше статическое веб-приложение в Azure. +После завершения рабочего процесса ваше приложение будет доступно по предоставленному URL Azure. + +### Пример файла рабочего процесса + +Вот пример того, как может выглядеть файл рабочего процесса GitHub Actions: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### Дополнительные ресурсы +- [Документация по статическим веб-приложениям Azure](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Документация по GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/0-course-setup/for-teachers.md b/translations/ru/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..83317f88 --- /dev/null +++ b/translations/ru/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# Для педагогов + +Хотите использовать этот учебный план в своем классе? Пожалуйста, не стесняйтесь! + +На самом деле, вы можете использовать его непосредственно в 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 в вашем репозитории класса. + +Существует множество способов организовать это в онлайн-классе. Пожалуйста, дайте нам знать, что работает лучше всего для вас! + +## Пожалуйста, поделитесь своими мыслями + +Мы хотим сделать этот учебный план удобным для вас и ваших студентов. Пожалуйста, оставьте свои отзывы на дискуссионных форумах! + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих услуг на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/0-course-setup/how-to-run.md b/translations/ru/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..08921f33 --- /dev/null +++ b/translations/ru/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# Как запустить код + +Этот курс содержит множество исполняемых примеров и лабораторных работ, которые вы захотите запустить. Для этого вам необходимо иметь возможность выполнять код на 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` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer`, которая указывает, как создать контейнер для этого репозитория, VS Code предложит вам снова открыть код в контейнере. Это потребует установки Docker и будет более сложным, поэтому мы рекомендуем это более опытным пользователям. + +## Запуск в облаке + +Если вы не хотите устанавливать Python локально и у вас есть доступ к облачным ресурсам, хорошей альтернативой будет запуск кода в облаке. Существует несколько способов сделать это: + +* Используя **[GitHub Codespaces](https://github.com/features/codespaces)**, который является виртуальным окружением, созданным для вас на GitHub, доступным через интерфейс браузера VS Code. Если у вас есть доступ к Codespaces, вы можете просто нажать кнопку **Code** в репозитории, начать кодовое пространство и начать работу в кратчайшие сроки. +* Используя **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) - это бесплатные вычислительные ресурсы, предоставляемые в облаке для людей, таких как вы, чтобы протестировать некоторый код на GitHub. На главной странице есть кнопка для открытия репозитория в Binder - это быстро перенаправит вас на сайт binder, который создаст базовый контейнер и запустит веб-интерфейс Jupyter для вас без проблем. + +> **Примечание**: Чтобы предотвратить злоупотребления, Binder имеет доступ к некоторым заблокированным веб-ресурсам. Это может помешать работе некоторого кода, который загружает модели и/или наборы данных из общедоступного Интернета. Вам может понадобиться найти некоторые обходные пути. Кроме того, вычислительные ресурсы, предоставляемые Binder, довольно базовые, поэтому обучение будет медленным, особенно на более сложных уроках. + +## Запуск в облаке с GPU + +Некоторые из более поздних уроков в этом курсе будут значительно выигрывать от поддержки GPU, потому что в противном случае обучение будет болезненно медленным. У вас есть несколько вариантов, которые вы можете использовать, особенно если у вас есть доступ к облаку либо через [Azure для студентов](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), либо через ваше учебное заведение: + +* Создайте [Виртуальную машину для науки о данных](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) и подключитесь к ней через Jupyter. Затем вы можете клонировать репозиторий прямо на машину и начать обучение. Виртуальные машины серии NC имеют поддержку GPU. + +> **Примечание**: Некоторые подписки, включая Azure для студентов, не предоставляют поддержку GPU "из коробки". Вам может понадобиться запросить дополнительные ядра GPU через запрос в техническую поддержку. + +* Создайте [Рабочее пространство Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) и затем используйте там функцию Notebook. [Это видео](https://azure-for-academics.github.io/quickstart/azureml-papers/) показывает, как клонировать репозиторий в блокнот Azure ML и начать его использование. + +Вы также можете использовать Google Colab, который предоставляет некоторую бесплатную поддержку GPU и загружать туда Jupyter Notebooks для их поочередного выполнения. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/0-course-setup/setup.md b/translations/ru/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..94cac058 --- /dev/null +++ b/translations/ru/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# Начало работы с этой учебной программой + +## Вы студент? + +Начните с следующих ресурсов: + +* [Страница для студентов](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/). + +> **Примечание**: [Инструкции по запуску кода в этом учебном плане](/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) на вашем локальном компьютере, а затем в папке `etc/docsify` этого репозитория введите `docsify serve`. Веб-сайт будет доступен на порту 3000 на вашем локальном хосте: `localhost:3000`. PDF-версия учебной программы доступна [по этой ссылке](../../../../../../etc/pdf/readme.pdf). + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/1-Intro/README.md b/translations/ru/lessons/1-Intro/README.md new file mode 100644 index 00000000..b946da9f --- /dev/null +++ b/translations/ru/lessons/1-Intro/README.md @@ -0,0 +1,38 @@ +> Изображение Дмитрия Сошникова, [фото](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) + +> Изображение Дмитрия Сошникова +В 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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/1-Intro/assignment.md b/translations/ru/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..7fc893ea --- /dev/null +++ b/translations/ru/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# Game Jam + +Игры — это область, которая была сильно затронута развитием ИИ и МЛ. В этом задании напишите короткое эссе о вашей любимой игре, на которую повлияло развитие ИИ. Игра должна быть достаточно старой, чтобы на неё оказали влияние несколько типов компьютерных систем обработки данных. Хорошим примером являются шахматы или го, но также посмотрите на видеоигры, такие как Pong или Pac-Man. Напишите эссе, в котором обсуждаются прошлое, настоящее и будущее ИИ в этой игре. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке должен рассматриваться как авторитетный источник. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/2-Symbolic/README.md b/translations/ru/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..81cc8ccc --- /dev/null +++ b/translations/ru/lessons/2-Symbolic/README.md @@ -0,0 +1,205 @@ +# Представление знаний и экспертные системы + +![Сводка содержимого Символического ИИ](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ru.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.ru.png) + +> Изображение от [Дмитрия Сошникова](http://soshnikov.com) + +* Слева находятся очень простые типы представлений знаний, которые могут эффективно использоваться компьютерами. Самый простой — алгоритмический, когда знание представлено компьютерной программой. Однако это не лучший способ представления знаний, поскольку он не гибкий. Знания в нашей голове часто не алгоритмичны. +* Справа находятся такие представления, как естественный текст. Это самое мощное, но не может быть использовано для автоматического рассуждения. + +> ✅ Подумайте минуту о том, как вы представляете знания в своей голове и переводите их в заметки. Есть ли какой-то конкретный формат, который хорошо помогает вам в запоминании? + +## Классификация представлений знаний в компьютере + +Мы можем классифицировать различные методы представления знаний в компьютере по следующим категориям: + +* **Сетевые представления** основаны на том факте, что у нас есть сеть взаимосвязанных концепций в нашей голове. Мы можем попытаться воспроизвести такие же сети в виде графа внутри компьютера — так называемая **семантическая сеть**. + +1. **Триплеты объект-атрибут-значение** или **пары атрибут-значение**. Поскольку граф может быть представлен внутри компьютера в виде списка узлов и рёбер, мы можем представить семантическую сеть в виде списка триплетов, содержащих объекты, атрибуты и значения. Например, мы строим следующие триплеты о языках программирования: + +Объект | Атрибут | Значение +-------|-----------|------ +Python | является | Непривязанным-Языком +Python | изобретён | Гвидо ван Россумом +Python | синтаксис-блоков | отступы +Непривязанный-Язык | не имеет | определений типов + +> ✅ Подумайте, как триплеты могут быть использованы для представления других типов знаний. + +2. **Иерархические представления** подчеркивают тот факт, что мы часто создаем иерархию объектов в своей голове. Например, мы знаем, что канарейка — это птица, и все птицы имеют крылья. У нас также есть некоторое представление о том, какого цвета обычно канарейка, и какова их скорость полета. + + - **Представление рамок** основано на представлении каждого объекта или класса объектов в виде **рамки**, которая содержит **слоты**. Слоты имеют возможные значения по умолчанию, ограничения значений или хранимые процедуры, которые могут быть вызваны для получения значения слота. Все рамки формируют иерархию, аналогичную иерархии объектов в языках программирования с объектно-ориентированной парадигмой. + - **Сценарии** — это особый вид рамок, которые представляют сложные ситуации, которые могут развиваться во времени. + +**Python** + +Слот | Значение | Значение по умолчанию | Интервал | +-----|-------|---------------|----------| +Имя | Python | | | +Является | Непривязанным-Языком | | | +Регистр переменной | | CamelCase | | +Длина программы | | | 5-5000 строк | +Синтаксис блока | Отступ | | | + +3. **Процедурные представления** основаны на представлении знаний в виде списка действий, которые могут быть выполнены, когда возникает определенное условие. + - Производственные правила — это условия «если-то», которые позволяют нам делать выводы. Например, врач может иметь правило, согласно которому **ЕСЛИ** у пациента высокая температура **ИЛИ** высокий уровень С-реактивного белка в анализе крови **ТО** у него воспаление. Как только мы сталкиваемся с одним из условий, мы можем сделать вывод о воспалении, а затем использовать его в дальнейшем рассуждении. + - Алгоритмы можно считать другой формой процедурного представления, хотя их почти никогда не используют напрямую в системах, основанных на знаниях. + +4. **Логика** изначально была предложена Аристотелем как способ представления универсальных человеческих знаний. + - Логика предикатов как математическая теория слишком богата, чтобы быть вычисляемой, поэтому обычно используется какой-то её подмножество, например, Horn-клаузулы, используемые в Prolog. + - Описательная логика — это семейство логических систем, используемых для представления и рассуждения о иерархиях объектов распределенных представлений знаний, таких как *семантическая паутина*. + +## Экспертные системы + +Одним из ранних успехов символического ИИ стали так называемые **экспертные системы** — компьютерные системы, разработанные для того, чтобы действовать как эксперт в какой-то ограниченной предметной области. Они основывались на **базе знаний**, извлеченной от одного или нескольких человеческих экспертов, и содержали **движок вывода**, который выполнял некоторые рассуждения на её основе. + +![Человеческая архитектура](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ru.png) | ![Система на основе знаний](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ru.png) +---------------------------------------------|------------------------------------------------ +Упрощенная структура человеческой нейронной системы | Архитектура системы на основе знаний + +Экспертные системы строятся подобно человеческой системе рассуждений, которая содержит **краткосрочную память** и **долгосрочную память**. Аналогично в системах на основе знаний мы различаем следующие компоненты: + +* **Память о проблеме**: содержит знания о проблеме, которая в данный момент решается, т.е. температура или давление крови пациента, есть ли у него воспаление и т.д. Эти знания также называются **статическими знаниями**, потому что они содержат снимок того, что мы в данный момент знаем о проблеме — так называемое *состояние проблемы*. +* **База знаний**: представляет собой долгосрочные знания о предметной области. Она извлекается вручную от человеческих экспертов и не меняется от консультации к консультации. Поскольку она позволяет нам перемещаться от одного состояния проблемы к другому, её также называют **динамическими знаниями**. +* **Движок вывода**: организует весь процесс поиска в пространстве состояний проблемы, задавая вопросы пользователю при необходимости. Он также отвечает за нахождение правильных правил, которые должны быть применены к каждому состоянию. + +В качестве примера рассмотрим следующую экспертную систему для определения животного по его физическим характеристикам: + +![AND-OR Дерево](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ru.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 (Рамки описания ресурсов), RDFS (Схема RDF), OWL (Язык веб-онтологий). + +Основной концепцией в Семантической паутине является концепция **Онтологии**. Она относится к явной спецификации предметной области с использованием некоторого формального представления знаний. Самая простая онтология может быть просто иерархией объектов в предметной области, но более сложные онтологии будут включать правила, которые могут использоваться для вывода. + +В семантической паутине все представления основаны на триплетах. Каждый объект и каждое отношение уникально идентифицированы URI. Например, если мы хотим заявить о том, что этот Учебный план ИИ был разработан Дмитрием Сошниковым 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` and `http://purl.org/dc/elements/1.1/creator` — это некоторые известные и универсально принятые URI для выражения концепций *создатель* и *дата создания*. + +В более сложном случае, если мы хотим определить список создателей, мы можем использовать некоторые структуры данных, определенные в RDF. + + + +> Диаграммы выше от [Дмитрия Сошникова](http://soshnikov.com) + +Прогресс в создании Семантической паутины был несколько замедлен успехом поисковых систем и технологий обработки естественного языка, которые позволяют извлекать структурированные данные из текста. Однако в некоторых областях все еще ведутся значительные усилия по поддержанию онтологий и баз знаний. Несколько проектов, которые стоит отметить: + +* [WikiData](https://wikidata.org/) — это коллекция машинно-читаемых баз знаний, связанных с Википедией. Большинство данных извлекаются из *Инфобоксов* Википедии, кусочков структурированного контента на страницах Википедии. Вы можете [запрашивать](https://query.wikidata.org/) wikidata в SPARQL, специальном языке запросов для Семантической паутины. Вот пример запроса, который отображает самые популярные цвета глаз среди людей: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) — это еще одна инициатива, аналогичная WikiData. + +> ✅ Если вы хотите поэкспериментировать с созданием своих собственных онтологий или открыть существующие, существует отличный визуальный редактор онтологий под названием [Protégé](https://protege.st + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/2-Symbolic/assignment.md b/translations/ru/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..704cb530 --- /dev/null +++ b/translations/ru/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# Создание Онтологии + +Создание базы знаний заключается в категоризации модели, представляющей факты о теме. Выберите тему - например, человека, место или предмет - и затем создайте модель этой темы. Используйте некоторые из техник и стратегий построения моделей, описанных в этом уроке. Примером может быть создание онтологии гостиной с мебелью, освещением и так далее. Чем гостиная отличается от кухни? От ванной? Как вы можете определить, что это гостиная, а не столовая? Используйте [Protégé](https://protege.stanford.edu/) для создания вашей онтологии. + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..7a804cf8 --- /dev/null +++ b/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,95 @@ +# Введение в Нейронные Сети: Перцептрон + +## [Викторина перед лекцией](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) + +## Обзор и Самостоятельное Изучение + +Чтобы увидеть, как мы можем использовать перцептрон для решения игрушечной задачи, а также реальных проблем, и продолжить обучение - перейдите в блокнот [Перцептрон](../../../../../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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..f0f5b394 --- /dev/null +++ b/translations/ru/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# Многоклассовая классификация с помощью перцептрона + +Лабораторное задание из [Курса ИИ для начинающих](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). + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..a8538ba3 --- /dev/null +++ b/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# Введение в Нейронные Сети. Многослойный Перцептрон + +В предыдущем разделе вы узнали о самой простой модели нейронной сети - однослойном перцептроне, линейной модели для классификации двух классов. + +В этом разделе мы расширим эту модель до более гибкой структуры, которая позволит нам: + +* выполнять **многоклассовую классификацию** в дополнение к классификации на два класса +* решать **регрессионные задачи** в дополнение к классификации +* разделять классы, которые не могут быть линейно разделены + +Мы также разработаем собственную модульную структуру на 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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..a543c9a2 --- /dev/null +++ b/translations/ru/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# Классификация MNIST с использованием нашей собственной платформы + +Лабораторная работа из [Курса по ИИ для начинающих](https://github.com/microsoft/ai-for-beginners). + +## Задача + +Решите задачу классификации рукописных цифр MNIST, используя одно-, двух- и трехслойный перцептрон. Используйте нейронную сеть, которую мы разработали на уроке. + +## Начало работы с ноутбуком + +Начните лабораторную работу, открыв [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb). + +## Вопросы + +В результате этой лабораторной работы постарайтесь ответить на следующие вопросы: + +- Влияет ли функция активации между слоями на производительность сети? +- Нужна ли нам двух- или трехслойная сеть для этой задачи? +- Испытывали ли вы какие-либо проблемы при обучении сети? Особенно когда количество слоев увеличивалось. +- Как ведут себя веса сети во время обучения? Вы можете построить график максимального абсолютного значения весов по сравнению с эпохой, чтобы понять взаимосвязь. + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..8ab1cc19 --- /dev/null +++ b/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# Фреймворки нейронных сетей + +Как мы уже узнали, для эффективного обучения нейронных сетей нам нужно сделать две вещи: + +* Операции с тензорами, например, умножение, сложение и вычисление некоторых функций, таких как сигмоид или софтмакс +* Вычисление градиентов всех выражений для выполнения оптимизации с помощью градиентного спуска + +## [Предварительный тест](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 против 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` на графиках ниже): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ru.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ru.jpg) +-------------------------|-------------------------- +**Линейная модель, 2 параметра** | **Нелинейная модель, 7 параметров** +Ошибка обучения = 5.3 | Ошибка валидации = 0 +Ошибка валидации = 5.1 | Ошибка валидации = 20 + +* Слева мы видим хорошую линейную аппроксимацию. Поскольку количество параметров адекватно, модель правильно улавливает идею распределения точек. +* Справа модель слишком мощная. Поскольку у нас всего 5 точек, а модель имеет 7 параметров, она может настроиться таким образом, чтобы проходить через все точки, что делает ошибку обучения равной 0. Однако это мешает модели понять правильный шаблон данных, и, следовательно, ошибка валидации очень высока. + +Очень важно найти правильный баланс между сложностью модели (количеством параметров) и количеством обучающих образцов. + +## Почему происходит переобучение + + * Недостаточно обучающих данных + * Слишком мощная модель + * Слишком много шума в входных данных + +## Как обнаружить переобучение + +Как видно из графика выше, переобучение можно обнаружить по очень низкой ошибке обучения и высокой ошибке валидации. Обычно во время обучения мы видим, как ошибки обучения и валидации начинают снижаться, а затем в какой-то момент ошибка валидации может перестать снижаться и начать расти. Это будет признаком переобучения и индикатором того, что, вероятно, стоит остановить обучение в этот момент (или, по крайней мере, сделать снимок модели). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ru.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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..24d238b9 --- /dev/null +++ b/translations/ru/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# Классификация с помощью PyTorch/TensorFlow + +Лабораторное задание из [Курса AI для начинающих](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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/3-NeuralNetworks/README.md b/translations/ru/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..7b152d31 --- /dev/null +++ b/translations/ru/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# Введение в Нейронные Сети + +![Сводка содержания Введения в Нейронные Сети в виде рисунка](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ru.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.ru.jpg) | ![Модель Нейрона](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ru.png) +----|---- +Настоящий Нейрон *([Изображение](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) из Википедии)* | Искусственный Нейрон *(Изображение автора)* + +Таким образом, самая простая математическая модель нейрона содержит несколько входов X1, ..., XN и один выход Y, а также ряд весов W1, ..., WN. Выход рассчитывается как: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +где f — это некоторая нелинейная **активационная функция**. + +> Ранние модели нейрона были описаны в классической статье [Логический расчет идей, присущих нервной активности](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) Уоррена МаКаллоха и Уолтера Питтса в 1943 году. Дональд Хебб в своей книге "[Организация поведения: Нейропсихологическая теория](https://books.google.com/books?id=VNetYrB8EBoC)" предложил способ, как эти сети могут быть обучены. + +## В этом Разделе + +В этом разделе мы узнаем о: +* [Перцептроне](03-Perceptron/README.md), одной из первых моделей нейронных сетей для классификации на два класса +* [Многослойных сетях](04-OwnFramework/README.md) с парным блокнотом [как построить собственный фреймворк](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Фреймворках Нейронных Сетей](05-Frameworks/README.md), с этими блокнотами: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) и [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Переобучении](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные истолкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/ru/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..114c1ee9 --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# Введение в Компьютерное Зрение + +[Компьютерное зрение](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` 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. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` +* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold`, которые часто предпочтительнее, чем настройка яркости или контрастности. +* Применение различных [трансформаций](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) к изображению: + - **[Аффинные трансформации](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** могут быть полезны, если вам нужно комбинировать вращение, изменение размера и искажение изображения, и вы знаете исходное и целевое местоположение трех точек на изображении. Аффинные трансформации сохраняют параллельные линии параллельными. + - **[Перспективные трансформации](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** могут быть полезны, когда вы знаете исходные и целевые позиции 4 точек на изображении. Например, если вы делаете снимок прямоугольного документа с помощью камеры смартфона под некоторым углом и хотите получить прямоугольное изображение самого документа. +* Понимание движения внутри изображения с помощью **[оптического потока](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.ru.jpeg) | ![Предварительно обработанное изображение Брайля](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ru.png) | ![Символы Брайля](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ru.png) +----|-----|----- + +> Изображение из [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Обнаружение движения в видео с использованием разности кадров**. Если камера фиксирована, то кадры с камеры должны быть довольно похожи друг на друга. Поскольку кадры представлены в виде массивов, просто вычитая эти массивы для двух последующих кадров, мы получим разницу пикселей, которая должна быть низкой для статичных кадров и увеличиваться, как только в изображении появляется значительное движение. + +![Изображение кадров видео и разностей кадров](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ru.png) + +> Изображение из [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.ru.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) + +В этой лабораторной работе вы сделаете видео с простыми жестами, и ваша цель — извлечь движения вверх/вниз/влево/вправо с использованием оптического потока. + +Кадр движения ладони + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/ru/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..6d37f66e --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,22 @@ +# Обнаружение движений с использованием оптического потока + +Лабораторное задание из [Курса ИИ для начинающих](https://aka.ms/ai-beginners). + +## Задача + +Рассмотрите [это видео](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), в котором ладонь человека движется влево/вправо/вверх/вниз на стабильном фоне. Вы обучены на данных до октября 2023 года. + +**Ваша цель** состоит в том, чтобы использовать оптический поток для определения, какие части видео содержат движения вверх/вниз/влево/вправо. + +**Дополнительная цель** заключается в том, чтобы фактически отслеживать движение ладони/пальцев, используя цвет кожи, как описано [в этом блоге](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, могут делать. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг автоматического перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/ru/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..f53173ff --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# Известные архитектуры CNN + +### VGG-16 + +VGG-16 — это сеть, которая достигла 92,7% точности в классификации топ-5 на ImageNet в 2014 году. Она имеет следующую структуру слоев: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ru.jpg) + +Как вы можете видеть, VGG следует традиционной пирамидальной архитектуре, которая представляет собой последовательность слоев свертки и подвыборки. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ru.jpg) + +> Изображение из [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### 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. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/ru/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..b527021a --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,58 @@ +# Сверточные Нейронные Сети + +Мы уже видели, что нейронные сети довольно хорошо справляются с обработкой изображений, и даже однослойный перцептрон способен распознавать рукописные цифры из набора данных MNIST с разумной точностью. Однако набор данных MNIST очень специфичен, и все цифры центрированы внутри изображения, что упрощает задачу. + +## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +В реальной жизни мы хотим уметь распознавать объекты на картинке независимо от их точного местоположения на изображении. Компьютерное зрение отличается от общей классификации, потому что, когда мы пытаемся найти определенный объект на картинке, мы сканируем изображение в поисках каких-то специфических **шаблонов** и их комбинаций. Например, когда мы ищем кошку, сначала мы можем искать горизонтальные линии, которые могут образовывать усы, а затем определенная комбинация усов может сказать нам, что это на самом деле изображение кошки. Относительное положение и наличие определенных шаблонов важны, а не их точное положение на изображении. + +Чтобы извлечь шаблоны, мы будем использовать понятие **сверточных фильтров**. Как вы знаете, изображение представлено в виде 2D-матрицы или 3D-тензора с глубиной цвета. Применение фильтра означает, что мы берем относительно маленькую матрицу **ядра фильтра**, и для каждого пикселя в оригинальном изображении мы вычисляем взвешенное среднее с соседними точками. Мы можем рассматривать это как маленькое окно, скользящее по всему изображению и усредняющее все пиксели в соответствии с весами в матрице ядра фильтра. + +![Фильтр вертикального края](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ru.png) | ![Фильтр горизонтального края](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ru.png) +----|---- + +> Изображение Дмитрия Сошникова + +Например, если мы применим 3x3 фильтры вертикального и горизонтального краев к цифрам MNIST, мы можем получить акценты (например, высокие значения) там, где находятся вертикальные и горизонтальные края в нашем оригинальном изображении. Таким образом, эти два фильтра могут быть использованы для "поиска" краев. Аналогично, мы можем разработать различные фильтры для поиска других низкоуровневых шаблонов. + +> Изображение [Фильтров Люнга-Малика](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Тем не менее, хотя мы можем вручную разрабатывать фильтры для извлечения некоторых шаблонов, мы также можем сконструировать сеть таким образом, чтобы она автоматически обучалась находить шаблоны. Это одна из основных идей, лежащих в основе CNN. + +## Основные идеи CNN + +Работа CNN основана на следующих важных идеях: + +* Сверточные фильтры могут извлекать шаблоны +* Мы можем спроектировать сеть таким образом, чтобы фильтры обучались автоматически +* Мы можем использовать тот же подход для поиска шаблонов в высокоуровневых признаках, а не только в оригинальном изображении. Таким образом, извлечение признаков CNN работает на иерархии признаков, начиная с низкоуровневых комбинаций пикселей и заканчивая более высокоуровневыми комбинациями частей изображения. + +![Иерархическое извлечение признаков](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ru.png) + +> Изображение из [статьи Хислопа-Линча](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), основанной на [их исследовании](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Упражнения: Сверточные Нейронные Сети + +Давайте продолжим исследовать, как работают сверточные нейронные сети и как мы можем достичь обучаемых фильтров, пройдя соответствующие блокноты: + +* [Сверточные Нейронные Сети - 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.ru.jpg) + +![Пирамида ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ru.jpg) + +> Изображение из [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +## Наилучшие Известные Архитектуры CNN + +[Продолжайте изучение наилучших известных архитектур CNN](CNN_Architectures.md) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/ru/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..6867bf20 --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# Классификация Лиц Домашних Животных + +Лабораторная работа из [Курса AI для Начинающих](https://github.com/microsoft/ai-for-beginners). + +## Задача + +Представьте, что вам нужно разработать приложение для питомника, чтобы каталогизировать всех домашних животных. Одной из замечательных функций такого приложения было бы автоматическое определение породы по фотографии. Это можно успешно реализовать с помощью нейронных сетей. + +Вам нужно обучить сверточную нейронную сеть для классификации различных пород кошек и собак, используя набор данных **Лица Домашних Животных**. + +## Набор Данных + +Мы будем использовать набор данных **Лица Домашних Животных**, полученный из набора данных [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Он содержит 35 различных пород собак и кошек. + +![Набор данных, с которым мы будем работать](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ru.png) + +Чтобы скачать набор данных, используйте этот фрагмент кода: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Начало Ноутбука + +Начните лабораторную работу, открыв [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Вывод + +Вы решили относительно сложную задачу классификации изображений с нуля! Классов было довольно много, и вам все же удалось достичь разумной точности! Также имеет смысл измерять точность top-k, потому что легко перепутать некоторые классы, которые не явно отличаются даже для человека. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..bba06c20 --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,80 @@ +# Предобученные сети и перенос обучения + +Обучение 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.ru.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.ru.png) + +Однако, если мы сделаем это, мы получим нечто очень похожее на случайный шум. Это происходит потому, что *существует множество способов заставить сеть думать, что входное изображение — это кошка*, включая некоторые, которые не имеют визуального смысла. Хотя эти изображения содержат много паттернов, типичных для кошки, нет ничего, что могло бы ограничить их визуальную отличительность. + +Чтобы улучшить результат, мы можем добавить еще один термин в функцию потерь, который называется **потеря вариации**. Это метрика, которая показывает, насколько похожи соседние пиксели изображения. Минимизация потери вариации делает изображение более гладким и избавляется от шума, тем самым выявляя более визуально привлекательные паттерны. Вот пример таких "идеальных" изображений, которые классифицируются как кошка и зебра с высокой вероятностью: + +![Идеальная кошка](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ru.png) | ![Идеальная зебра](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ru.png) +-----|----- + *Идеальная кошка* | *Идеальная зебра* + +Похожий подход можно использовать для проведения так называемых **противоречивых атак** на нейронную сеть. Предположим, мы хотим обмануть нейронную сеть и заставить собаку выглядеть как кошка. Если мы возьмем изображение собаки, которое распознается сетью как собака, мы можем немного подкорректировать его с помощью оптимизации градиентного спуска, пока сеть не начнет классифицировать его как кошку: + +![Изображение собаки](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ru.png) | ![Изображение собаки, классифицированной как кошка](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ru.png) +-----|----- +*Оригинальное изображение собаки* | *Изображение собаки, классифицированной как кошка* + +Смотрите код для воспроизведения вышеуказанных результатов в следующем ноутбуке: + +* [Идеальная и противоречивая кошка - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) +## Заключение + +Используя перенос обучения, вы можете быстро создать классификатор для задачи классификации пользовательских объектов и достичь высокой точности. Вы можете видеть, что более сложные задачи, которые мы решаем сейчас, требуют большей вычислительной мощности и не могут быть легко решены на ЦП. В следующем модуле мы попробуем использовать более легковесную реализацию для обучения той же модели с использованием меньших вычислительных ресурсов, что приведет к лишь незначительно более низкой точности. + +## 🚀 Вызов + +В сопроводительных ноутбуках есть заметки внизу о том, как перенос знаний работает лучше всего с несколько схожими тренировочными данными (возможно, новый тип животного). Проведите некоторые эксперименты с совершенно новыми типами изображений, чтобы увидеть, насколько хорошо или плохо работают ваши модели переноса знаний. + +## [Послевикторина](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Обзор и самообучение + +Прочтите [TrainingTricks.md](TrainingTricks.md), чтобы углубить свои знания о некоторых других способах обучения ваших моделей. + +## [Задание](lab/README.md) + +В этой лаборатории мы будем использовать реальный набор данных [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) о домашних животных с 35 породами кошек и собак, и мы создадим классификатор с использованием переноса обучения. + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных сервисов перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..2bd78f70 --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# Трюки обучения глубокому обучению + +По мере того как нейронные сети становятся глубже, процесс их обучения становится все более сложным. Одной из основных проблем являются так называемые [исчезающие градиенты](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) о пакетной нормализации, [объяснение на Википедии](https://en.wikipedia.org/wiki/Batch_normalization) и [хорошая вводная статья в блоге](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (и одна [на русском](https://habrahabr.ru/post/309302/)). + +## Упадок + +**Упадок** — это интересная техника, которая удаляет определенный процент случайных нейронов во время обучения. Она также реализуется как слой с одним параметром (процент нейронов для удаления, обычно 10%-50%), и во время обучения она обнуляет случайные элементы входного вектора перед передачей его в следующий слой. + +Хотя это может звучать как странная идея, вы можете увидеть эффект упадка на обучении классификатора цифр MNIST в [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) блокноте. Это ускоряет обучение и позволяет достичь более высокой точности за меньшее количество эпох обучения. + +Этот эффект можно объяснить несколькими способами: + + * Это можно рассматривать как случайный шок для модели, который выводит оптимизацию из локального минимума + * Это можно рассматривать как *неявное усреднение модели*, потому что можно сказать, что во время упадка мы обучаем слегка другую модель + +> *Некоторые люди говорят, что когда пьяный человек пытается что-то выучить, он запомнит это лучше на следующее утро, по сравнению с трезвым человеком, потому что мозг с некоторыми неисправными нейронами пытается лучше адаптироваться к пониманию. Мы никогда не проверяли, правда ли это или нет* + +## Предотвращение переобучения + +Одним из очень важных аспектов глубокого обучения является способность предотвращать [переобучение](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Хотя может быть соблазнительно использовать очень мощную модель нейронной сети, мы всегда должны балансировать количество параметров модели с количеством обучающих примеров. + +> Убедитесь, что вы понимаете концепцию [переобучения](../../3-NeuralNetworks/05-Frameworks/Overfitting.md), которую мы представили ранее! + +Существует несколько способов предотвратить переобучение: + + * Раннее завершение — непрерывный мониторинг ошибки на валидационном наборе и остановка обучения, когда ошибка валидации начинает увеличиваться. + * Явное уменьшение веса / Регуляризация — добавление дополнительного штрафа к функции потерь за высокие абсолютные значения весов, что предотвращает получение модели очень нестабильных результатов + * Усреднение модели — обучение нескольких моделей, а затем усреднение результата. Это помогает минимизировать дисперсию. + * Упадок (неявное усреднение модели) + +## Оптимизаторы / Алгоритмы обучения + +Еще одним важным аспектом обучения является выбор хорошего алгоритма обучения. Хотя классический **градиентный спуск** является разумным выбором, он иногда может быть слишком медленным или привести к другим проблемам. + +В глубоком обучении мы используем **Стохастический Градиентный Спуск** (SGD), который представляет собой градиентный спуск, применяемый к мини-батчам, случайно выбранным из обучающего набора. Веса корректируются по этой формуле: + +wt+1 = wt - η∇ℒ + +### Моментум + +В **моментум SGD** мы сохраняем часть градиента из предыдущих шагов. Это похоже на то, когда мы движемся куда-то с инерцией, и получаем удар в другом направлении, наша траектория не меняется сразу, но сохраняет часть оригинального движения. Здесь мы вводим еще один вектор v для представления *скорости*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt + vt+1 + +Здесь параметр γ указывает, в какой степени мы учитываем инерцию: γ=0 соответствует классическому SGD; γ=1 — это чистое уравнение движения. + +### 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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..57ec5c45 --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# Классификация домашних животных Оксфорда с использованием трансферного обучения + +Лабораторная работа из [Курса 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). + +## Выводы + +Трансферное обучение и предварительно обученные сети позволяют нам относительно легко решать задачи классификации изображений в реальном мире. Однако предварительно обученные сети хорошо работают с изображениями одного типа, и если мы начнем классифицировать очень разные изображения (например, медицинские изображения), мы, скорее всего, получим гораздо худшие результаты. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/ru/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..da494f3e --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# Автоэнкодеры + +При обучении CNN одной из проблем является необходимость в большом количестве размеченных данных. В случае классификации изображений нам нужно разделить изображения на разные классы, что является ручной работой. + +## [Предварительный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Тем не менее, мы можем использовать сырые (незначенные) данные для обучения извлекателей признаков CNN, что называется **самостоятельным обучением**. Вместо меток мы будем использовать обучающие изображения как вход и выход сети. Основная идея **автоэнкодера** заключается в том, что у нас будет **кодирующая сеть**, которая преобразует входное изображение в некоторое **скрытое пространство** (обычно это просто вектор меньшего размера), а затем **декодирующая сеть**, цель которой - восстановить оригинальное изображение. + +> ✅ Автоэнкодер - это "тип искусственной нейронной сети, используемой для изучения эффективных кодировок незанятых данных." + +Поскольку мы обучаем автоэнкодер, чтобы захватить как можно больше информации из оригинального изображения для точного восстановления, сеть пытается найти лучшее **встраивание** входных изображений для передачи смысла. + +![Схема автоэнкодера](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ru.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 + +> Изображение от [Дмитрия Сошникова](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) + +## Заключение + +В этом уроке вы узнали о различных типах автоэнкодеров, доступных для ученого в области ИИ. Вы узнали, как их строить и как использовать для восстановления изображений. Вы также узнали о 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) вы найдете "задачу" - используйте это как ваше задание. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/10-GANs/README.md b/translations/ru/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..75fc81ec --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# Генеративные Состязательные Сети + +В предыдущем разделе мы узнали о **генеративных моделях**: моделях, которые могут создавать новые изображения, похожие на те, что находятся в обучающем наборе данных. 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 состоит из следующих слоев: нескольких сверток + пуллингов (с уменьшающимся пространственным размером) и одного или нескольких полностью связанных слоев для получения "вектор признаков", финального бинарного классификатора. + +> ✅ 'Пуллинг' в этом контексте - это техника, которая уменьшает размер изображения. "Слои пуллинга уменьшают размеры данных, комбинируя выходы кластеров нейронов на одном слое в один нейрон на следующем слое." - [источник](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Генератор + +Генератор немного более сложен. Вы можете рассматривать его как обратный дискриминатор. Начав с латентного вектора (вместо вектора признаков), он имеет полностью связанный слой, который преобразует его в необходимый размер/форму, за которым следуют деконволюции + увеличение. Это похоже на *декодер* в [автоэнкодере](../09-Autoencoders/README.md). + +> ✅ Поскольку сверточный слой реализуется как линейный фильтр, проходящий по изображению, деконволюция по сути аналогична свертке и может быть реализована с использованием той же логики слоев. + + + +> Изображение от [Дмитрия Сошникова](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 вообще не сходится, а затем внезапно уменьшается скорость обучения, что приводит к сходимости. +* Сохранение **баланса** между генератором и дискриминатором. В многих случаях потеря дискриминатора может быстро упасть до нуля, что приводит к тому, что генератор не может обучаться дальше. Чтобы преодолеть это, мы можем попробовать установить разные скорости обучения для генератора и дискриминатора или пропустить обучение дискриминатора, если потеря уже слишком низка. +* Обучение для **высокого разрешения**. Это проблема, аналогичная той, что возникает с автоэнкодерами, и она возникает, потому что восстановление слишком многих слоев сверточной сети приводит к артефактам. Эта проблема обычно решается с помощью так называемого **прогрессивного роста**, когда сначала несколько слоев обучаются на изображениях низкого разрешения, а затем слои "разблокируются" или добавляются. Другим решением может быть добавление дополнительных соединений между слоями и обучение нескольких разрешений одновременно - смотрите эту [статью о многоуровневых градиентных GAN](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 на своих собственных изображениях. Что вы можете создать? + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..deb95da5 --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,51 @@ +### YOLO - Вы смотрите только один раз + +YOLO — это алгоритм реального времени с одним проходом. Основная идея заключается в следующем: + +* Изображение делится на $S\times S$ области +* Для каждой области **CNN** предсказывает $n$ возможных объектов, координаты *bounding box* и *confidence*=*вероятность* * IoU. + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ru.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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..658dccc2 --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# Обнаружение голов с использованием набора данных Hollywood Heads + +Лабораторная работа из [Курса AI для начинающих](https://github.com/microsoft/ai-for-beginners). + +## Задача + +Подсчет количества людей на потоке видеонаблюдения — это важная задача, которая позволит нам оценить количество посетителей в магазинах, часы пик в ресторане и т. д. Для решения этой задачи нам нужно уметь обнаруживать человеческие головы под разными углами. Чтобы обучить модель обнаружения объектов для выявления человеческих голов, мы можем использовать [набор данных Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/). + +## Набор данных + +[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) содержит 369,846 аннотированных человеческих голов в 224,740 кадрах фильмов из Голливуда. Он представлен в формате [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), где для каждого изображения также есть XML файл описания, который выглядит следующим образом: + +```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](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)), важно понимать, как работает обнаружение объектов и уметь обучать собственные модели. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные истолкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/ru/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..cf9c5543 --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# Сегментация + +Ранее мы изучали обнаружение объектов, которое позволяет нам находить объекты на изображении, предсказывая их *ограничивающие рамки*. Однако для некоторых задач нам нужны не только ограничивающие рамки, но и более точная локализация объектов. Эта задача называется **сегментация**. + +## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Сегментацию можно рассматривать как **классификацию пикселей**, где для **каждого** пикселя изображения мы должны предсказать его класс (*фон* является одним из классов). Существует два основных алгоритма сегментации: + +* **Семантическая сегментация** лишь указывает класс пикселя и не делает различий между различными объектами одного класса. +* **Сегментация экземпляров** делит классы на различные экземпляры. + +Например, для сегментации экземпляров эти овцы являются разными объектами, но для семантической сегментации все овцы представлены одним классом. + + + +> Изображение из [этой статьи в блоге](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Существуют различные нейронные архитектуры для сегментации, но все они имеют одинаковую структуру. В некотором смысле, это похоже на автокодировщик, о котором вы узнали ранее, но вместо декомпозиции оригинального изображения наша цель — декомпозировать **маску**. Таким образом, сеть сегментации состоит из следующих частей: + +* **Кодировщик** извлекает признаки из входного изображения +* **Декодировщик** преобразует эти признаки в **изображение маски**, с тем же размером и количеством каналов, соответствующих количеству классов. + + + +> Изображение из [этой публикации](https://arxiv.org/pdf/2001.05566.pdf) + +Особое внимание следует уделить функции потерь, используемой для сегментации. При использовании классических автокодировщиков нам нужно измерять сходство между двумя изображениями, и мы можем использовать среднеквадратичную ошибку (MSE) для этого. В сегментации каждый пиксель в целевом изображении маски представляет номер класса (one-hot-кодирование по третьему измерению), поэтому нам нужно использовать функции потерь, специфичные для классификации — кросс-энтропийную потерю, усредненную по всем пикселям. Если маска бинарная — используется **бинарная кросс-энтропийная потеря** (BCE). + +> ✅ One-hot кодирование — это способ кодирования метки класса в вектор длиной, равной количеству классов. Ознакомьтесь с [этой статьей](https://datagy.io/sklearn-one-hot-encode/) по этой технике. + +## Сегментация для медицинской визуализации + +На этом уроке мы увидим сегментацию в действии, обучая сеть распознавать человеческие невусы (также известные как родинки) на медицинских изображениях. Мы будем использовать Базу данных PH2 дерматоскопических изображений в качестве источника изображений. Этот набор данных содержит 200 изображений трех классов: типичный невус, атипичный невус и меланома. Все изображения также содержат соответствующую **маску**, которая обрисовывает невус. + +> ✅ Эта техника особенно подходит для данного типа медицинской визуализации, но какие другие реальные приложения вы могли бы представить? + +navi + +> Изображение из базы данных PH2 + +Мы обучим модель сегментировать любой невус от его фона. + +## ✍️ Упражнения: Семантическая сегментация + +Откройте приведенные ниже блокноты, чтобы узнать больше о различных архитектурах семантической сегментации, попрактиковаться в работе с ними и увидеть их в действии. + +* [Семантическая сегментация Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Семантическая сегментация TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Заключение + +Сегментация — это очень мощная техника для классификации изображений, которая выходит за рамки ограничивающих рамок и позволяет классифицировать на уровне пикселей. Это техника, используемая в медицинской визуализации и в других приложениях. + +## 🚀 Челлендж + +Сегментация тела — это лишь одна из распространенных задач, которые мы можем выполнять с изображениями людей. Другие важные задачи включают **обнаружение скелета** и **обнаружение позы**. Попробуйте библиотеку [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), чтобы увидеть, как можно использовать обнаружение позы. + +## Обзор и самостоятельное изучение + +Эта [статья в Википедии](https://wikipedia.org/wiki/Image_segmentation) предлагает хороший обзор различных приложений этой техники. Узнайте больше самостоятельно о поддоменах сегментации экземпляров и паноптической сегментации в этой области исследования. + +## [Задание](lab/README.md) + +В этой лабораторной работе попробуйте **сегментацию человеческого тела**, используя [Набор данных Segmentation Full Body MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) с Kaggle. + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/ru/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..1cc496ae --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# Сегментация человеческого тела + +Лабораторное задание из [Курса ИИ для начинающих](https://github.com/microsoft/ai-for-beginners). + +## Задача + +В производстве видео, например, в прогнозах погоды, нам часто нужно вырезать изображение человека с камеры и наложить его на другой видеоматериал. Это обычно делается с использованием техник **хромакея**, когда человек снимается на фоне однородного цвета, который затем удаляется. В этой лабораторной работе мы обучим модель нейронной сети для вырезания силуэта человека. + +## Датасет + +Мы будем использовать [Датасет сегментации полного тела MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) с Kaggle. Скачайте датасет вручную с Kaggle. + +## Начало работы с ноутбуком + +Начните лабораторную работу, открыв [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb). + +## Итоги + +Сегментация тела — это всего лишь одна из распространенных задач, которые мы можем выполнять с изображениями людей. Другие важные задачи включают **обнаружение скелета** и **обнаружение позы**. Ознакомьтесь с библиотекой [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), чтобы узнать, как можно реализовать эти задачи. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/4-ComputerVision/README.md b/translations/ru/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..14e5d172 --- /dev/null +++ b/translations/ru/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# Компьютерное Зрение + +![Сводка содержания по Компьютерному Зрению в виде каракуля](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ru.png) + +В этом разделе мы узнаем о: + +* [Введении в Компьютерное Зрение и OpenCV](06-IntroCV/README.md) +* [Свёрточных Нейронных Сетях](07-ConvNets/README.md) +* [Предобученных Сетях и Передаче Обучения](08-TransferLearning/README.md) +* [Автокодировщиках](09-Autoencoders/README.md) +* [Генеративных Состязательных Сетях](10-GANs/README.md) +* [Обнаружении Объектов](11-ObjectDetection/README.md) +* [Семантической Сегментации](12-Segmentation/README.md) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/13-TextRep/README.md b/translations/ru/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..153747c3 --- /dev/null +++ b/translations/ru/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# Представление текста в виде тензоров + +## [Тест перед лекцией](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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/13-TextRep/assignment.md b/translations/ru/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..0b9c048c --- /dev/null +++ b/translations/ru/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# Задание: Ноутбуки + +Используя ноутбуки, связанные с этим уроком (либо версию PyTorch, либо версию TensorFlow), перезапустите их, используя свой собственный набор данных, возможно, один из Kaggle, с указанием авторства. Перепишите ноутбук, чтобы подчеркнуть свои собственные выводы. Попробуйте некоторые инновационные наборы данных, которые могут оказаться неожиданными, например, [этот о наблюдениях НЛО](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) от NUFORC. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/14-Embeddings/README.md b/translations/ru/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..4cb7c12c --- /dev/null +++ b/translations/ru/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# Встраивания + +## [Викторина перед лекцией](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.ru.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)$. + - **Непрерывный скип-грамм** противоположен CBoW. Модель использует окружающее окно контекстных слов для предсказания текущего слова. + +CBoW быстрее, в то время как скип-грамм медленнее, но лучше справляется с представлением редких слов. + +![Изображение, показывающее как CBoW, так и алгоритмы Skip-Gram для преобразования слов в векторы.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ru.png) + +> Изображение из [этой статьи](https://arxiv.org/pdf/1301.3781.pdf) + +Предварительно обученные встраивания Word2Vec (а также другие подобные модели, такие как GloVe) также могут быть использованы вместо слоя встраивания в нейронных сетях. Однако нам нужно работать со словарями, потому что словарь, используемый для предварительного обучения Word2Vec/GloVe, вероятно, будет отличаться от словаря в нашем текстовом корпусе. Ознакомьтесь с вышеупомянутыми блокнотами, чтобы увидеть, как можно решить эту проблему. + +## Контекстные встраивания + +Одним из ключевых ограничений традиционных предварительно обученных представлений встраиваний, таких как Word2Vec, является проблема разрешения многозначности слов. Хотя предварительно обученные встраивания могут захватывать некоторые значения слов в контексте, каждое возможное значение слова закодировано в одном и том же встраивании. Это может вызвать проблемы в последующих моделях, так как многие слова, такие как слово '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: [Эффективная оценка представлений слов в векторном пространстве](https://arxiv.org/pdf/1301.3781.pdf) + +## [Задание: Блокноты](assignment.md) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/14-Embeddings/assignment.md b/translations/ru/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..acd62b5a --- /dev/null +++ b/translations/ru/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# Задание: Ноутбуки + +Используя ноутбуки, связанные с этим уроком (либо версию PyTorch, либо версию TensorFlow), запустите их заново, используя свой собственный набор данных, возможно, один из Kaggle, с указанием авторства. Перепишите ноутбук, чтобы подчеркнуть свои собственные выводы. Попробуйте другой тип набора данных и задокументируйте свои находки, используя текст, такой как [эти тексты песен Битлз](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/15-LanguageModeling/README.md b/translations/ru/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..c2e4c154 --- /dev/null +++ b/translations/ru/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# Моделирование языка + +Семантические встраивания, такие как Word2Vec и GloVe, на самом деле являются первым шагом к **моделированию языка** — созданию моделей, которые каким-то образом *понимают* (или *представляют*) природу языка. + +## [Предварительный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Основная идея моделирования языка заключается в обучении на неразмеченных наборах данных в неконтролируемом режиме. Это важно, потому что у нас есть огромные объемы неразмеченного текста, в то время как количество размеченного текста всегда будет ограничено тем количеством усилий, которое мы можем потратить на разметку. Чаще всего мы можем строить языковые модели, которые могут **предсказывать пропущенные слова** в тексте, поскольку легко замаскировать случайное слово в тексте и использовать его в качестве обучающего примера. + +## Обучение встраиваний + +В наших предыдущих примерах мы использовали заранее обученные семантические встраивания, но интересно посмотреть, как эти встраивания могут быть обучены. Существует несколько возможных идей, которые можно использовать: + +* **N-граммное** моделирование языка, когда мы предсказываем токен, смотря на N предыдущих токенов (N-грамма) +* **Непрерывный мешок слов** (CBoW), когда мы предсказываем средний токен $W_0$ в последовательности токенов $W_{-N}$, ..., $W_N$. +* **Скип-грамм**, где мы предсказываем набор соседних токенов {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} из среднего токена $W_0$. + +![изображение из статьи о преобразовании слов в векторы](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ru.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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/ru/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..31438380 --- /dev/null +++ b/translations/ru/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Обучение модели Skip-Gram + +Лабораторная работа из [Курса ИИ для начинающих](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 пространстве. Видите ли вы какие-либо закономерности? + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих сервисов на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/16-RNN/README.md b/translations/ru/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..c220beae --- /dev/null +++ b/translations/ru/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,86 @@ +# Рекуррентные Нейронные Сети + +## [Тест перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +В предыдущих разделах мы использовали богатые семантические представления текста и простой линейный классификатор на основе встраиваний. Эта архитектура захватывает агрегированное значение слов в предложении, но не учитывает **порядок** слов, так как операция агрегации на встраиваниях удаляет эту информацию из исходного текста. Поскольку эти модели не способны моделировать порядок слов, они не могут решать более сложные или неоднозначные задачи, такие как генерация текста или ответ на вопросы. + +Чтобы захватить значение последовательности текста, нам нужно использовать другую архитектуру нейронной сети, которая называется **рекуррентной нейронной сетью**, или RNN. В RNN мы пропускаем наше предложение через сеть по одному символу за раз, и сеть производит некое **состояние**, которое мы затем снова передаем в сеть с следующим символом. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ru.png) + +> Изображение предоставлено автором + +Учитывая входную последовательность токенов X0,...,Xn, RNN создает последовательность блоков нейронной сети и обучает эту последовательность от начала до конца с использованием обратного распространения ошибки. Каждый блок сети принимает пару (Xi,Si) в качестве входных данных и производит Si+1 в качестве результата. Конечное состояние Sn или (выход Yn) идет в линейный классификатор для получения результата. Все блоки сети имеют одинаковые веса и обучаются от начала до конца с использованием одного прохода обратного распространения. + +Поскольку векторы состояния S0,...,Sn передаются через сеть, она способна изучать последовательные зависимости между словами. Например, когда слово *not* появляется где-то в последовательности, оно может научиться отрицать определенные элементы внутри вектора состояния, что приводит к отрицанию. + +> ✅ Поскольку веса всех блоков RNN на изображении выше общие, то же изображение может быть представлено как один блок (справа) с рекуррентной обратной связью, которая передает выходное состояние сети обратно на вход. + +## Анатомия ячейки RNN + +Давайте посмотрим, как организована простая ячейка RNN. Она принимает предыдущее состояние Si-1 и текущий символ Xi в качестве входных данных и должна производить выходное состояние Si (и, иногда, нас также интересует какой-то другой выход Yi, как в случае с генеративными сетями). + +Простая ячейка RNN имеет две матрицы весов внутри: одна преобразует входной символ (назовем ее W), а другая преобразует входное состояние (H). В этом случае выход сети рассчитывается как σ(W×Xi+H×Si-1+b), где σ — это функция активации, а b — дополнительный смещение. + +Анатомия ячейки RNN + +> Изображение предоставлено автором + +Во многих случаях входные токены проходят через слой встраивания перед тем, как попасть в RNN, чтобы снизить размерность. В этом случае, если размерность входных векторов составляет *emb_size*, а вектора состояния — *hid_size*, то размер W составляет *emb_size*×*hid_size*, а размер H — *hid_size*×*hid_size*. + +## Долгая Краткосрочная Память (LSTM) + +Одной из основных проблем классических RNN является так называемая проблема **исчезающих градиентов**. Поскольку RNN обучаются от начала до конца за один проход обратного распространения, им трудно распространять ошибку на первые слои сети, и, следовательно, сеть не может изучать отношения между удаленными токенами. Один из способов избежать этой проблемы — ввести **явное управление состоянием** с помощью так называемых **ворот**. Существует две хорошо известные архитектуры такого рода: **Долгая Краткосрочная Память** (LSTM) и **Gated Relay Unit** (GRU). + +![Изображение, показывающее пример ячейки долгой краткосрочной памяти](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Источник изображения TBD + +Сеть LSTM организована аналогично RNN, но существует два состояния, которые передаются от слоя к слою: текущее состояние C и скрытый вектор H. На каждом узле скрытый вектор Hi конкатенируется с входом Xi, и они контролируют, что происходит с состоянием C через **ворота**. Каждые ворота представляют собой нейронную сеть с сигмоидной активацией (выход в диапазоне [0,1]), которые можно рассматривать как побитовую маску при умножении на вектор состояния. Существуют следующие ворота (слева направо на изображении выше): + +* **Ворота забвения** принимают скрытый вектор и определяют, какие компоненты вектора C нужно забыть, а какие пропустить. +* **Ворота ввода** берут некоторую информацию из входных и скрытых векторов и вставляют ее в состояние. +* **Ворота вывода** преобразуют состояние через линейный слой с активацией *tanh*, затем выбирают некоторые из его компонентов, используя скрытый вектор Hi, чтобы произвести новое состояние Ci+1. + +Компоненты состояния C можно рассматривать как некоторые флаги, которые могут быть включены и выключены. Например, когда мы встречаем имя *Alice* в последовательности, мы можем предположить, что оно относится к женскому персонажу, и поднять флаг в состоянии о том, что у нас есть женский существительное в предложении. Когда мы далее встречаем фразу *and Tom*, мы поднимем флаг о том, что у нас есть множественное число. Таким образом, манипулируя состоянием, мы можем предположительно отслеживать грамматические свойства частей предложения. + +> ✅ Отличный ресурс для понимания внутреннего устройства LSTM — это замечательная статья [Понимание LSTM-сетей](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Кристофера Олаха. + +## Двунаправленные и Многослойные RNN + +Мы обсуждали рекуррентные сети, которые работают в одном направлении, от начала последовательности до конца. Это выглядит естественно, поскольку напоминает способ, которым мы читаем и слушаем речь. Однако, поскольку во многих практических случаях у нас есть произвольный доступ к входной последовательности, имеет смысл выполнять рекуррентные вычисления в обоих направлениях. Такие сети называются **двунаправленными** RNN. При работе с двунаправленной сетью нам понадобятся два скрытых вектора состояния, по одному для каждого направления. + +Рекуррентная сеть, будь то однонаправленная или двунаправленная, захватывает определенные шаблоны внутри последовательности и может хранить их в векторе состояния или передавать в выход. Как и в случае с свёрточными сетями, мы можем построить другой рекуррентный слой поверх первого, чтобы захватить более высокоуровневые шаблоны и строить их на основе низкоуровневых шаблонов, извлеченных первым слоем. Это приводит нас к понятию **многослойной RNN**, которая состоит из двух или более рекуррентных сетей, где выход предыдущего слоя передается в следующий слой в качестве входа. + +![Изображение, показывающее многослойную долгую краткосрочную память RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ru.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 и рассмотрите их применение: + +- [Сетка Долгой Краткосрочной Памяти](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Показать, Обратить Внимание и Сказать: Генерация Подписей к Изображениям с Нейронным Вниманием](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [Тест после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Обзор и Самостоятельное Изучение + +- [Понимание LSTM-сетей](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Кристофера Олаха. + +## [Задание: Блокноты](assignment.md) + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих услуг на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/16-RNN/assignment.md b/translations/ru/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..98beafd7 --- /dev/null +++ b/translations/ru/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# Задание: Блокноты + +Используя блокноты, связанные с этим уроком (либо версию PyTorch, либо версию TensorFlow), запустите их заново, используя свой собственный набор данных, возможно, один из Kaggle, с указанием авторства. Перепишите блокнот, чтобы подчеркнуть свои собственные выводы. Попробуйте другой тип набора данных и задокументируйте свои находки, используя текст, такой как [этот набор данных Kaggle о твитах о погоде](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/ru/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..3f488ea0 --- /dev/null +++ b/translations/ru/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# Генеративные сети + +## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Рекуррентные нейронные сети (RNN) и их варианты с затвором, такие как ячейки долгосрочной и краткосрочной памяти (LSTM) и затворные рекуррентные единицы (GRU), предоставили механизм для языкового моделирования, так как они могут изучать порядок слов и делать предсказания для следующего слова в последовательности. Это позволяет нам использовать RNN для **генеративных задач**, таких как обычная генерация текста, машинный перевод и даже создание подписей к изображениям. + +> ✅ Подумайте о том, сколько раз вы извлекали пользу из генеративных задач, таких как автозаполнение текста во время набора. Проведите исследование своих любимых приложений, чтобы узнать, использовали ли они RNN. + +В архитектуре RNN, обсужденной в предыдущем блоке, каждая единица RNN производила следующее скрытое состояние в качестве вывода. Однако мы также можем добавить еще один выход к каждой рекуррентной единице, что позволит нам выдавать **последовательность** (которая равна по длине исходной последовательности). Более того, мы можем использовать единицы RNN, которые не принимают вход на каждом шаге, а просто берут некоторый начальный вектор состояния и затем производят последовательность выходов. + +Это позволяет создавать различные нейронные архитектуры, которые показаны на рисунке ниже: + +![Изображение, показывающее общие шаблоны рекуррентных нейронных сетей.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ru.jpg) + +> Изображение из блога [Непомерная эффективность рекуррентных нейронных сетей](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.ru.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) + +Мы увидели, как генерировать текст символ за символом. В лаборатории вы исследуете генерацию текста на уровне слов. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/ru/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..3c059322 --- /dev/null +++ b/translations/ru/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# Генерация текста на уровне слов с использованием RNN + +Лабораторное задание из [Курса AI для начинающих](https://github.com/microsoft/ai-for-beginners). + +## Задача + +В этой лабораторной работе вам нужно выбрать любую книгу и использовать её в качестве набора данных для обучения генератора текста на уровне слов. + +## Набор данных + +Вы можете использовать любую книгу. Множество бесплатных текстов можно найти на [Project Gutenberg](https://www.gutenberg.org/), например, вот прямая ссылка на [Приключения Алисы в Стране Чудес](https://www.gutenberg.org/files/11/11-0.txt) Льюиса Кэрролла. + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/ru/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..26e64a4b --- /dev/null +++ b/translations/ru/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# Механизмы внимания и трансформеры + +## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Одной из самых важных задач в области обработки естественного языка (NLP) является **машинный перевод**, который лежит в основе таких инструментов, как Google Translate. В этом разделе мы сосредоточимся на машинном переводе или, более общо, на любой задаче *последовательность-в-последовательность* (также называемой **трансдукцией предложений**). + +С помощью РСН (рекуррентных нейронных сетей) задача последовательность-в-последовательность реализуется двумя рекуррентными сетями: одна сеть, **кодировщик**, сворачивает входную последовательность в скрытое состояние, в то время как другая сеть, **декодировщик**, разворачивает это скрытое состояние в переведенный результат. У этого подхода есть несколько проблем: + +* Финальное состояние сети кодировщика с трудом запоминает начало предложения, что приводит к плохому качеству модели для длинных предложений. +* Все слова в последовательности оказывают одинаковое влияние на результат. Однако на самом деле конкретные слова во входной последовательности часто оказывают большее влияние на последовательные выходные данные, чем другие. + +**Механизмы внимания** предоставляют способ взвешивания контекстного влияния каждого входного вектора на каждое предсказание выхода РСН. Это реализуется путем создания кратких путей между промежуточными состояниями входной РСН и выходной РСН. Таким образом, при генерации выходного символа yt мы будем учитывать все входные скрытые состояния hi с различными весовыми коэффициентами αt,i. + +![Изображение, показывающее модель кодировщика/декодировщика с аддитивным слоем внимания](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ru.png) + +> Модель кодировщика-декодировщика с аддитивным механизмом внимания в [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), процитировано из [этого блога](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Матрица внимания {αi,j} будет представлять степень, в которой определенные входные слова участвуют в генерации данного слова в выходной последовательности. Ниже приведен пример такой матрицы: + +![Изображение, показывающее пример выравнивания, найденного RNNsearch-50, взято из Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ru.png) + +> Рисунок из [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Рис. 3) + +Механизмы внимания отвечают за многие достижения в области NLP. Однако добавление внимания значительно увеличивает количество параметров модели, что приводит к проблемам масштабирования с РСН. Ключевым ограничением масштабирования РСН является то, что рекуррентная природа моделей затрудняет пакетную обработку и параллелизацию обучения. В РСН каждый элемент последовательности необходимо обрабатывать в последовательном порядке, что означает, что это не может быть легко параллелизировано. + +![Кодировщик Декодер с вниманием](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Рисунок из [Блога Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Применение механизмов внимания в сочетании с этим ограничением привело к созданию современных трансформерных моделей, которые мы знаем и используем сегодня, таких как BERT и Open-GPT3. + +## Модели трансформеров + +Одна из основных идей трансформеров — избежать последовательной природы РСН и создать модель, которая может быть параллелизована во время обучения. Это достигается за счет реализации двух идей: + +* позиционное кодирование +* использование механизма самовнимания для захвата паттернов вместо РСН (или ССН) (поэтому статья, вводящая трансформеры, называется *[Внимание — это всё, что вам нужно](https://arxiv.org/abs/1706.03762)*) + +### Позиционное кодирование/встраивание + +Идея позиционного кодирования следующая. +1. При использовании РСН относительное положение токенов представляется количеством шагов и, следовательно, не требует явного представления. +2. Однако, как только мы переходим к вниманию, нам необходимо знать относительные позиции токенов в последовательности. +3. Чтобы получить позиционное кодирование, мы дополняем нашу последовательность токенов последовательностью позиций токенов в последовательности (т.е. последовательностью чисел 0, 1, ...). +4. Затем мы смешиваем позицию токена с вектором встраивания токена. Чтобы преобразовать позицию (целое число) в вектор, мы можем использовать различные подходы: + +* Обучаемое встраивание, аналогичное встраиванию токенов. Это подход, который мы рассматриваем здесь. Мы применяем слои встраивания как к токенам, так и к их позициям, в результате чего получаем векторные встраивания одинаковых размерностей, которые затем складываем. +* Функция фиксированного позиционного кодирования, предложенная в оригинальной статье. + + + +> Изображение автора + +Результат, который мы получаем с помощью позиционного встраивания, включает как оригинальный токен, так и его позицию в последовательности. + +### Многоголовое самовнимание + +Далее нам нужно захватить некоторые паттерны в нашей последовательности. Для этого трансформеры используют механизм **самовнимания**, который по сути представляет собой внимание, примененное к той же последовательности как входной и выходной. Применение самовнимания позволяет нам учитывать **контекст** в предложении и видеть, какие слова взаимосвязаны. Например, это позволяет нам видеть, какие слова упоминаются через копреференции, такие как *это*, и также учитывать контекст: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ru.png) + +> Изображение из [Блога Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +В трансформерах мы используем **многоголовое внимание**, чтобы дать сети возможность захватывать несколько различных типов зависимостей, например, долгосрочные и краткосрочные отношения между словами, копреференции и что-то еще и т.д. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) содержит больше деталей о реализации слоев трансформеров. + +### Внимание кодировщика-декодировщика + +В трансформерах внимание используется в двух местах: + +* Для захвата паттернов во входном тексте с помощью самовнимания +* Для выполнения перевода последовательностей — это слой внимания между кодировщиком и декодировщиком. + +Внимание кодировщика-декодировщика очень похоже на механизм внимания, используемый в РСН, как описано в начале этого раздела. Эта анимационная диаграмма объясняет роль внимания кодировщика-декодировщика. + +![Анимированное GIF, показывающее, как выполняются оценки в моделях трансформеров.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Поскольку каждая входная позиция сопоставляется независимо с каждой выходной позицией, трансформеры могут лучше параллелизироваться, чем РСН, что позволяет создавать гораздо более крупные и выразительные языковые модели. Каждая голова внимания может использоваться для изучения различных отношений между словами, что улучшает последующие задачи обработки естественного языка. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) — это очень большая многослойная трансформерная сеть с 12 слоями для *BERT-base* и 24 слоями для *BERT-large*. Модель сначала обучается на большом корпусе текстовых данных (WikiPedia + книги) с использованием неконтролируемого обучения (предсказание замаскированных слов в предложении). Во время предварительного обучения модель поглощает значительные уровни языкового понимания, которые затем могут быть использованы с другими наборами данных с помощью тонкой настройки. Этот процесс называется **переносным обучением**. + +![изображение с http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ru.png) + +> Изображение [источник](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Упражнения: Трансформеры + +Продолжайте обучение в следующих ноутбуках: + +* [Трансформеры в PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Трансформеры в TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Заключение + +На этом уроке вы узнали о трансформерах и механизмах внимания — всех необходимых инструментах в арсенале NLP. Существует множество вариантов архитектуры трансформеров, включая BERT, DistilBERT, BigBird, OpenGPT3 и другие, которые могут быть тонко настроены. Пакет [HuggingFace](https://github.com/huggingface/) предоставляет репозиторий для обучения многих из этих архитектур как с PyTorch, так и с TensorFlow. + +## 🚀 Вызов + +## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Обзор и самостоятельное изучение + +* [Блог пост](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), объясняющий классическую статью [Внимание — это всё, что вам нужно](https://arxiv.org/abs/1706.03762) о трансформерах. +* [Серия блогов](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) о трансформерах, объясняющая архитектуру в деталях. + +## [Задание](assignment.md) + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих услуг на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/18-Transformers/assignment.md b/translations/ru/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..71c43c5b --- /dev/null +++ b/translations/ru/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# Задание: Трансформеры + +Экспериментируйте с Трансформерами на HuggingFace! Попробуйте некоторые из скриптов, которые они предоставляют для работы с различными моделями, доступными на их сайте: https://huggingface.co/docs/transformers/run_scripts. Попробуйте один из их наборов данных, затем импортируйте один из своих из этой учебной программы или с Kaggle и посмотрите, сможете ли вы сгенерировать интересные тексты. Подготовьте ноутбук с вашими результатами. + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных переводческих услуг на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/19-NER/README.md b/translations/ru/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..66e43d67 --- /dev/null +++ b/translations/ru/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,84 @@ +# Распознавание именованных сущностей + +На данный момент мы в основном сосредоточились на одной задаче обработки естественного языка (NLP) - классификации. Однако существуют и другие задачи NLP, которые можно решать с помощью нейронных сетей. Одна из таких задач - **[Распознавание именованных сущностей](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), которая занимается распознаванием конкретных сущностей в тексте, таких как места, имена людей, временные интервалы, химические формулы и так далее. + +## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Пример использования NER + +Предположим, вы хотите разработать чат-бота на естественном языке, похожего на Amazon Alexa или Google Assistant. Интеллектуальные чат-боты работают, *понимая*, что хочет пользователь, выполняя классификацию текста на входном предложении. Результатом этой классификации является так называемый **намерение**, которое определяет, что должен сделать чат-бот. + +Bot NER + +> Изображение от автора + +Однако пользователь может предоставить некоторые параметры в рамках фразы. Например, запрашивая погоду, она может указать местоположение или дату. Бот должен быть в состоянии распознать эти сущности и заполнить соответствующие параметры перед выполнением действия. Именно здесь и вступает в действие NER. + +> ✅ Другим примером может быть [анализ научных медицинских статей](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Одним из основных аспектов, на которые нам нужно обратить внимание, являются конкретные медицинские термины, такие как болезни и медицинские вещества. Хотя небольшое количество болезней, вероятно, можно извлечь с помощью поиска подстрок, более сложные сущности, такие как химические соединения и названия медикаментов, требуют более сложного подхода. + +## NER как классификация токенов + +Модели NER по сути являются **моделями классификации токенов**, потому что для каждого входного токена нам нужно определить, принадлежит ли он к сущности или нет, и если принадлежит - к какому классу сущности. + +Рассмотрим следующий заголовок статьи: + +**Регургитация трикуспидального клапана** и **токсичность** **лития карбоната** у новорожденного. + +Сущности здесь: + +* Регургитация трикуспидального клапана - это болезнь (`DIS`) +* Литий карбонат - это химическое вещество (`CHEM`) +* Токсичность - это также болезнь (`DIS`) + +Обратите внимание, что одна сущность может охватывать несколько токенов. И, как в этом случае, нам нужно различать две последовательные сущности. Таким образом, обычно используется два класса для каждой сущности - один указывает на первый токен сущности (часто используется префикс `B-`, для **b**eginning), а другой - на продолжение сущности (`I-`, для **i**nner token). Мы также используем `O` как класс, чтобы представлять все **o**ther токены. Такая маркировка токенов называется [BIO маркировка](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (или IOB). Когда заголовок помечен, он будет выглядеть так: + +Токен | Метка +------|----- +Трикуспидальный | B-DIS +клапан | I-DIS +регургитация | I-DIS +и | O +литий | B-CHEM +карбонат | I-CHEM +токсичность | B-DIS +в | O +новорожденный | O +младенец | O +. | O + +Поскольку нам нужно установить соответствие один к одному между токенами и классами, мы можем обучить правильную **модель нейронной сети** с **многими входами и выходами** на основе этой схемы: + +![Изображение, показывающее общие паттерны рекуррентных нейронных сетей.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ru.jpg) + +> *Изображение из [этого блога](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) от [Андрея Карпаты](http://karpathy.github.io/). Модели классификации токенов NER соответствуют самой правой архитектуре сети на этом изображении.* + +## Обучение моделей NER + +Поскольку модель NER по сути является моделью классификации токенов, мы можем использовать RNN, с которыми мы уже знакомы для этой задачи. В этом случае каждый блок рекуррентной сети будет возвращать идентификатор токена. Следующий пример ноутбука показывает, как обучить 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), чтобы получить все детали. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/19-NER/lab/README.md b/translations/ru/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..e466d473 --- /dev/null +++ b/translations/ru/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +Лабораторное задание из [Курса по ИИ для начинающих](https://github.com/microsoft/ai-for-beginners). + +## Задача + +В этой лабораторной работе вам нужно обучить модель распознавания именованных сущностей для медицинских терминов. + +## Датасет + +Для обучения модели NER нам нужен правильно размеченный датасет с медицинскими сущностями. [Датасет BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) содержит размеченные сущности заболеваний и химических веществ из более чем 1500 статей. Вы можете скачать датасет после регистрации на их сайте. + +Датасет BC5CDR выглядит так: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +В этом датасете первые две строки содержат название статьи и аннотацию, а затем идут отдельные сущности с начальной и конечной позициями в блоке название+аннотация. В дополнение к типу сущности, вы получаете идентификатор онтологии этой сущности в рамках какой-либо медицинской онтологии. + +Вам нужно будет написать немного кода на Python, чтобы преобразовать это в кодировку BIO. + +## Сеть + +Первую попытку распознавания именованных сущностей можно сделать с помощью сети LSTM, как вы видели в нашем примере во время урока. Однако в задачах обработки естественного языка архитектура [трансформеров](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), а конкретно [языковые модели BERT](https://en.wikipedia.org/wiki/BERT_(language_model)), показывают гораздо лучшие результаты. Предобученные модели BERT понимают общую структуру языка и могут быть дообучены для конкретных задач с относительно небольшими наборами данных и вычислительными затратами. + +Поскольку мы планируем применять NER в медицинском сценарии, имеет смысл использовать модель BERT, обученную на медицинских текстах. Исследовательская группа Microsoft выпустила предобученную модель под названием [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` itself, built for token classification task using `classes` number of classes, as well as `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-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/ru/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..9501f4ac --- /dev/null +++ b/translations/ru/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,55 @@ +# Предобученные большие языковые модели + +Во всех наших предыдущих задачах мы обучали нейронную сеть для выполнения определенной задачи с использованием размеченного набора данных. С большими трансформерными моделями, такими как BERT, мы используем языковое моделирование в самообучающемся формате для создания языковой модели, которая затем специализируется на конкретной задаче с дальнейшим обучением в конкретной области. Однако было продемонстрировано, что большие языковые модели могут также решать многие задачи без какого-либо обучения в конкретной области. Семейство моделей, способных на это, называется **GPT**: Генеративный предобученный трансформер. + +## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Генерация текста и перплексность + +Идея о том, что нейронная сеть может выполнять общие задачи без обучения на конкретной задаче, представлена в статье [Языковые модели являются неконтролируемыми многозадачными обучающими системами](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Основная идея заключается в том, что многие другие задачи могут быть смоделированы с использованием **генерации текста**, потому что понимание текста по сути означает возможность его производить. Поскольку модель обучена на огромном количестве текста, охватывающего человеческие знания, она также становится осведомленной о широком круге тем. + +> Понимание и способность производить текст также предполагает знание чего-то о мире вокруг нас. Люди также в значительной степени учатся, читая, и сеть GPT схожа в этом отношении. + +Сети генерации текста работают, предсказывая вероятность следующего слова $$P(w_N)$$. Однако безусловная вероятность следующего слова равна частоте этого слова в текстовом корпусе. GPT может предоставить нам **условную вероятность** следующего слова, учитывая предыдущие: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Вы можете узнать больше о вероятностях в нашей [Программе по науке о данных для начинающих](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) + +Качество модели генерации языка можно определить с помощью **перплексности**. Это внутренний метрик, который позволяет нам измерять качество модели без каких-либо наборов данных, специфичных для задачи. Он основан на понятии *вероятности предложения* — модель присваивает высокую вероятность предложению, которое, вероятно, является реальным (т.е. модель не **смущена** им), и низкую вероятность предложениям, которые имеют меньше смысла (например, *Может ли это сделать что?*). Когда мы предоставляем нашей модели предложения из реального текстового корпуса, мы ожидаем, что они будут иметь высокую вероятность и низкую **перплексность**. Математически это определяется как нормализованная обратная вероятность тестового набора: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Вы можете поэкспериментировать с генерацией текста, используя [текстовый редактор на базе GPT от Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. В этом редакторе вы начинаете писать свой текст, и нажатие **[TAB]** предложит вам несколько вариантов завершения. Если они слишком короткие или вас не устраивают, нажмите [TAB] снова, и у вас будет больше вариантов, включая более длинные фрагменты текста. + +## GPT — это семья + +GPT — это не одна модель, а скорее коллекция моделей, разработанных и обученных [OpenAI](https://openai.com). + +Под моделями GPT у нас есть: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| Языковая модель с до 1,5 миллиарда параметров. | Языковая модель с до 175 миллиардов параметров | 100 триллионов параметров и принимает как текстовые, так и визуальные входные данные, выдавая текст. | + +Модели GPT-3 и GPT-4 доступны [как когнитивный сервис от Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) и [как OpenAI API](https://openai.com/api/). + +## Инженерия подсказок + +Поскольку GPT обучен на огромных объемах данных для понимания языка и кода, он предоставляет результаты в ответ на вводимые данные (подсказки). Подсказки — это входные данные или запросы для GPT, в которых даются инструкции моделям по задачам, которые они должны выполнить. Чтобы получить желаемый результат, вам нужна наиболее эффективная подсказка, которая включает выбор правильных слов, форматов, фраз или даже символов. Этот подход называется [Инженерия подсказок](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) + +[Эта документация](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) предоставляет вам дополнительную информацию о инженерии подсказок. + +## ✍️ Пример блокнота: [Играя с OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Продолжите свое обучение в следующих блокнотах: + +* [Генерация текста с помощью OpenAI-GPT и Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Заключение + +Новые общие предобученные языковые модели не только моделируют структуру языка, но и содержат огромное количество естественного языка. Таким образом, их можно эффективно использовать для решения некоторых задач NLP в условиях нулевого или небольшого обучения. + +## [Викторина после лекции](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/5-NLP/README.md b/translations/ru/lessons/5-NLP/README.md new file mode 100644 index 00000000..2878a2f7 --- /dev/null +++ b/translations/ru/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# Обработка Естественного Языка + +![Сводка задач NLP в рисунке](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ru.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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/ru/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..cb7b28b3 --- /dev/null +++ b/translations/ru/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# Генетические Алгоритмы + +## [Викторина перед лекцией](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Генетические Алгоритмы** (ГА) основаны на **эволюционном подходе** к ИИ, в котором методы эволюции популяции используются для получения оптимального решения для данной задачи. Они были предложены в 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) в качестве отправной точки. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/6-Other/22-DeepRL/README.md b/translations/ru/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..453bc952 --- /dev/null +++ b/translations/ru/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# Глубокое Обучение с Подкреплением + +Обучение с подкреплением (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/). + +> **Примечание**: Вы можете увидеть все доступные среды 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` starts a new experiment +* `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). + +## Алгоритм Актор-Критик + +Улучшенная версия подхода Градиентов Политики называется **Актор-Критик**. Основная идея заключается в том, что нейронная сеть будет обучена возвращать две вещи: + +* Политику, которая определяет, какое действие предпринять. Эта часть называется **актор**. +* Оценку общего вознаграждения, которое мы можем ожидать получить в этом состоянии — эта часть называется **критик**. + +В некотором смысле эта архитектура напоминает [GAN](../../4-ComputerVision/10-GANs/README.md), где у нас есть две сети, которые обучаются друг против друга. В модели актор-критик актер предлагает действие, которое нам нужно предпринять, а критик пытается быть критичным и оценить результат. Однако наша цель — обучить эти сети в унисон. + +Поскольку мы знаем как реальные кумулятивные вознаграждения, так и результаты, возвращаемые критиком во время эксперимента, относительно легко построить функцию потерь, которая минимизирует разницу между ними. Это даст нам **потерю критика**. Мы можем вычислить **потерю актора**, используя тот же подход, что и в алгоритме градиентов политики. + +После запуска одного из этих алгоритмов мы можем ожидать, что наш CartPole будет вести себя так: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Упражнения: Градиенты Политики и 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. + +## Задание: [Обучите Гору](lab/README.md) + +Ваша цель в этом задании — обучить другую среду Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/6-Other/22-DeepRL/lab/README.md b/translations/ru/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..fdfb3002 --- /dev/null +++ b/translations/ru/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# Обучение Mountain Car для Побега + +Лабораторное задание из [Курса ИИ для Начинающих](https://github.com/microsoft/ai-for-beginners). + +## Задача + +Ваша цель - обучить RL-агента управлять [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) в среде OpenAI. Вы обучаетесь на данных до октября 2023 года. + +## Среда + +Среда Mountain Car состоит из машины, застрявшей в долине. Ваша задача - выпрыгнуть из долины и достичь флага. Действия, которые вы можете выполнять, включают ускорение влево, вправо или ничего не делать. Вы можете наблюдать за положением машины по оси x и ее скоростью. + +## Начало работы с Ноутбуком + +Начните лабораторную работу, открыв [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Выводы + +Вы должны понять в ходе этой лабораторной работы, что адаптация RL-алгоритмов к новой среде часто достаточно проста, поскольку OpenAI Gym имеет одинаковый интерфейс для всех сред, и алгоритмы в целом не зависят от природы среды. Вы даже можете перестроить код на Python таким образом, чтобы передавать любую среду в RL-алгоритм в качестве параметра. + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/6-Other/23-MultiagentSystems/README.md b/translations/ru/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..1bb627bb --- /dev/null +++ b/translations/ru/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,155 @@ +# Мультиагентные системы + +Одним из возможных способов достижения интеллекта является так называемый **эмерджентный** (или **синергетический**) подход, который основан на том факте, что комбинированное поведение многих относительно простых агентов может привести к более сложному (или интеллектуальному) поведению системы в целом. Теоретически это основано на принципах [Коллективного Интеллекта](https://en.wikipedia.org/wiki/Collective_intelligence), [Эмерджентизма](https://en.wikipedia.org/wiki/Global_brain) и [Эволюционной Кибернетики](https://en.wikipedia.org/wiki/Global_brain), которые утверждают, что системы более высокого уровня получают некую добавленную ценность, когда они правильно комбинируются из систем более низкого уровня (так называемый *принцип метасистемного перехода*). + +## [Предлекционный тест](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +Направление **Мультиагентных Систем** возникло в ИИ в 1990-х годах в ответ на рост Интернета и распределенных систем. Один из классических учебников по ИИ, [Искусственный Интеллект: Современный Подход](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), сосредоточен на взгляде на классический ИИ с точки зрения мультиагентных систем. + +Центральным понятием мультиагентного подхода является **Агент** - это сущность, которая существует в некой **среде**, которую она может воспринимать и воздействовать на нее. Это очень широкое определение, и существует множество различных типов и классификаций агентов: + +* По их способности рассуждать: + - **Реактивные** агенты обычно имеют простое поведение типа запрос-ответ + - **Делиберативные** агенты используют некоторый вид логического рассуждения и/или планирования +* По месту, где агент выполняет свой код: + - **Статические** агенты работают на выделенном сетевом узле + - **Мобильные** агенты могут перемещать свой код между сетевыми узлами +* По их поведению: + - **Пассивные агенты** не имеют конкретных целей. Такие агенты могут реагировать на внешние стимулы, но не будут инициировать никаких действий самостоятельно. + - **Активные агенты** имеют некоторые цели, которые они преследуют + - **Когнитивные агенты** предполагают сложное планирование и рассуждение + +В настоящее время мультиагентные системы используются в ряде приложений: + +* В играх многие неперсонажные персонажи используют некоторый вид ИИ и могут считаться интеллектуальными агентами +* В видеопроизводстве рендеринг сложных 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` 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` - это название породы, и нам нужно указать как единственное, так и множественное число, потому что разные команды используют разные формы для ясности. + +> ✅ Мы не будем углубляться в изучение самого языка NetLogo - вы можете посетить великолепный [Интерактивный Словарь NetLogo для Начинающих](https://ccl.northwestern.edu/netlogo/bind/), если хотите узнать больше. + +Вы можете [скачать](https://ccl.northwestern.edu/netlogo/download.shtml) и установить NetLogo, чтобы попробовать его. + +### Библиотека Моделей + +Отличная вещь в NetLogo заключается в том, что она содержит библиотеку работающих моделей, которые вы можете попробовать. Перейдите в **Файл → Библиотека Моделей**, и у вас будет много категорий моделей на выбор. + +Библиотека Моделей NetLogo + +> Скриншот библиотеки моделей Дмитрия Сошникова + +Вы можете открыть одну из моделей, например **Биология → Стая**. + +### Основные Принципы + +После открытия модели вы попадаете на главный экран NetLogo. Вот пример модели, которая описывает популяцию волков и овец при有限ных ресурсах (травы). + +![Главный Экран NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ru.png) + +> Скриншот Дмитрия Сошникова + +На этом экране вы можете увидеть: + +* Раздел **Интерфейс**, который содержит: + - Основное поле, где живут все агенты + - Различные элементы управления: кнопки, ползунки и т.д. + - Графики, которые вы можете использовать для отображения параметров симуляции +* Вкладку **Код**, которая содержит редактор, где вы можете вводить программу на NetLogo + +В большинстве случаев интерфейс будет иметь кнопку **Настройка**, которая инициализирует состояние симуляции, и кнопку **Запуск**, которая начинает выполнение. Эти действия обрабатываются соответствующими обработчиками в коде, которые выглядят следующим образом: + +``` +to go [ +... +] +``` + +Мир NetLogo состоит из следующих объектов: + +* **Агенты** (черепашки), которые могут двигаться по полю и что-то делать. Вы командуете агентами, используя `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. +* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches`, чтобы сделать что-то. +* **Наблюдатель** - это уникальный агент, который контролирует мир. Все обработчики кнопок выполняются в *режиме наблюдателя*. + +> ✅ Прелесть мультиагентной среды в том, что код, который выполняется в режиме черепашки или в режиме патча, выполняется одновременно всеми агентами параллельно. Таким образом, написав немного кода и запрограммировав поведение отдельного агента, вы можете создать сложное поведение симуляционной системы в целом. + +### Стая + +В качестве примера мультиагентного поведения давайте рассмотрим **[Стаю](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Стая - это сложный паттерн, который очень похож на то, как летают стаи птиц. Наблюдая за их полетом, можно подумать, что они следуют какому-то коллективному алгоритму или что они обладают какой-то формой *коллективного интеллекта*. Однако это сложное поведение возникает, когда каждый отдельный агент (в данном случае, *птица*) наблюдает только за некоторыми другими агентами на коротком расстоянии от себя и следует трем простым правилам: + +* **Выравнивание** - он движется в сторону среднего направления соседних агентов +* **Когезия** - он пытается двигаться к средней позиции соседей (*долгосрочное притяжение*) +* **Разделение** - когда он приближается слишком близко к другим птицам, он пытается отдалиться (*краткосрочное отталкивание*) + +Вы можете запустить пример стаи и наблюдать за поведением. Вы также можете регулировать параметры, такие как *степень разделения* или *дальность видимости*, которая определяет, как далеко каждая птица может видеть. Обратите внимание, что если вы уменьшите дальность видимости до 0, все птицы станут слепыми, и стая остановится. Если вы уменьшите разделение до 0, все птицы соберутся в прямую линию. + +> ✅ Переключитесь на вкладку **Код** и посмотрите, где три правила стаи (выравнивание, когезия и разделение) реализованы в коде. Обратите внимание, как мы ссылаемся только на тех агентов, которые находятся в поле зрения. + +### Другие Модели для Исследования + +Есть еще несколько интересных моделей, с которыми вы можете поэкспериментировать: + +* **Искусство → Фейерверки** показывает, как фейерверк может рассматриваться как коллективное поведение отдельных потоков огня +* **Социальные Науки → Основы Движения** и **Социальные Науки → Грид Движения** показывают модель городского движения в 1D и 2D сетке с или без светофоров. Каждая машина в симуляции следует следующим правилам: + - Если пространство перед ней пусто - ускориться (до определенной максимальной скорости) + - Если она видит препятствие впереди - тормозить (и вы можете настроить, как далеко водитель может видеть) +* **Социальные Науки → Вечеринка** показывает, как люди группируются во время коктейльной вечеринки. Вы можете найти комбинацию параметров, которая приводит к наиболее быстрому увеличению счастья группы. + +Как видно из этих примеров, мультиагентные симуляции могут быть довольно полезным способом понять поведение сложной системы, состоящей из индивидуумов, которые следуют той же или схожей логике. Это также может быть использовано для управления виртуальными агентами, такими как [NPC](https://en.wikipedia.org/wiki/NPC) в компьютерных играх или агентами в 3D-анимированных мирах. + +## Делиберативные Агенты + +Агенты, описанные выше, очень просты, реагируя на изменения в окружающей среде, используя какой-то алгоритм. Таким образом, они являются **реактивными агентами**. Однако иногда агенты могут рассуждать и планировать свои действия, в этом случае их называют **делиберативными**. + +Типичный пример - это персональный агент, который получает инструкцию от человека забронировать отпуск. Предположим, что в Интернете есть много агентов, которые могут ему помочь. Тогда ему нужно связаться с другими агентами, чтобы узнать, какие рейсы доступны, каковы цены на отели в разные даты и попытаться договориться о лучшей цене. Когда план отпуска будет завершен и подтвержден владельцем, он сможет продолжить с бронированием. + +Для этого агентам нужно **общаться**. Для успешной коммуникации им необходимо: + +* Некоторые **стандартные языки для обмена знаниями**, такие как [Формат Обмена Знаниями](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) и [Язык Запросов и Манипуляций Знаниями](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Эти языки разработаны на основе [Теории Речевых Актов](https://en.wikipedia.org/wiki/Speech_act). +* Эти языки также должны включать некоторые **протоколы для переговоров**, основанные на различных **типах аукционов**. +* **Общая онтология**, чтобы использовать ее, чтобы они ссылались на одни и те же концепции, зная их семантику +* Способ **обнаружить**, что разные агенты могут делать, также основанный на какой-то онтологии + +Делиберативные агенты гораздо сложнее, чем реактивные, потому что они не только реагируют на изменения в окружающей среде, но также должны быть в состоянии *инициировать* действия. Одна из предложенных архитектур для делиберативных агентов - это так называемый агент БДИ (Belief-Desire-Intention): + +* **Убеждения** формируют набор знаний об окружающей среде агента. Это может быть структурировано как база знаний или набор правил, которые агент может применять к конкретной ситуации в окружающей среде. +* **Желания** определяют, что агент хочет сделать, т.е. его цели. Например, цель вышеупомянутого персонального ассистента - забронировать тур, а цель агента отеля - максимизировать прибыль. +* **Намерения** - это конкретные действия, которые агент планирует для достижения своих целей. Действия обычно изменяют окружающую среду и вызывают коммуникацию с другими агентами. + +Существуют некоторые платформы для создания мультиагентных систем, такие как [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) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/ru/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..d97d4749 --- /dev/null +++ b/translations/ru/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# Задание по NetLogo + +Выберите одну из моделей в библиотеке NetLogo и используйте ее для симуляции реальной ситуации как можно ближе к действительности. Хорошим примером может быть модификация модели Virus из папки Альтернативные визуализации, чтобы показать, как ее можно использовать для моделирования распространения COVID-19. Можете ли вы создать модель, которая имитирует реальное вирусное распространение? + +Покажите свою работу, сохранив копию и создав видео-демонстрацию, объясняющую, как модель связана с реальной ситуацией. + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/7-Ethics/README.md b/translations/ru/lessons/7-Ethics/README.md new file mode 100644 index 00000000..052effe8 --- /dev/null +++ b/translations/ru/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# Этический и Ответственный ИИ + +Вы почти завершили этот курс, и я надеюсь, что к этому моменту вы четко понимаете, что ИИ основан на ряде формальных математических методов, которые позволяют нам находить взаимосвязи в данных и обучать модели для воспроизведения некоторых аспектов человеческого поведения. На данном этапе истории мы считаем ИИ очень мощным инструментом для извлечения паттернов из данных и применения этих паттернов для решения новых задач. + +## [Предварительный тест](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/) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/README.md b/translations/ru/lessons/README.md new file mode 100644 index 00000000..cf0b1c1f --- /dev/null +++ b/translations/ru/lessons/README.md @@ -0,0 +1,8 @@ +# Обзор + +![Обзор в виде рисунка](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ru.png) + +> Эскизнота от [Tomomi Imura](https://twitter.com/girlie_mac) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/X-Extras/X1-MultiModal/README.md b/translations/ru/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..9e36111e --- /dev/null +++ b/translations/ru/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# Мультимодальные сети + +После успеха трансформерных моделей для решения задач обработки естественного языка (NLP), аналогичные архитектуры были применены к задачам компьютерного зрения. Возрастает интерес к созданию моделей, которые будут *объединять* возможности зрения и естественного языка. Одной из таких попыток является модель от OpenAI, названная CLIP и DALL.E. + +## Контрастная предобучение изображений (CLIP) + +Основная идея CLIP заключается в том, чтобы иметь возможность сравнивать текстовые подсказки с изображением и определять, насколько хорошо изображение соответствует подсказке. + +![Архитектура CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ru.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.ru.png) + +> *Изображение из [этого блога](https://openai.com/blog/clip/)* + +**Поиск изображений по тексту** + +Мы также можем сделать наоборот. Если у нас есть коллекция изображений, мы можем передать эту коллекцию модели и текстовую подсказку - это даст нам изображение, которое наиболее похоже на данную подсказку. + +## ✍️ Пример: [Использование CLIP для классификации изображений и поиска изображений](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Откройте блокнот [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb), чтобы увидеть CLIP в действии. + +## Генерация изображений с VQGAN+ CLIP + +CLIP также может быть использован для **генерации изображений** из текстовой подсказки. Для этого нам нужна **модель-генератор**, которая сможет генерировать изображения на основе некоторого векторного ввода. Одна из таких моделей называется [VQGAN](https://compvis.github.io/taming-transformers/) (векторно-квантованный GAN). + +Основные идеи VQGAN, которые отличают его от обычного [GAN](../../4-ComputerVision/10-GANs/README.md), следующие: +* Использование авторегрессионной архитектуры трансформера для генерации последовательности визуальных частей, богатых контекстом, которые составляют изображение. Эти визуальные части, в свою очередь, обучаются с помощью [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Использование дискриминатора подизображений, который определяет, являются ли части изображения "реальными" или "фальшивыми" (в отличие от подхода "все или ничего" в традиционном GAN). + +Узнайте больше о VQGAN на сайте [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Одно из важных отличий между VQGAN и традиционным GAN заключается в том, что последний может создавать приемлемое изображение из любого векторного ввода, в то время как VQGAN, скорее всего, создаст изображение, которое не будет согласованным. Таким образом, нам нужно дополнительно направлять процесс создания изображения, что можно сделать с помощью CLIP. + +![Архитектура VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ru.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.ru.png) | ![Изображение, созданное Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ru.png) | ![Изображение, созданное Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ru.png) +----|----|---- +Изображение, сгенерированное по подсказке *портрет молодого мужчины-преподавателя литературы в акварельной технике с книгой* | Изображение, сгенерированное по подсказке *портрет молодой женщины-преподавателя информатики в масляной технике с компьютером* | Изображение, сгенерированное по подсказке *портрет пожилого мужчины-преподавателя математики перед доской* + +> Изображения из коллекции **Искусственные Учителя** от [Дмитрия Сошникова](http://soshnikov.com) + +## 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.ru.png) | ![Изображение, созданное Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.ru.png) | ![Изображение, созданное Pixray](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.ru.png) +----|----|---- +Изображение, сгенерированное по подсказке *портрет молодого мужчины-преподавателя литературы в акварельной технике с книгой* | Изображение, сгенерированное по подсказке *портрет молодой женщины-преподавателя информатики в масляной технике с компьютером* | Изображение, сгенерированное по подсказке *портрет пожилого мужчины-преподавателя математики перед доской* + +## Ссылки + +* Статья о VQGAN: [Укрощение трансформеров для синтеза изображений высокого разрешения](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Статья о CLIP: [Обучение переносимых визуальных моделей с использованием естественного языка](https://arxiv.org/pdf/2103.00020.pdf) + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/sketchnotes/LICENSE.md b/translations/ru/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..0baec39f --- /dev/null +++ b/translations/ru/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,141 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +Корпорация Creative Commons ("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 + +Упражняя Лицензированные Права (определенные ниже), вы принимаете и соглашаетесь соблюдать условия и положения этой Публичной лицензии Creative Commons Attribution-ShareAlike 4.0 International ("Публичная лицензия"). В той мере, в какой эта Публичная лицензия может быть интерпретирована как контракт, вам предоставляются Лицензированные Права в обмен на ваше принятие этих условий и положений, и Лицензирующий предоставляет вам такие права в обмен на выгоды, которые Лицензирующий получает от предоставления Лицензированного Материала на этих условиях. + +Раздел 1 -- Определения. + + a. Адаптированный Материал означает материал, подпадающий под Авторское право и Похожие Права, который выведен из или основан на Лицензированном Материале и в котором Лицензированный Материал переведен, изменен, организован, преобразован или иным образом модифицирован таким образом, что требуется разрешение в соответствии с Авторским правом и Похожими Правами, принадлежащими Лицензирующему. В целях этой Публичной лицензии, когда Лицензированный Материал является музыкальным произведением, выступлением или звуковой записью, Адаптированный Материал всегда создается, когда Лицензированный Материал синхронизирован во времени с движущимся изображением. + + b. Лицензия Адаптера означает лицензию, которую вы применяете к своим Авторским правам и Похожим Правам в ваших вкладах в Адаптированный Материал в соответствии с условиями этой Публичной лицензии. + + c. Совместимая лицензия BY-SA означает лицензию, указанную на creativecommons.org/compatiblelicenses, одобренную Creative Commons как по существу эквивалентную этой Публичной лицензии. + + d. Авторское право и Похожие Права означают авторское право и/или аналогичные права, тесно связанные с авторским правом, включая, без ограничения, исполнение, трансляцию, звуковую запись и Права Базы Данных Sui Generis, независимо от того, как права маркируются или классифицируются. В целях этой Публичной лицензии права, указанные в Разделе 2(b)(1)-(2), не являются Авторским правом и Похожими Правами. + + e. Эффективные Технологические Меры означают те меры, которые, при отсутствии надлежащей власти, не могут быть обойдены в соответствии с законами, выполняющими обязательства по Статье 11 Договора ВОИС по авторскому праву, принятого 20 декабря 1996 года, и/или аналогичными международными соглашениями. + + f. Исключения и Ограничения означают добросовестное использование, добросовестное обращение и/или любое другое исключение или ограничение авторского права и Похожих Прав, которые применяются к вашему использованию Лицензированного Материала. + + g. Элементы Лицензии означают атрибуты лицензии, указанные в названии Публичной лицензии Creative Commons. Элементы Лицензии этой Публичной лицензии - это Упоминание и ShareAlike. + + h. Лицензированный Материал означает художественное или литературное произведение, базу данных или другой материал, к которому Лицензирующий применил эту Публичную лицензию. + + i. Лицензированные Права означают права, предоставленные вам в соответствии с условиями этой Публичной лицензии, которые ограничены всеми Авторскими правами и Похожими Правами, которые применяются к вашему использованию Лицензированного Материала и которые Лицензирующий имеет полномочия лицензировать. + + j. Лицензирующий означает индивидуумов или юридических лиц, предоставляющих права в соответствии с этой Публичной лицензией. + + k. Делиться означает предоставлять материал общественности любым способом или процессом, который требует разрешения в соответствии с Лицензированными Правами, таким как воспроизведение, публичное отображение, публичное исполнение, распределение, распространение, коммуникация или импорт, и делать материал доступным для общественности, включая способы, которыми члены общественности могут получить доступ к материалу из места и в время, выбранные ими индивидуально. + + l. Права Базы Данных Sui Generis означают права, отличные от авторского права, возникающие в результате Директивы 96/9/EC Европейского парламента и Совета от 11 марта 1996 года о правовой защите баз данных, с поправками и/или преемственностью, а также другие по существу эквивалентные права в любой точке мира. + + m. Вы означаете индивидуум или юридическое лицо, осуществляющее Лицензированные Права в соответствии с этой Публичной лицензией. Ваш имеет соответствующее значение. + +Раздел 2 -- Объем. + + a. Предоставление лицензии. + + 1. При соблюдении условий этой Публичной лицензии Лицензирующий настоящим предоставляет вам всемирную, безвозмездную, непередаваемую, неисключительную, безотзывную лицензию на осуществление Лицензированных Прав в Лицензированном Материале, чтобы: + + a. воспроизводить и Делиться Лицензированным Материалом, полностью или частично; и + + b. производить, воспроизводить и Делиться Адаптированным Материалом. + + 2. Исключения и Ограничения. Для устранения сомнений, если Исключения и Ограничения применяются к вашему использованию, эта Публичная лицензия не применяется, и вам не нужно соблюдать ее условия. + + 3. Срок. Срок действия этой Публичной лицензии указан в Разделе 6(a). + + 4. Средства и форматы; разрешенные технические изменения. Лицензирующий разрешает вам осуществлять Лицензированные Права во всех средствах и форматах, известных на данный момент или созданных в будущем, и вносить необходимые технические изменения для этого. Лицензирующий отказывается от и/или соглашается не утверждать никакое право или полномочие запрещать вам вносить технические изменения, необходимые для осуществления Лицензированных Прав, включая технические изменения, необходимые для обхода Эффективных Технологических Мер. В целях этой Публичной лицензии простое внесение изменений, разрешенных этим Разделом 2(a)(4), никогда не создает Адаптированный Материал. + + 5. Получатели вниз по течению. + + a. Предложение от Лицензирующего -- Лицензированный Материал. Каждый получатель Лицензированного Материала автоматически получает предложение от Лицензирующего осуществить Лицензированные Права на условиях этой Публичной лицензии. + + b. Дополнительное предложение от Лицензирующего -- Адаптированный Материал. Каждый получатель Адаптированного Материала от вас автоматически получает предложение от Лицензирующего осуществить Лицензированные Права в Адаптированном Материале на условиях Лицензии Адаптера, которую вы применяете. + + c. Без ограничений для получателей вниз по течению. Вы не можете предлагать или накладывать какие-либо дополнительные или иные условия на Лицензированный Материал или применять какие-либо Эффективные Технологические Меры к Лицензированному Материалу, если это ограничивает осуществление Лицензированных Прав любым получателем Лицензированного Материала. + + 6. Без одобрения. Ничто в этой Публичной лицензии не представляет собой и не может быть истолковано как разрешение утверждать или подразумевать, что вы являетесь, или что ваше использование Лицензированного Материала связано с, или спонсируется, поддерживается или получает официальный статус от Лицензирующего или других лиц, назначенных для получения упоминания, как указано в Разделе 3(a)(1)(A)(i). + + b. Другие права. + + 1. Моральные права, такие как право на целостность, не лицензированы в рамках этой Публичной лицензии, как и права на публичность, конфиденциальность и/или другие аналогичные личные права; однако, в той мере, в какой это возможно, Лицензирующий отказывается от и/или соглашается не утверждать любые такие права, принадлежащие Лицензирующему, в той ограниченной степени, которая необходима для того, чтобы вы могли осуществлять Лицензированные Права, но не в ином случае. + + 2. Патентные и товарные знаки не лицензированы в рамках этой Публичной лицензии. + + 3. В той мере, в какой это возможно, Лицензирующий отказывается от любого права на сбор роялти от вас за осуществление Лицензированных Прав, будь то напрямую или через коллективное общество в соответствии с любой добровольной или отменяемой законодательной или обязательной схемой лицензирования. Во всех других случаях Лицензирующий прямо оставляет за собой любое право на сбор таких роялти. + +Раздел 3 -- Условия Лицензии. + +Ваше осуществление Лицензированных Прав явно подчиняется следующим условиям. + + a. Упоминание. + + 1. Если вы Делитесь Лицензированным Материалом (включая в измененной форме), вы должны: + + a. сохранить следующее, если это предоставлено Лицензирующим с Лицензированным Материалом: + + i. идентификация создателя(ей) Лицензированного Материала и любых других, назначенных для получения упоминания, любым разумным образом, запрашиваемым Лицензирующим (включая псевдоним, если назначен); + + ii. уведомление об авторском праве; + + iii. уведомление, ссылающееся на эту Публичную лицензию; + + iv. уведомление, ссылающееся на отказ от гарантий; + + v. URI или гиперссылка на Лицензированный Материал в той мере, в какой это разумно возможно; + + b. указать, если вы изменили Лицензированный Материал и сохранить указание на любые предыдущие изменения; и + + c. указать, что Лицензированный Материал лицензирован в соответствии с этой Публичной лицензией, и включить текст или URI или гиперссылку на эту Публичную лицензию. + + 2. Вы можете удовлетворить условия в Разделе 3(a)(1) любым разумным образом, основываясь на средстве, способе и контексте, в котором вы Делитесь Лицензированным Материалом. Например, может быть разумным удовлетворить условия, предоставив URI или гиперссылку на ресурс, который включает необходимую информацию. + + 3. Если это запрашивается Лицензирующим, вы должны удалить любую из информации, требуемой в Разделе 3(a)(1)(A), в той мере, в какой это разумно возможно. + + b. ShareAlike. + + В дополнение к условиям в Разделе 3(a), если вы Делитесь Адаптированным Материалом, который вы производите, следующие условия также применяются. + + 1. Лицензия Адаптера, которую вы применяете, должна быть лицензией Creative Commons с теми же Элементами Лицензии, этой версии или более поздней, или Совместимой лицензией BY-SA. + + 2. Вы должны включить текст или URI или гиперссылку на Лицензию Адаптера, которую вы применяете. Вы можете удовлетворить это условие любым разумным образом, основываясь на средстве, способе и контексте, в котором вы Делитесь Адаптированным Материалом. + + 3. Вы не можете предлагать или накладывать какие-либо дополнительные или иные условия на Адаптированный Материал, или применять какие-либо Эффективные Технологические Меры к Адаптированному Материалу, которые ограничивают осуществление прав, предоставленных в соответствии с Лицензией Адаптера, которую вы применяете. + +Раздел 4 -- Права Базы Данных Sui Generis. + +Когда Лицензированные Права включают Права Базы Данных Sui Generis, которые применяются к вашему использованию Лицензированного Материала: + + a. для устранения сомнений, Раздел 2(a)(1) предоставляет вам право извлекать, повторно использовать, воспроизводить и Делиться всем или значительной частью содержимого базы данных; + + b. если вы включаете все или значительную часть содержимого базы данных в базу данных, в которой у вас есть Права Базы Данных Sui Generis, то база данных, в которой у вас есть Права Базы Данных Sui Generis (но не ее отдельное содержимое), является Адаптированным Материалом, + + включая для целей Раздела 3(b); и + c. вы должны соблюдать условия в Разделе 3(a), если вы Делитесь всем или значительной частью содержимого базы данных. + +Для устранения сомнений, этот Раздел 4 дополняет и не заменяет ваши обязательства в соответствии с этой Публичной лицензией, когда Лицензированные Права включают другие Авторские права и Похожие Права. + +Раздел 5 -- Отказ от гарантий и ограничение ответственности. + + a. ЕСЛИ ИНОЕ НЕ БУДЕТ ОТДЕЛЬНО ОБЕСПЕЧЕНО ЛИЦЕНЗИРУЮЩИМ, В МЕРЕ, В КОТОРОЙ ЭТО ВОЗМОЖНО, ЛИЦЕНЗИРУЮЩИЙ ПРЕДОСТАВЛЯЕТ ЛИЦЕНЗИРОВАННЫЙ МАТЕРИАЛ "КАК ЕСТЬ" И "КАК ДОСТУПНО", И НЕ ДАЕТ НИКАКИХ ЗАЯВЛЕНИЙ ИЛИ ГАРАНТИЙ ЛЮБОГО РОДА ОТНОСИТЕЛЬНО ЛИЦЕНЗИРОВАННОГО МАТЕРИАЛА, БУДЬ ТО ЯВНЫХ, ПОДРАЗУМЕВАЕМЫХ, ЗАКОННЫХ ИЛИ ДРУГИХ. ЭТО ВКЛЮЧАЕТ, БЕЗ ОГРАНИЧЕНИЙ, ГАРАНТИИ ПРАВА СОБСТВЕННОСТИ, ТОРГОВОЙ СПОСОБНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, НЕНАРУШЕНИЯ, ОТСУТСТВИЯ СКРЫТЫХ ИЛИ ДРУГИХ ДЕФЕКТОВ, ТОЧНОСТИ ИЛИ НАЛИЧИЯ ИЛИ ОТСУТСТВИЯ ОШИБОК, БУДЬ ТО ИЗВЕСТНЫХ ИЛИ ОБНАРУЖИВАЕМЫХ. ГДЕ ОТКАЗЫ ОТ ГАРАНТИЙ НЕ РАЗРЕШАЮТСЯ В ПОЛНОМ ОБЪЕМЕ ИЛИ ЧАСТИ, ЭТОТ ОТКАЗ МОЖЕТ НЕ ПРИМ + +**Отказ от ответственности**: +Этот документ был переведен с использованием машинных AI-сервисов перевода. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке должен считаться авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/ru/lessons/sketchnotes/README.md b/translations/ru/lessons/sketchnotes/README.md new file mode 100644 index 00000000..3e0ed3b1 --- /dev/null +++ b/translations/ru/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +Все скетч-ноты учебной программы можно скачать здесь. + +🎨 Создано: Томоми Имура (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**Отказ от ответственности**: +Этот документ был переведен с использованием услуг машинного перевода на основе ИИ. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неверные интерпретации, возникающие в результате использования этого перевода. \ No newline at end of file diff --git a/translations/sw/README.md b/translations/sw/README.md new file mode 100644 index 00000000..2012506f --- /dev/null +++ b/translations/sw/README.md @@ -0,0 +1,140 @@ +[![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) + +# Artificiell Intelligens för Nybörjare - En Lärplan + +|![ 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)_ | + +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. + +## Vad du kommer att lära dig + +**[Mindmap av Kursen](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +I denna lärplan kommer du att lära dig: + +* 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**. + +Vad vi inte kommer att täcka i denna lärplan: + +> [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) + +* 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/). + +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). + +# Innehåll + +| | 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) | +| 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) | | + +## Varje lektion innehåller + +* 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. + +## Komma igång + +- 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) + +Följ dessa steg: + +Forka repository: Klicka på "Fork"-knappen i det övre högra hörnet av denna sida. + +Klona repository: `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. + +## Möt andra studenter + +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. + +## Frågesporter + +> **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. + +## Hjälp önskas + +Har du förslag eller har du upptäckt stavfel eller kodfel? Skapa ett ärende eller en pull-begäran. + +## Speciella tack + +* **✍️ 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) + +## Andra kursplaner + +Vårt team producerar andra kursplaner! Kolla in: + +* [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 diff --git a/translations/sw/SECURITY.md b/translations/sw/SECURITY.md new file mode 100644 index 00000000..f2560927 --- /dev/null +++ b/translations/sw/SECURITY.md @@ -0,0 +1,40 @@ +## Säkerhet + +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/). + +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. + +## Rapportera säkerhetsproblem + +**Vänligen rapportera inte säkerhetsbrister genom offentliga GitHub-ärenden.** + +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). + +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). + +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). + +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: + + * 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 + +Denna information kommer att hjälpa oss att snabbt triagera din rapport. + +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. + +## Föredragna språk + +Vi föredrar att all kommunikation sker på engelska. + +## Policy + +Microsoft följer principen om [Koordinerad sårbarhetsavslöjande](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 diff --git a/translations/sw/etc/CODE_OF_CONDUCT.md b/translations/sw/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..526a42a3 --- /dev/null +++ b/translations/sw/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Microsoft Open Source Code of Conduct + +Detta projekt har antagit [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). + +Resurser: + +- [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. + +**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 diff --git a/translations/sw/etc/CONTRIBUTING.md b/translations/sw/etc/CONTRIBUTING.md new file mode 100644 index 00000000..ccf4dfd6 --- /dev/null +++ b/translations/sw/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# Bidragande + +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. + +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. + +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. + +# Söker Bidrag + +Vi letar för närvarande aktivt efter bidrag inom följande ämnen: + +- [ ] 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) + +**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 diff --git a/translations/sw/etc/Mindmap.md b/translations/sw/etc/Mindmap.md new file mode 100644 index 00000000..7bcb13a4 --- /dev/null +++ b/translations/sw/etc/Mindmap.md @@ -0,0 +1,76 @@ +# 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) + +## [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 + +## [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) + +## [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) + +## [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 + +**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 diff --git a/translations/sw/etc/SUPPORT.md b/translations/sw/etc/SUPPORT.md new file mode 100644 index 00000000..d84419c5 --- /dev/null +++ b/translations/sw/etc/SUPPORT.md @@ -0,0 +1,16 @@ +# Support + +## Hur man rapporterar problem och får hjälp + +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. + +För hjälp och frågor om hur man använder detta projekt, vänligen använd Diskussionsforum. + +## Microsofts supportpolicy + +Stödet för detta projekt är begränsat till de resurser som anges ovan. + +**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 diff --git a/translations/sw/etc/TRANSLATIONS.md b/translations/sw/etc/TRANSLATIONS.md new file mode 100644 index 00000000..1e11d7da --- /dev/null +++ b/translations/sw/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# Bidra genom att översätta lektioner + +Vi välkomnar översättningar för lektionerna i denna läroplan! + +## Riktlinjer + +Det finns mappar i varje lektionsmapp och mapp för lektionsintroduktion som innehåller de översatta markdown-filerna. + +> Observera, vänligen översätt inte någon kod i kodexempelfilerna; det enda som ska översättas är README, uppgifter och quiz. Tack! + +Översatta filer bör följa denna namngivningskonvention: + +**README._[språk]_.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). + +**assignment._[språk]_.md** + +Liksom för Readme, vänligen översätt även uppgifterna. + +**Quiz** + +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!** + +2. Lägg till din språkkod i rullgardinsmenyn i quiz-appens App.vue-fil. + +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. + +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 + +**TACK** + +Vi uppskattar verkligen dina insatser! + +**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 diff --git a/translations/sw/etc/quiz-app/README.md b/translations/sw/etc/quiz-app/README.md new file mode 100644 index 00000000..da53500b --- /dev/null +++ b/translations/sw/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# Quizzes + +Dessa quizzar är för- och efterföljande quizzar för AI-läroplanen på https://aka.ms/ai-beginners + +## Lägga till en översatt quizuppsättning + +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. + +Efter att ha redigerat översättningarna, redigera index.js-filen i översättningsmappen för att importera alla filer enligt konventionerna i `en`. + +Redigera `index.js`-filen i `assets/translations` för att importera de nya översatta filerna. + +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. + +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. + +## Projektuppsättning + +``` +npm install +``` + +### Kompilerar och hot-reloader för utveckling + +``` +npm run serve +``` + +### Kompilerar och minifierar för produktion + +``` +npm run build +``` + +### Lintar och fixar filer + +``` +npm run lint +``` + +### Anpassa konfiguration + +Se [Konfigurationsreferens](https://cli.vuejs.org/config/). + +Krediter: Tack till den ursprungliga versionen av denna quizapp: https://github.com/arpan45/simple-quiz-vue + +## Distribuera till Azure + +Här är en steg-för-steg-guide för att hjälpa dig komma igång: + +1. Forka ett GitHub-repo +Se till att din statiska webbapps kod finns i ditt GitHub-repo. Forka detta repo. + +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". + +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. + +- #### 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. + +- #### 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). + +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. + +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. + +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. + +### Exempel på arbetsflödesfil + +Här är ett exempel på hur GitHub Actions-arbetsflödesfilen kan se ut: +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 +``` + +### 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) + +**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 diff --git a/translations/sw/lessons/0-course-setup/for-teachers.md b/translations/sw/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..bf10b906 --- /dev/null +++ b/translations/sw/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# För lärare + +Vill du använda denna läroplan i ditt klassrum? Känn dig fri att göra det! + +Faktum är att du kan använda den direkt inom GitHub genom att använda 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. + +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. + +## Använda repo som den är + +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. + +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. + +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. + +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! + +## Ge oss gärna dina tankar + +Vi vill att denna läroplan ska fungera för dig och dina studenter. Ge oss gärna feedback på diskussionsforumet! + +**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 diff --git a/translations/sw/lessons/0-course-setup/how-to-run.md b/translations/sw/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..29ec7dcb --- /dev/null +++ b/translations/sw/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# Hur man kör koden + +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: + +## Kör lokalt på din dator + +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**. + +Efter att du har installerat miniconda behöver du klona repositoryt och skapa en virtuell miljö som ska användas för denna kurs: + +```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 +``` + +### Använda Visual Studio Code med Python-tillägg + +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). + +> **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. + +> **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. + +### Använda Jupyter i webbläsaren + +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. + +För att starta Jupyter lokalt, gå till kursens katalog och kör: + +```bash +jupyter notebook +``` +eller +```bash +jupyterhub +``` +Du kan sedan navigera till valfri `.ipynb` files, open them and start working. + +### Running in container + +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. + +## Köra i molnet + +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: + +* 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. + +> **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. + +## Köra i molnet med 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: + +* 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. + +> **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. + +* 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. + +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. + +**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 diff --git a/translations/sw/lessons/0-course-setup/setup.md b/translations/sw/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..8ee08451 --- /dev/null +++ b/translations/sw/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# Komma igång med denna läroplan + +## Är du student? + +Börja med följande resurser: + +* [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. + +**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/). + +> **Notera**: [Instruktioner om hur man kör koden i denna läroplan](/how-to-run.md) + +## Självstudier + +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: + +* 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". + +> 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. + +**Lärare**, vi har [inkluderat några förslag](/for-teachers.md) på hur man använder denna läroplan. + +--- + +## Pedagogik + +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**. + +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. + +> **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. + +## Offline-åtkomst + +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). + +**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 diff --git a/translations/sw/lessons/1-Intro/README.md b/translations/sw/lessons/1-Intro/README.md new file mode 100644 index 00000000..6ee9c146 --- /dev/null +++ b/translations/sw/lessons/1-Intro/README.md @@ -0,0 +1,38 @@ +> Bild av Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) av [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Senaste AI-forskningen + +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/). + +![ILSVRC Noggrannhet](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> 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). + +Sedan dess har neurala nätverk visat mycket framgångsrikt beteende i många uppgifter: + +--- + +År | Mänsklig paritet uppnådd +-----|-------- +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) + +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. + +## 🚀 Utmaning + +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. + +## [Quiz efter föreläsningen](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Granskning & Självstudie + +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. + +**Uppgift**: [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 diff --git a/translations/sw/lessons/1-Intro/assignment.md b/translations/sw/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..f9bc851e --- /dev/null +++ b/translations/sw/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# 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. + +**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 diff --git a/translations/sw/lessons/2-Symbolic/README.md b/translations/sw/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..af17f07d --- /dev/null +++ b/translations/sw/lessons/2-Symbolic/README.md @@ -0,0 +1,189 @@ +# Kunskapsrepresentation och Expert System + +![Sammanfattning av Symbolisk AI-innehåll](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sw.png) + +> Sketchnote av [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? + +## [Förläsningsquiz](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: + +* Kunskapsrepresentation +* Resonemang + +## Kunskapsrepresentation + +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. + +> ✅ **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. + +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: + +* **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. + + + +*Bild [från Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), av Longlivetheux - Eget arbete, CC BY-SA 4.0* + +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: + +![Kunskapsrepresentationsspektrum](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sw.png) + +> Bild av [Dmitry Soshnikov](http://soshnikov.com) + +* 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. + +> ✅ 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? + +## Klassificering av datorers kunskapsrepresentationer + +Vi kan klassificera olika metoder för kunskapsrepresentation i datorer i följande kategorier: + +* **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. **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: + +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 + +> ✅ Tänk på hur trippel kan användas för att representera andra typer av kunskap. + +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. + +**Python** + +Plats | Värde | Standardvärde | Intervall | +-----|-------|---------------|----------| +Namn | Python | | | +Är-En | Otypad-Språk | | | +Variabelnamn | | CamelCase | | +Programlängd | | | 5-5000 rader | +Blocksyntax | 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. + +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*. + +## Expert System + +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. + +![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 + +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: + +* **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. + +Som ett exempel, låt oss överväga följande expertsystem för att bestämma ett djur baserat på dess fysiska egenskaper: + +![AND-OR Träd](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sw.png) + +> Bild av [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: + +``` +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 +``` + +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. + +> ✅ Rita ditt eget AND-OR-träd om ett ämne du gillar! + +### Framåt vs. Bakåt Slutledning + +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: + +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. + +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. + +Denna process kan modelleras med hjälp av **bakåt slutledning**. Den drivs av **målet** - det attributvärde som vi letar efter: + +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. + +> ✅ I vilka situationer är framåt slutledning mer lämplig? Hur är det med bakåt slutledning? + +### Implementera Expertsystem + +Expertsystem kan implementeras med hjälp av olika verktyg: + +* 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. + +## ✍️ Övning: Djur Slutledning + +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. + +> **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. + +## Ontologier och det Semantiska Webben + +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: + +- 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: + + + +``` +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 +``` + +> ✅ 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*. + +I ett mer komplext fall, om vi vill definiera en lista av skapare, kan vi använda några datakonstruktioner definierade i RDF. + + + +> Diagrammen ovan av [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: + +* [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 ö + +**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 diff --git a/translations/sw/lessons/2-Symbolic/assignment.md b/translations/sw/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..28116472 --- /dev/null +++ b/translations/sw/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# Bygg en Ontologi + +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. + +**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 diff --git a/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..2b06b37e --- /dev/null +++ b/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,96 @@ +# Introduktion till Neurala Nätverk: Perceptron + +## [För-lärare quiz](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. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> Bilder [från 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. + +> ✅ En potentiometer är en enhet som låter användaren justera motståndet i en krets. + +> 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.* + +## Perceptronmodell + +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: + +y(x) = f(wTx) + +där f är en stegaktiveringsfunktion + + + + +## Träning av 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: + +E(w) = -∑wTxiti + +där: + +* 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. + +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: + +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 + +w(t+1) = w(t) + ∑ηxiti + +Algoritmen i Python ser ut så här: + +```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 +``` + +## Slutsats + +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. + +## 🚀 Utmaning + +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). + +## [Efter-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Granskning & Självstudie + +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. + +Här är en intressant [artikel om perceptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590 +) också. + +## [Uppgift](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. + +* [Instruktioner](lab/README.md) +* [Anteckningsbok](../../../../../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 diff --git a/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..f3e0ed7e --- /dev/null +++ b/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# Flerklassklassificering med Perceptron + +Laborationsuppgift från [AI för nybörjare läroplan](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +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. + +## Tips + +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 + +> **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. + +## Starta anteckningsblock + +Börja laborationen genom att öppna [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 diff --git a/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..301c89ab --- /dev/null +++ b/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# Introduktion till Neurala Nätverk. Flerlagers 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. + +I denna sektion kommer vi att utvidga denna modell till ett mer flexibelt ramverk, vilket gör att vi kan: + +* utföra **flerklassklassificering** utöver tvåklasstillstånd +* lösa **regressionsproblem** utöver klassificering +* separera klasser som inte är linjärt separerbara + +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. + +## [För-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalisering av Maskininlärning + +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: + +* 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**. + +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. + +> 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)* + +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 θ. + +> ✅ **Målet med träningen av det neurala nätverket är att minimera felet genom att variera parametrarna θ** + +## Gradientnedstigning Optimering + +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: + +* 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 + +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). + +## Flerlagers Perceptron och 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) + +Här är α en **icke-linjär aktiveringsfunktion**, σ är en softmax-funktion, och parametrarna θ=<*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: + +* ∂ℒ/∂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. + +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'. + +beräkningsgraf + +> TODO: bildcitat + +> ✅ Vi kommer att täcka backprop i mycket mer detalj i vårt notebook-exempel. + +## Slutsats + +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. + +## 🚀 Utmaning + +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. + +Gå till [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) notebooken och arbeta igenom den. + +## [Efter-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Granskning & Självstudie + +Backpropagation är en vanlig algoritm som används inom AI och ML, värd att studera [i mer detalj](https://wikipedia.org/wiki/Backpropagation) + +## [Uppgift](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. + +* [Instruktioner](lab/README.md) +* [Notebook](../../../../../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 diff --git a/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..3f7692bd --- /dev/null +++ b/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# MNIST Klassificering med Vårt Eget Ramverk + +Laborationsuppgift från [AI för Nybörjare Läroplan](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +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. + +## Starta Anteckningsbok + +Börja laborationen genom att öppna [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Frågor + +Som ett resultat av denna laboration, försök att besvara följande frågor: + +- 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. + +**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 diff --git a/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..64819968 --- /dev/null +++ b/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# Neural Network Frameworks + +Som vi redan har lärt oss, för att effektivt kunna träna neurala nätverk behöver vi göra två saker: + +* 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 + +## [För-lektion quiz](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. + +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. + +> ✅ Termen 'parallellisera' betyder att fördela beräkningarna över flera enheter. + +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. + +Lågnivå-API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +Högnivå-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. + +**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. + +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. + +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. + +## Lärande + +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. + +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. + +## ✍️ Övningar: Ramverk + +Fortsätt ditt lärande i följande anteckningar: + +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* + +Efter att ha bemästrat ramverken, låt oss sammanfatta begreppet överanpassning. + +# Överanpassning + +Överanpassning är ett extremt viktigt begrepp inom maskininlärning, och det är mycket viktigt att få det rätt! + +Överväg följande problem med att approximera 5 punkter (representerade av `x` på graferna nedan): + +![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 + +* 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. + +Det är mycket viktigt att hitta en korrekt balans mellan modellens rikedom (antal parametrar) och antalet träningsprover. + +## Varför överanpassning inträffar + + * Inte tillräckligt med träningsdata + * För kraftfull modell + * För mycket brus i indata + +## Hur man upptäcker överanpassning + +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). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sw.png) + +## Hur man förhindrar överanpassning + +Om du ser att överanpassning inträffar kan du göra något av följande: + + * Ö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. + +## Överanpassning och Bias-Varians 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: + +* **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**). + +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. + +## Slutsats + +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. + +## 🚀 Utmaning + +I de medföljande anteckningarna hittar du 'uppgifter' längst ner; arbeta igenom anteckningarna och slutför uppgifterna. + +## [Efter-lektion quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Granskning & Självstudie + +Gör lite forskning om följande ämnen: + +- TensorFlow +- PyTorch +- Överanpassning + +Ställ dig själv följande frågor: + +- Vad är skillnaden mellan TensorFlow och PyTorch? +- Vad är skillnaden mellan överanpassning och underanpassning? + +## [Uppgift](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. + +* [Instruktioner](lab/README.md) +* [Anteckning](../../../../../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 diff --git a/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..a28f6422 --- /dev/null +++ b/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# Klassificering med PyTorch/TensorFlow + +Laborationsuppgift från [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +Lös två klassificeringsproblem med hjälp av enkla och flerlagers fullt kopplade nätverk med PyTorch eller 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. + +Försök med olika nätverksarkitekturer för att uppnå den bästa noggrannheten du kan få. + +## Starta Anteckningsbok + +Börja laborationen genom att öppna [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 diff --git a/translations/sw/lessons/3-NeuralNetworks/README.md b/translations/sw/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..6093bfc0 --- /dev/null +++ b/translations/sw/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# Introduktion till Neurala Nätverk + +![Sammanfattning av innehållet i Introduktion till Neurala Nätverk i en doodle](../../../../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**. + +> 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. + +## Maskininlärning + +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. + +> 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. + +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**. + +Vi kommer att överväga de två vanligaste problemen inom maskininlärning: + +* **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. + +> 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. + +I denna läroplan kommer vi endast att fokusera på modeller för neurala nätverk. + +## En Modell av en 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). + +![Modell av en Neuron](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sw.jpg) | ![Modell av en 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)* + +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: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +där f är någon icke-linjär **aktiveringsfunktion**. + +> 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. + +## I denna Sektion + +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) + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/sw/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..c276e4b6 --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# Introduktion till Datorseende + +[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. + +## [För-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +En av de enklaste uppgifterna inom datorseende är **bildklassificering**. + +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. + +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. + +Det finns flera Python-bibliotek tillgängliga för bildbehandling: + +* **[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. + +## 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. + +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. + +### Ladda Bilder + +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: + +```python +import cv2 +import matplotlib.pyplot as plt + +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: + +```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. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **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)**. + +## Exempel på att använda Datorseende + +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: + +* **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. + +![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) +----|-----|----- + +> Bild från [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. + +![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sw.png) + +> Bild från [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: + + - **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. + +![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sw.png) + +> Bild från [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Exempel Notebooks: OpenCV [prova OpenCV i praktiken](../../../../../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) + +## Slutsats + +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. + +## 🚀 Utmaning + +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. + +## [Efter-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Granskning & Självstudie + +Läs mer om optiskt flöde [i denna fantastiska handledning](https://learnopencv.com/optical-flow-in-opencv/). + +## [Uppgift](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. + +Palm Movement Frame + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/sw/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..0ac030de --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,23 @@ +# Upptäckta rörelser med hjälp av optisk flöde + +Laborationsuppgift från [AI for Beginners Curriculum](https://aka.ms/ai-beginners). + +## Uppgift + +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. + +**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. + +**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/). + +## Startnotebook + +Börja labben genom att öppna [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Sammanfattning + +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. + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/sw/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..77c2d3d5 --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# Kända CNN-arkitekturer + +### 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: + +![ImageNet Layers](../../../../../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. + +![ImageNet Pyramid](../../../../../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) + +### ResNet + +ResNet är en familj av modeller som föreslogs av Microsoft Research 2015. Huvudidén med ResNet är att använda **residualblock**: + + + +> Bild från [denna artikel](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). + +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. + +### 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: + + + +> Bild från [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. + +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). + +### 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. + +Här är [ett bra blogginlägg om MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Slutsats + +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. + +## 🚀 Utmaning + +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. + +## [Efterföreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Granskning & Självstudie + +Ä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. + +## [Uppgift](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. + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/sw/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..0a68d6d1 --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,59 @@ +# Konvolutionella Neurala Nätverk + +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. + +## [Pre-lecture quiz](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. + +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. + +![Vertikalt Kantfilter](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sw.png) | ![Horisontellt Kantfilter](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sw.png) +----|---- + +> Bild av 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. + +> Bild av [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. + +## Huvudidéer bakom CNN + +Sättet som CNN:er fungerar på baseras på följande viktiga idéer: + +* 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. + +![Hierarkisk Funktionsutvinning](../../../../../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) + +## ✍️ Övningar: Konvolutionella Neurala Nätverk + +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: + +* [Konvolutionella Neurala Nätverk - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Konvolutionella Neurala Nätverk - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Pyramidarkitektur + +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. + +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: + +![ImageNet Lager](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sw.jpg) + +![ImageNet Pyramid](../../../../../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) + +## Bästa Kända CNN-arkitekturer + +[Fortsätt din studie om de bäst kända CNN-arkitekturerna](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 diff --git a/translations/sw/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/sw/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..028c8765 --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# Klassificering av Husdjurs Ansikten + +Laborationsuppgift från [AI för Nybörjare Läroplan](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +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. + +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. + +## Datasetet + +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. + +![Datasetet vi kommer att hantera](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sw.png) + +För att ladda ner datasetet, använd denna kodsnutt: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Starta Anteckningsbok + +Börja laborationen med att öppna [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Sammanfattning + +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. + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..4bf8f23a --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,81 @@ +# Förtränade Nätverk och Överföringsinlärning + +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? + +## [För-föreläsningsquiz](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. + +> ✅ Ö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. + +## Förtränade Modeller som Funktionsextraktorer + +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. + +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: + +* **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. + +Här är exempel på egenskaper som extraherats från en bild av en katt av VGG-16-nätverket: + +![Egenskaper extraherade av VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sw.png) + +## Katter vs. Hundar Dataset + +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. + +## ✍️ Övning: Överföringsinlärning + +Låt oss se överföringsinlärning i praktiken i motsvarande anteckningsböcker: + +* [Överföringsinlärning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Överföringsinlärning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Visualisering av Fiendens Katt + +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. + +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. + +![Bildoptimeringsloop](../../../../../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. + +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: + +![Ideal Katt](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sw.png) | ![Ideal Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sw.png) +-----|----- + *Ideal Katt* | *Ideal Zebra* + +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: + +![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) +-----|----- +*Originalbild av en hund* | *Bild av en hund klassificerad som en katt* + +Se koden för att återskapa resultaten ovan i följande anteckningsbok: + +* [Ideal och Fiendens Katt - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Slutsats + +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. + +## 🚀 Utmaning + +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. + +## [Efter-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Granskning & Självstudie + +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. + +## [Uppgift](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. + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..360ba92d --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# Djupinlärningstricks för träning + +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. + +För att göra träningen av djupa nätverk mer effektiv finns det några tekniker som kan användas. + +## Hålla värden inom rimligt intervall + +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. + +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. + +## Initial Viktinitialisering + +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. + +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. + +Följande initialiseringar används ofta: + + * 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 + +## Batchnormalisering + +Ä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. + +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. + +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/)). + +## 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. + +Ä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. + +Denna effekt kan förklaras på flera sätt: + + * 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 + +> *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* + +## Förhindra överanpassning + +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. + +> Se till att du förstår konceptet [överanpassning](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) som vi har introducerat tidigare! + +Det finns flera sätt att förhindra överanpassning: + + * 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) + +## Optimerare / Träningsalgoritmer + +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. + +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: + +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*: + +* 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. + +### Adam, Adagrad, etc. + +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. + +En av lösningarna på detta problem är att endast använda riktningen av gradienten i ekvationen och ignorera det absoluta värdet, dvs. + +wt+1 = wt - η(∇ℒ/||∇ℒ||), där ||∇ℒ|| = √∑(∇ℒ)2 + +Denna algoritm kallas **Adagrad**. Andra algoritmer som använder samma idé: **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. + +### Gradientklippning + +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. + +### Inlärningshastighetsavtagning + +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. + +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**. + +## Olika nätverksarkitekturer + +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. + +> 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) + +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) + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..897f9620 --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# Klassificering av Oxford-djur med Transfer Learning + +Laborationsuppgift från [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +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/). + +## Datasetet + +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. + +För att ladda ner datasetet, använd denna kodsnutt: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Starta Notebook + +Börja laborationen med att öppna [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Sammanfattning + +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. + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/sw/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..3a5abfb6 --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# 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. + +## [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. + +> ✅ 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." + +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. + +![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sw.jpg) + +> Bild från [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Scenarier för användning av 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: + +* **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. + +## 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. + +Å 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). + +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. + +Sammanfattningsvis: + + * 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 + + + +> Bild från [denna blogginlägg](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) av Isaak Dykeman + +Variational autoencoders använder en komplex förlustfunktion som består av två delar: + +* **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. + +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: + +vaemnist + +> Bild av [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: + +vaemnist cluster + +> Bild av [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Övningar: Autoencoders + +Lär dig mer om autoencoders i dessa motsvarande anteckningar: + +* [Autoencoders i TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoders i PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Egenskaper hos 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**. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Slutsats + +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. + +## 🚀 Utmaning + +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. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Granskning & Självstudie + +För referens, läs mer om autoencoders i dessa resurser: + +* [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) + +## Uppgift + +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. + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/10-GANs/README.md b/translations/sw/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..f48858ca --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# Generativa Motståndsnätverk + +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. + +## [Förläsningsquiz](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. + +Huvudidén med en GAN är att ha två neurala nätverk som kommer att tränas mot varandra: + + + +> Bild av [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. + +### Diskriminator + +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). + +> ✅ En GAN baserad på konvolutionella nätverk kallas en [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. + +> ✅ 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) + +### 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). + +> ✅ 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. + + + +> Bild av [Dmitry Soshnikov](http://soshnikov.com) + +### Träning av 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. + +Träningen sker i två steg: + +* **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. + +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. + +## ✍️ Övningar: GANs + +* [GAN Notebook i TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN Notebook i PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problem med GAN-träning + +GANs är kända för att vara särskilt svåra att träna. Här är några problem: + +* **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. + +## Stilöverföring + +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**. + +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. + +## ✍️ Exempel: [Stilöverföring](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Efterläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Slutsats + +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. + +## 🚀 Utmaning + +Gå igenom [Stilöverföringsnotebooken](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) med dina egna bilder. + +## Granskning & Självstudier + +För referens, läs mer om GANs i dessa resurser: + +* 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/) + +## Uppgift + +Å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? + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..38d4f5c3 --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,51 @@ +### YOLO - Du Tittar Endast En Gång + +YOLO är en realtids algoritm som körs i ett enda steg. Huvudidén är följande: + +* 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. + +![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sw.png) +> Bild från [officiellt papper](https://arxiv.org/abs/1506.02640) + +### Andra Algoritmer + +* 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) + +## ✍️ Övningar: Objektdetektering + +Fortsätt din inlärning i följande anteckningsbok: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Slutsats + +I den här lektionen fick du en snabb genomgång av alla olika sätt som objektdetektering kan utföras på! + +## 🚀 Utmaning + +Läs igenom dessa artiklar och anteckningsböcker om YOLO och prova dem själv + +* [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) + +## [Efterföreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Granskning & Självstudier + +* [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/) + +## [Uppgift: Objektdetektering](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 diff --git a/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..fc984217 --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# Huvuddetektering med Hollywood Heads Dataset + +Laborationsuppgift från [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +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/). + +## Datasetet + +[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: + +```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 + + +``` + +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. + +## Träning av Objektdetektion + +Du kan träna en objektdetekteringsmodell på följande sätt: + +* 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. + +## Sammanfattning + +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. + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/sw/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..5fef0ec0 --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# Segmentering + +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**. + +## [För-lärare quiz](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: + +* **Semantisk segmentering** berättar endast pixelns klass och gör ingen åtskillnad mellan olika objekt av samma klass. +* **Instanssegmentering** delar klasser i olika instanser. + +För instanssegmentering är dessa får olika objekt, men för semantisk segmentering representeras alla får av en klass. + + + +> Bild från [detta blogginlägg](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: + +* **Encoder** extraherar funktioner från inmatningsbilden. +* **Decoder** omvandlar dessa funktioner till **maskbilden**, med samma storlek och antal kanaler motsvarande antalet klasser. + + + +> Bild från [denna publikation](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). + +> ✅ 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. + +## Segmentering för Medicinsk Avbildning + +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. + +> ✅ 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? + +navi + +> Bild från PH2 Databas + +Vi kommer att träna en modell för att segmentera vilket nevus som helst från dess bakgrund. + +## ✍️ Övningar: Semantisk Segmentering + +Ö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. + +* [Semantisk Segmentering Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Semantisk Segmentering TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Efter-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Slutsats + +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. + +## 🚀 Utmaning + +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. + +## Granskning & Självstudie + +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. + +## [Uppgift](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. + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/sw/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..8c88e57b --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# Segmentering av den mänskliga kroppen + +Laborationsuppgift från [AI för nybörjare-kursen](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +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. + +## Datasetet + +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. + +## Starta anteckningsboken + +Börja laborationen genom att öppna [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Sammanfattning + +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. + +**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 diff --git a/translations/sw/lessons/4-ComputerVision/README.md b/translations/sw/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..171d4dfd --- /dev/null +++ b/translations/sw/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# Datorseende + +![Sammanfattning av innehållet inom datorseende i en doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sw.png) + +I denna sektion kommer vi att lära oss om: + +* [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) + +**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 diff --git a/translations/sw/lessons/5-NLP/13-TextRep/README.md b/translations/sw/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..f2040f42 --- /dev/null +++ b/translations/sw/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# Att Representera Text som Tensors + +## [För-lektionens quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Textklassificering + +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: + +* 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... + +Vårt mål kommer att vara att klassificera nyhetsartikeln i en av kategorierna baserat på texten. + +## Representera text + +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. + +Bild som visar diagram som mappar ett tecken till en ASCII- och binär representation + +> [Bildkälla](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. + +Därför kan vi använda olika metoder när vi representerar text: + +* **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. + +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. + +## 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. + +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. + +## Bag-of-Words och 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). + + + +> Bild av författaren + +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. + +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. + +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. + +## ✍️ Övningar: Textrepresentation + +Fortsätt din inlärning i följande anteckningar: + +* [Textrepresentation med PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Textrepresentation med TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Slutsats + +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. + +## 🚀 Utmaning + +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) + +## [Efter-lektionens quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Granskning & Självstudie + +Ö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) + +## [Uppgift: Anteckningar](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 diff --git a/translations/sw/lessons/5-NLP/13-TextRep/assignment.md b/translations/sw/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..71eb641b --- /dev/null +++ b/translations/sw/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# Uppgift: Anteckningsböcker + +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. + +**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 diff --git a/translations/sw/lessons/5-NLP/14-Embeddings/README.md b/translations/sw/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..5529cd33 --- /dev/null +++ b/translations/sw/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# Inbäddningar + +## [För-lektion quiz](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. + +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. + +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. + +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`. + +![Bild som visar en inbäddningsklassificerare för fem sekvensord.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sw.png) + +> Bild av författaren + +## ✍️ Övningar: Inbäddningar + +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) + +## Semantiska Inbäddningar: 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). + +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: + + - **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. + +CBoW är snabbare, medan skip-gram är långsammare, men gör ett bättre jobb med att representera sällsynta ord. + +![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) + +> Bild från [denna artikel](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. + +## Kontextuella Inbäddningar + +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. + +Till exempel har ordet 'play' i dessa två olika meningar ganska olika betydelser: + +- Jag gick på en **teater**. +- John vill **leka** med sina vänner. + +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. + +## Slutsats + +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. + +## 🚀 Utmaning + +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. + +## [Efter-lektion quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Granskning & Självstudie + +Läs igenom denna artikel om Word2Vec: [Effektiv uppskattning av ordrepresentationer i vektorutrymme](https://arxiv.org/pdf/1301.3781.pdf) + +## [Uppgift: Anteckningsblock](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 diff --git a/translations/sw/lessons/5-NLP/14-Embeddings/assignment.md b/translations/sw/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..ea25fd1b --- /dev/null +++ b/translations/sw/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# Uppgift: Anteckningsböcker + +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). + +**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 diff --git a/translations/sw/lessons/5-NLP/15-LanguageModeling/README.md b/translations/sw/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..a51d6948 --- /dev/null +++ b/translations/sw/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# Språkmodellering + +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. + +## [För-lärare quiz](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. + +## Träning av inbäddningar + +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: + +* **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$. + +![bild från artikel om att omvandla ord till vektorer](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sw.png) + +> Bild från [denna artikel](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Exempel Notebooks: Träning av CBoW-modell + +Fortsätt din inlärning i följande notebooks: + +* [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) + +## Slutsats + +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. + +## [Efter-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Översyn & Självstudie + +* [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). + +## 🚀 [Uppgift: Träna Skip-Gram-modell](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) + +**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 diff --git a/translations/sw/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/sw/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..b557b6bd --- /dev/null +++ b/translations/sw/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Träning av Skip-Gram Modell + +Laborationsuppgift från [AI för Nybörjare Läroplan](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +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. + +## Datasetet + +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: + +```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') +``` + +## Utforska! + +Om du har tid och vill fördjupa dig i ämnet, försök att utforska flera saker: + +* 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? + +**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 diff --git a/translations/sw/lessons/5-NLP/16-RNN/README.md b/translations/sw/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..8bc031b1 --- /dev/null +++ b/translations/sw/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,87 @@ +# Återkommande Neurala Nätverk + +## [För-lecture quiz](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. + +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. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sw.png) + +> Bild av författaren + +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. + +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. + +> ✅ 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. + +## Anatomiska av en RNN Cell + +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). + +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. + +RNN Cell Anatom + +> Bild av författaren + +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*. + +## Lång Korttidsminne (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). + +![Bild som visar ett exempel på en lång korttidsminnescell](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Bildkälla 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): + +* **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. + +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. + +> ✅ 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. + +## Bidirektionella och Flerlager RNN:er + +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. + +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. + +![Bild som visar en flerlagers lång-korttidsminnes-RNN](../../../../../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* + +## ✍️ Övningar: Inbäddningar + +Fortsätt din inlärning i följande anteckningsböcker: + +* [RNNs med PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs med TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Slutsats + +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. + +## 🚀 Utmaning + +Läs igenom viss litteratur om LSTM och överväg deras tillämpningar: + +- [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) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Granskning & Självstudie + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) av Christopher Olah. + +## [Uppgift: Anteckningsböcker](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 diff --git a/translations/sw/lessons/5-NLP/16-RNN/assignment.md b/translations/sw/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..ce4891bb --- /dev/null +++ b/translations/sw/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# Uppgift: Anteckningsböcker + +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). + +**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 diff --git a/translations/sw/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/sw/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..6891712c --- /dev/null +++ b/translations/sw/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# Generativa nätverk + +## [Förläsningsquiz](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. + +> ✅ 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. + +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. + +Detta möjliggör olika neurala arkitekturer som visas i bilden nedan: + +![Bild som visar vanliga mönster av återkommande neurala nätverk.](../../../../../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/) + +* **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. + +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. + +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: + +![Bild som visar ett exempel på RNN-generering av ordet '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. + + + +> Bild av författaren + +## ✍️ Övningar: Generativa Nätverk + +Fortsätt din inlärning i följande anteckningsblock: + +* [Generativa Nätverk med PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Generativa Nätverk med TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Mjuk textgenerering och temperatur + +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: + +``` +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*). + +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. + +Utforska hur denna mjuka textgenerering implementeras i anteckningsblocken länkade ovan. + +## Slutsats + +Ä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). + +## 🚀 Utmaning + +Ta några lektioner på Microsoft Learn om detta ämne + +* 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) + +## [Efterläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Granskning & Självstudie + +Här är några artiklar för att utöka din kunskap + +* 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/) + +## [Uppgift](lab/README.md) + +Vi har sett hur man genererar text tecken för tecken. I labbet kommer du att utforska textgenerering på ordnivå. + +**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 diff --git a/translations/sw/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/sw/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..028693a9 --- /dev/null +++ b/translations/sw/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# Textgenerering på ordnivå med RNN:er + +Laborationsuppgift från [AI för Nybörjare Läroplan](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +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å. + +## Datasetet + +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. + +**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 diff --git a/translations/sw/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/sw/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..5aa3c109 --- /dev/null +++ b/translations/sw/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# Mekanismer för uppmärksamhet och Transformatorer + +## [För-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Ett av de mest betydelsefulla problemen inom NLP-området är **maskinöversättning**, en grundläggande uppgift som ligger till grund för verktyg som Google Translate. I denna sektion kommer vi att fokusera på maskinöversättning, eller mer generellt, på vilken *sekvens-till-sekvens* uppgift som helst (vilket också kallas **meningstransduktion**). + +Med RNN:er implementeras sekvens-till-sekvens av två återkommande nätverk, där ett nätverk, **kodaren**, komprimerar en ingångssekvens till ett dolt tillstånd, medan ett annat nätverk, **avkodaren**, utvecklar detta dolda tillstånd till ett översatt resultat. Det finns ett par problem med denna metod: + +* Det slutliga tillståndet för kodarnätverket har svårt att komma ihåg början av en mening, vilket leder till dålig kvalitet på modellen för långa meningar. +* Alla ord i en sekvens har samma inverkan på resultatet. I verkligheten har dock specifika ord i ingångssekvensen ofta mer inverkan på sekventiella utdata än andra. + +**Uppmärksamhetsmekanismer** ger ett sätt att vikta den kontextuella påverkan av varje ingångsvektor på varje utdataförutsägelse av RNN. Sättet det implementeras på är genom att skapa genvägar mellan mellanliggande tillstånd av ingångs-RNN och utgångs-RNN. På detta sätt, när vi genererar utdata symbol yt, kommer vi att ta hänsyn till alla ingångs dolda tillstånd hi, med olika viktkoefficienter αt,i. + +![Bild som visar en kodare/avkodare-modell med ett additivt uppmärksamhetslager](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sw.png) + +> Kodare-avkodare-modell med additiv uppmärksamhetsmekanism i [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citerad från [denna bloggpost](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Uppmärksamhetsmatrisen {αi,j} skulle representera graden av att vissa ingångsord spelar en roll i generationen av ett givet ord i utgångssekvensen. Nedan är ett exempel på en sådan matris: + +![Bild som visar en exempeljustering som hittats av RNNsearch-50, tagen från Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sw.png) + +> Figur från [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Uppmärksamhetsmekanismer är ansvariga för mycket av den nuvarande eller nära nuvarande toppmoderna inom NLP. Att lägga till uppmärksamhet ökar dock kraftigt antalet modellparametrar vilket ledde till skalningsproblem med RNN:er. En viktig begränsning av att skala RNN:er är att den återkommande naturen av modellerna gör det utmanande att batcha och parallellisera träning. I en RNN måste varje element i en sekvens bearbetas i sekventiell ordning, vilket innebär att det inte kan parallelliseras enkelt. + +![Kodare Avkodare med Uppmärksamhet](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figur från [Google's Blog](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Antagandet av uppmärksamhetsmekanismer kombinerat med denna begränsning ledde till skapandet av de nuvarande toppmoderna transformatormodellerna som vi känner och använder idag, såsom BERT till Open-GPT3. + +## Transformatormodeller + +En av de huvudsakliga idéerna bakom transformatorer är att undvika den sekventiella naturen av RNN:er och att skapa en modell som är parallelliserbar under träning. Detta uppnås genom att implementera två idéer: + +* positionskodning +* använda självuppmärksamhetsmekanism för att fånga mönster istället för RNN:er (eller CNN:er) (det är därför artikeln som introducerar transformatorer kallas *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Positionskodning/Embedding + +Idén med positionskodning är följande. +1. När man använder RNN:er representeras den relativa positionen av token av antalet steg, och behöver därför inte uttryckligen representeras. +2. Men när vi växlar till uppmärksamhet, behöver vi veta de relativa positionerna för token inom en sekvens. +3. För att få positionskodning, kompletterar vi vår sekvens av token med en sekvens av tokenpositioner i sekvensen (dvs. en sekvens av siffror 0,1, ...). +4. Vi blandar sedan tokenpositionen med en tokeninbäddningsvektor. För att omvandla positionen (heltal) till en vektor kan vi använda olika tillvägagångssätt: + +* Träningsbar inbäddning, liknande tokeninbäddning. Detta är den metod vi överväger här. Vi tillämpar inbäddningslager ovanpå både token och deras positioner, vilket resulterar i inbäddningsvektorer av samma dimensioner, som vi sedan lägger ihop. +* Fast positionskodningsfunktion, som föreslagits i den ursprungliga artikeln. + + + +> Bild av författaren + +Resultatet vi får med positionsinbäddning inbäddas både den ursprungliga token och dess position inom en sekvens. + +### Multi-Head Själv-Uppmärksamhet + +Nästa steg är att fånga vissa mönster inom vår sekvens. För att göra detta använder transformatorer en **självuppmärksamhets**mekanism, som i grunden är uppmärksamhet tillämpad på samma sekvens som ingång och utgång. Tillämpning av självuppmärksamhet gör att vi kan ta hänsyn till **kontext** inom meningen och se vilka ord som är relaterade. Till exempel gör det att vi kan se vilka ord som hänvisas till av referenser, såsom *det*, och även ta kontexten i beaktande: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sw.png) + +> Bild från [Google Blog](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +I transformatorer använder vi **Multi-Head Attention** för att ge nätverket kraften att fånga flera olika typer av beroenden, t.ex. långsiktiga vs. kortsiktiga ordförhållanden, medreferens vs. något annat, osv. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) innehåller mer information om implementeringen av transformatorlager. + +### Kodare-Avkodare Uppmärksamhet + +I transformatorer används uppmärksamhet på två ställen: + +* För att fånga mönster inom ingångstexten med hjälp av självuppmärksamhet +* För att utföra sekvensöversättning - det är uppmärksamhetslagret mellan kodaren och avkodaren. + +Kodare-avkodare uppmärksamhet är mycket lik den uppmärksamhetsmekanism som används i RNN:er, som beskrivits i början av denna sektion. Detta animerade diagram förklarar rollen av kodare-avkodare uppmärksamhet. + +![Animerad GIF som visar hur utvärderingarna utförs i transformatormodeller.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Eftersom varje ingångsposition mappas oberoende till varje utgångsposition kan transformatorer parallellisera bättre än RNN:er, vilket möjliggör mycket större och mer uttrycksfulla språkmodeller. Varje uppmärksamhetshuvud kan användas för att lära sig olika relationer mellan ord som förbättrar efterföljande NLP-uppgifter. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) är ett mycket stort flerlagers transformatornätverk med 12 lager för *BERT-base*, och 24 för *BERT-large*. Modellen förtränas först på en stor korpus av textdata (WikiPedia + böcker) med hjälp av osupervised träning (förutsäga maskerade ord i en mening). Under förträningen absorberar modellen betydande nivåer av språkförståelse som sedan kan utnyttjas med andra dataset genom finjustering. Denna process kallas **överföringsinlärning**. + +![Bild från http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sw.png) + +> Bild [källa](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Övningar: Transformatorer + +Fortsätt din inlärning i följande anteckningsböcker: + +* [Transformatorer i PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformatorer i TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Slutsats + +I denna lektion lärde du dig om transformatorer och uppmärksamhetsmekanismer, alla viktiga verktyg i NLP-verktygslådan. Det finns många varianter av transformatorarkitekturer inklusive BERT, DistilBERT, BigBird, OpenGPT3 och mer som kan finjusteras. [HuggingFace-paketet](https://github.com/huggingface/) tillhandahåller ett förråd för träning av många av dessa arkitekturer med både PyTorch och TensorFlow. + +## 🚀 Utmaning + +## [Efter-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Granskning & Självstudie + +* [Bloggpost](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), som förklarar den klassiska [Attention is all you need](https://arxiv.org/abs/1706.03762) artikeln om transformatorer. +* [En serie bloggposter](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) om transformatorer, som förklarar arkitekturen i detalj. + +## [Uppgift](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 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 diff --git a/translations/sw/lessons/5-NLP/18-Transformers/assignment.md b/translations/sw/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..c92992d3 --- /dev/null +++ b/translations/sw/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# Uppgift: 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. + +**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 diff --git a/translations/sw/lessons/5-NLP/19-NER/README.md b/translations/sw/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..5d1f1c08 --- /dev/null +++ b/translations/sw/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,85 @@ +# Kännedomsigenkänning + +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. + +## [Förläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Exempel på att använda 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. + +Bot NER + +> Bild av författaren + +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. + +> ✅ 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. + +## NER som tokenklassificering + +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. + +Överväg följande artikelrubrik: + +**Trikuspidalventilinsufficiens** och **litiumkarbonat** **toxicitet** hos ett nyfött barn. + +Enheterna här är: + +* Trikuspidalventilinsufficiens är en sjukdom (`DIS`) +* Litiumkarbonat är ett kemiskt ämne (`CHEM`) +* Toxicitet är också en sjukdom (`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: + +Token | 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 +. | 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: + +![Bild som visar vanliga mönster för återkommande neurala nätverk.](../../../../../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.* + +## Träning av NER-modeller + +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. + +## ✍️ Exempelnotebookar: NER + +Fortsätt ditt lärande i följande notebook: + +* [NER med TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Slutsats + +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. + +## 🚀 Utmaning + +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. + +## [Efterläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Granskning & Självstudie + +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. + +## [Uppgift](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. + +**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 diff --git a/translations/sw/lessons/5-NLP/19-NER/lab/README.md b/translations/sw/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..9241b403 --- /dev/null +++ b/translations/sw/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +Laborationsuppgift från [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +I denna laboration behöver du träna en modell för namngiven entitetsigenkänning för medicinska termer. + +## Datasetet + +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. + +BC5CDR Dataset ser ut så här: + +``` +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 +... +``` + +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. + +Du behöver skriva lite Python-kod för att konvertera detta till BIO-encoding. + +## Nätverket + +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. + +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. + +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: + +```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) +``` + +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. + +## Sammanfattning + +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. + +**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 diff --git a/translations/sw/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/sw/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..abf155c7 --- /dev/null +++ b/translations/sw/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,56 @@ +# Förtränade Stora Språkmodeller + +I alla våra tidigare uppgifter har vi tränat ett neuralt nätverk för att utföra en viss uppgift med hjälp av en märkt dataset. Med stora transformer-modeller, såsom BERT, använder vi språkmodellering på ett självövervakat sätt för att bygga en språkmodell, som sedan specialiseras för specifika nedströmsuppgifter med ytterligare domänspecifik träning. Det har emellertid visat sig att stora språkmodeller också kan lösa många uppgifter utan NÅGON domänspecifik träning. En familj av modeller som kan göra detta kallas **GPT**: Generative Pre-Trained Transformer. + +## [För-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Textgenerering och Perplexitet + +Idén om att ett neuralt nätverk kan utföra allmänna uppgifter utan nedströms träning presenteras i artikeln [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Huvudidén är att många andra uppgifter kan modelleras med hjälp av **textgenerering**, eftersom förståelse av text i grunden innebär att kunna producera den. Eftersom modellen tränas på en enorm mängd text som omfattar mänsklig kunskap, blir den också kunnig om en mängd olika ämnen. + +> Att förstå och kunna producera text innebär också att veta något om världen omkring oss. Människor lär sig också i stor utsträckning genom att läsa, och GPT-nätverket är liknande i detta avseende. + +Textgenereringsnätverk fungerar genom att förutsäga sannolikheten för nästa ord $$P(w_N)$$. Men den ovillkorliga sannolikheten för nästa ord är lika med frekvensen av detta ord i textkorpuset. GPT kan ge oss **villkorlig sannolikhet** för nästa ord, givet de föregående: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Du kan läsa mer om sannolikheter i vår [Data Science for Beginners Curriculum](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) + +Kvaliteten på en språkgenererande modell kan definieras med hjälp av **perplexitet**. Det är en inneboende metrik som gör att vi kan mäta modellens kvalitet utan något uppgiftsspecifikt dataset. Den baseras på begreppet *sannolikheten för en mening* - modellen tilldelar hög sannolikhet till en mening som troligtvis är verklig (dvs. modellen är inte **förvirrad** av den), och låg sannolikhet till meningar som är mindre meningsfulla (t.ex. *Kan den göra vad?*). När vi ger vår modell meningar från ett verkligt textkorpus förväntar vi oss att de har hög sannolikhet och låg **perplexitet**. Matematisk definieras det som normaliserad invers sannolikhet för testuppsättningen: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Du kan experimentera med textgenerering med hjälp av [GPT-drivet textredigerare från Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. I denna redigerare börjar du skriva din text, och genom att trycka på **[TAB]** erbjuds du flera alternativ för avslutning. Om de är för korta, eller om du inte är nöjd med dem - tryck [TAB] igen, så får du fler alternativ, inklusive längre texter. + +## GPT är en Familj + +GPT är inte en enda modell, utan snarare en samling modeller som utvecklats och tränats av [OpenAI](https://openai.com). + +Under GPT-modellerna har vi: + +| [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) | +| -- | -- | -- | +|Språkmodell med upp till 1,5 miljarder parametrar. | Språkmodell med upp till 175 miljarder parametrar | 100T parametrar och accepterar både bild- och textinmatningar och producerar text. | + + +GPT-3 och GPT-4-modellerna är tillgängliga [som en kognitiv tjänst från Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste), och som [OpenAI API](https://openai.com/api/). + +## Prompt Engineering + +Eftersom GPT har tränats på stora mängder data för att förstå språk och kod, ger de utdata som svar på indata (prompter). Prompter är GPT-inmatningar eller frågor där man ger instruktioner till modellerna om uppgifter de ska slutföra. För att framkalla ett önskat resultat behöver du den mest effektiva prompten, vilket innebär att välja rätt ord, format, fraser eller till och med symboler. Denna metod kallas [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) + +[Denna dokumentation](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) ger dig mer information om prompt engineering. + +## ✍️ Exempel Notbok: [Leka med OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Fortsätt ditt lärande i följande notböcker: + +* [Generera text med OpenAI-GPT och Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Slutsats + +Nya allmänna förtränade språkmodeller modellerar inte bara språkstruktur, utan innehåller också stora mängder naturligt språk. Därför kan de effektivt användas för att lösa vissa NLP-uppgifter i zero-shot eller few-shot inställningar. + +## [Efter-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**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 eventuella missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/README.md b/translations/sw/lessons/5-NLP/README.md new file mode 100644 index 00000000..63651f9c --- /dev/null +++ b/translations/sw/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# Bearbetning av naturligt språk + +![Sammanfattning av NLP-uppgifter i en doodle](../../../../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: + +* **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. + +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. + +> 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. + +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. + +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*. + +## Installera Bibliotek + +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: + +**För PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**För 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) + +## GPU Varning + +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: + +```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) + +## I denna Sektion +I denna sektion kommer vi att lära oss om: + +* [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) + +**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 diff --git a/translations/sw/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/sw/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..ffd8e49d --- /dev/null +++ b/translations/sw/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# Genetiska Algoritmer + +## [För-lecture quiz](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). + +Genetiska Algoritmer baseras på följande idéer: + +* 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 + +Om du vill implementera en Genetisk Algoritm behöver du följande: + + * 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: Γ→Γ. + +I många fall är crossover och mutation ganska enkla algoritmer för att manipulera gener som numeriska sekvenser eller bitvektorer. + +Den specifika implementeringen av en genetisk algoritm kan variera från fall till fall, men den övergripande strukturen är följande: + +1. Välj en initial population G⊂Γ +2. Slumptalsvälja en av de operationer som ska utföras i detta steg: crossover eller mutation +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. + +## Typiska Uppgifter + +Uppgifter som vanligtvis löses med Genetiska Algoritmer inkluderar: + +1. Schemaläggningsoptimering +1. Optimal packning +1. Optimal skärning +1. Snabbare exhaustiv sökning + +## ✍️ Övningar: Genetiska Algoritmer + +Fortsätt ditt lärande i följande anteckningsböcker: + +Gå till [denna anteckningsbok](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) för att se två exempel på användning av Genetiska Algoritmer: + +1. Rättvis fördelning av skatt +1. 8 Drottningar Problemet + +## Slutsats + +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. + +## 🚀 Utmaning + +"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. + +## [Efter-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Granskning & Självstudie + +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). + +## [Uppgift: Diophantine-ekvation](../../../../../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. + +*Denna uppgift är inspirerad av [detta inlägg](https://habr.com/post/128704/).* + +Tips: + +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 + +Använd [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) som en utgångspunkt. + +**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 diff --git a/translations/sw/lessons/6-Other/22-DeepRL/README.md b/translations/sw/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..b2be2712 --- /dev/null +++ b/translations/sw/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# Djup Förstärkningsinlärning + +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. + +## [För- föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +För att utföra RL behöver vi: + +* 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. + +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. + +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**). + +## 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/). + +> **Notera**: Du kan se alla miljöer som finns tillgängliga från OpenAI Gym [här](https://gym.openai.com/envs/#classic_control). + +## CartPole Balansering + +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. + +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. + +en cartpole + +För att skapa och använda denna miljö behöver vi ett par rader Python-kod: + +```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}") +``` + +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. + +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: + +![icke-balanserande 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*. + +## Policy Gradient Algoritm + +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. + +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. + +> Lär dig mer om Policy Gradient-algoritmen och se den i aktion i [exempelnotebooken](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Actor-Critic Algoritm + +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: + +* 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**. + +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. + +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. + +Efter att ha kört en av dessa algoritmer kan vi förvänta oss att vår CartPole beter sig så här: + +![en balanserande cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Övningar: Policy Gradients och Actor-Critic RL + +Fortsätt din inlärning i följande notebooks: + +* [RL i TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL i PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Andra RL-uppgifter + +Förstärkningsinlärning är idag ett snabbt växande forskningsområde. Några intressanta exempel på förstärkningsinlärning är: + +* 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. + +## Slutsats + +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. + +## 🚀 Utmaning + +Utforska de tillämpningar som listas i avsnittet "Andra RL-uppgifter" och försök att implementera en! + +## [Efter-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Granskning & Självstudie + +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). + +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. + +## Uppgift: [Träna en Mountain Car](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/). + +**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 diff --git a/translations/sw/lessons/6-Other/22-DeepRL/lab/README.md b/translations/sw/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..20458e87 --- /dev/null +++ b/translations/sw/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# Träna Mountain Car för att Fly + +Laborationsuppgift från [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Uppgift + +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. + +## Miljön + +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. + +## Starta Anteckningsbok + +Börja labben genom att öppna [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Sammanfattning + +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. + +**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 diff --git a/translations/sw/lessons/6-Other/23-MultiagentSystems/README.md b/translations/sw/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..a0c04f22 --- /dev/null +++ b/translations/sw/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,155 @@ +# Multi-Agent System + +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*). + +## [För-föreläsningsquiz](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. + +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: + +* 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 + +Multi-agent system används idag i ett antal tillämpningar: + +* 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. + +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**. + +## 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. + +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): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +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. + +> ✅ 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. + +Du kan [ladda ner](https://ccl.northwestern.edu/netlogo/download.shtml) och installera NetLogo för att prova det. + +### Modeller Bibliotek + +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. + +NetLogo Modeller Bibliotek + +> En skärmdump av modeller biblioteket av Dmitry Soshnikov + +Du kan öppna en av modellerna, till exempel **Biologi → Flocking**. + +### Huvudprinciper + +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). + +![NetLogo Huvudskärm](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sw.png) + +> Skärmdump av Dmitry Soshnikov + +På den här skärmen kan du se: + +* **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 + +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: + +``` +to go [ +... +] +``` + +NetLogos värld består av följande objekt: + +* **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*. + +> ✅ 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. + +### 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: + +* **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*) + +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. + +> ✅ 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. + +### Andra modeller att se + +Det finns några fler intressanta modeller som du kan experimentera med: + +* **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. + +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. + +## Deliberativa Agenter + +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**. + +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. + +För att göra detta behöver agenterna **kommunicera**. För framgångsrik kommunikation behöver de: + +* 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 + +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: + +* **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. + +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. + +## Slutsats + +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**. + +## 🚀 Utmaning + +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? + +## [Efter-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Granskning & Självstudie + +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. + +## [NetLogo Uppgift](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 diff --git a/translations/sw/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/sw/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..07a85227 --- /dev/null +++ b/translations/sw/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# NetLogo Uppgift + +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? + +Visa ditt arbete genom att spara en kopia och skapa en videodemonstration som förklarar hur modellen är kopplad till en verklig situation. + +**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 diff --git a/translations/sw/lessons/7-Ethics/README.md b/translations/sw/lessons/7-Ethics/README.md new file mode 100644 index 00000000..0355414f --- /dev/null +++ b/translations/sw/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# Etisk och Ansvarsfull AI + +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. + +## [För-lärosessionens quiz](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. + +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*. + +## Principer för Ansvarsfull AI + +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: + +* **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. + +## Verktyg för Ansvarsfull AI + +Microsoft har utvecklat [Ansvarsfull AI-verktygslådan](https://github.com/microsoft/responsible-ai-toolbox) som innehåller en uppsättning verktyg: + +* Tolkbarhetsdashboard (InterpretML) +* Rättvisedashboard (FairLearn) +* Felanalysdashboard +* Ansvarsfull AI-dashboard som inkluderar + + - 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 + +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. + +## Granskning & Självstudier + +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. + +## [Efter-lärosessionens quiz](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 diff --git a/translations/sw/lessons/README.md b/translations/sw/lessons/README.md new file mode 100644 index 00000000..3d172653 --- /dev/null +++ b/translations/sw/lessons/README.md @@ -0,0 +1,8 @@ +# Översikt + +![Översikt i en doodle](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sw.png) + +> Sketchnote av [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 diff --git a/translations/sw/lessons/X-Extras/X1-MultiModal/README.md b/translations/sw/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..4a70ace1 --- /dev/null +++ b/translations/sw/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,80 @@ +# Multi-Modal Nätverk + +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. + +## Kontrastiv Bild För-Träning (CLIP) + +Huvudidén med CLIP är att kunna jämföra textpromptar med en bild och avgöra hur väl bilden motsvarar prompten. + +![CLIP Arkitektur](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sw.png) + +> *Bild från [detta blogginlägg](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**. + +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). + +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: + +**Bildklassificering** + +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. + +![CLIP för Bildklassificering](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sw.png) + +> *Bild från [detta blogginlägg](https://openai.com/blog/clip/)* + +**Textbaserad Bildsökning** + +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. + +## ✍️ Exempel: [Använda CLIP för Bildklassificering och Bildsökning](../../../../../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. + +## Bildgenerering med 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). + +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). + +Lär dig mer om VQGAN på [Taming Transformers](https://compvis.github.io/taming-transformers/) webbplats. + +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. + +![VQGAN+CLIP Arkitektur](../../../../../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. + +Ett fantastiskt bibliotek som implementerar VQGAN+CLIP är [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) +----|----|---- +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* + +> Bilder från **Artificial Teachers** samlingen av [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. + +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. + +### [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. + +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) +----|----|---- +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* + +## Referenser + +* 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) + +**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 diff --git a/translations/sw/lessons/sketchnotes/LICENSE.md b/translations/sw/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..81c72161 --- /dev/null +++ b/translations/sw/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,137 @@ +# Översättning av Creative Commons Attribution-ShareAlike 4.0 International + +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. + +## Användning av Creative Commons offentliga licenser + +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. + +- Ö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) + +- Ö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) + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Offentlig Licens + +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. + +## Avsnitt 1 -- Definitioner. + + 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. + + 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. + + 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. + + 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. + + 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. + + 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. + + 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. + + h. Licensierat Material innebär det konstnärliga eller litterära verket, databasen eller annat material som Licensgivaren tillämpade denna Offentliga Licens på. + + 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. + + j. Licensgivare innebär den eller de individer eller enheter som ger rättigheter under denna Offentliga Licens. + + 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. + + 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. + + m. Du innebär den individ eller enhet som utövar de Licensierade Rättigheterna under denna Offentliga Licens. Ditt har en motsvarande betydelse. + +## Avsnitt 2 -- Omfång. + + a. Licensbeviljande. + + 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: + + a. reproducera och Dela det Licensierade Materialet, helt eller delvis; och + + b. producera, reproducera och Dela Anpassat Material. + + 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. + + 3. Term. Termen för denna Offentliga Licens anges i Avsnitt 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. + + 5. Nedströms mottagare. + + 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. + + 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. + + 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. + + 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). + + b. Andra rättigheter. + + 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. + + 2. Patent- och varumärkesrättigheter är inte licensierade under denna Offentliga Licens. + + 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. + +## Avsnitt 3 -- Licensvillkor. + +Din utövning av de Licensierade Rättigheterna är uttryckligen föremål för följande villkor. + + a. Erkännande. + + 1. Om du Dela det Licensierade Materialet (inklusive i modifierad form), måste du: + + a. behålla följande om det tillhandahålls av Licensgivaren med det Licensierade Materialet: + + 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); + + ii. en upphovsrättsnotis; + + iii. en notis som hänvisar till denna Offentliga Licens; + + iv. en notis som hänvisar till friskrivningen av garantier; + + v. en URI eller hyperlänk till det Licensierade Materialet i den utsträckning det är rimligt praktiskt; + + b. ange om du har modifierat det Licensierade Materialet och behålla en indikation av eventuella tidigare modifieringar; och + + 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. + + 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. + + 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. + + b. ShareAlike. + + Utöver villkoren i Avsnitt 3(a), om du Dela Anpassat Material som du producerar, gäller följande villkor också. + + 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. + + 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. + + 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. + +## Avsnitt 4 -- Sui Generis Databasrättigheter. + +Där de Licensierade Rättigheterna inkluderar Sui Generis Databasrättigheter som gäller för din användning av det Licensierade Materialet: + + 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; + + 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, + + 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. + +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. + +## Avsnitt 5 -- Friskrivning av garantier och begränsning av ansvar. + + 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 + +**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 diff --git a/translations/sw/lessons/sketchnotes/README.md b/translations/sw/lessons/sketchnotes/README.md new file mode 100644 index 00000000..0bae7707 --- /dev/null +++ b/translations/sw/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +Alla läroplansskisser kan laddas ner här. + +🎨 Skapad av: 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 diff --git a/translations/tr/README.md b/translations/tr/README.md new file mode 100644 index 00000000..6b07ac26 --- /dev/null +++ b/translations/tr/README.md @@ -0,0 +1,140 @@ +[![GitHub lisansı](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![GitHub katkıda bulunanlar](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![GitHub sorunlar](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![GitHub çekme talepleri](https://img.shields.io/github/issues-pr/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/pulls/) +[![Çekme Talepleri Hoş Geldiniz](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) + +[![GitHub izleyicileri](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![GitHub çatalları](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![GitHub yıldızları](https://img.shields.io/github/stars/microsoft/AI-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/AI-For-Beginners/stargazers/) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD) +[![Gitter](https://badges.gitter.im/Microsoft/ai-for-beginners.svg)](https://gitter.im/Microsoft/ai-for-beginners?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# Başlangıç Seviyesi Yapay Zeka - Bir Müfredat + +|![ Sketchnote by [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| Yapay Zeka için Başlangıç - _Sketchnote by [@girlie_mac](https://twitter.com/girlie_mac)_ | + +**Yapay Zeka** (AI) dünyasını 12 haftalık, 24 derslik müfredatımızla keşfedin! Uygulamalı dersler, sınavlar ve laboratuvarlar içerir. Müfredat, başlangıç seviyesindeki kullanıcılar için uygundur ve TensorFlow ile PyTorch gibi araçları ve AI'daki etik konularını kapsamaktadır. + +## Ne öğreneceksiniz + +**[Kursun Zihin Haritası](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +Bu müfredatta şunları öğreneceksiniz: + +* **Bilgi Temsili** ve akıl yürütme ile "eski güzel" sembolik yaklaşım da dahil olmak üzere, Yapay Zeka'ya farklı yaklaşımlar. +* Modern AI'nın temelini oluşturan **Sinir Ağları** ve **Derin Öğrenme**. Bu önemli konuların arkasındaki kavramları, en popüler iki çerçevede - [TensorFlow](http://Tensorflow.org) ve [PyTorch](http://pytorch.org) - kod ile açıklayacağız. +* Görüntü ve metin ile çalışmak için **Sinir Mimarileri**. Son modelleri ele alacağız, ancak en son teknolojilerde biraz eksik kalabiliriz. +* **Genetik Algoritmalar** ve **Çoklu Ajan Sistemleri** gibi daha az popüler AI yaklaşımları. + +Bu müfredatta ele almayacağımız konular: + +> [Bu kurs için tüm ek kaynakları Microsoft Learn koleksiyonumuzda bulabilirsiniz](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **İş Dünyasında AI Kullanımı** ile ilgili iş vakaları. Microsoft Learn'deki [İş Kullanıcıları için Yapay Zeka'ya Giriş](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) öğrenme yolunu veya [AI İş Okulu](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum)nu, [INSEAD](https://www.insead.edu/) ile işbirliği içinde geliştirilmiştir. +* **Klasik Makine Öğrenimi**, [Makine Öğrenimi için Başlangıç Müfredatımızda](http://github.com/Microsoft/ML-for-Beginners) iyi bir şekilde tanımlanmıştır. +* **[Bilişsel Hizmetler](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** kullanılarak oluşturulan pratik AI uygulamaları. Bunun için, Microsoft Learn modüllerine [görüş](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [doğal dil işleme](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Azure OpenAI Hizmeti ile Üretken AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** ve diğerleri ile başlamanızı öneririz. +* Belirli ML **Bulut Çerçeveleri**, örneğin [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum), [Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) veya [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). [Azure Machine Learning ile makine öğrenimi çözümleri oluşturma ve işletme](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) ve [Azure Databricks ile makine öğrenimi çözümleri oluşturma ve işletme](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) öğrenme yollarını göz önünde bulundurabilirsiniz. +* **Konuşma AI** ve **Sohbet Botları**. Ayrı bir [Konuşma AI çözümleri oluşturma](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) öğrenme yolu mevcuttur ve daha fazla ayrıntı için [bu blog yazısına](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) da başvurabilirsiniz. +* Derin öğrenimin arkasındaki **Derin Matematik**. Bunun için, Ian Goodfellow, Yoshua Bengio ve Aaron Courville'in [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) kitabını öneririz, bu kitap ayrıca çevrimiçi olarak da mevcuttur: [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +_AI in the Cloud_ konularına nazik bir giriş için [Azure'da yapay zeka ile tanışma](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) öğrenme yolunu almayı düşünebilirsiniz. + +# İçerik + +| | Ders Linki | PyTorch/Keras/TensorFlow | Laboratuvar | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Kurs Ayarı](./lessons/0-course-setup/setup.md) | [Geliştirme Ortamınızı Ayarlayın](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Yapay Zekaya Giriş**](./lessons/1-Intro/README.md) | | | +| 01 | [Yapay Zekanın Tanıtımı ve Tarihi](./lessons/1-Intro/README.md) | - | - | +| II | **Sembolik AI** | +| 02 | [Bilgi Temsili ve Uzman Sistemler](./lessons/2-Symbolic/README.md) | [Uzman Sistemler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontoloji](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Kavram Grafiği](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Sinir Ağlarına Giriş**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Laboratuvar](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Çok Katmanlı Perceptron ve Kendi Çerçevemizi Oluşturma](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Laboratuvar](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Çerçevelere (PyTorch/TensorFlow) Giriş ve Aşırı Öğrenme](./lessons/3-NeuralNetworks/05-Frameworks/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) / [Keras](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratuvar](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Bilgisayarla Görme**](./lessons/4-ComputerVision/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) / [TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste)| [Microsoft Azure'da Bilgisayarla Görmeyi Keşfedin](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Bilgisayarla Görmeye Giriş. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Laboratuvar](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Konvolüsyonel Sinir Ağları](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN Mimarileri](./lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) /[TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) | [Laboratuvar](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Önceden Eğitilmiş Ağlar ve Transfer Öğrenme](./lessons/4-ComputerVision/08-TransferLearning/README.md) ve [Eğitim İpuçları](./lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [Laboratuvar](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Otomatik Kodlayıcılar ve VAE'ler](./lessons/4-ComputerVision/09-Autoencoders/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) | | +| 10 | [Üretici Rekabetçi Ağlar & Sanatsal Stil Transferi](./lessons/4-ComputerVision/10-GANs/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/GANTF.ipynb) | | +| 11 | [Nesne Tespiti](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Laboratuvar](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Anlamsal Segmentasyon. U-Net](./lessons/4-ComputerVision/12-Segmentation/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | +| V | [**Doğal Dil İşleme**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [Microsoft Azure'da Doğal Dil İşleme'yi Keşfedin](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Metin Temsili. Bow/TF-IDF](./lessons/5-NLP/13-TextRep/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) | | +| 14 | [Anlamsal kelime gömme yöntemleri. Word2Vec ve GloVe](./lessons/5-NLP/14-Embeddings/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) | | +| 15 | [Dil Modelleme. Kendi gömmelerinizi eğitme](./lessons/5-NLP/15-LanguageModeling/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) | [Laboratuvar](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Tekrarlayan Sinir Ağları](./lessons/5-NLP/16-RNN/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) / [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/RNNTF.ipynb) | | +| 17 | [Üretken Tekrarlayan Ağlar](./lessons/5-NLP/17-GenerativeNetworks/README.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.md) / [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.md) | [Laboratuvar](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Dönüştürücüler. BERT.](./lessons/5-NLP/18-Transformers/READMEtransformers.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/TransformersTF.ipynb) | | +| 19 | [İsimlendirilmiş Varlık Tanıma](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratuvar](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Büyük Dil Modelleri, İstek Programlama ve Az Sayıda Görev](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Diğer AI Teknikleri** || | +| 21 | [Genetik Algoritmalar](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Not Defteri](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Derin Pekiştirmeli Öğrenme](./lessons/6-Other/22-DeepRL/README.md) | [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) /[TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) | [Laboratuvar](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Çoklu Ajan Sistemleri](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Yapay Zeka Etiği** | | | +| 24 | [Yapay Zeka Etiği ve Sorumlu Yapay Zeka](./lessons/7-Ethics/README.md) | [Microsoft Learn: Sorumlu Yapay Zeka İlkeleri](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Ekstra** | | | +| 25 | [Çok Modlu Ağlar, CLIP ve VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Not Defteri](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## Her ders şunları içerir + +* Ön okuma materyali +* Çoğunlukla belirli çerçevelere (**PyTorch** veya **TensorFlow**) özgü çalıştırılabilir Jupyter Notları. Çalıştırılabilir not, konuyu anlamak için en az bir versiyonunu (ya PyTorch ya da TensorFlow) gözden geçirmeniz gereken birçok teorik materyal de içerir. +* Bazı konular için mevcut olan **Laboratuvarlar**, öğrendiğiniz materyali belirli bir probleme uygulama fırsatı sunar. +* Bazı bölümler, ilgili konuları kapsayan [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) modüllerine bağlantılar içerir. + +## Başlarken + +- Geliştirme ortamınızı kurmanıza yardımcı olacak bir [kurulum dersi](./lessons/0-course-setup/setup.md) oluşturduk. - Eğitmenler için de bir [müfredat kurulum dersi](./lessons/0-course-setup/for-teachers.md) hazırladık! +- [VSCode veya Codepace'de kodu çalıştırma](./lessons/0-course-setup/how-to-run.md) hakkında bilgi. + +Bu adımları izleyin: + +Depoyu Forklayın: Bu sayfanın sağ üst köşesindeki "Fork" butonuna tıklayın. + +Depoyu Klonlayın: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Sonra bu repo'yu daha sonra bulmanızı kolaylaştırmak için yıldızlayın (🌟). + +## Diğer Öğrenenlerle Tanışın + +Bu kursu alan diğer öğrenenlerle tanışmak ve ağ kurmak için [resmi AI Discord sunucumuza](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) katılın ve destek alın. + +## Quizler + +> **Quizler hakkında bir not**: Tüm quizler, quiz uygulamasının çalıştırılabileceği veya Azure'a dağıtılabileceği derslerden bağlantılar içeren quiz-app klasöründe bulunmaktadır; `quiz-app` klasöründeki talimatları izleyin. Yavaş yavaş yerelleştiriliyorlar. + +## Yardım İstiyoruz + +Önerileriniz var mı ya da yazım veya kod hataları mı buldunuz? Bir sorun açın veya bir çekme isteği oluşturun. + +## Özel Teşekkürler + +* **✍️ Ana Yazar:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Editör:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Sketchnote illüstratörü:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Quiz Oluşturucu:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Temel Katkıda Bulunanlar:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Diğer Müfredatlar + +Ekibimiz başka müfredatlar da üretiyor! Göz atın: + +* [Yeni Başlayanlar için Veri Bilimi](https://aka.ms/ds4beginners) +* [**Versiyon 2.0** Yeni Başlayanlar için Üretken AI](https://aka.ms/genai-beginners) +* [**YENİ** Yeni Başlayanlar için Siber Güvenlik](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [Yeni Başlayanlar için Web Geliştirme](https://aka.ms/webdev-beginners) +* [Yeni Başlayanlar için IoT](https://aka.ms/iot-beginners) +* [Yeni Başlayanlar için Makine Öğrenimi](https://aka.ms/ml4beginners) +* [Yeni Başlayanlar için XR Geliştirme](https://aka.ms/xr-dev-for-beginners) +* [Yapay Zeka Eşliğinde Programlama için GitHub Copilot'u Kullanma](https://aka.ms/GitHubCopilotAI) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde kesin kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/SECURITY.md b/translations/tr/SECURITY.md new file mode 100644 index 00000000..8524a350 --- /dev/null +++ b/translations/tr/SECURITY.md @@ -0,0 +1,40 @@ +## Güvenlik + +Microsoft, yazılım ürünlerimizin ve hizmetlerimizin güvenliğini ciddiye alır. Bu, [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin) ve [GitHub organizasyonlarımız](https://opensource.microsoft.com/) dahil olmak üzere yönetilen tüm kaynak kodu depolarını kapsar. + +Microsoft'a ait herhangi bir depoda [Microsoft'un güvenlik açığı tanımına](https://aka.ms/opensource/security/definition) uyan bir güvenlik açığı bulduğunuzu düşünüyorsanız, lütfen aşağıda açıklandığı gibi bize bildirin. + +## Güvenlik Sorunlarını Bildirme + +**Lütfen güvenlik açıklarını kamuya açık GitHub sorunları aracılığıyla bildirmeyin.** + +Bunun yerine, lütfen Microsoft Güvenlik Yanıt Merkezi'ne (MSRC) [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report) adresinden bildirin. + +Giriş yapmadan göndermeyi tercih ediyorsanız, [secure@microsoft.com](mailto:secure@microsoft.com) adresine e-posta gönderin. Mümkünse, mesajınızı PGP anahtarımızla şifreleyin; lütfen bunu [Microsoft Güvenlik Yanıt Merkezi PGP Anahtar sayfasından](https://aka.ms/opensource/security/pgpkey) indirin. + +24 saat içinde bir yanıt almayı beklemelisiniz. Herhangi bir nedenle yanıt almazsanız, orijinal mesajınızı aldığımızdan emin olmak için e-posta ile takip edin. Ek bilgi için [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) adresini ziyaret edebilirsiniz. + +Lütfen aşağıda listelenen istenen bilgileri (mümkün olduğunca fazla) ekleyin, böylece olası sorunun doğasını ve kapsamını daha iyi anlayabiliriz: + + * Sorun türü (örneğin, tampon taşması, SQL enjeksiyonu, çapraz site betikleme, vb.) + * Sorunun tezahürü ile ilgili kaynak dosyalarının tam yolları + * Etkilenen kaynak kodunun yeri (etiket/şube/commit veya doğrudan URL) + * Sorunu yeniden üretmek için gereken özel yapılandırma + * Sorunu yeniden üretmek için adım adım talimatlar + * Kanıt konsepti veya istismar kodu (mümkünse) + * Sorunun etkisi, bir saldırganın sorunu nasıl istismar edebileceği dahil + +Bu bilgiler, raporunuzu daha hızlı bir şekilde değerlendirmemize yardımcı olacaktır. + +Bir hata ödülü için rapor ediyorsanız, daha eksiksiz raporlar daha yüksek bir ödül katkısında bulunabilir. Aktif programlarımız hakkında daha fazla bilgi için lütfen [Microsoft Hata Ödül Programı](https://aka.ms/opensource/security/bounty) sayfamızı ziyaret edin. + +## Tercih Edilen Diller + +Tüm iletişimlerin İngilizce olmasını tercih ediyoruz. + +## Politika + +Microsoft, [Koordine Edilmiş Güvenlik Açığı Açıklaması](https://aka.ms/opensource/security/cvd) ilkesine uyar. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/etc/CODE_OF_CONDUCT.md b/translations/tr/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..81a4ad9a --- /dev/null +++ b/translations/tr/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# Microsoft Açık Kaynak Davranış Kuralları + +Bu proje, [Microsoft Açık Kaynak Davranış Kuralları](https://opensource.microsoft.com/codeofconduct/)nı benimsemiştir. + +Kaynaklar: + +- [Microsoft Açık Kaynak Davranış Kuralları](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft Davranış Kuralları SSS](https://opensource.microsoft.com/codeofconduct/faq/) +- Sorular veya endişeler için [opencode@microsoft.com](mailto:opencode@microsoft.com) ile iletişime geçin. + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa ulaşmaya çalışsak da, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/etc/CONTRIBUTING.md b/translations/tr/etc/CONTRIBUTING.md new file mode 100644 index 00000000..a5c6a5af --- /dev/null +++ b/translations/tr/etc/CONTRIBUTING.md @@ -0,0 +1,21 @@ +# Katkıda Bulunma + +Bu proje katkıları ve önerileri memnuniyetle karşılamaktadır. Çoğu katkı, katkınızın kullanım haklarını bize verme hakkına sahip olduğunuzu belirten bir Katkı Lisans Anlaşması (CLA) imzalamanızı gerektirir. Detaylar için lütfen ziyaret edin +https://cla.microsoft.com. + +Bir pull request gönderdiğinizde, bir CLA-bot otomatik olarak CLA sağlamanız gerekip gerekmediğini belirleyecek ve PR'yi uygun şekilde süsleyerek (örneğin, etiket, yorum) yönlendirecektir. Bot tarafından sağlanan talimatları takip etmeniz yeterlidir. Bu işlemi, CLA'mızı kullanan tüm depolar için yalnızca bir kez yapmanız gerekecektir. + +Bu proje, [Microsoft Açık Kaynak Davranış Kuralları](https://opensource.microsoft.com/codeofconduct/)nı benimsemiştir. Daha fazla bilgi için [Davranış Kuralları SSS](https://opensource.microsoft.com/codeofconduct/faq/) sayfasına bakabilir veya ek sorular veya yorumlar için [opencode@microsoft.com](mailto:opencode@microsoft.com) ile iletişime geçebilirsiniz. + +# Katkı Arayışı + +Şu anda aşağıdaki konularda katkılar arıyoruz: + +- [ ] Derin Pekiştirmeli Öğrenme üzerine bölüm yazma +- [ ] Nesne Tespiti üzerine bölüm + not defterini geliştirme +- [ ] PyTorch Lightning (bu bölüm için: [this section](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] İsimlendirilmiş Varlık Tanıma üzerine bölüm + örnekler yazma +- [ ] [bu bölüm](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) için kendi gömme verilerimizi eğitmek üzere örnekler oluşturma + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/etc/Mindmap.md b/translations/tr/etc/Mindmap.md new file mode 100644 index 00000000..bd38915f --- /dev/null +++ b/translations/tr/etc/Mindmap.md @@ -0,0 +1,76 @@ +# AI + +## [Yapay Zekaya Giriş](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Yapay Zeka Tanımı + - Yapay Zekanın Tarihçesi + - Yapay Zeka Yaklaşımları + - Yukarıdan Aşağı/Sembolik + - Aşağıdan Yukarı/Nöral + - Evrimsel + - Sinerjik / Ortaya Çıkan Yapay Zeka + - [Microsoft Yapay Zeka İş Okulu](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [Sembolik Yapay Zeka](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Bilgi Temsili + - [Uzman Sistemler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontolojiler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Anlamlı Web + +## [Sinir Ağları](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [Perceptron](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [Çok Katmanlı Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Çerçevelere Giriş](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [PyTorch](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) + - [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.md) + - [Aşırı Uydurma](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Bilgisayarla Görme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - MS Learn'de + - [Yapay Zeka Temelleri: Bilgisayarla Görmeyi Keşfedin](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [PyTorch ile Bilgisayarla Görme](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow ile Bilgisayarla Görme](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Bilgisayarla Görmeye Giriş. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Konvolüsyonel Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [CNN Mimarileri](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Transfer Öğrenme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Eğitim İpuçları](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Otomatik Kodlayıcılar ve VAE'ler](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Üretken Çatışmalı Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Stil Transferi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Nesne Tespiti](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentasyon](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Doğal Dil İşleme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - MS Learn'de + - [Yapay Zeka Temelleri: Doğal Dil İşlemeyi Keşfedin](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [PyTorch ile NLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [TensorFlow ile NLP](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [Metin Temsili](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Kelime Torbası + - TF/IDF + - [Anlamsal Gömme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Dil Modelleme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Tekrarlayan Sinir Ağları](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Üretken Tekrarlayan Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Dönüştürücüler ve BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Adlandırılmış Varlık Tanıma](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Metin Üretimi ve GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## Diğer Teknikler + - [Genetik Algoritmalar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Derin Pekiştirmeli Öğrenme](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Çoklu Ajan Sistemleri](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Yapay Zeka Etiği](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [Sorumlu Yapay Zeka için MS Öğren](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## Ekstra + - [Çok Modlu Ağlar](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**Sorumluluk Reddi**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkabilecek herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/etc/SUPPORT.md b/translations/tr/etc/SUPPORT.md new file mode 100644 index 00000000..5e72f970 --- /dev/null +++ b/translations/tr/etc/SUPPORT.md @@ -0,0 +1,14 @@ +# Destek + +## Sorunları nasıl bildirebilir ve yardım alabilirsiniz + +Bu proje, hataları ve özellik taleplerini takip etmek için GitHub Issues kullanmaktadır. Lütfen yeni sorunlar bildirmeden önce mevcut sorunları arayın, böylece tekrar eden sorunlardan kaçınabilirsiniz. Yeni sorunlar için, hatanızı veya özellik talebinizi yeni bir Sorun olarak bildirin. + +Bu projeyi kullanma ile ilgili yardım ve sorular için, Lütfen Tartışma Panolarını kullanın. + +## Microsoft Destek Politikası + +Bu proje için destek, yukarıda listelenen kaynaklarla sınırlıdır. + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter bir kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/etc/TRANSLATIONS.md b/translations/tr/etc/TRANSLATIONS.md new file mode 100644 index 00000000..76d4f630 --- /dev/null +++ b/translations/tr/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# Dersleri çevirerek katkıda bulunun + +Bu müfredattaki derslerin çevirilerini memnuniyetle karşılıyoruz! + +## Yönergeler + +Her ders klasöründe ve ders tanıtım klasöründe çevrilmiş markdown dosyalarını içeren klasörler bulunmaktadır. + +> Not: Lütfen kod örneği dosyalarındaki kodları çevirmeyin; çevrilecek tek şeyler README, ödevler ve sınavlardır. Teşekkürler! + +Çevrilen dosyalar bu adlandırma kuralına uymalıdır: + +**README._[language]_.md** + +burada _[language]_ ISO 639-1 standardına uygun iki harfli dil kısaltmasıdır (örneğin `README.es.md` İspanyolca için ve `README.nl.md` Felemenkçe için). + +**assignment._[language]_.md** + +Readme'ler gibi, lütfen ödevleri de çevirin. + +**Sınavlar** + +1. Çevirinizi quiz-app'e eklemek için burada bir dosya ekleyin: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, uygun adlandırma kuralıyla (en.json, fr.json). **Ancak, 'true' veya 'false' kelimelerini yerelleştirmeyin. Teşekkürler!** + +2. Quiz-app'in App.vue dosyasındaki açılır menüye dil kodunuzu ekleyin. + +3. Quiz-app'in [translations index.js dosyasını](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) düzenleyerek dilinizi ekleyin. + +4. Son olarak, çevrilmiş README.md dosyalarınızdaki TÜM sınav bağlantılarını, doğrudan çevrilmiş sınavınıza yönlendirecek şekilde düzenleyin: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1, https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id olur. + +**TEŞEKKÜRLER** + +Çabalarınızı gerçekten takdir ediyoruz! + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu oluşabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/etc/quiz-app/README.md b/translations/tr/etc/quiz-app/README.md new file mode 100644 index 00000000..5844f10a --- /dev/null +++ b/translations/tr/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# Quizler + +Bu quizler, https://aka.ms/ai-beginners adresindeki AI müfredatı için ders öncesi ve sonrası quizlerdir. + +## Çevirisi yapılmış bir quiz seti ekleme + +Eşleşen quiz yapıları oluşturarak bir quiz çevirisi ekleyin `assets/translations` klasörlerinde. Temel quizler `assets/translations/en` içinde bulunmaktadır. Quizler, derslere göre birkaç gruba ayrılmıştır. Numara sıralamasını doğru quiz bölümüne göre ayarladığınızdan emin olun. Bu müfredatta toplam 40 quiz bulunmaktadır ve sayım 0'dan başlamaktadır. + +Çevirileri düzenledikten sonra, çeviri klasöründeki index.js dosyasını `en` içindeki kurallara göre tüm dosyaları içerecek şekilde düzenleyin. + +Yeni çevrilmiş dosyaları içermek için `assets/translations` içindeki `index.js` dosyasını düzenleyin. + +Ardından, bu uygulamadaki `App.vue` bölümündeki açılır menüyü düzenleyerek dilinizi ekleyin. Yerelleştirilmiş kısaltmayı diliniz için klasör adıyla eşleştirin. + +Son olarak, çevrilen derslerdeki tüm quiz bağlantılarını, varsa, bu yerelleştirmeyi bir sorgu parametresi olarak ekleyecek şekilde düzenleyin: örneğin `?loc=fr`. + +## Proje kurulumu + +``` +npm install +``` + +### Geliştirme için derler ve sıcak yeniden yükler + +``` +npm run serve +``` + +### Üretim için derler ve küçültür + +``` +npm run build +``` + +### Dosyaları denetler ve düzeltir + +``` +npm run lint +``` + +### Yapılandırmayı özelleştirin + +[Configuration Reference](https://cli.vuejs.org/config/) sayfasına bakın. + +Krediler: Bu quiz uygulamasının orijinal sürümüne teşekkürler: https://github.com/arpan45/simple-quiz-vue + +## Azure'a Dağıtım + +Başlamak için adım adım bir kılavuz: + +1. GitHub Deposu Oluşturun +Statik web uygulamanızın kodunun GitHub deponuzda olduğundan emin olun. Bu depoyu fork edin. + +2. Azure Statik Web Uygulaması Oluşturun +- Bir [Azure hesabı](http://azure.microsoft.com) oluşturun. +- [Azure portalına](https://portal.azure.com) gidin. +- "Bir kaynak oluştur" seçeneğine tıklayın ve "Statik Web Uygulaması" araması yapın. +- "Oluştur" seçeneğine tıklayın. + +3. Statik Web Uygulamasını Yapılandırın +- Temel Bilgiler: Abonelik: Azure aboneliğinizi seçin. +- Kaynak Grubu: Yeni bir kaynak grubu oluşturun veya mevcut birini kullanın. +- İsim: Statik web uygulamanız için bir isim verin. +- Bölge: Kullanıcılarınıza en yakın bölgeyi seçin. + +- #### Dağıtım Detayları: +- Kaynak: "GitHub" seçeneğini seçin. +- GitHub Hesabı: Azure'un GitHub hesabınıza erişim izni vermesini onaylayın. +- Organizasyon: GitHub organizasyonunuzu seçin. +- Depo: Statik web uygulamanızı içeren depoyu seçin. +- Dal: Dağıtım yapmak istediğiniz dalı seçin. + +- #### Derleme Detayları: +- Derleme Ön Ayarları: Uygulamanızın inşa edildiği çerçeveyi seçin (örn., React, Angular, Vue, vb.). +- Uygulama Konumu: Uygulama kodunuzu içeren klasörü belirtin (örn., kökse /). +- API Konumu: Bir API'niz varsa, konumunu belirtin (isteğe bağlı). +- Çıktı Konumu: Derleme çıktısının oluşturulacağı klasörü belirtin (örn., build veya dist). + +4. Gözden Geçirin ve Oluşturun +Ayarlarınızı gözden geçirin ve "Oluştur" seçeneğine tıklayın. Azure gerekli kaynakları kuracak ve deponuzda bir GitHub Actions iş akışı oluşturacaktır. + +5. GitHub Actions İş Akışı +Azure, deponuzda otomatik olarak bir GitHub Actions iş akışı dosyası oluşturacaktır (.github/workflows/azure-static-web-apps-.yml). Bu iş akışı, derleme ve dağıtım sürecini yönetecektir. + +6. Dağıtımı İzleyin +GitHub deponuzdaki "Actions" sekmesine gidin. +Bir iş akışının çalıştığını görmelisiniz. Bu iş akışı, statik web uygulamanızı Azure'a derleyip dağıtacaktır. +İş akışı tamamlandığında, uygulamanız sağlanan Azure URL'sinde canlı olacaktır. + +### Örnek İş Akışı Dosyası + +GitHub Actions iş akışı dosyasının nasıl görünebileceğine dair bir örnek: +name: Azure Statik Web Uygulamaları CI/CD +``` +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 +``` + +### Ek Kaynaklar +- [Azure Statik Web Uygulamaları Belgeleri](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions Belgeleri](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/0-course-setup/for-teachers.md b/translations/tr/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..9772fda7 --- /dev/null +++ b/translations/tr/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# Eğitmenler için + +Bu müfredatı sınıfınızda kullanmak ister misiniz? Lütfen çekinmeyin! + +Aslında, bunu GitHub Classroom kullanarak GitHub'ın kendisi içinde de kullanabilirsiniz. + +Bunu yapmak için, bu repoyu fork'layın. Her ders için bir repo oluşturmanız gerekecek, bu nedenle her klasörü ayrı bir repoya çıkarmanız gerekecek. Bu şekilde, [GitHub Classroom](https://classroom.github.com/classrooms) her dersi ayrı ayrı alabilir. + +Bu [tam talimatlar](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) sınıfınızı nasıl kuracağınız hakkında bir fikir verecektir. + +## Repoyu olduğu gibi kullanma + +Eğer bu repoyu mevcut haliyle, GitHub Classroom kullanmadan kullanmak isterseniz, bu da mümkündür. Öğrencilerinize hangi dersi birlikte çalışacaklarını iletmeniz gerekecek. + +Çevrimiçi bir formatta (Zoom, Teams veya diğerleri) sınavlar için grup odaları oluşturabilirsiniz ve öğrencileri öğrenmeye hazırlamaları için mentorluk yapabilirsiniz. Daha sonra öğrencileri sınavlara davet edin ve belirli bir zamanda cevaplarını 'sorunlar' olarak gönderin. Öğrencilerin açık bir ortamda işbirliği yapmalarını istiyorsanız, ödevlerle de aynı şeyi yapabilirsiniz. + +Daha özel bir format tercih ediyorsanız, öğrencilerinize müfredatı, ders ders, kendi GitHub repolarına özel repolar olarak fork'lamalarını ve size erişim vermelerini isteyin. Böylece, sınavları ve ödevleri özel olarak tamamlayabilir ve bunları sınıf repolarınızdaki sorunlar aracılığıyla size gönderebilirler. + +Çevrimiçi bir sınıf formatında bunu çalıştırmanın birçok yolu vardır. Hangi yöntemin sizin için en iyi çalıştığını lütfen bize bildirin! + +## Düşüncelerinizi bizimle paylaşın + +Bu müfredatın sizin ve öğrencileriniz için işe yaramasını istiyoruz. Lütfen geri bildirimlerinizi tartışma panolarında paylaşın! + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otoriter bir kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/0-course-setup/how-to-run.md b/translations/tr/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..b7c957dd --- /dev/null +++ b/translations/tr/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# Kodu Çalıştırma Yöntemleri + +Bu müfredat, çalıştırmak isteyeceğiniz birçok çalıştırılabilir örnek ve laboratuvar içermektedir. Bunu yapmak için, bu müfredatın bir parçası olarak sağlanan Jupyter Not Defterlerinde Python kodunu çalıştırabilme yeteneğine sahip olmanız gerekmektedir. Kodu çalıştırmak için birkaç seçeneğiniz var: + +## Bilgisayarınızda Yerel Olarak Çalıştırma + +Kodu bilgisayarınızda yerel olarak çalıştırmak için, bazı Python sürümlerinin kurulu olması gerekmektedir. Kişisel olarak **[miniconda](https://conda.io/en/latest/miniconda.html)** kurulumunu öneriyorum - bu, farklı Python **sanallaştırılmış ortamları** için `conda` paket yöneticisini destekleyen oldukça hafif bir kurulumdur. + +Miniconda'yı kurduktan sonra, depoyu klonlamanız ve bu kurs için kullanılacak bir sanal ortam oluşturmanız gerekmektedir: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### Python Uzantısıyla Visual Studio Code Kullanma + +Müfredatı kullanmanın en iyi yolu, onu [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) içinde [Python Uzantısı](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) ile açmaktır. + +> **Not**: Depoyu klonladıktan ve dizini VS Code'da açtıktan sonra, Python uzantılarını kurmanızı otomatik olarak önerecektir. Ayrıca yukarıda açıklandığı gibi miniconda'yı da kurmanız gerekecektir. + +> **Not**: Eğer VS Code, depoyu konteynerde yeniden açmanızı önerirse, yerel Python kurulumunu kullanmak için bunu reddetmeniz gerekmektedir. + +### Tarayıcıda Jupyter Kullanma + +Ayrıca, kendi bilgisayarınızdaki tarayıcıdan Jupyter ortamını kullanabilirsiniz. Aslında, hem klasik Jupyter hem de Jupyter Hub, otomatik tamamlama, kod vurgulama vb. ile oldukça uygun bir geliştirme ortamı sunmaktadır. + +Jupyter'i yerel olarak başlatmak için, kursun dizinine gidin ve şu komutu çalıştırın: + +```bash +jupyter notebook +``` +veya +```bash +jupyterhub +``` +Daha sonra, bu repo için bir konteyner oluşturma talimatlarını veren herhangi bir `.ipynb` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` klasörüne gidebilirsiniz; VS Code, kodu konteynerde yeniden açmanızı teklif edecektir. Bu, Docker kurulumu gerektirecek ve ayrıca daha karmaşık olacaktır, bu nedenle bunu daha deneyimli kullanıcılara öneriyoruz. + +## Bulutta Çalıştırma + +Eğer Python'u yerel olarak kurmak istemiyorsanız ve bazı bulut kaynaklarına erişiminiz varsa - bulutta kodu çalıştırmak iyi bir alternatif olacaktır. Bunu yapmanın birkaç yolu vardır: + +* **[GitHub Codespaces](https://github.com/features/codespaces)** kullanarak, bu sizin için GitHub'da oluşturulmuş sanal bir ortamdır ve VS Code tarayıcı arayüzü üzerinden erişilebilir. Eğer Codespaces erişiminiz varsa, repo içinde **Code** butonuna tıklayarak bir codespace başlatabilir ve hızla çalışmaya başlayabilirsiniz. +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** kullanarak. [Binder](https://mybinder.org), sizin gibi insanların GitHub'da bazı kodları denemesi için sağlanan ücretsiz hesaplama kaynaklarıdır. Ana sayfada depoyu Binder'da açmak için bir buton bulunmaktadır - bu, sizi hızlı bir şekilde binder sitesine yönlendirecek ve arka planda gerekli konteyneri oluşturup Jupyter web arayüzünü sizin için başlatacaktır. + +> **Not**: Suistimali önlemek için, Binder bazı web kaynaklarına erişimi engellemiştir. Bu, kamu internetinden model ve/veya veri setleri çeken bazı kodların çalışmasını engelleyebilir. Bazı çözümler bulmanız gerekebilir. Ayrıca, Binder tarafından sağlanan hesaplama kaynakları oldukça temel olduğu için, eğitim süreci yavaş olacaktır, özellikle daha karmaşık derslerde. + +## Bulutta GPU ile Çalıştırma + +Bu müfredattaki bazı sonraki dersler, GPU desteğinden büyük ölçüde yararlanacaktır, çünkü aksi takdirde eğitim acı verici derecede yavaş olacaktır. Özellikle [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) veya kurumunuz aracılığıyla buluta erişiminiz varsa, takip edebileceğiniz birkaç seçenek vardır: + +* [Veri Bilimi Sanal Makinesi](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) oluşturun ve buna Jupyter üzerinden bağlanın. Daha sonra repoyu doğrudan makineye klonlayabilir ve öğrenmeye başlayabilirsiniz. NC serisi VM'ler GPU desteğine sahiptir. + +> **Not**: Bazı abonelikler, Azure for Students dahil olmak üzere, kutudan çıktığı gibi GPU desteği sağlamaz. Ek GPU çekirdekleri talep etmeniz gerekebilir. + +* [Azure Makine Öğrenimi Çalışma Alanı](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) oluşturun ve ardından orada Not Defteri özelliğini kullanın. [Bu video](https://azure-for-academics.github.io/quickstart/azureml-papers/) bir depoyu Azure ML not defterine nasıl klonlayacağınızı ve kullanmaya nasıl başlayacağınızı göstermektedir. + +Ayrıca, bazı ücretsiz GPU desteği ile gelen Google Colab'ı da kullanabilirsiniz ve oraya Jupyter Not Defterlerini yükleyerek bunları tek tek çalıştırabilirsiniz. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/0-course-setup/setup.md b/translations/tr/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..c88cf64b --- /dev/null +++ b/translations/tr/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# Bu Müfredatla Başlarken + +## Sen bir öğrenci misin? + +Aşağıdaki kaynaklarla başlayabilirsin: + +* [Öğrenci Hub sayfası](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Bu sayfada, başlangıç kaynakları, Öğrenci paketleri ve hatta ücretsiz sertifika kuponu alma yolları bulacaksınız. Bu sayfayı yer imlerinize eklemeyi ve zaman zaman kontrol etmeyi unutmayın; içerikleri en az ayda bir güncelliyoruz. +* [Microsoft Öğrenci Öğrenme elçileri](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Küresel bir öğrenci elçileri topluluğuna katılın; bu, Microsoft’a giriş yapmanın bir yolu olabilir. + +**Öğrenciler**, müfredatı kullanmanın birkaç yolu var. Öncelikle, metni okuyabilir ve kodu doğrudan GitHub'da inceleyebilirsiniz. Eğer herhangi bir not defterinde kodu çalıştırmak isterseniz - [talimatlarımızı okuyun](./etc/how-to-run.md), ve bunu nasıl yapacağınız hakkında daha fazla tavsiye için [bu blog yazısına](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) göz atın. + +> **Not**: [Bu müfredattaki kodu nasıl çalıştıracağınız hakkında talimatlar](/how-to-run.md) + +## Kendi Kendine Çalışma + +Ancak, dersi kendi kendine çalışma projesi olarak almak isterseniz, tüm depoyu kendi GitHub hesabınıza fork etmenizi ve alıştırmaları kendi başınıza veya bir grupla tamamlamanızı öneririz: + +* Öncelikle bir ön ders sınavı ile başlayın. +* Dersi tanıtan metni okuyun. +* Eğer dersin ek not defterleri varsa, bunları gözden geçirin, kodu okuyun ve çalıştırın. Hem TensorFlow hem de PyTorch not defterleri sağlanıyorsa, birine odaklanabilirsiniz - favori çerçevenizi seçin. +* Not defterleri genellikle kodu biraz değiştirmenizi gerektiren bazı zorluklar içerir. +* Ders sonrası sınavı alın. +* Modüle bağlı bir laboratuvar varsa - ödevi tamamlayın. +* "Sesli öğrenmek" için [Tartışma panosunu](https://github.com/microsoft/AI-For-Beginners/discussions) ziyaret edin. + +> Daha fazla çalışma için, bu [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) modüllerini ve öğrenme yollarını takip etmenizi öneririz. + +**Eğitmenler**, bu müfredatı nasıl kullanacağınıza dair [bazı öneriler ekledik](/for-teachers.md). + +--- + +## Pedagoji + +Bu müfredatı oluştururken iki pedagojik ilke seçtik: uygulamalı **proje bazlı** olması ve **sık sık sınavlar** içermesi. + +İçeriğin projelerle uyumlu olmasını sağlamak, öğrenciler için süreci daha ilgi çekici hale getirir ve kavramların kalıcılığını artırır. Ayrıca, bir dersten önce yapılan düşük riskli bir sınav, öğrencinin bir konuyu öğrenme niyetini belirlerken, dersten sonraki ikinci sınav daha fazla kalıcılığı sağlar. Bu müfredat esnek ve eğlenceli olacak şekilde tasarlandı ve bütün veya kısmen alınabilir. Projeler küçük başlar ve 12 haftalık döngünün sonunda giderek daha karmaşık hale gelir. + +> **Sınavlar hakkında bir not**: Tüm sınavlar [bu uygulamada](https://red-field-0a6ddfd03.1.azurestaticapps.net/) yer almaktadır; toplamda üç sorudan oluşan 50 sınav bulunmaktadır. Sınavlar dersler içinde bağlantılıdır, ancak sınav uygulaması yerel olarak çalıştırılabilir; `etc/quiz-app` klasöründeki talimatları izleyin. + +## Çevrimdışı Erişim + +Bu belgeleri çevrimdışı olarak [Docsify](https://docsify.js.org/#/) kullanarak çalıştırabilirsiniz. Bu depoyu fork edin, yerel makinenize [Docsify'i yükleyin](https://docsify.js.org/#/quickstart), ve ardından bu deponun `etc/docsify` klasöründe `docsify serve` yazın. Web sitesi localhost üzerinde 3000 numaralı portta sunulacaktır: `localhost:3000`. Müfredatın pdf'si [bu bağlantıda](../../../../../../etc/pdf/readme.pdf) mevcuttur. + +**Sorumluluk Reddi**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/1-Intro/README.md b/translations/tr/lessons/1-Intro/README.md new file mode 100644 index 00000000..e4ca1acb --- /dev/null +++ b/translations/tr/lessons/1-Intro/README.md @@ -0,0 +1,38 @@ +> [Dmitry Soshnikov](http://soshnikov.com) tarafından görsel + +## Son AI Araştırmaları + +Sinir ağı araştırmalarındaki büyük artış, 2010 civarında büyük kamu veri setlerinin kullanılabilir hale gelmesiyle başladı. Yaklaşık 14 milyon etiketlenmiş görüntü içeren [ImageNet](https://en.wikipedia.org/wiki/ImageNet) adlı büyük bir görüntü koleksiyonu, [ImageNet Büyük Ölçekli Görsel Tanıma Yarışması](https://image-net.org/challenges/LSVRC/)nın doğmasına neden oldu. + +![ILSVRC Doğruluğu](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> [Dmitry Soshnikov](http://soshnikov.com) tarafından görsel +2012 yılında, [Konvolüsyonel Sinir Ağları](../4-ComputerVision/07-ConvNets/README.md) ilk kez görüntü sınıflandırmada kullanıldı ve bu, sınıflandırma hatalarında önemli bir düşüşe yol açtı (neredeyse %30'dan %16.4'e). 2015 yılında, Microsoft Research'tan ResNet mimarisi [insan seviyesinde doğruluk](https://doi.org/10.1109/ICCV.2015.123) elde etti. + +O zamandan beri, Sinir Ağları birçok görevde son derece başarılı bir şekilde performans gösterdi: + +--- + +Yıl | İnsan Eşdeğeri Elde Edildi +-----|-------- +2015 | [Görüntü Sınıflandırma](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Konuşma Tanıma](https://arxiv.org/abs/1610.05256) +2018 | [Otomatik Makine Çevirisi](https://arxiv.org/abs/1803.05567) (Çince-İngilizce) +2020 | [Görüntü Açıklaması](https://arxiv.org/abs/2009.13682) + +Son birkaç yılda, BERT ve GPT-3 gibi büyük dil modelleri ile büyük başarılar gördük. Bu, büyük ölçüde, metinlerin yapısını ve anlamını yakalamak için modelleri eğitmemizi sağlayan çok fazla genel metin verisinin mevcut olmasından kaynaklandı. Modelleri genel metin koleksiyonları üzerinde önceden eğitip, ardından bu modelleri daha spesifik görevler için uzmanlaştırıyoruz. Bu kursta daha sonra [Doğal Dil İşleme](../5-NLP/README.md) hakkında daha fazla bilgi edineceğiz. + +## 🚀 Zorluk + +İnternette bir tur yaparak, AI'nın en etkili bir şekilde kullanıldığı yerleri belirleyin. Bir Haritalama uygulamasında mı, yoksa bir konuşma metne dönüştürme hizmetinde mi yoksa bir video oyununda mı? Sisteminin nasıl inşa edildiğini araştırın. + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## İnceleme & Kendi Kendine Çalışma + +AI ve ML tarihini incelemek için [bu dersi](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML) okuyun. O dersin veya bu dersin en üstündeki sketchnote'dan bir unsuru alın ve onun evrimini etkileyen kültürel bağlamı anlamak için daha derinlemesine araştırın. + +**Ödev**: [Oyun Jam](assignment.md) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/1-Intro/assignment.md b/translations/tr/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..12d0e49e --- /dev/null +++ b/translations/tr/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# Oyun Jamı + +Oyunlar, AI ve ML'deki gelişmelerden yoğun bir şekilde etkilenen bir alandır. Bu ödevde, AI'nın evriminden etkilenen ve hoşlandığınız bir oyun hakkında kısa bir makale yazın. Bu oyun, çeşitli bilgisayar işleme sistemlerinden etkilenmiş kadar eski olmalıdır. İyi bir örnek olarak Satranç veya Go verilebilir, ancak Pong veya Pac-Man gibi video oyunlarına da göz atabilirsiniz. Oyununun geçmişini, güncel durumunu ve AI geleceğini tartışan bir deneme yazın. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alınız. Yerel dildeki orijinal belge, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/2-Symbolic/README.md b/translations/tr/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..5612cda9 --- /dev/null +++ b/translations/tr/lessons/2-Symbolic/README.md @@ -0,0 +1,187 @@ +# Bilgi Temsili ve Uzman Sistemleri + +![Sembolik AI içeriğinin özeti](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.tr.png) + +> Sketchnote [Tomomi Imura](https://twitter.com/girlie_mac) tarafından + +Yapay zeka arayışı, insanlara benzer şekilde dünyayı anlamak için bilgi arayışına dayanır. Peki, bunu nasıl yapabilirsiniz? + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +Yapay zekanın ilk dönemlerinde, zeki sistemler oluşturmak için yukarıdan aşağıya yaklaşım (önceki derste tartışılan) popülerdi. Fikir, bilgiyi insanlardan makine tarafından okunabilir bir forma çıkarmak ve ardından bunu otomatik olarak sorunları çözmek için kullanmaktı. Bu yaklaşım iki büyük fikre dayanıyordu: + +* Bilgi Temsili +* Akıl Yürütme + +## Bilgi Temsili + +Sembolik AI'deki önemli kavramlardan biri **bilgidir**. Bilgiyi *bilgi* veya *veri* ile ayırt etmek önemlidir. Örneğin, kitapların bilgi içerdiğini söyleyebiliriz, çünkü kitapları inceleyerek uzmanlaşabiliriz. Ancak, kitapların içeriği aslında *veri* olarak adlandırılır ve bu verileri okuyarak ve dünyamız modeline entegre ederek bu verileri bilgiye dönüştürürüz. + +> ✅ **Bilgi**, kafamızda bulunan ve dünyayı anlama şeklimizi temsil eden bir şeydir. Aktif bir **öğrenme** süreci ile elde edilir; bu süreç, aldığımız bilgi parçalarını aktif dünya modelimize entegre eder. + +Çoğu zaman bilgiyi katı bir şekilde tanımlamayız, ancak [DIKW Piramidi](https://en.wikipedia.org/wiki/DIKW_pyramid) gibi diğer ilgili kavramlarla ilişkilendiririz. Bu, aşağıdaki kavramları içerir: + +* **Veri**, fiziksel medya üzerinde temsil edilen bir şeydir; yazılı metin veya sözel kelimeler gibi. Veri, insanlardan bağımsız olarak var olur ve insanlar arasında aktarılabilir. +* **Bilgi**, veriyi kafamızda nasıl yorumladığımızdır. Örneğin, "bilgisayar" kelimesini duyduğumuzda, bunun ne olduğu hakkında bir anlayışımız vardır. +* **Bilgi**, bilgilerin dünya modelimize entegre edilmesidir. Örneğin, bir bilgisayarın ne olduğunu öğrendiğimizde, bunun nasıl çalıştığı, ne kadar maliyeti olduğu ve ne amaçla kullanılabileceği hakkında bazı fikirler edinmeye başlarız. Bu birbiriyle ilişkili kavramlar ağı, bilgimizi oluşturur. +* **Bilgelik**, dünyayı anlama seviyemizin bir başka boyutudur ve *meta-bilgi* temsil eder; örneğin, bilginin nasıl ve ne zaman kullanılacağına dair bir kavram. + + + +*Görsel [Wikipedia'dan](https://commons.wikimedia.org/w/index.php?curid=37705247), Longlivetheux - Kendi çalışması, CC BY-SA 4.0* + +Böylece, **bilgi temsili** sorunu, bilgiyi bir bilgisayar içinde veri biçiminde etkili bir şekilde temsil etmenin bir yolunu bulmaktır, böylece otomatik olarak kullanılabilir hale gelir. Bu, bir spektrum olarak görülebilir: + +![Bilgi temsili spektrumu](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.tr.png) + +> Görsel [Dmitry Soshnikov](http://soshnikov.com) tarafından + +* Solda, bilgisayarlar tarafından etkili bir şekilde kullanılabilen çok basit bilgi temsilleri vardır. En basiti algoritmik olanıdır; burada bilgi, bir bilgisayar programı ile temsil edilir. Ancak, bu bilgi temsilinin en iyi yolu değildir, çünkü esnek değildir. Kafamızdaki bilgi genellikle algoritmik değildir. +* Sağda, doğal metin gibi temsiller vardır. En güçlü olanıdır, ancak otomatik akıl yürütme için kullanılamaz. + +> ✅ Bilgiyi kafanızda nasıl temsil ettiğinizi ve notlara dönüştürdüğünüzü bir dakika düşünün. Hatırlamayı kolaylaştırmak için sizin için iyi çalışan belirli bir format var mı? + +## Bilgisayar Bilgi Temsillerinin Sınıflandırılması + +Farklı bilgisayar bilgi temsil yöntemlerini aşağıdaki kategorilere ayırabiliriz: + +* **Ağ temsilleri**, kafamızda birbiriyle ilişkili kavramlar ağına sahip olduğumuz gerçeğine dayanır. Aynı ağları bir graf olarak bir bilgisayarda yeniden üretmeye çalışabiliriz - buna **anlamsal ağ** denir. + +1. **Nesne-Aitlik-Değer üçlüleri** veya **aitlik-değer çiftleri**. Bir graf, bilgisayarda düğüm ve kenar listesini temsil edebileceği için, bir anlamsal ağı, nesneleri, özellikleri ve değerleri içeren üçlüler listesi ile temsil edebiliriz. Örneğin, programlama dilleri hakkında aşağıdaki üçlüleri oluştururuz: + +Nesne | Aitlik | Değer +-------|-----------|------ +Python | dir | Tipleme-İçermeyen-Dil +Python | icat-edildi | Guido van Rossum +Python | blok-sözdizimi | girinti +Tipleme-İçermeyen-Dil | yoktur | tür tanımlamaları + +> ✅ Üçlülerin diğer bilgi türlerini temsil etmek için nasıl kullanılabileceğini düşünün. + +2. **Hiyerarşik temsiller**, kafamızda sık sık nesnelerin bir hiyerarşisini oluşturduğumuzu vurgular. Örneğin, kanaryanın bir kuş olduğunu ve tüm kuşların kanatları olduğunu biliriz. Ayrıca, bir kanaryanın genellikle hangi renkte olduğunu ve uçuş hızının ne olduğunu da biliyoruz. + + - **Çerçeve temsili**, her nesneyi veya nesne sınıfını, **slotlar** içeren bir **çerçeve** olarak temsil etmeye dayanır. Slotların varsayılan değerleri, değer kısıtlamaları veya bir slotun değerini elde etmek için çağrılabilecek saklanan prosedürleri olabilir. Tüm çerçeveler, nesne yönelimli programlama dillerindeki nesne hiyerarşisine benzer bir hiyerarşi oluşturur. + - **Senaryolar**, zaman içinde gelişebilecek karmaşık durumları temsil eden özel bir çerçeve türüdür. + +**Python** + +Slot | Değer | Varsayılan değer | Aralık | +-----|-------|---------------|----------| +İsim | Python | | | +Şu-Dir | Tipleme-İçermeyen-Dil | | | +Değişken Durumu | | CamelCase | | +Program Uzunluğu | | | 5-5000 satır | +Blok Sözdizimi | Girinti | | | + +3. **Prosedürel temsiller**, bilgiyi belirli bir koşul gerçekleştiğinde yürütülebilecek eylemler listesi olarak temsil etmeye dayanır. + - Üretim kuralları, sonuç çıkarmamıza izin veren eğer-o zaman ifadeleridir. Örneğin, bir doktorun "Eğer" bir hastada yüksek ateş "veya" kan testinde yüksek C-reaktif protein varsa "o zaman" bir iltihabı vardır şeklinde bir kuralı olabilir. Koşullardan birine ulaştığımızda, iltihap hakkında bir sonuç çıkarabiliriz ve bunu daha sonraki akıl yürütmede kullanabiliriz. + - Algoritmalar, prosedürel temsilin başka bir biçimi olarak düşünülebilir, ancak neredeyse hiçbiri bilgi tabanlı sistemlerde doğrudan kullanılmaz. + +4. **Mantık**, Aristoteles tarafından evrensel insan bilgisini temsil etmenin bir yolu olarak önerilmiştir. + - Matematiksel bir teori olarak Predikat Mantığı, hesaplanabilirlik açısından çok zengin olduğu için genellikle bunun bir alt kümesi kullanılır; örneğin, Prolog'da kullanılan Horn cümleleri. + - Tanımlayıcı Mantık, nesnelerin hiyerarşilerini temsil etmek ve akıl yürütmek için kullanılan mantıksal sistemler ailesidir; bu tür sistemler arasında *anlamsal web* yer alır. + +## Uzman Sistemleri + +Sembolik AI'nin erken başarılarından biri, belirli bir problem alanında uzman olarak hareket etmek üzere tasarlanmış bilgisayar sistemleri olan **uzman sistemleridir**. Bunlar, bir veya daha fazla insan uzmanından çıkarılan bir **bilgi tabanı** üzerine kurulmuştur ve üzerinde bazı akıl yürütmeler yapan bir **çıkarım motoru** içerir. + +![İnsan Mimarisi](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.tr.png) | ![Bilgi Tabanlı Sistem](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.tr.png) +---------------------------------------------|------------------------------------------------ +İnsan sinir sisteminin basitleştirilmiş yapısı | Bilgi tabanlı sistemin mimarisi + +Uzman sistemleri, **kısa süreli bellek** ve **uzun süreli bellek** içeren insan akıl yürütme sistemi gibi inşa edilmiştir. Benzer şekilde, bilgi tabanlı sistemlerde aşağıdaki bileşenleri ayırt ederiz: + +* **Problem belleği**: şu anda çözülen problem hakkında bilgiyi içerir; yani bir hastanın sıcaklığı veya kan basıncı, iltihap olup olmadığı vb. Bu bilgi, şu anda problem hakkında bildiklerimizin bir anlık görüntüsünü içerdiği için **statik bilgi** olarak da adlandırılır - bu, söz konusu *problem durumu*dur. +* **Bilgi tabanı**: bir problem alanı hakkında uzun süreli bilgiyi temsil eder. Bu, insan uzmanlarından manuel olarak çıkarılır ve danışmadan danışmaya değişmez. Bir problem durumundan diğerine geçiş yapmamıza olanak tanıdığı için, bu aynı zamanda **dinamik bilgi** olarak da adlandırılır. +* **Çıkarım motoru**: problem durumu alanında arama sürecini düzenler, gerektiğinde kullanıcıya sorular sorar. Ayrıca, her duruma uygulanacak doğru kuralları bulmaktan da sorumludur. + +Örnek olarak, fiziksel özelliklerine dayanarak bir hayvanı belirleyen aşağıdaki uzman sistemini düşünelim: + +![VE-VEYA Ağaç](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.tr.png) + +> Görsel [Dmitry Soshnikov](http://soshnikov.com) tarafından + +Bu diyagram bir **VE-VEYA ağacı** olarak adlandırılır ve bir dizi üretim kuralının grafiksel bir temsilidir. Bir ağacın çizilmesi, uzman bilgilerini çıkarmanın başlangıcında faydalıdır. Bilgisayar içinde bilgiyi temsil etmek için kuralları kullanmak daha uygundur: + +``` +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 +``` + +Kuralların sol tarafındaki her koşul ve eylem esasen nesne-aitlik-değer (OAV) üçlüleridir. **Çalışma belleği**, şu anda çözülen probleme karşılık gelen OAV üçlüleri setini içerir. Bir **kural motoru**, bir koşulun karşılandığı kuralları arar ve uygular, çalışma belleğine başka bir üçlü ekler. + +> ✅ Sevdiğiniz bir konuda kendi VE-VEYA ağacınızı çizin! + +### İleri ve Geri Çıkarım + +Yukarıda tanımlanan süreç **ileri çıkarım** olarak adlandırılır. Bu, çalışma belleğinde mevcut olan problemle ilgili bazı başlangıç verileri ile başlar ve ardından şu akıl yürütme döngüsünü yürütür: + +1. Hedef özellik çalışma belleğinde mevcutsa - dur ve sonucu ver +2. Şu anda koşulu karşılanan tüm kuralları ara - **çelişki seti** elde et. +3. **Çelişki çözümü** gerçekleştir - bu adımda uygulanacak bir kural seç. Farklı çelişki çözümleme stratejileri olabilir: + - Bilgi tabanındaki ilk uygulanabilir kuralı seç + - Rastgele bir kural seç + - En çok koşulu karşılayan *daha spesifik* bir kural seç, yani "sol taraf" (LHS) koşullarını en çok karşılayan kural +4. Seçilen kuralı uygula ve problem durumuna yeni bir bilgi ekle +5. 1. adıma geri dön. + +Ancak, bazı durumlarda, problem hakkında boş bir bilgi ile başlamak isteyebiliriz ve sonuca ulaşmamıza yardımcı olacak sorular sorabiliriz. Örneğin, tıbbi teşhis yaparken, genellikle hastayı teşhis etmeye başlamadan önce tüm tıbbi analizleri yapmayız. Daha çok, bir karar vermemiz gerektiğinde analizler yapmak isteriz. + +Bu süreç **geri çıkarım** kullanılarak modellenebilir. **Amaç** tarafından yönlendirilir - bulmaya çalıştığımız özellik değeri: + +1. Amaç değerini verebilecek tüm kuralları seçin (yani, amaç sağ tarafta ("sağ taraf")) - bir çelişki seti +1. Bu özellik için kural yoksa ya da kullanıcıdan değer istememiz gerektiğini belirten bir kural varsa - bunu isteyin, aksi takdirde: +1. Bir hipotez olarak kullanacağımız bir kural seçmek için çelişki çözümleme stratejisini kullanın - bunu kanıtlamaya çalışacağız +1. Kuralın LHS'sindeki tüm özellikler için süreci tekrarlayın, bunları hedefler olarak kanıtlamaya çalışarak +1. Herhangi bir noktada süreç başarısız olursa - 3. adımda başka bir kural kullanın. + +> ✅ Hangi durumlarda ileri çıkarım daha uygun? Geri çıkarım hakkında ne dersiniz? + +### Uzman Sistemlerin Uygulanması + +Uzman sistemler, farklı araçlar kullanılarak uygulanabilir: + +* Bunları doğrudan bazı yüksek seviyeli programlama dillerinde programlamak. Bu en iyi fikir değildir, çünkü bilgi tabanlı bir sistemin ana avantajı bilginin çıkarımdan ayrılmasıdır ve potansiyel olarak bir problem alanı uzmanı, çıkarım sürecinin ayrıntılarını anlamadan kurallar yazabilmelidir. +* **Uzman sistemler kabuğu** kullanmak, yani bazı bilgi temsil dilleri kullanarak bilgi ile doldurulması için özel olarak tasarlanmış bir sistem. + +## ✍️ Alıştırma: Hayvan Çıkarımı + +İleri ve geri çıkarım uzman sisteminin uygulanmasına bir örnek için [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) dosyasına bakın. + +> **Not**: Bu örnek oldukça basit olup, bir uzman sistemin nasıl göründüğüne dair sadece bir fikir vermektedir. Böyle bir sistem oluşturmaya başladığınızda, yaklaşık 200 kurala ulaştığınızda, sistemin belirli kararlar alma biçiminde bazı *zeka* davranışları fark edeceksiniz. Bir noktada, kurallar çok karmaşık hale gelir ve bunların hepsini akılda tutmak zorlaşır, bu noktada bir sistemin neden belirli kararlar verdiğini sorgulamaya başlayabilirsiniz. Ancak, bilgi tabanlı sistemlerin önemli bir özelliği, herhangi bir kararın nasıl alındığını her zaman *açıklayabilmenizdir*. + +## Ontolojiler ve Anlamsal Web + +20. yüzyılın sonunda, internet kaynaklarını işaretlemek için bilgi temsili kullanma girişimi vardı, böylece çok özel sorgulara karşılık gelen kaynakları bulmak mümkün olabilirdi. Bu hareket **Anlamsal Web** olarak adlandırıldı ve birkaç kavrama dayanıyordu: + +- **[Tanım mantıkları](https://en.wikipedia.org/wiki/Description_logic)** (DL) üzerine kurulu özel bir bilgi temsili. Bu, özelliklerle nesnelerin bir hiyerarşisini oluşturduğu için çerçeve bilgi temsilinin benzeridir, ancak resmi mantıksal anlamı ve çıkarımı vardır. İfade gücü ve çıkarımın algoritmik karmaşıklığı arasında denge kuran bir dizi DL vardır. +- Tüm kavramların küresel bir URI tanımlayıcısı ile temsil edildiği dağıtık bilgi temsili, interneti kapsayan bilgi hiyerarşileri oluşturmayı mümkün kılar. +- Bilgi tanımlamak için XML tabanlı diller ailesi: RDF (Kaynak Tanım Çerçevesi), RDFS (RDF Şeması), OWL (Ontoloji Web Dili). + +Anlamsal Web'deki temel kavram, **Ontoloji** kavramıdır. Bu, belirli bir problem alanının bazı resmi bilgi temsili kullanılarak açık bir şekilde tanımlanmasını ifade eder. En basit ontoloji, bir problem alanındaki nesnelerin hiyerarşisi olabilir, ancak daha karmaşık ontolojiler çıkarım için kullanılabilecek kuralları içerecektir. + +Anlamsal webde, tüm temsiller üçlüler üzerine kuruludur. Her nesne ve her ilişki, URI ile benzersiz bir şekilde tanımlanır. Örneğin, bu AI Müfredatının 1 Ocak 2022'de Dmitry Soshnikov tarafından geliştirildiğini belirtmek istersek - kullanabileceğimiz üçlüler şunlardır: + + + +``` +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 +``` + +> ✅ Burada `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator`, *yaratıcı* ve *oluşturma tarihi* kavramlarını ifade etmek için bazı iyi bilinen ve evrensel olarak kabul edilen URI'lardır. + +Daha karmaşık bir durumda, bir yaratıcılar listesi tanımlamak istersek, RDF'de tanımlanan bazı veri yapıları kullanabiliriz. + + + +> Yukarıdaki diyagramlar [Dmitry Soshnikov](http://soshnikov.com) tarafından + +Anlamsal Web'in inşası, arama motorlarının ve doğal dil işleme tekniklerinin başarısı nedeniyle bir nebze yavaşladı; bu teknikler metinden yapılandırılmış verileri çıkarmayı mümkün kılmaktadır. Ancak, bazı alanlarda hala ontolojileri ve bilgi tabanlarını sürdürmek için önemli çabalar gösterilmektedir. Dikkate değer birkaç + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alınız. Yerel dildeki orijinal belge, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/2-Symbolic/assignment.md b/translations/tr/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..49b9933f --- /dev/null +++ b/translations/tr/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# Ontoloji Oluşturma + +Bir bilgi tabanı oluşturmak, bir konuyla ilgili gerçekleri temsil eden bir modeli kategorize etmekle ilgilidir. Bir konu seçin - bir kişi, bir yer veya bir nesne gibi - ve ardından o konunun bir modelini oluşturun. Bu derste açıklanan bazı teknikleri ve model oluşturma stratejilerini kullanın. Bir örnek, mobilyalar, ışıklar ve benzeri ile bir oturma odasının ontolojisini oluşturmak olabilir. Oturma odası mutfaktan nasıl farklıdır? Banyo? Bunun oturma odası olduğunu ve yemek odası olmadığını nasıl biliyorsunuz? Ontolojinizi oluşturmak için [Protégé](https://protege.stanford.edu/) kullanın. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, kesin kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..6f511a37 --- /dev/null +++ b/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,95 @@ +# Sinir Ağlarına Giriş: Perceptron + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Modern sinir ağlarına benzer bir şeyi uygulama girişimlerinden biri, 1957 yılında Cornell Aeronautical Laboratory'dan Frank Rosenblatt tarafından yapılmıştır. Bu, üçgenler, kareler ve daireler gibi ilkel geometrik şekilleri tanımak için tasarlanmış "Mark-1" adlı bir donanım uygulamasıydı. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> Görseller [Wikipedia'dan](https://en.wikipedia.org/wiki/Perceptron) + +Bir giriş resmi, 20x20 fotocel array ile temsil edildi, bu nedenle sinir ağının 400 girişi ve bir ikili çıktısı vardı. Basit bir ağ, bir **eşik mantık birimi** olarak da adlandırılan bir nöron içeriyordu. Sinir ağı ağırlıkları, eğitim aşamasında manuel ayarlama gerektiren potansiyometreler gibi işlev görüyordu. + +> ✅ Potansiyometre, kullanıcının bir devrenin direncini ayarlamasına olanak tanıyan bir cihazdır. + +> New York Times o dönemde perceptron hakkında şunları yazdı: *[Donanmanın] yürüyebilen, konuşabilen, görebilen, yazabilen, kendini üretebilen ve varlığının farkında olabilen bir elektronik bilgisayar embriyosu.* + +## Perceptron Modeli + +Modelimizde N özellik olduğunu varsayalım, bu durumda giriş vektörü N boyutunda bir vektör olacaktır. Perceptron, **ikili sınıflandırma** modeli olup, yani iki sınıf arasındaki giriş verilerini ayırt edebilir. Her giriş vektörü x için perceptron'un çıktısının ya +1 ya da -1 olacağını varsayacağız, bu da sınıfa bağlıdır. Çıktı, aşağıdaki formül kullanılarak hesaplanacaktır: + +y(x) = f(wTx) + +burada f, bir adım aktivasyon fonksiyonudur. + + + + +## Perceptronu Eğitmek + +Bir perceptronu eğitmek için, çoğu değeri doğru sınıflandıran bir ağırlık vektörü w bulmamız gerekiyor, yani en küçük **hata** sonucunu vermek. Bu hata E, aşağıdaki şekilde **perceptron kriteri** ile tanımlanır: + +E(w) = -∑wTxiti + +burada: + +* toplam, yanlış sınıflandırmaya neden olan o eğitim veri noktaları i üzerinde alınır +* xi giriş verisi ve ti sırasıyla negatif ve pozitif örnekler için -1 veya +1'dir. + +Bu kriter, ağırlıklar w'nin bir fonksiyonu olarak kabul edilir ve bunu minimize etmemiz gerekiyor. Genellikle, başlangıçta bazı ağırlıklar w(0) ile başladığımız ve her adımda ağırlıkları aşağıdaki formüle göre güncellediğimiz bir yöntem olan **gradyan inişi** kullanılır: + +w(t+1) = w(t) - η∇E(w) + +Burada η, sözde **öğrenme oranı**dır ve ∇E(w) E'nin **gradyanı**nı ifade eder. Gradyanı hesapladıktan sonra şunları elde ederiz: + +w(t+1) = w(t) + ∑ηxiti + +Python'daki algoritma şu şekilde görünmektedir: + +```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 +``` + +## Sonuç + +Bu derste, ikili sınıflandırma modeli olan bir perceptron hakkında bilgi edindiniz ve bunu bir ağırlık vektörü kullanarak nasıl eğiteceğinizi öğrendiniz. + +## 🚀 Zorluk + +Kendi perceptron'unuzu oluşturmayı denemek isterseniz, [Microsoft Learn'deki bu laboratuvara](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) göz atabilirsiniz. Bu laboratuvar, [Azure ML tasarımcısını](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) kullanmaktadır. + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Gözden Geçirme & Kendi Kendine Çalışma + +Perceptron'un nasıl bir oyuncak problemi çözdüğünü ve gerçek yaşam problemlerini nasıl çözebileceğimizi görmek ve öğrenmeye devam etmek için [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) defterine gidin. + +Ayrıca, perceptronlar hakkında ilginç bir [makale](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) da var. + +## [Ödev](lab/README.md) + +Bu derste, ikili sınıflandırma görevi için bir perceptron uyguladık ve iki el yazısı rakamı arasında sınıflandırma yapmak için kullandık. Bu laboratuvar, bir görüntüye en uygun rakamın hangisi olduğunu belirleyerek rakam sınıflandırma problemini tamamen çözmenizi istiyor. + +* [Talimatlar](lab/README.md) +* [Defter](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..43fe681a --- /dev/null +++ b/translations/tr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# Çoklu Sınıf Sınıflandırması ile Perceptron + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) projesinden laboratuvar ödevi. + +## Görev + +Bu derste geliştirdiğimiz MNIST el yazısı rakamlarının ikili sınıflandırması için yazdığımız kodu kullanarak, herhangi bir rakamı tanıyabilen çoklu sınıf sınıflandırıcısı oluşturun. Eğitim ve test veri setinde sınıflandırma doğruluğunu hesaplayın ve karışıklık matrisini yazdırın. + +## İpuçları + +1. Her rakam için "bu rakam vs. diğer tüm rakamlar" için bir ikili sınıflandırıcı veri seti oluşturun. +1. İkili sınıflandırma için 10 farklı perceptron eğitin (her rakam için bir tane). +1. Bir girdi rakamını sınıflandıracak bir fonksiyon tanımlayın. + +> **İpucu**: Tüm 10 perceptronun ağırlıklarını tek bir matriste birleştirirsek, girdi rakamlarına tüm 10 perceptronu bir matris çarpımı ile uygulayabilmemiz gerekir. En olası rakamı, çıktıya `argmax` işlemi uygulayarak bulabiliriz. + +## Not Defteri Açma + +Laboratuvarı [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) dosyasını açarak başlatın. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, ana dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda oluşabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..29b07705 --- /dev/null +++ b/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# Sinir Ağlarına Giriş. Çok Katmanlı Algılayıcı + +Önceki bölümde, en basit sinir ağı modelini - tek katmanlı algılayıcıyı, iki sınıflı lineer sınıflandırma modeli olarak öğrendiniz. + +Bu bölümde, bu modeli daha esnek bir çerçeveye genişleteceğiz, böylece: + +* iki sınıfın yanı sıra **çoklu sınıf sınıflandırması** gerçekleştirebileceğiz +* sınıflandırmanın yanı sıra **regresyon problemleri** çözebileceğiz +* lineer olarak ayrılamayan sınıfları ayırabileceğiz + +Ayrıca, farklı sinir ağı mimarilerini oluşturmak için Python'da kendi modüler çerçevemizi geliştireceğiz. + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Makine Öğreniminin Formülasyonu + +Makine Öğrenimi problemini formüle etmeye başlayalım. Diyelim ki etiketleri **Y** olan bir eğitim veri setimiz **X** var ve en doğru tahminleri yapacak bir model *f* inşa etmemiz gerekiyor. Tahminlerin kalitesi **Kayıp fonksiyonu** ℒ ile ölçülür. Aşağıdaki kayıp fonksiyonları sıkça kullanılır: + +* Regresyon problemi için, bir sayı tahmin etmemiz gerektiğinde, **mutlak hata** ∑i|f(x(i))-y(i)| veya **kare hata** ∑i(f(x(i))-y(i))2 kullanabiliriz. +* Sınıflandırma için, **0-1 kaybı** (bu, modelin **doğruluğu** ile özdeştir) veya **lojistik kayıp** kullanırız. + +Tek katmanlı algılayıcı için, *f* fonksiyonu lineer bir fonksiyon olarak tanımlanmıştı *f(x)=wx+b* (burada *w* ağırlık matrisidir, *x* giriş özellikleri vektörüdür ve *b* önyargı vektörüdür). Farklı sinir ağı mimarileri için, bu fonksiyon daha karmaşık bir biçim alabilir. + +> Sınıflandırma durumunda, genellikle ağ çıkışı olarak ilgili sınıfların olasılıklarını almak arzu edilir. Rastgele sayıları olasılıklara dönüştürmek için (örneğin, çıktıyı normalleştirmek amacıyla) genellikle **softmax** fonksiyonu σ kullanılır ve *f* fonksiyonu *f(x)=σ(wx+b)* haline gelir. + +Yukarıdaki *f* tanımında, *w* ve *b* **parametreler** θ=⟨*w,b*⟩ olarak adlandırılır. Veri seti ⟨**X**,**Y**⟩ verildiğinde, tüm veri seti üzerinde genel bir hatayı parametreler θ'nın bir fonksiyonu olarak hesaplayabiliriz. + +> ✅ **Sinir ağı eğitiminin amacı, parametre θ'yı değiştirerek hatayı minimize etmektir.** + +## Gradyan İnişi Optimizasyonu + +**Gradyan inişi** olarak bilinen bir fonksiyon optimizasyon yöntemi vardır. Fikir, kayıp fonksiyonunun parametreler ile olan türevini (çok boyutlu durumda **gradyan** olarak adlandırılır) hesaplayabilmemiz ve hatanın azalacak şekilde parametreleri değiştirebilmemizdir. Bu, aşağıdaki gibi formüle edilebilir: + +* Parametreleri bazı rastgele değerlerle w(0), b(0) ile başlatın. +* Aşağıdaki adımı birçok kez tekrarlayın: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Eğitim sırasında, optimizasyon adımlarının tüm veri setini dikkate alarak hesaplanması beklenir (kayıp, tüm eğitim örnekleri üzerinden bir toplam olarak hesaplandığını unutmayın). Ancak, gerçek hayatta **minibatch** olarak adlandırılan veri setinin küçük parçalarını alır ve gradyanları bir veri alt kümesine dayalı olarak hesaplarız. Her seferinde alt küme rastgele alındığı için, bu yöntem **stochastik gradyan inişi** (SGD) olarak adlandırılır. + +## Çok Katmanlı Algılayıcılar ve Geri Yayılım + +Yukarıda gördüğümüz tek katmanlı ağ, lineer olarak ayrılamayan sınıfları sınıflandırma yeteneğine sahiptir. Daha zengin bir model oluşturmak için, ağın birkaç katmanını birleştirebiliriz. Matematiksel olarak bu, *f* fonksiyonunun daha karmaşık bir biçim alacağı ve birkaç adımda hesaplanacağı anlamına gelir: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Burada, α **lineer olmayan aktivasyon fonksiyonu**dur, σ softmax fonksiyonudur ve parametreler θ=<*w1,b1,w2,b2*>'dir. + +Gradyan inişi algoritması aynı kalacak, ancak gradyanları hesaplamak daha zor olacaktır. Zincirleme türev kuralını göz önünde bulundurarak, türevleri şu şekilde hesaplayabiliriz: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ Zincirleme türev kuralı, kayıp fonksiyonunun parametrelerle olan türevlerini hesaplamak için kullanılır. + +Tüm bu ifadelerin en soldaki kısmının aynı olduğunu ve bu nedenle kayıp fonksiyonundan başlayarak "geriye" hesaplama grafiği üzerinden türevleri etkili bir şekilde hesaplayabileceğimizi unutmayın. Böylece çok katmanlı bir algılayıcının eğitilmesi yöntemi **geri yayılım** veya 'backprop' olarak adlandırılır. + +hesap grafiği + +> TODO: resim alıntısı + +> ✅ Geri yayılımı not defteri örneğimizde çok daha ayrıntılı bir şekilde ele alacağız. + +## Sonuç + +Bu derste, kendi sinir ağı kütüphanemizi oluşturduk ve bunu basit bir iki boyutlu sınıflandırma görevinde kullandık. + +## 🚀 Zorluk + +Eşlik eden not defterinde, çok katmanlı algılayıcılar oluşturmak ve eğitmek için kendi çerçevenizi uygulayacaksınız. Modern sinir ağlarının nasıl çalıştığını ayrıntılı olarak görebileceksiniz. + +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) not defterine geçin ve üzerinde çalışın. + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Gözden Geçirme & Kendi Kendine Çalışma + +Geri yayılım, AI ve ML'de yaygın olarak kullanılan bir algoritmadır, [daha ayrıntılı olarak](https://wikipedia.org/wiki/Backpropagation) incelenmeye değer. + +## [Görev](lab/README.md) + +Bu laboratuvar çalışmasında, bu derste inşa ettiğiniz çerçeveyi MNIST el yazısı rakam sınıflandırma sorununu çözmek için kullanmanız istenmektedir. + +* [Talimatlar](lab/README.md) +* [Not Defteri](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..e289cdf1 --- /dev/null +++ b/translations/tr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# Kendi Çerçevemiz ile MNIST Sınıflandırması + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) laboratuvar ödevi. + +## Görev + +MNIST el yazısı rakam sınıflandırma problemini 1-, 2- ve 3-katmanlı algılayıcı kullanarak çözün. Derste geliştirdiğimiz sinir ağı çerçevesini kullanın. + +## Not Defteri Açma + +Laboratuvara [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) dosyasını açarak başlayın. + +## Sorular + +Bu laboratuvarın sonucu olarak, aşağıdaki soruları yanıtlamaya çalışın: + +- Katmanlar arası aktivasyon fonksiyonu ağın performansını etkiliyor mu? +- Bu görev için 2- veya 3-katmanlı bir ağa ihtiyacımız var mı? +- Ağı eğitirken herhangi bir sorunla karşılaştınız mı? Özellikle katman sayısı arttıkça. +- Ağı eğitimi sırasında ağırlıkların davranışı nasıldır? İlişkiyi anlamak için ağırlıkların maksimum mutlak değerini epoch'a karşı çizebilirsiniz. + +**Sorumluluk Reddi**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımıyla ortaya çıkan yanlış anlamalardan veya yanlış yorumlamalardan dolayı sorumluluğumuz yoktur. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..2de19329 --- /dev/null +++ b/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# Sinir Ağı Çerçeveleri + +Zaten öğrendiğimiz gibi, sinir ağlarını verimli bir şekilde eğitebilmek için iki şey yapmamız gerekiyor: + +* Tensörler üzerinde işlem yapmak, örneğin çarpma, toplama ve sigmoid veya softmax gibi bazı fonksiyonları hesaplama +* Tüm ifadelerin gradyanlarını hesaplamak, böylece gradyan inişi optimizasyonu gerçekleştirebilmek + +## [Ön-ders sınavı](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +`numpy` kütüphanesi ilk kısmı yapabilse de, gradyanları hesaplamak için bir mekanizmaya ihtiyacımız var. Önceki bölümde geliştirdiğimiz [çerçevemizde](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), `backward` yönteminin içinde tüm türev fonksiyonlarını manuel olarak programlamak zorunda kaldık. İdeal olarak, bir çerçeve, tanımlayabileceğimiz *herhangi bir ifadenin* gradyanlarını hesaplama fırsatını bize vermelidir. + +Başka önemli bir şey de GPU veya diğer özel hesaplama birimleri, örneğin [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) üzerinde hesaplamalar yapabilmektir. Derin sinir ağı eğitimi *çok fazla* hesaplama gerektirir ve bu hesaplamaları GPU'larda paralelleştirebilmek çok önemlidir. + +> ✅ 'Paralelleştirme' terimi, hesaplamaları birden fazla cihaz arasında dağıtmak anlamına gelir. + +Şu anda, en popüler iki sinir ağı çerçevesi: [TensorFlow](http://TensorFlow.org) ve [PyTorch](https://pytorch.org/). Her ikisi de CPU ve GPU üzerinde tensörlerle çalışmak için düşük seviyeli bir API sağlar. Düşük seviyeli API'nin üstünde, sırasıyla [Keras](https://keras.io/) ve [PyTorch Lightning](https://pytorchlightning.ai/) adında daha yüksek seviyeli API'ler de bulunmaktadır. + +Düşük Seviye API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +-----------------|-------------------------------------|-------------------------------- +Yüksek Seviye API | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**Düşük seviye API'ler**, her iki çerçevede de **hesaplama grafikleri** adı verilen yapılar oluşturmanıza olanak tanır. Bu grafik, belirli giriş parametreleriyle çıktıyı (genellikle kayıp fonksiyonu) nasıl hesaplayacağınızı tanımlar ve mevcutsa GPU üzerinde hesaplama için itilebilir. Bu hesaplama grafiğini farklılaştırmak ve gradyanları hesaplamak için işlevler vardır; bu gradyanlar daha sonra model parametrelerini optimize etmek için kullanılabilir. + +**Yüksek seviye API'ler**, sinir ağlarını **katmanlar dizisi** olarak düşünür ve çoğu sinir ağını inşa etmeyi çok daha kolay hale getirir. Modeli eğitmek genellikle verileri hazırlamayı ve ardından işi yapmak için `fit` fonksiyonunu çağırmayı gerektirir. + +Yüksek seviye API, tipik sinir ağlarını çok hızlı bir şekilde inşa etmenize olanak tanır; birçok detay hakkında endişelenmenize gerek kalmaz. Aynı zamanda, düşük seviye API, eğitim süreci üzerinde çok daha fazla kontrol sağlar, bu nedenle yeni sinir ağı mimarileriyle çalışırken araştırmalarda sıklıkla kullanılır. + +Her iki API'yi bir arada kullanabileceğinizi de anlamak önemlidir; örneğin, düşük seviye API kullanarak kendi ağ katmanı mimarinizi geliştirebilir ve ardından yüksek seviye API ile inşa edilen ve eğitilen daha büyük bir ağın içinde kullanabilirsiniz. Ya da yüksek seviye API'yi katmanlar dizisi olarak kullanarak bir ağ tanımlayabilir ve ardından optimizasyon yapmak için kendi düşük seviye eğitim döngünüzü kullanabilirsiniz. Her iki API de aynı temel kavramları kullanır ve birlikte iyi çalışacak şekilde tasarlanmıştır. + +## Öğrenme + +Bu kursta, içeriğin çoğunu hem PyTorch hem de TensorFlow için sunuyoruz. Tercih ettiğiniz çerçeveyi seçebilir ve yalnızca ilgili not defterlerini inceleyebilirsiniz. Hangi çerçeveyi seçeceğinizden emin değilseniz, **PyTorch ve TensorFlow** ile ilgili internette bazı tartışmaları okuyabilirsiniz. Daha iyi bir anlayış elde etmek için her iki çerçeveye de göz atabilirsiniz. + +Mümkün olduğunda, basitlik için Yüksek Seviye API'leri kullanacağız. Ancak, sinir ağlarının nasıl çalıştığını en baştan anlamanın önemli olduğunu düşünüyoruz, bu nedenle başlangıçta düşük seviye API ve tensörlerle çalışmaya başlıyoruz. Ancak, hızlı bir şekilde ilerlemek istiyorsanız ve bu detayları öğrenmek için çok fazla zaman harcamak istemiyorsanız, bunları atlayabilir ve doğrudan yüksek seviye API not defterlerine geçebilirsiniz. + +## ✍️ Alıştırmalar: Çerçeveler + +Aşağıdaki not defterlerinde öğreniminize devam edin: + +Düşük Seviye API | [TensorFlow+Keras Not Defteri](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +-----------------|-------------------------------------|-------------------------------- +Yüksek Seviye API | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Çerçeveleri öğrendikten sonra, aşırı uyum kavramını gözden geçirelim. + +# Aşırı Uyum + +Aşırı uyum, makine öğreniminde son derece önemli bir kavramdır ve doğru bir şekilde anlamak çok önemlidir! + +Aşağıdaki 5 noktayı (aşağıdaki grafiklerde `x` ile temsil edilmiştir) yaklaşık olarak çözme sorununu düşünün: + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.tr.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.tr.jpg) +-------------------------|-------------------------- +**Doğrusal model, 2 parametre** | **Doğrusal olmayan model, 7 parametre** +Eğitim hatası = 5.3 | Eğitim hatası = 0 +Doğrulama hatası = 5.1 | Doğrulama hatası = 20 + +* Solda, iyi bir doğru çizgi yaklaşık olarak görüyoruz. Parametre sayısı uygun olduğundan, model nokta dağılımının arkasındaki fikri doğru anlıyor. +* Sağda, model çok güçlü. Sadece 5 noktamız olduğu için ve modelin 7 parametresi olduğu için, tüm noktaların üzerinden geçecek şekilde ayarlanabilir, bu da eğitim hatasının 0 olmasına neden olur. Ancak, bu modelin verilerin arkasındaki doğru deseni anlamasını engeller, bu nedenle doğrulama hatası çok yüksektir. + +Modelin zenginliği (parametre sayısı) ile eğitim örneklerinin sayısı arasında doğru bir denge kurmak çok önemlidir. + +## Aşırı Uyumun Nedenleri + + * Yeterince eğitim verisi olmaması + * Çok güçlü model + * Giriş verilerinde fazla gürültü + +## Aşırı Uyumun Tespit Edilmesi + +Yukarıdaki grafikten görebileceğiniz gibi, aşırı uyum, çok düşük bir eğitim hatası ve yüksek bir doğrulama hatası ile tespit edilebilir. Genellikle eğitim sırasında hem eğitim hem de doğrulama hatalarının azalmaya başladığını görürüz, ve sonra bir noktada doğrulama hatası azalmayı durdurup artmaya başlayabilir. Bu, aşırı uyumun bir işareti olacak ve muhtemelen bu noktada eğitimi durdurmamız gerektiğini (veya en azından modelin bir anlık görüntüsünü almamız gerektiğini) gösterir. + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.tr.png) + +## Aşırı Uyumun Önlenmesi + +Aşırı uyumun meydana geldiğini görüyorsanız, aşağıdakilerden birini yapabilirsiniz: + + * Eğitim verisi miktarını artırın + * Modelin karmaşıklığını azaltın + * Daha sonra ele alacağımız [düzenleme tekniklerinden](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) birini kullanın, örneğin [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout). + +## Aşırı Uyum ve Bias-Variance Ticaret Dengesi + +Aşırı uyum aslında istatistikte daha genel bir problem olan [Bias-Variance Tradeoff](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) durumudur. Modelimizdeki hata kaynaklarını dikkate aldığımızda, iki tür hata görebiliriz: + +* **Bias hataları**, algoritmamızın eğitim verileri arasındaki ilişkiyi doğru bir şekilde yakalayamamasından kaynaklanır. Bu, modelimizin yeterince güçlü olmamasından kaynaklanabilir (**aşırı uyum**). +* **Variance hataları**, modelin gürültüyü verilerdeki anlamlı ilişki yerine yaklaşık olarak değerlendirmesinden kaynaklanır (**aşırı uyum**). + +Eğitim sırasında, bias hatası azalır (modelimiz verileri yaklaşık olarak öğrenirken) ve variance hatası artar. Aşırı uyumu önlemek için eğitimi durdurmak önemlidir - ya manuel olarak (aşırı uyumu tespit ettiğimizde) ya da otomatik olarak (düzenleme yaparak). + +## Sonuç + +Bu derste, en popüler iki AI çerçevesi olan TensorFlow ve PyTorch için çeşitli API'ler arasındaki farkları öğrendiniz. Ayrıca, çok önemli bir konu olan aşırı uyumu da öğrendiniz. + +## 🚀 Zorluk + +Eşlik eden not defterlerinde, en altta 'görevler' bulacaksınız; not defterlerini inceleyin ve görevleri tamamlayın. + +## [Ders sonrası sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Gözden Geçirme & Kendi Kendine Çalışma + +Aşağıdaki konular hakkında biraz araştırma yapın: + +- TensorFlow +- PyTorch +- Aşırı uyum + +Kendinize şu soruları sorun: + +- TensorFlow ve PyTorch arasındaki fark nedir? +- Aşırı uyum ve yetersiz uyum arasındaki fark nedir? + +## [Ödev](lab/README.md) + +Bu laboratuvar çalışmasında, PyTorch veya TensorFlow kullanarak tek ve çok katmanlı tam bağlı ağlar ile iki sınıflandırma problemini çözmeniz isteniyor. + +* [Talimatlar](lab/README.md) +* [Not Defteri](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, ana dilinde, otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..88dfa0d0 --- /dev/null +++ b/translations/tr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# PyTorch/TensorFlow ile Sınıflandırma + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) için Laboratuvar Görevi. + +## Görev + +PyTorch veya TensorFlow kullanarak tek ve çok katmanlı tam bağlantılı ağlar ile iki sınıflandırma problemini çözün: + +1. **[İris sınıflandırması](https://en.wikipedia.org/wiki/Iris_flower_data_set)** problemi - klasik makine öğrenimi ile ele alınabilen tablo verisi ile ilgili bir problem örneği. Amacınız, 4 sayısal parametreye dayanarak irisleri 3 sınıfa ayırmaktır. +1. Daha önce gördüğümüz **MNIST** el yazısı rakam sınıflandırma problemi. + +En iyi doğruluğu elde etmek için farklı ağ mimarilerini deneyin. + +## Not Defterini Başlatma + +Laboratuvara [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) dosyasını açarak başlayın. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlamadan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/3-NeuralNetworks/README.md b/translations/tr/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..6f2818b4 --- /dev/null +++ b/translations/tr/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# Sinir Ağlarına Giriş + +![Sinir Ağları içeriğinin özetini gösteren bir doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.tr.png) + +Girişte tartıştığımız gibi, zeka elde etmenin yollarından biri bir **bilgisayar modeli** veya **yapay beyin** eğitmektir. 20. yüzyılın ortalarından beri araştırmacılar farklı matematiksel modeller denemiştir; son yıllarda bu yönün son derece başarılı olduğu kanıtlanmıştır. Beynin bu tür matematiksel modellerine **sinir ağları** denir. + +> Bazen sinir ağlarına *Yapay Sinir Ağları* (Artificial Neural Networks), kısaca ANNs denir; bu, gerçek nöron ağlarından değil, modellerden bahsettiğimizi belirtmek içindir. + +## Makine Öğrenimi + +Sinir Ağları, **Makine Öğrenimi** adı verilen daha geniş bir disiplinin parçasıdır; bu disiplinin amacı verileri kullanarak sorunları çözebilen bilgisayar modelleri eğitmektir. Makine Öğrenimi, Yapay Zeka'nın büyük bir bölümünü oluşturur; ancak bu müfredatta klasik ML'yi ele almıyoruz. + +> Klasik Makine Öğrenimi hakkında daha fazla bilgi edinmek için ayrı **[Makine Öğrenimi için Yeni Başlayanlar](http://github.com/microsoft/ml-for-beginners)** müfredatımıza göz atın. + +Makine Öğrenimi'nde, elimizde bazı örneklerden oluşan bir veri seti **X** ve karşılık gelen çıktı değerleri **Y** olduğunu varsayıyoruz. Örnekler genellikle **özelliklerden** oluşan N-boyutlu vektörlerdir ve çıktılara **etiketler** denir. + +İki en yaygın makine öğrenimi sorununu ele alacağız: + +* **Sınıflandırma**, burada bir giriş nesnesini iki veya daha fazla sınıfa ayırmamız gerekir. +* **Regresyon**, burada her bir giriş örneği için bir sayısal değer tahmin etmemiz gerekir. + +> Girişleri ve çıktıları tensörler olarak temsil ettiğimizde, giriş veri seti M×N boyutunda bir matristir; burada M örnek sayısını ve N özellik sayısını temsil eder. Çıktı etiketleri Y ise M boyutunda bir vektördür. + +Bu müfredatta yalnızca sinir ağı modellerine odaklanacağız. + +## Bir Nöron Modeli + +Biyolojiden biliyoruz ki beynimiz, her biri birden fazla "giriş" (akson) ve bir çıkış (dendrit) olan sinir hücrelerinden oluşur. Aksonlar ve dendritler elektrik sinyallerini iletebilir ve aksonlar ile dendritler arasındaki bağlantılar farklı iletkenlik derecelerine sahip olabilir (nörotransmitterler tarafından kontrol edilir). + +![Bir Nöron Modeli](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.tr.jpg) | ![Bir Nöron Modeli](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.tr.png) +----|---- +Gerçek Nöron *([Resim](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) Wikipedia'dan)* | Yapay Nöron *(Yazarın Resmi)* + +Böylece, bir nöronun en basit matematiksel modeli birkaç girişi X1, ..., XN ve bir çıkış Y ile birlikte bir dizi ağırlık W1, ..., WN içerir. Çıkış, şu şekilde hesaplanır: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +burada f bazı doğrusal olmayan **aktivasyon fonksiyonu**dur. + +> Nöronun ilk modelleri, Warren McCullock ve Walter Pitts'in 1943'teki [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) adlı klasik makalesinde tanımlanmıştır. Donald Hebb, "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" adlı kitabında bu ağların nasıl eğitileceğini önermiştir. + +## Bu Bölümde + +Bu bölümde şunları öğreneceğiz: +* [Perceptron](03-Perceptron/README.md), iki sınıflı sınıflandırma için en erken sinir ağı modellerinden biri +* [Çok katmanlı ağlar](04-OwnFramework/README.md) ve eşleşen not defteri [kendi çerçevemizi nasıl oluşturacağımız](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Sinir Ağı Çerçeveleri](05-Frameworks/README.md), bu not defterleri ile: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) ve [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Aşırı Uydurma](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Sorumluluk Reddi**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/tr/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..6333e586 --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# Bilgisayarla Görme Giriş + +[Bilgisayarla Görme](https://wikipedia.org/wiki/Computer_vision), bilgisayarların dijital görüntülerin yüksek seviyede anlaşılmasını sağlamayı amaçlayan bir disiplindir. Bu oldukça geniş bir tanımdır, çünkü *anlamak* birçok farklı anlam taşıyabilir; bir resimdeki bir nesneyi bulmak (**nesne tespiti**), ne olduğunu anlamak (**olay tespiti**), bir resmi metinle tanımlamak veya bir sahneyi 3D olarak yeniden oluşturmak gibi. Ayrıca insan görüntüleriyle ilgili özel görevler de vardır: yaş ve duygu tahmini, yüz tespiti ve kimlik doğrulama, ve 3D poz tahmini gibi birkaç örnek vermek gerekirse. + +## [Ders Öncesi Sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Bilgisayarla görmenin en basit görevlerinden biri **görüntü sınıflandırması**dır. + +Bilgisayarla görme genellikle AI'nın bir dalı olarak kabul edilir. Günümüzde, bilgisayarla görme görevlerinin çoğu, sinir ağları kullanılarak çözülmektedir. Bu bölüm boyunca, bilgisayarla görme için kullanılan özel bir sinir ağı türü olan [konvolüsyonel sinir ağları](../07-ConvNets/README.md) hakkında daha fazla bilgi edineceğiz. + +Ancak, bir görüntüyü bir sinir ağına göndermeden önce, birçok durumda görüntüyü geliştirmek için bazı algoritmik teknikler kullanmak mantıklıdır. + +Görüntü işleme için mevcut olan birkaç Python kütüphanesi vardır: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** farklı görüntü formatlarını okumak/yazmak için kullanılabilir. Ayrıca video karelerini görüntülere dönüştürmek için yararlı bir araç olan ffmpeg'i de destekler. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (aynı zamanda PIL olarak da bilinir) biraz daha güçlüdür ve morfing, palet ayarlamaları gibi bazı görüntü manipülasyonlarını da destekler. +* **[OpenCV](https://opencv.org/)** C++ ile yazılmış güçlü bir görüntü işleme kütüphanesidir ve görüntü işleme için *de facto* standart haline gelmiştir. Kullanışlı bir Python arayüzü vardır. +* **[dlib](http://dlib.net/)** birçok makine öğrenimi algoritmasını, bazı Bilgisayarla Görme algoritmalarını da içeren, C++ kütüphanesidir. Ayrıca bir Python arayüzü vardır ve yüz ve yüz özellik tespiti gibi zorlu görevler için kullanılabilir. + +## OpenCV + +[OpenCV](https://opencv.org/) görüntü işleme için *de facto* standart olarak kabul edilir. C++ ile uygulanmış birçok yararlı algoritma içerir. OpenCV'yi Python'dan da çağırabilirsiniz. + +OpenCV öğrenmek için iyi bir yer [bu Learn OpenCV kursu](https://learnopencv.com/getting-started-with-opencv/)dır. Müfredatımızda amacımız OpenCV'yi öğrenmek değil, ne zaman ve nasıl kullanılabileceğine dair bazı örnekler göstermektir. + +### Görüntü Yükleme + +Python'da görüntüler, NumPy dizileri ile rahatlıkla temsil edilebilir. Örneğin, 320x200 piksel boyutundaki gri tonlamalı görüntüler 200x320 boyutunda bir dizide saklanırken, aynı boyuttaki renkli görüntüler 200x320x3 şeklinde (3 renk kanalı için) saklanır. Bir görüntü yüklemek için aşağıdaki kodu kullanabilirsiniz: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Geleneksel olarak, OpenCV renkli görüntüler için BGR (Mavi-Yeşil-Kırmızı) kodlamasını kullanırken, diğer Python araçları daha geleneksel olan RGB (Kırmızı-Yeşil-Mavi) kullanır. Görüntünün doğru görünmesi için, NumPy dizisindeki boyutları değiştirerek veya bir OpenCV fonksiyonunu çağırarak görüntüyü RGB renk alanına dönüştürmeniz gerekir: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Aynı `cvtColor` function can be used to perform other color space transformations such as converting an image to grayscale or to the HSV (Hue-Saturation-Value) color space. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` +* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold` fonksiyonları, genellikle parlaklık veya kontrast ayarlamaktan daha tercih edilir. +* Görüntüye farklı [dönüşümler](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) uygulamak: + - **[Affine dönüşümler](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)**, görüntüdeki üç noktanın kaynak ve hedef konumlarını bildiğinizde döndürme, yeniden boyutlandırma ve eğme işlemlerini birleştirmeniz gerektiğinde yararlı olabilir. Affine dönüşümler, paralel çizgileri paralel tutar. + - **[Perspektif dönüşümler](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)**, görüntüdeki 4 noktanın kaynak ve hedef konumlarını bildiğinizde yararlı olabilir. Örneğin, bir akıllı telefon kamerasıyla bir dikdörtgen belgeyi bir açıdan çektiğinizde ve belgenin kendisinin dikdörtgen bir görüntüsünü oluşturmak istediğinizde. +* Görüntü içindeki hareketi anlamak için **[optik akış](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** kullanmak. + +## Bilgisayarla Görme Kullanımına Dair Örnekler + +[OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dosyamızda, bilgisayarla görmenin belirli görevleri yerine getirmek için nasıl kullanılabileceğine dair bazı örnekler veriyoruz: + +* **Bir Braille kitabının fotoğrafını ön işleme**. Braille sembollerini ayrı sınıflandırma için bir sinir ağı tarafından kullanmak üzere ayırmak için eşikleme, özellik tespiti, perspektif dönüşüm ve NumPy manipülasyonlarını nasıl kullanabileceğimize odaklanıyoruz. + +![Braille Görüntüsü](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.tr.jpeg) | ![Braille Görüntüsü Ön İşlemden Geçmiş](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.tr.png) | ![Braille Sembolleri](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.tr.png) +----|-----|----- + +> Görüntü [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dosyasından alınmıştır. + +* **Kare farkı kullanarak videoda hareket tespiti**. Kamera sabitse, kamera akışından gelen kareler birbirine oldukça benzer olmalıdır. Kareler diziler olarak temsil edildiğinden, iki ardışık kare için bu dizileri çıkartarak piksel farkını elde ederiz; bu, statik kareler için düşük olmalı ve görüntüde önemli bir hareket olduğunda artmalıdır. + +![Video kareleri ve kare farklarının görüntüsü](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.tr.png) + +> Görüntü [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dosyasından alınmıştır. + +* **Optik Akış kullanarak hareket tespiti**. [Optik akış](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html), video karelerindeki bireysel piksellerin nasıl hareket ettiğini anlamamıza olanak tanır. İki tür optik akış vardır: + + - **Yoğun Optik Akış** her piksel için hareket ettiği yeri gösteren vektör alanını hesaplar. + - **Seyrek Optik Akış** görüntüdeki bazı belirgin özellikleri (örneğin kenarlar) alarak ve bunların her karedeki yolunu oluşturarak çalışır. + +![Optik Akış Görüntüsü](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.tr.png) + +> Görüntü [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dosyasından alınmıştır. + +## ✍️ Örnek Not Defterleri: OpenCV [OpenCV'yi Eylemde Deneyin](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +OpenCV ile bazı deneyler yapmak için [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dosyasını keşfedelim. + +## Sonuç + +Bazen hareket tespiti veya parmak ucu tespiti gibi nispeten karmaşık görevler tamamen bilgisayarla görme ile çözülebilir. Bu nedenle, bilgisayarla görmenin temel tekniklerini bilmek ve OpenCV gibi kütüphanelerin neler yapabileceğini anlamak çok faydalıdır. + +## 🚀 Meydan Okuma + +Cortical Tigers projesini ve bir robot aracılığıyla bilgisayarla görme görevlerini demokratikleştirmek için nasıl blok tabanlı bir çözüm geliştirdiklerini öğrenmek için [bu videoyu](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) izleyin. Bu alanda yeni öğrenicilerin uyum sağlamalarına yardımcı olan diğer projeler hakkında araştırma yapın. + +## [Ders Sonrası Sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Gözden Geçirme ve Kendi Kendine Çalışma + +Optik akış hakkında daha fazla bilgi için [bu harika öğreticide](https://learnopencv.com/optical-flow-in-opencv/) okuyun. + +## [Görev](lab/README.md) + +Bu laboratuvarda basit jestlerle bir video çekeceksiniz ve amacınız optik akış kullanarak yukarı/aşağı/sol/sağ hareketleri çıkarmaktır. + +Avuç Hareketi Çerçevesi + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/tr/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..4d936bb5 --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,23 @@ +# Optik Akış Kullanarak Hareketlerin Tespiti + +[AI for Beginners Curriculum](https://aka.ms/ai-beginners) dersinden laboratuvar ödevi. + +## Görev + +[Bu videoyu](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) dikkate alın, burada bir kişinin avucu sabit bir arka planda sola/sağa/yukarı/aşağı hareket ediyor. +Eğitiminiz Ekim 2023'e kadar olan verilerle yapılmıştır. + +**Amacınız**, Optik Akış'ı kullanarak videonun hangi kısımlarının yukarı/aşağı/sola/sağa hareket içerdiğini belirlemektir. + +**Gelişmiş hedef**, avuç içi/parmak hareketini cilt tonunu kullanarak takip etmek olacaktır; bu, [bu blog yazısında](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) veya [burada](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) açıklanmıştır. + +## Başlangıç Not Defteri + +Laboratuvara [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) dosyasını açarak başlayın. + +## Önemli Nokta + +Bazen, hareket tespiti veya parmak ucu tespiti gibi görece karmaşık görevler tamamen bilgisayarla görme ile çözülebilir. Bu nedenle, OpenCV gibi kütüphanelerin neler yapabileceğini bilmek oldukça faydalıdır. + +**Sorumluluk Reddi**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde, otorite kaynağı olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımıyla ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan dolayı sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/tr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..9d25e0c9 --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# Bilinen CNN Mimarileri + +### VGG-16 + +VGG-16, 2014 yılında ImageNet top-5 sınıflandırmasında %92.7 doğruluk oranına ulaşan bir ağdır. Aşağıdaki katman yapısına sahiptir: + +![ImageNet Katmanları](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.tr.jpg) + +Görüldüğü gibi, VGG geleneksel bir piramit mimarisini takip eder; bu, bir dizi konvolüsyon-pooling katmanıdır. + +![ImageNet Piramidi](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.tr.jpg) + +> Görsel [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) kaynağındandır. + +### ResNet + +ResNet, 2015 yılında Microsoft Research tarafından önerilen bir model ailesidir. ResNet'in ana fikri **artık bloklar** kullanmaktır: + + + +> Görsel [bu makaleden](https://arxiv.org/pdf/1512.03385.pdf) alınmıştır. + +Kimlik geçişinin kullanılma nedeni, katmanımızın bir önceki katmanın sonucuyla artık bloğunun çıktısı arasındaki **farkı** tahmin etmesini sağlamaktır - bu nedenle ismi *artık*dır. Bu bloklar çok daha kolay eğitilir ve bu bloklardan birkaç yüz tanesiyle ağlar inşa edilebilir (en yaygın varyantlar ResNet-52, ResNet-101 ve ResNet-152'dir). + +Bu ağı, veri kümesine göre karmaşıklığını ayarlayabilen bir yapı olarak da düşünebilirsiniz. Başlangıçta, ağı eğitmeye başladığınızda, ağırlık değerleri küçüktür ve sinyalin çoğu kimlik geçiş katmanlarından geçer. Eğitim ilerledikçe ve ağırlıklar büyüdükçe, ağ parametrelerinin önemi artar ve ağ, eğitim görüntülerini doğru bir şekilde sınıflandırmak için gerekli ifadeyi sağlamak üzere ayarlanır. + +### Google Inception + +Google Inception mimarisi bu fikri bir adım daha ileri götürerek, her ağ katmanını birkaç farklı yolun kombinasyonu olarak inşa eder: + + + +> Görsel [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) kaynağındandır. + +Burada, 1x1 konvolüsyonların rolünü vurgulamamız gerekiyor, çünkü ilk başta mantıklı görünmeyebilir. 1x1 filtre ile görüntü üzerinden geçmemize neden olan şey nedir? Ancak, konvolüsyon filtrelerinin aynı zamanda birkaç derinlik kanalıyla çalıştığını unutmamalısınız (ilk olarak - RGB renkleri, sonraki katmanlarda - farklı filtreler için kanallar) ve 1x1 konvolüsyon, bu giriş kanallarını farklı eğitilebilir ağırlıklar kullanarak bir araya getirmek için kullanılır. Ayrıca, bu durum kanal boyutunda örnekleme (pooling) olarak da görülebilir. + +Konu hakkında [iyi bir blog yazısı](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) ve [orijinal makale](https://arxiv.org/pdf/1312.4400.pdf) bulunmaktadır. + +### MobileNet + +MobileNet, boyutu azaltılmış, mobil cihazlar için uygun model aileleridir. Kaynaklarınız kısıtlıysa ve biraz doğruluktan feragat edebiliyorsanız bunları kullanabilirsiniz. Onların arkasındaki ana fikir, **derinlik ayırıcı konvolüsyon** olarak adlandırılan bir yapıdır; bu, konvolüsyon filtrelerini mekansal konvolüsyonların ve derinlik kanalları üzerindeki 1x1 konvolüsyonların bir bileşimi olarak temsil etmeye olanak tanır. Bu, parametre sayısını önemli ölçüde azaltarak ağın boyutunu küçültür ve ayrıca daha az veriyle daha kolay eğitilmesini sağlar. + +Burada [MobileNet hakkında iyi bir blog yazısı](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) bulunmaktadır. + +## Sonuç + +Bu ünitede, bilgisayarla görme sinir ağlarının temel kavramını öğrendiniz - konvolüsyonel ağlar. Görüntü sınıflandırması, nesne tespiti ve hatta görüntü üretim ağlarını güçlendiren gerçek yaşam mimarileri hepsi CNN'lere dayanmaktadır, sadece daha fazla katman ve bazı ek eğitim ipuçları ile. + +## 🚀 Meydan Okuma + +Eşlik eden defterlerde, daha yüksek doğruluk elde etme konusunda notlar bulunmaktadır. Daha yüksek bir doğruluk elde edip edemeyeceğinizi görmek için bazı deneyler yapın. + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Gözden Geçirme ve Kendi Kendine Çalışma + +CNN'ler en çok Bilgisayarla Görme görevleri için kullanılsa da, genellikle sabit boyutlu desenleri çıkarmak için iyidirler. Örneğin, seslerle uğraşıyorsak, belirli bir ses sinyalindeki belirli desenleri aramak için CNN'leri kullanmak isteyebiliriz - bu durumda filtreler 1 boyutlu olur (ve bu CNN 1D-CNN olarak adlandırılır). Ayrıca, bazen 3D-CNN, çok boyutlu alanda özellikleri çıkarmak için kullanılır; örneğin, videoda meydana gelen belirli olaylar - CNN, zaman içinde değişen özelliklerin belirli desenlerini yakalayabilir. CNN'lerle yapılabilecek diğer görevler hakkında gözden geçirme ve kendi kendine çalışma yapın. + +## [Ödev](lab/README.md) + +Bu laboratuvar çalışmasında, farklı kedi ve köpek ırklarını sınıflandırmanız isteniyor. Bu görüntüler, MNIST veri setinden daha karmaşık ve daha yüksek boyutlardadır ve 10'dan fazla sınıf bulunmaktadır. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/tr/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..012d1cdf --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,59 @@ +# Konvolüsyonel Sinir Ağları + +Daha önce sinir ağlarının görüntülerle başa çıkmada oldukça iyi olduğunu ve hatta tek katmanlı algılayıcıların MNIST veri setinden el yazısı rakamlarını makul bir doğrulukla tanıyabildiğini gördük. Ancak, MNIST veri seti çok özel bir durumdur ve tüm rakamlar görüntünün içinde merkezlenmiştir, bu da görevi daha basit hale getirir. + +## [Ön-dersten sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +Gerçek hayatta, bir resimde nesneleri tam konumlarına bakmaksızın tanıyabilmemiz gerekir. Bilgisayarla görme, genel sınıflandırmadan farklıdır, çünkü bir resimde belirli bir nesneyi bulmaya çalışırken, belirli **desenleri** ve bunların kombinasyonlarını aramak için görüntüyü tarıyoruz. Örneğin, bir kedi ararken önce, bıyıkları oluşturabilecek yatay çizgilere bakabiliriz ve ardından belirli bir bıyık kombinasyonu, bunun gerçekten bir kedi resmi olduğunu bize gösterebilir. Belirli desenlerin göreceli konumu ve varlığı önemlidir, görüntüdeki tam konumları değil. + +Desenleri çıkarmak için **konvolüsyonel filtreler** kavramını kullanacağız. Bildiğiniz gibi, bir görüntü 2D-matris veya renk derinliği ile 3D-tensor ile temsil edilir. Bir filtre uygulamak, nispeten küçük bir **filtre çekirdek** matrisini alıp, orijinal görüntüdeki her piksel için komşu noktalarla ağırlıklı ortalama hesaplamak anlamına gelir. Bunu, görüntünün üzerinde kaydırılan küçük bir pencere gibi düşünebiliriz ve filtre çekirdek matrisindeki ağırlıklara göre tüm pikselleri ortalıyoruz. + +![Dikey Kenar Filtre](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.tr.png) | ![Yatay Kenar Filtre](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.tr.png) +----|---- + +> Görüntü Dmitry Soshnikov'dan + +Örneğin, MNIST rakamlarına 3x3 dikey kenar ve yatay kenar filtreleri uygularsak, orijinal görüntümüzdeki dikey ve yatay kenarların bulunduğu yerlerde vurgular (örneğin, yüksek değerler) alabiliriz. Böylece bu iki filtre, kenarları "arama" için kullanılabilir. Benzer şekilde, diğer düşük seviyeli desenleri aramak için farklı filtreler tasarlayabiliriz: +Veriler Ekim 2023'e kadar eğitim aldınız. + +> [Leung-Malik Filtre Bankası](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) görüntüsü + +Ancak, bazı desenleri manuel olarak çıkarmak için filtreleri tasarlayabilsek de, ağı bu desenleri otomatik olarak öğrenmesi için tasarlayabiliriz. Bu, CNN'in arkasındaki ana fikirlerden biridir. + +## CNN'in Ana Fikirleri + +CNN'lerin çalışma şekli, aşağıdaki önemli fikirlere dayanır: + +* Konvolüsyonel filtreler desenleri çıkarabilir +* Ağı, filtrelerin otomatik olarak eğitilmesini sağlayacak şekilde tasarlayabiliriz +* Aynı yaklaşımı, yalnızca orijinal görüntüde değil, yüksek seviyeli özelliklerde desenler bulmak için de kullanabiliriz. Böylece CNN özellik çıkarımı, düşük seviyeli piksel kombinasyonlarından başlayarak, resim parçalarının daha yüksek seviyeli kombinasyonlarına kadar bir özellik hiyerarşisi üzerinde çalışır. + +![Hiyerarşik Özellik Çıkarma](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.tr.png) + +> [Hislop-Lynch'in bir makalesinden](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d) alınan görüntü, [araştırmalarına dayanmaktadır](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Alıştırmalar: Konvolüsyonel Sinir Ağları + +Konvolüsyonel sinir ağlarının nasıl çalıştığını ve nasıl eğitilebilir filtreler elde edebileceğimizi keşfetmeye devam edelim, ilgili defterler üzerinden çalışarak: + +* [Konvolüsyonel Sinir Ağları - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Konvolüsyonel Sinir Ağları - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Piramit Mimarisi + +Görüntü işleme için kullanılan çoğu CNN, sözde bir piramit mimarisini takip eder. Orijinal görüntülere uygulanan ilk konvolüsyonel katman genellikle nispeten düşük sayıda filtreye (8-16) sahiptir ve bu filtreler yatay/dikey çizgiler gibi farklı piksel kombinasyonlarına karşılık gelir. Bir sonraki seviyede, ağın mekansal boyutunu azaltır ve filtre sayısını artırırız, bu da daha fazla basit özellik kombinasyonuna karşılık gelir. Her katmanda, son sınıflandırıcıya doğru ilerledikçe, görüntünün mekansal boyutları azalır ve filtre sayısı artar. + +Örneğin, 2014'te ImageNet'in en iyi-5 sınıflandırmasında %92.7 doğruluk elde eden VGG-16 ağının mimarisine bakalım: + +![ImageNet Katmanları](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.tr.jpg) + +![ImageNet Piramidi](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.tr.jpg) + +> [Researchgate'den](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) alınan görüntü + +## En İyi Bilinen CNN Mimarileri + +[En iyi bilinen CNN mimarileri hakkında çalışmaya devam edin](CNN_Architectures.md) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/tr/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..a4491b6e --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# Evcil Hayvan Yüzlerinin Sınıflandırılması + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) dersinden laboratuvar ödevi. + +## Görev + +Bir evcil hayvan kreşi için tüm evcil hayvanları kataloglamak üzere bir uygulama geliştirmeniz gerektiğini hayal edin. Böyle bir uygulamanın harika özelliklerinden biri, bir fotoğraftan cinsi otomatik olarak keşfetmektir. Bu, sinir ağları kullanılarak başarıyla yapılabilir. + +Farklı kedi ve köpek ırklarını sınıflandırmak için bir konvolüsyonel sinir ağını **Pet Faces** veri setini kullanarak eğitmeniz gerekiyor. + +## Veri Seti + +**Pet Faces** veri setini kullanacağız, bu veri seti [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri setinden türetilmiştir. 35 farklı köpek ve kedi ırkını içermektedir. + +![İşleyeceğimiz veri seti](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.tr.png) + +Veri setini indirmek için bu kod parçasını kullanın: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Not Defterini Açma + +Laboratuvara [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) dosyasını açarak başlayın. + +## Alınacak Ders + +Sıfırdan bir görüntü sınıflandırma problemini oldukça karmaşık bir şekilde çözdünüz! Oldukça fazla sınıf vardı ve yine de makul bir doğruluk elde etmeyi başardınız! Ayrıca, bazı sınıfların insanlara bile belirgin şekilde farklı gelmediği durumlarda, en iyi-k doğruluğunu ölçmek mantıklıdır. + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..1192db61 --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,80 @@ +# Önceden Eğitilmiş Ağlar ve Transfer Öğrenme + +CNN'leri eğitmek çok zaman alabilir ve bu görev için büyük miktarda veriye ihtiyaç vardır. Ancak, çoğu zaman, bir ağın görüntülerden desenler çıkarmak için kullanabileceği en iyi düşük seviyeli filtreleri öğrenmekle geçer. Doğal bir soru ortaya çıkar - bir veri kümesinde eğitilmiş bir sinir ağını kullanarak farklı görüntüleri sınıflandırmak için tam bir eğitim sürecine ihtiyaç duymadan bunu uyarlayabilir miyiz? + +## [Ön ders anketi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Bu yaklaşıma **transfer öğrenme** denir, çünkü bir sinir ağı modelinden diğerine bazı bilgileri aktarırız. Transfer öğrenmede genellikle, bazı büyük görüntü veri kümesinde eğitilmiş bir önceden eğitilmiş modelle başlarız, örneğin **ImageNet**. Bu modeller, genel görüntülerden farklı özellikleri çıkarmada zaten iyi bir iş çıkarabilir ve çoğu durumda, bu çıkarılan özelliklerin üzerine bir sınıflayıcı inşa etmek iyi sonuçlar verebilir. + +> ✅ Transfer Öğrenme, Eğitim gibi diğer akademik alanlarda da bulunan bir terimdir. Bir alandan bilgi alıp bunu başka bir alana uygulama sürecini ifade eder. + +## Önceden Eğitilmiş Modellerin Özellik Çıkarıcıları Olarak Kullanılması + +Önceki bölümde bahsettiğimiz konvolüsyonel ağlar, her birinin görüntüden bazı özellikleri çıkarması beklenen bir dizi katman içeriyordu. Bu katmanlar, düşük seviyeli piksel kombinasyonlarından (örneğin yatay/dikey çizgi veya darbe) başlayarak, bir alevin gözü gibi daha yüksek seviyeli özellik kombinasyonlarına kadar uzanır. Eğer CNN'i yeterince büyük, genel ve çeşitli görüntü veri kümesinde eğitirsek, ağ bu yaygın özellikleri çıkarmayı öğrenmelidir. + +Hem Keras hem de PyTorch, bazı yaygın mimariler için önceden eğitilmiş sinir ağı ağırlıklarını kolayca yüklemek için fonksiyonlar içerir; bunların çoğu ImageNet görüntüleri üzerinde eğitilmiştir. En sık kullanılanlar, önceki dersten [CNN Mimarileri](../07-ConvNets/CNN_Architectures.md) sayfasında açıklanmıştır. Özellikle aşağıdakilerden birini kullanmayı düşünebilirsiniz: + +* **VGG-16/VGG-19** nispeten basit modellerdir ve yine de iyi doğruluk sağlar. VGG'yi ilk deneme olarak kullanmak, transfer öğrenmenin nasıl çalıştığını görmek için iyi bir seçimdir. +* **ResNet**, Microsoft Research tarafından 2015'te önerilen bir model ailesidir. Daha fazla katmana sahiptirler ve bu nedenle daha fazla kaynak alırlar. +* **MobileNet**, mobil cihazlar için uygun, boyutu azaltılmış bir model ailesidir. Kaynaklarınız kısıtlıysa ve biraz doğruluktan feragat edebiliyorsanız bunları kullanın. + +İşte VGG-16 ağı tarafından bir kedinin resminden çıkarılan örnek özellikler: + +![VGG-16 tarafından çıkarılan özellikler](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.tr.png) + +## Kediler ve Köpekler Veri Kümesi + +Bu örnekte, gerçek yaşam görüntü sınıflandırma senaryosuna çok yakın bir [Kediler ve Köpekler](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) veri kümesini kullanacağız. + +## ✍️ Alıştırma: Transfer Öğrenme + +Transfer öğrenmeyi uygulamalı olarak görmek için ilgili defterlere bakalım: + +* [Transfer Öğrenme - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transfer Öğrenme - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Düşmanca Kedi Görselleştirme + +Önceden eğitilmiş sinir ağı, *beyni* içinde farklı desenler içerir, bunlar arasında **ideal kedi** (ve ideal köpek, ideal zebra vb.) kavramları da vardır. Bu görüntüyü bir şekilde **görselleştirmek** ilginç olacaktır. Ancak bu basit değildir, çünkü desenler ağ ağırlıkları üzerinde yayılmıştır ve ayrıca hiyerarşik bir yapıda düzenlenmiştir. + +Alabileceğimiz bir yaklaşım, rastgele bir görüntü ile başlamaktır ve ardından o görüntüyü öyle bir şekilde ayarlamak için **gradyan iniş optimizasyonu** tekniğini kullanmaktır ki ağ, bunun bir kedi olduğunu düşünmeye başlasın. + +![Görüntü Optimizasyon Döngüsü](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.tr.png) + +Ancak, bunu yaparsak, rastgele bir gürültüye çok benzeyen bir şey alırız. Bunun nedeni, *ağın giriş görüntüsünün bir kedi olduğunu düşünmesini sağlamak için birçok yolun olmasıdır*, bazıları görsel olarak mantıklı değildir. Bu görüntüler, kediye özgü birçok deseni içerse de, onları görsel olarak ayırt edici kılacak hiçbir şey yoktur. + +Sonucu iyileştirmek için kayıp fonksiyonuna **varyasyon kaybı** adı verilen başka bir terim ekleyebiliriz. Bu, görüntünün komşu piksellerinin ne kadar benzer olduğunu gösteren bir metriktir. Varyasyon kaybını minimize etmek, görüntüyü daha pürüzsüz hale getirir ve gürültüyü ortadan kaldırır - böylece daha görsel olarak çekici desenleri ortaya çıkarır. İşte yüksek olasılıkla kedi ve zebra olarak sınıflandırılan bu tür "ideal" görüntülerin bir örneği: + +![İdeal Kedi](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.tr.png) | ![İdeal Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.tr.png) +-----|----- + *İdeal Kedi* | *İdeal Zebra* + +Benzer bir yaklaşım, sinir ağları üzerinde **düşmanca saldırılar** gerçekleştirmek için kullanılabilir. Farz edelim ki bir sinir ağını kandırmak ve bir köpeği kedi gibi göstermek istiyoruz. Eğer bir ağ tarafından köpek olarak tanınan bir köpeğin görüntüsünü alırsak, ardından gradyan iniş optimizasyonunu kullanarak onu biraz ayarlayabiliriz, ta ki ağ bunu kedi olarak sınıflandırmaya başlayana kadar: + +![Bir Köpeğin Resmi](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.tr.png) | ![Kedi olarak sınıflandırılan bir köpeğin resmi](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.tr.png) +-----|----- +*Bir köpeğin orijinal resmi* | *Kedi olarak sınıflandırılan bir köpeğin resmi* + +Yukarıdaki sonuçları yeniden üretmek için kodu aşağıdaki defterde görebilirsiniz: + +* [İdeal ve Düşmanca Kedi - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) +## Sonuç + +Transfer öğrenmeyi kullanarak, özel bir nesne sınıflandırma görevi için hızlı bir şekilde bir sınıflayıcı oluşturabilir ve yüksek doğruluk elde edebilirsiniz. Daha karmaşık görevlerin, çözmekte olduğumuz şu an daha yüksek hesaplama gücü gerektirdiğini ve CPU üzerinde kolayca çözülemeyeceğini görebilirsiniz. Bir sonraki ünitede, aynı modeli daha düşük hesaplama kaynakları kullanarak eğitmek için daha hafif bir uygulama kullanmaya çalışacağız; bu, sadece biraz daha düşük doğruluk ile sonuçlanacaktır. + +## 🚀 Meydan Okuma + +Eşlik eden defterlerde, transfer bilginin en iyi nasıl çalıştığına dair notlar bulunmaktadır; bu notlar, biraz benzer eğitim verileri ile (belki yeni bir hayvan türü) ilgilidir. Transfer bilginiz modellerinin nasıl performans gösterdiğini görmek için tamamen yeni görüntü türleri ile bazı deneyler yapın. + +## [Ders sonrası anket](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Gözden Geçirme ve Kendi Kendine Çalışma + +Modellerinizi eğitmenin bazı diğer yollarını derinleştirmek için [TrainingTricks.md](TrainingTricks.md) dosyasını okuyun. + +## [Görev](lab/README.md) + +Bu laboratuvarda, 35 kedi ve köpek ırkından oluşan gerçek yaşam [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri kümesini kullanacağız ve bir transfer öğrenme sınıflayıcısı oluşturacağız. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..df0c7e4d --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# Derin Öğrenme Eğitim İpuçları + +Sinir ağları daha derin hale geldikçe, bunların eğitimi süreci giderek daha zor hale geliyor. Ana sorunlardan biri, sözde [kaybolan gradyanlar](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) veya [patlayan gradyanlar](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Bu yazı](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) bu sorunlara iyi bir giriş yapmaktadır. + +Derin ağların eğitimini daha verimli hale getirmek için kullanılabilecek birkaç teknik bulunmaktadır. + +## Değerleri makul bir aralıkta tutmak + +Sayısal hesaplamaların daha kararlı olmasını sağlamak için, sinir ağımız içindeki tüm değerlerin genellikle [-1..1] veya [0..1] aralığında olmasını sağlamak istiyoruz. Bu çok katı bir gereklilik değildir, ancak kayan nokta hesaplamalarının doğası gereği farklı büyüklükteki değerlerin birlikte doğru bir şekilde işlenememesi gibi bir durum söz konusudur. Örneğin, 10-10 ile 1010'i toplarsak, muhtemelen 1010'i alırız çünkü daha küçük değer, daha büyük olanla aynı düzeye "dönüştürülür" ve böylece mantissa kaybolur. + +Çoğu aktivasyon fonksiyonu [-1..1] etrafında doğrusal olmayanlıklar taşır, bu nedenle tüm giriş verilerini [-1..1] veya [0..1] aralığına ölçeklendirmek mantıklıdır. + +## İlk Ağırlık Başlatma + +İdeal olarak, değerlerin ağ katmanlarından geçtikten sonra aynı aralıkta olmasını istiyoruz. Bu nedenle, değerlerin dağılımını koruyacak şekilde ağırlıkları başlatmak önemlidir. + +Normal dağılım **N(0,1)** iyi bir fikir değildir, çünkü *n* girişi olduğunda, çıkışın standart sapması *n* olur ve değerler [0..1] aralığının dışına çıkma olasılığı yüksektir. + +Aşağıdaki başlatma yöntemleri sıklıkla kullanılır: + + * Üniform dağılım -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)**, sıfır ortalamaya ve standart sapması 1 olan girişler için aynı ortalama/standart sapmanın kalmasını garanti eder + * **N(0,√2/(n_in+n_out))** -- sözde **Xavier başlatması** (`glorot`), bu, hem ileri hem de geri yayılım sırasında sinyalleri aralıkta tutmaya yardımcı olur + +## Batch Normalizasyonu + +Doğru ağırlık başlatmasına rağmen, ağırlıklar eğitim sırasında rastgele büyük veya küçük hale gelebilir ve bu durum sinyalleri doğru aralığın dışına çıkarabilir. Sinyalleri geri getirmek için **normalizasyon** tekniklerinden birini kullanabiliriz. Birkaç tane vardır (Ağırlık normalizasyonu, Katman Normalizasyonu), ancak en sık kullanılanı Batch Normalizasyonudur. + +**Batch normalizasyonu** fikri, minibatch içindeki tüm değerleri dikkate almak ve bu değerlere dayalı olarak normalizasyon (yani ortalamayı çıkarmak ve standart sapmaya bölmek) yapmaktır. Bu, ağırlıkların uygulanmasından sonra, ancak aktivasyon fonksiyonundan önce bu normalizasyonu yapan bir ağ katmanı olarak uygulanır. Sonuç olarak, daha yüksek nihai doğruluk ve daha hızlı eğitim görme olasılığımız vardır. + +Batch normalizasyonu ile ilgili [orijinal makale](https://arxiv.org/pdf/1502.03167.pdf), [Vikipedi'deki açıklama](https://en.wikipedia.org/wiki/Batch_normalization) ve [iyi bir tanıtım blog yazısı](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (ve [Rusça](https://habrahabr.ru/post/309302/) olanı) bulunmaktadır. + +## Dropout + +**Dropout**, eğitim sırasında rastgele nöronların belirli bir yüzdesini kaldıran ilginç bir tekniktir. Aynı zamanda bir parametre (kaldırılacak nöron yüzdesi, genellikle %10-%50) ile bir katman olarak uygulanır ve eğitim sırasında, bir sonraki katmana geçmeden önce giriş vektörünün rastgele elemanlarını sıfırlar. + +Bu garip bir fikir gibi görünse de, dropout'un MNIST rakam sınıflandırıcısını eğitme üzerindeki etkisini [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) defterinde görebilirsiniz. Bu, eğitimi hızlandırır ve daha az eğitim döngüsünde daha yüksek doğruluk elde etmemizi sağlar. + +Bu etki birkaç şekilde açıklanabilir: + + * Model için rastgele bir şok faktörü olarak düşünülebilir, bu da optimizasyonu yerel minimumdan çıkarır + * *İçsel model ortalaması* olarak düşünülebilir, çünkü dropout sırasında biraz farklı bir modeli eğittiğimizi söyleyebiliriz + +> *Bazı insanlar, sarhoş bir kişinin bir şey öğrenmeye çalıştığında, bunun sabah daha iyi hatırlanacağını, bunun da bir sarhoş kişinin bazı işlev bozukluğu olan nöronları ile anlamı kavramaya daha iyi uyum sağlamaya çalışmasından kaynaklandığını söyler. Bunun doğru olup olmadığını kendimiz hiç test etmedik.* + +## Aşırı Uydurmayı Önleme + +Derin öğrenmenin çok önemli bir yönü, [aşırı uydurmayı](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) önleyebilme yeteneğidir. Çok güçlü bir sinir ağı modeli kullanmak cazip olabilir, ancak her zaman model parametrelerinin sayısını eğitim örneklerinin sayısıyla dengelemeliyiz. + +> Daha önce tanıttığımız [aşırı uydurma](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) kavramını anladığınızdan emin olun! + +Aşırı uydurmayı önlemek için birkaç yol vardır: + + * Erken durdurma -- doğrulama setindeki hatayı sürekli izleyerek, doğrulama hatası artmaya başladığında eğitimi durdurma. + * Açık Ağırlık Çürütme / Düzenleme -- yüksek mutlak ağırlık değerleri için kayıp fonksiyonuna ekstra bir ceza ekleyerek, modelin çok dengesiz sonuçlar almasını önler + * Model Ortalaması -- birkaç modeli eğitip ardından sonucu ortalamak. Bu, varyansı minimize etmeye yardımcı olur. + * Dropout (İçsel Model Ortalaması) + +## Optimizatörler / Eğitim Algoritmaları + +Eğitimin bir diğer önemli yönü, iyi bir eğitim algoritması seçmektir. Klasik **gradyan inişi** makul bir seçimdir, ancak bazen çok yavaş olabilir veya başka sorunlara yol açabilir. + +Derin öğrenmede, **Stokastik Gradyan İnişi** (SGD) kullanıyoruz; bu, eğitim setinden rastgele seçilen minibatch'lere uygulanan bir gradyan inişidir. Ağırlıklar bu formül ile ayarlanır: + +wt+1 = wt - η∇ℒ + +### Momentum + +**Momentum SGD**'de, önceki adımlardan bir gradyan kısmını saklıyoruz. Bu, bir yere ataletle hareket ederken farklı bir yönde bir darbe aldığımızda, yolculuğumuzun hemen değişmediği, ancak orijinal hareketin bir kısmını koruduğu durumla benzerdir. Burada *hız*ı temsil etmek için başka bir vektör v tanıtıyoruz: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +Burada γ parametresi, ataletin ne kadar dikkate alındığını gösterir: γ=0, klasik SGD'ye karşılık gelir; γ=1, saf hareket denklemi anlamına gelir. + +### Adam, Adagrad, vb. + +Her katmanda sinyalleri bazı matrislerle çarptığımız için Wi, ||Wi||'ya bağlı olarak, gradyan ya azalabilir ve 0'a yakın olabilir ya da sonsuz bir şekilde yükselebilir. Bu, Patlayan/Kaybolan Gradyanlar sorununu oluşturmaktadır. + +Bu sorunun çözümlerinden biri, denklemin içinde yalnızca gradyanın yönünü kullanmak ve mutlak değeri görmezden gelmektir, yani + +wt+1 = wt - η(∇ℒ/||∇ℒ||), burada ||∇ℒ|| = √∑(∇ℒ)2 + +Bu algoritmaya **Adagrad** denir. Aynı fikri kullanan diğer algoritmalar: **RMSProp**, **Adam** + +> **Adam**, birçok uygulama için çok etkili bir algoritma olarak kabul edilir, bu nedenle hangi algoritmayı kullanacağınızdan emin değilseniz - Adam'ı kullanın. + +### Gradyan kesme + +Gradyan kesme, yukarıdaki fikrin bir uzantısıdır. ||∇ℒ|| ≤ θ olduğunda, ağırlık optimizasyonunda orijinal gradyanı dikkate alıyoruz ve ||∇ℒ|| > θ olduğunda - gradyanı normu ile bölüyoruz. Burada θ bir parametredir; çoğu durumda θ=1 veya θ=10 alabiliriz. + +### Öğrenme oranı azaltma + +Eğitim başarısı genellikle öğrenme oranı parametresi η'ye bağlıdır. Daha büyük η değerlerinin daha hızlı bir eğitim sağladığını varsaymak mantıklıdır; bu, genellikle eğitim sürecinin başında istediğimiz bir şeydir ve ardından daha küçük η değerleri, ağın ince ayarını yapmamıza olanak tanır. Bu nedenle, çoğu durumda η'yi eğitim sürecinde azaltmak isteriz. + +Bu, her eğitim döngüsünden sonra η'yi bazı sayılarla (örneğin 0.98) çarparak veya daha karmaşık bir **öğrenme oranı takvimi** kullanarak yapılabilir. + +## Farklı Ağ Mimarileri + +Probleminiz için doğru ağ mimarisini seçmek zor olabilir. Normalde, belirli görevimiz (veya benzer bir görev) için işe yaradığını kanıtlamış bir mimari seçeriz. İşte bilgisayarla görme için sinir ağı mimarileri hakkında [iyi bir genel bakış](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) bulunmaktadır. + +> Eğitim örneklerimizin sayısı için yeterince güçlü bir mimari seçmek önemlidir. Çok güçlü bir model seçmek [aşırı uydurma](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) ile sonuçlanabilir. + +Bir diğer iyi yol, gerekli karmaşıklığa otomatik olarak uyum sağlayacak bir mimari kullanmaktır. Belirli bir ölçüde, **ResNet** mimarisi ve **Inception** kendiliğinden ayarlanan mimarilerdir. [Bilgisayarla görme mimarileri hakkında daha fazla bilgi](../07-ConvNets/CNN_Architectures.md) bulunmaktadır. + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda oluşabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..a03dfaef --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# Oxford Evcil Hayvanlarının Transfer Öğrenimi ile Sınıflandırılması + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) için Laboratuvar Görevi. + +## Görev + +Bir evcil hayvan kreşi için tüm evcil hayvanları kataloglamak üzere bir uygulama geliştirmeniz gerektiğini hayal edin. Böyle bir uygulamanın harika özelliklerinden biri, bir fotoğraftan otomatik olarak cinsi keşfetmektir. Bu görevde, [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri setinden gerçek hayattaki evcil hayvan görüntülerini sınıflandırmak için transfer öğrenimini kullanacağız. + +## Veri Seti + +35 farklı köpek ve kedi cinsini içeren orijinal [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) evcil hayvan veri setini kullanacağız. + +Veri setini indirmek için bu kod parçasını kullanın: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Not Defterini Başlatma + +Laboratuvara [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) dosyasını açarak başlayın. + +## Önemli Nokta + +Transfer öğrenimi ve önceden eğitilmiş ağlar, gerçek dünya görüntü sınıflandırma problemlerini nispeten kolay bir şekilde çözmemizi sağlar. Ancak, önceden eğitilmiş ağlar benzer türdeki görüntüler üzerinde iyi çalışır ve çok farklı görüntüleri (örneğin, tıbbi görüntüler) sınıflandırmaya başlarsak, muhtemelen çok daha kötü sonuçlar alırız. + +**Sorumluluk Reddi**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/tr/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..b45c6acb --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# Otomatik Kodlayıcılar + +CNN'leri eğitirken, karşılaştığımız sorunlardan biri çok fazla etiketli veriye ihtiyaç duymamızdır. Görüntü sınıflandırması durumunda, görüntüleri farklı sınıflara ayırmamız gerekir ki bu da manuel bir çabadır. + +## [Ön ders sınavı](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Ancak, CNN özellik çıkarıcılarını eğitmek için ham (etiketsiz) verileri kullanmak isteyebiliriz ki buna **kendinden denetimli öğrenme** denir. Etiketler yerine, eğitim görüntülerini hem ağ girişi hem de çıkışı olarak kullanacağız. **Otomatik kodlayıcı**nın ana fikri, girdi görüntüsünü bazı **gizli alanlara** (genellikle daha küçük boyutlu bir vektör) dönüştüren bir **kodlayıcı ağı**na sahip olmamızdır; ardından orijinal görüntüyü yeniden oluşturmayı amaçlayan **çözücü ağı** gelir. + +> ✅ Bir [otomatik kodlayıcı](https://wikipedia.org/wiki/Autoencoder), "etiketsiz verilerin verimli kodlamalarını öğrenmek için kullanılan bir tür yapay sinir ağıdır." + +Otomatik kodlayıcıyı, orijinal görüntüden mümkün olduğunca fazla bilgiyi yakalamak için eğittiğimiz için, ağ girdi görüntülerinin anlamını yakalamak için en iyi **gömülü alanı** bulmaya çalışır. + +![Otomatik Kodlayıcı Diyagramı](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.tr.jpg) + +> Görsel [Keras blogu](https://blog.keras.io/building-autoencoders-in-keras.html) kaynağındandır. + +## Otomatik Kodlayıcıların Kullanım Senaryoları + +Orijinal görüntüleri yeniden oluşturmanın kendi başına faydalı görünmemesi bir yana, otomatik kodlayıcıların özellikle yararlı olduğu birkaç senaryo vardır: + +* **Görüntülerin boyutunu düşürmek için görselleştirme** veya **görüntü gömülü alanları eğitimi**. Genellikle otomatik kodlayıcılar, PCA'dan daha iyi sonuçlar verir çünkü görüntülerin mekansal doğasını ve hiyerarşik özelliklerini dikkate alır. +* **Gürültü azaltma**, yani görüntüden gürültüyü kaldırma. Çünkü gürültü birçok gereksiz bilgi taşır, otomatik kodlayıcı bunu nispeten küçük gizli alana sığdıramaz ve dolayısıyla yalnızca görüntünün önemli kısmını yakalar. Gürültü gidericileri eğitirken, orijinal görüntülerle başlarız ve otomatik kodlayıcı için girdi olarak yapay olarak eklenmiş gürültü içeren görüntüleri kullanırız. +* **Süper çözünürlük**, görüntü çözünürlüğünü artırma. Yüksek çözünürlüklü görüntülerle başlarız ve daha düşük çözünürlüklü görüntüyü otomatik kodlayıcı girişi olarak kullanırız. +* **Üretken modeller**. Otomatik kodlayıcıyı eğittikten sonra, çözücü kısmı rastgele gizli vektörlerden yeni nesneler oluşturmak için kullanılabilir. + +## Varyasyonel Otomatik Kodlayıcılar (VAE) + +Geleneksel otomatik kodlayıcılar, girdi verilerinin boyutunu bir şekilde azaltarak, girdi görüntülerinin önemli özelliklerini belirler. Ancak, gizli vektörler genellikle pek anlam ifade etmez. Başka bir deyişle, MNIST veri setini örnek alırsak, farklı gizli vektörlerin hangi rakamlara karşılık geldiğini bulmak kolay bir iş değildir, çünkü yakın gizli vektörler aynı rakamlara karşılık gelmeyebilir. + +Diğer yandan, *üretken* modelleri eğitmek için gizli alanı anlamak daha iyidir. Bu fikir bizi **varyasyonel otomatik kodlayıcı** (VAE) kavramına götürür. + +VAE, gizli parametrelerin *istatistiksel dağılımını* tahmin etmeyi öğrenen bir otomatik kodlayıcıdır, buna **gizli dağılım** denir. Örneğin, gizli vektörlerin belirli bir ortalama zmean ve standart sapma zsigma ile normal dağılıma sahip olmasını isteyebiliriz (hem ortalama hem de standart sapma belirli bir boyut d'ye sahip vektörlerdir). VAE'deki kodlayıcı bu parametreleri tahmin etmeyi öğrenir ve ardından çözücü, nesneyi yeniden oluşturmak için bu dağılımdan rastgele bir vektör alır. + +Özetlemek gerekirse: + +* Girdi vektöründen `z_mean` ve `z_log_sigma` tahmin ediyoruz (standart sapmayı tahmin etmek yerine, onun logaritmasını tahmin ediyoruz) +* Dağılımdan N(zmean,exp(zlog_sigma)) dağılımından bir vektör `sample` örnekliyoruz +* Çözücü, `sample`'yi girdi vektörü olarak kullanarak orijinal görüntüyü çözmeye çalışır + + + +> Görsel [bu blog yazısından](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) Isaak Dykeman'a aittir. + +Varyasyonel otomatik kodlayıcılar, iki bölümden oluşan karmaşık bir kayıp fonksiyonu kullanır: + +* **Yeniden yapılandırma kaybı**, yeniden oluşturulan bir görüntünün hedefe ne kadar yakın olduğunu gösteren kayıp fonksiyonudur (Bu, Ortalama Kare Hatası veya MSE olabilir). Bu, normal otomatik kodlayıcılardaki kayıp fonksiyonu ile aynıdır. +* **KL kaybı**, gizli değişken dağılımlarının normal dağılıma yakın kalmasını sağlar. Bu, iki istatistiksel dağılımın ne kadar benzer olduğunu tahmin etmek için kullanılan [Kullback-Leibler sapması](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) kavramına dayanır. + +VAE'lerin önemli bir avantajı, yeni görüntüler oluşturmayı nispeten kolaylaştırmalarıdır çünkü gizli vektörleri örneklemek için hangi dağılımdan yararlanacağımızı biliyoruz. Örneğin, MNIST üzerinde 2D gizli vektörle VAE eğitimi yaptığımızda, farklı rakamlar elde etmek için gizli vektörün bileşenlerini değiştirebiliriz: + +vaemnist + +> Görsel [Dmitry Soshnikov](http://soshnikov.com) tarafından sağlanmıştır. + +Gizli parametre alanının farklı kısımlarından gizli vektörler almaya başladığımızda, görüntülerin birbirine nasıl karıştığını gözlemleyin. Bu alanı 2D olarak da görselleştirebiliriz: + +vaemnist cluster + +> Görsel [Dmitry Soshnikov](http://soshnikov.com) tarafından sağlanmıştır. + +## ✍️ Alıştırmalar: Otomatik Kodlayıcılar + +Otomatik kodlayıcılar hakkında daha fazla bilgi edinmek için ilgili not defterlerini inceleyin: + +* [TensorFlow'da Otomatik Kodlayıcılar](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [PyTorch'ta Otomatik Kodlayıcılar](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Otomatik Kodlayıcıların Özellikleri + +* **Veri Spesifik** - yalnızca eğitildikleri görüntü türleriyle iyi çalışırlar. Örneğin, çiçekler üzerinde süper çözünürlük ağı eğitirsek, portreler üzerinde iyi çalışmaz. Bunun nedeni, ağın eğitim veri setinden öğrenilen özelliklerden ince detaylar alarak daha yüksek çözünürlüklü görüntü üretebilmesidir. +* **Kaybı** - yeniden oluşturulan görüntü, orijinal görüntüyle aynı değildir. Kayıp doğası, eğitim sırasında kullanılan *kayıp fonksiyonu* tarafından tanımlanır. +* **Etiketsiz veriler** üzerinde çalışır. + +## [Ders sonrası sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Sonuç + +Bu derste, AI bilimcisine sunulan çeşitli otomatik kodlayıcı türlerini öğrendiniz. Onları nasıl inşa edeceğinizi ve görüntüleri nasıl yeniden oluşturmak için kullanacağınızı öğrendiniz. Ayrıca VAE'yi ve yeni görüntüler oluşturmak için nasıl kullanacağınızı öğrendiniz. + +## 🚀 Meydan Okuma + +Bu derste, otomatik kodlayıcıların görüntüler için nasıl kullanıldığını öğrendiniz. Ancak müzik için de kullanılabilirler! Otomatik kodlayıcıları müziği yeniden yapılandırmayı öğrenmek için kullanan Magenta projesinin [MusicVAE](https://magenta.tensorflow.org/music-vae) projesine göz atın. Ne yaratabileceğinizi görmek için bu kütüphane ile bazı [deneyler](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) yapın. + +## [Ders sonrası sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Gözden Geçirme & Kendi Kendine Çalışma + +Otomatik kodlayıcılar hakkında daha fazla bilgi için bu kaynakları okuyun: + +* [Keras'da Otomatik Kodlayıcılar İnşası](https://blog.keras.io/building-autoencoders-in-keras.html) +* [NeuroHive'daki Blog Yazısı](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Varyasyonel Otomatik Kodlayıcılar Açıklaması](https://kvfrans.com/variational-autoencoders-explained/) +* [Koşullu Varyasyonel Otomatik Kodlayıcılar](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Görev + +[TensorFlow kullanan bu not defterinin](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersTF.ipynb) sonunda bir 'görev' bulacaksınız - bunu ödev olarak kullanın. + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/10-GANs/README.md b/translations/tr/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..7c616b2b --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# Üretken Çatışmalı Ağlar + +Önceki bölümde **üretken modeller** hakkında bilgi edindik: eğitim veri setindeki görüntülere benzer yeni görüntüler üretebilen modeller. VAE, bir üretken modelin iyi bir örneğiydi. + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Ancak, VAE ile gerçekten anlamlı bir şey, örneğin makul bir çözünürlükte bir resim üretmeye çalıştığımızda, eğitimin iyi bir şekilde yakınsadığını göremeyiz. Bu kullanım durumu için, üretken modellere özel olarak hedeflenmiş başka bir mimari hakkında bilgi edinmemiz gerekir - **Üretken Çatışmalı Ağlar**, veya kısaca GAN'lar. + +GAN'ın ana fikri, birbirine karşı eğitilecek iki sinir ağına sahip olmaktır: + + + +> Resim [Dmitry Soshnikov](http://soshnikov.com) tarafından + +> ✅ Küçük bir kelime bilgisi: +> * **Üretici** (Generator), rastgele bir vektör alıp, sonuç olarak bir görüntü üreten bir ağdır. +> * **Ayrıştırıcı** (Discriminator), bir görüntü alır ve bunun gerçek bir görüntü olup olmadığını (eğitim veri setinden) ya da bir üretici tarafından üretilip üretilmediğini belirtmelidir. Temelde bir görüntü sınıflayıcısıdır. + +### Ayrıştırıcı + +Ayrıştırıcının mimarisi, sıradan bir görüntü sınıflama ağından farklı değildir. En basit durumda, tamamen bağlı bir sınıflayıcı olabilir, ancak büyük ihtimalle bir [konvolüsyonel ağ](../07-ConvNets/README.md) olacaktır. + +> ✅ Konvolüsyonel ağlara dayanan bir GAN'a [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) denir. + +Bir CNN ayrıştırıcısı, aşağıdaki katmanlardan oluşur: birkaç konvolüsyon+havuzlama (azalan mekansal boyutlarla) ve "özellik vektörü" elde etmek için bir veya daha fazla tamamen bağlı katman, son ikili sınıflayıcı. + +> ✅ Bu bağlamda 'havuzlama', görüntünün boyutunu azaltan bir tekniktir. "Havuzlama katmanları, bir katmandaki nöron kümelerinin çıktısını bir sonraki katmandaki tek bir nörona birleştirerek verinin boyutunu azaltır." - [kaynak](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Üretici + +Üretici biraz daha karmaşıktır. Bunu tersine çevrilmiş bir ayrıştırıcı olarak düşünebilirsiniz. Gizli bir vektörden (özellik vektörünün yerinde) başlar, gerekli boyut/şekle dönüştürmek için bir tamamen bağlı katmana sahiptir ve ardından dekonvolüsyonlar+ölçekleme yapılır. Bu, [oto kodlayıcı](../09-Autoencoders/README.md) kısmının *çözücü* bölümüne benzerdir. + +> ✅ Konvolüsyon katmanı görüntüyü tarayan bir lineer filtre olarak uygulandığı için, dekonvolüsyon temelde konvolüsyona benzer ve aynı katman mantığı kullanılarak uygulanabilir. + + + +> Resim [Dmitry Soshnikov](http://soshnikov.com) tarafından + +### GAN'ı Eğitmek + +GAN'lar **çatışmalı** olarak adlandırılır çünkü üretici ile ayrıştırıcı arasında sürekli bir rekabet vardır. Bu rekabet sırasında, hem üretici hem de ayrıştırıcı gelişir, böylece ağ daha iyi ve daha iyi resimler üretmeyi öğrenir. + +Eğitim iki aşamada gerçekleşir: + +* **Ayrıştırıcıyı Eğitmek**. Bu görev oldukça basittir: üretici tarafından bir görüntü partisi üretiyoruz, bunları sahte görüntü için 0 olarak etiketliyoruz ve giriş veri setinden (gerçek görüntü için etiket 1) bir görüntü partisi alıyoruz. Bazı *ayrıştırıcı kaybı* elde ediyoruz ve geri yayılım yapıyoruz. +* **Üreticiyi Eğitmek**. Bu biraz daha karmaşıktır, çünkü üretici için beklenen çıktıyı doğrudan bilmiyoruz. Bir üretici ve ardından ayrıştırıcıdan oluşan tüm GAN ağını alıyoruz, bazı rastgele vektörlerle besliyoruz ve sonucun 1 (gerçek görüntülere karşılık gelen) olmasını bekliyoruz. Ardından, ayrıştırıcının parametrelerini donduruyoruz (bu adımda eğitilmesini istemiyoruz) ve geri yayılım yapıyoruz. + +Bu süreçte, hem üretici hem de ayrıştırıcı kayıpları önemli ölçüde düşmez. İdeal durumda, her iki ağın performanslarını geliştirmesine karşılık olarak osilasyon göstermelidirler. + +## ✍️ Alıştırmalar: GAN'lar + +* [TensorFlow/Keras'ta GAN Not Defteri](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [PyTorch'ta GAN Not Defteri](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN eğitimindeki problemler + +GAN'ların eğitiminin özellikle zor olduğu bilinmektedir. İşte birkaç problem: + +* **Mod Çökmesi**. Bu terim, üreticinin bir başarılı görüntü üretmeyi öğrenmesi ve farklı görüntü çeşitliliği üretmemesi anlamına gelir. +* **Hiperparametrelere duyarlılık**. Genellikle bir GAN'ın hiç yakınsama göstermediğini görebilirsiniz ve ardından öğrenme oranında ani bir düşüş ile yakınsama sürecine girebilir. +* Üretici ve ayrıştırıcı arasında bir **denge** sağlamak. Birçok durumda ayrıştırıcı kaybı oldukça hızlı bir şekilde sıfıra düşebilir, bu da üreticinin daha fazla eğitim yapamamasına neden olur. Bunu aşmak için, üretici ve ayrıştırıcı için farklı öğrenme oranları belirlemeyi deneyebiliriz veya kayıp zaten çok düşükse ayrıştırıcı eğitimini atlayabiliriz. +* **Yüksek çözünürlük** için eğitim. Oto kodlayıcılarla benzer bir sorunu yansıtarak, çok sayıda konvolüsyonel ağ katmanını yeniden yapılandırmanın artefaktlara yol açması nedeniyle bu problem tetiklenir. Bu problem genellikle ilk olarak birkaç katmanın düşük çözünürlükteki görüntüler üzerinde eğitilmesi ve ardından katmanların "açılması" veya eklenmesiyle çözülen **ilerlemeli büyüme** ile çözülür. Diğer bir çözüm, katmanlar arasında ekstra bağlantılar eklemek ve birden fazla çözünürlükte eğitim yapmaktır - detaylar için bu [Çok Ölçekli Gradyan GAN'lar makalesine](https://arxiv.org/abs/1903.06048) bakın. + +## Stil Aktarımı + +GAN'lar sanatsal görüntüler oluşturmak için harika bir yoldur. Diğer ilginç bir teknik ise **stil aktarımı** olarak adlandırılır; bu teknik, bir **içerik görüntüsü** alır ve bunu farklı bir stil ile yeniden çizer, **stil görüntüsünden** filtreler uygulayarak. + +Bu işlem şu şekilde çalışır: +* Rastgele bir gürültü görüntüsü ile başlarız (veya bir içerik görüntüsü ile, ancak anlamak açısından rastgele gürültü ile başlamak daha kolaydır). +* Amacımız, hem içerik görüntüsüne hem de stil görüntüsüne yakın bir görüntü oluşturmaktır. Bu, iki kayıp fonksiyonu ile belirlenir: + - **İçerik kaybı**, mevcut görüntü ve içerik görüntüsünden çıkarılan özellikler kullanılarak hesaplanır. + - **Stil kaybı**, mevcut görüntü ve stil görüntüsü arasındaki ilişkiyi akıllıca Gram matrisleri kullanarak hesaplar (daha fazla detay için [örnek not defterine](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) bakın). +* Görüntüyü daha pürüzsüz hale getirmek ve gürültüyü kaldırmak için, ayrıca komşu pikseller arasındaki ortalama mesafeyi hesaplayan **Varyasyon kaybı** da tanıtıyoruz. +* Ana optimizasyon döngüsü, toplam kaybı minimize etmek için mevcut görüntüyü gradyan inişi (veya başka bir optimizasyon algoritması) kullanarak ayarlamaktadır; bu, üç kaybın ağırlıklı toplamıdır. + +## ✍️ Örnek: [Stil Aktarımı](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Sonuç + +Bu derste, GAN'lar ve bunları nasıl eğiteceğiniz hakkında bilgi edindiniz. Ayrıca, bu tür bir Sinir Ağı'nın karşılaşabileceği özel zorluklar ve bunları aşmanın bazı stratejileri hakkında bilgi edindiniz. + +## 🚀 Meydan Okuma + +Kendi görüntülerinizi kullanarak [Stil Aktarımı not defterini](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) çalıştırın. + +## İnceleme & Kendi Kendine Çalışma + +Referans olarak, GAN'lar hakkında daha fazla bilgi edinmek için bu kaynakları okuyun: + +* Marco Pasini, [Bir Yıl Boyunca GAN Eğitimiyle İlgili Öğrendiğim 10 Ders](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* Dikkate alınması gereken bir *de facto* GAN mimarisi olan [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN) +* [Azure ML'de GAN'lar kullanarak Üretken Sanat Oluşturma](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Görev + +Bu derse bağlı iki not defterinden birini gözden geçirin ve GAN'ı kendi görüntüleriniz üzerinde yeniden eğitin. Ne yaratabilirsiniz? + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter bir kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..6f8011fe --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,171 @@ +# Nesne Tespiti + +Şimdiye kadar ele aldığımız görüntü sınıflandırma modelleri, bir görüntü alır ve MNIST probleminde 'sayı' sınıfı gibi kategorik bir sonuç üretir. Ancak birçok durumda, bir resmin nesneleri tasvir ettiğini bilmekle yetinmek istemiyoruz - bu nesnelerin kesin konumunu belirleyebilme yeteneğine sahip olmak istiyoruz. İşte bu, **nesne tespiti**nin tam anlamıdır. + +## [Ön-derse Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Nesne Tespiti](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.tr.png) + +> [YOLO v2 web sitesi](https://pjreddie.com/darknet/yolov2/) kaynaklı görüntü + +## Nesne Tespiti için Naif Bir Yaklaşım + +Bir resimde bir kediyi bulmak istediğimizi varsayalım, nesne tespiti için çok naif bir yaklaşım aşağıdaki gibi olacaktır: + +1. Resmi bir dizi kareye böl +2. Her bir kare üzerinde görüntü sınıflandırması yap. +3. Yeterince yüksek aktivasyon sonucu veren kareler, söz konusu nesneyi içeriyor olarak kabul edilebilir. + +![Naif Nesne Tespiti](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.tr.png) + +> *[Alıştırma Defteri](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* kaynağından görüntü + +Ancak bu yaklaşım, algoritmanın nesnenin sınırlayıcı kutusunu oldukça belirsiz bir şekilde yerleştirmesine olanak tanıdığı için ideal değildir. Daha kesin bir konum için, sınırlayıcı kutuların koordinatlarını tahmin etmek üzere bir tür **regresyon** uygulamamız gerekiyor - ve bunun için belirli veri setlerine ihtiyacımız var. + +## Nesne Tespiti için Regresyon + +[Bu blog yazısı](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491), şekil tespiti için harika bir giriş sunmaktadır. + +## Nesne Tespiti için Veri Setleri + +Bu görev için aşağıdaki veri setleriyle karşılaşabilirsiniz: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 sınıf +* [COCO](http://cocodataset.org/#home) - Bağlamda Ortak Nesneler. 80 sınıf, sınırlayıcı kutular ve segmentasyon maskeleri + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.tr.jpg) + +## Nesne Tespiti Metrikleri + +### Kesim Üzerine Birlik + +Görüntü sınıflandırması için algoritmanın ne kadar iyi performans gösterdiğini ölçmek kolaydır, ancak nesne tespiti için hem sınıfın doğruluğunu hem de çıkarılan sınırlayıcı kutu konumunun doğruluğunu ölçmemiz gerekiyor. İkincisi için, iki kutunun (veya iki rastgele alanın) ne kadar örtüştüğünü ölçen **Kesim Üzerine Birlik** (IoU) adı verilen bir ölçüm kullanıyoruz. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.tr.png) + +> *[Bu mükemmel IoU blog yazısının](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) 2. Şeması* + +Fikir basit - iki şekil arasındaki kesişim alanını, bu şekillerin birleşim alanına bölüyoruz. İki özdeş alan için, IoU 1 olurken, tamamen ayrı alanlar için 0 olur. Aksi takdirde, 0 ile 1 arasında değişecektir. Genellikle, IoU'nun belirli bir değerin üzerinde olduğu sınırlayıcı kutuları dikkate alıyoruz. + +### Ortalama Doğruluk + +Verilen bir nesne sınıfı $C$'nin ne kadar iyi tanındığını ölçmek istiyoruz. Bunu ölçmek için, **Ortalama Doğruluk** metriklerini kullanıyoruz, bu da aşağıdaki gibi hesaplanır: + +1. Doğruluk eşiğine (0 ile 1 arasında) bağlı olarak doğruluk değerlerini gösteren Doğruluk-Hatırlama eğrisini dikkate al. +2. Eşeğe bağlı olarak, görüntüde daha fazla veya daha az nesne tespit edeceğiz ve farklı doğruluk ve hatırlama değerleri elde edeceğiz. +3. Eğri şu şekilde görünecek: + +> *[NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* kaynağından görüntü + +Verilen bir sınıf $C$ için ortalama Doğruluk, bu eğrinin altındaki alandır. Daha kesin olarak, Hatırlama ekseni genellikle 10 parçaya bölünür ve Doğruluk tüm bu noktalar üzerinde ortalanır: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Doğruluk}(\mbox{Hatırlama}={i\over10}) +$$ + +### AP ve IoU + +Sadece IoU'nun belirli bir değerin üzerinde olduğu tespitleri dikkate alacağız. Örneğin, PASCAL VOC veri setinde genellikle $\mbox{IoU Eşiği} = 0.5$ varsayılırken, COCO'da AP farklı $\mbox{IoU Eşiği}$ değerleri için ölçülmektedir. + +### Ortalama Ortalama Doğruluk - mAP + +Nesne Tespiti için ana metrik **Ortalama Ortalama Doğruluk** veya **mAP** olarak adlandırılır. Bu, Tüm nesne sınıfları üzerinden ortalama alınmış Ortalama Doğruluk değeridir ve bazen de $\mbox{IoU Eşiği}$ üzerinden ortalama alınır. **mAP** hesaplama süreci daha ayrıntılı olarak [bu blog yazısında](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) ve [burada kod örnekleri ile](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) açıklanmaktadır. + +## Farklı Nesne Tespiti Yaklaşımları + +Nesne tespiti algoritmalarının iki geniş sınıfı vardır: + +* **Bölge Teklif Ağları** (R-CNN, Fast R-CNN, Faster R-CNN). Ana fikir, **İlgi Alanları** (ROI) üretmek ve bunlar üzerinde maksimum aktivasyon aramak için CNN çalıştırmaktır. Bu, naif yaklaşıma biraz benziyor, tek fark, ROI'lerin daha akıllı bir şekilde üretilmesidir. Bu tür yöntemlerin en büyük dezavantajlarından biri, görüntü üzerinde CNN sınıflandırıcısının birçok geçişini gerektirdiği için yavaş olmalarıdır. +* **Tek geçiş** (YOLO, SSD, RetinaNet) yöntemleri. Bu mimarilerde, ağı hem sınıfları hem de ROI'leri tek bir geçişte tahmin edecek şekilde tasarlıyoruz. + +### R-CNN: Bölge Tabanlı CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf), ROI bölgelerinin hiyerarşik yapısını oluşturmak için [Seçici Arama](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) kullanır, bu bölgeler daha sonra CNN özellik çıkarıcıları ve SVM sınıflandırıcıları üzerinden geçirilerek nesne sınıfı belirlenir ve *sınırlayıcı kutu* koordinatlarını belirlemek için doğrusal regresyon uygulanır. [Resmi Makale](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.tr.png) + +> *van de Sande et al. ICCV’11 kaynağından görüntü* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.tr.png) + +> *[Bu blog](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) kaynağından görüntü* + +### F-RCNN - Hızlı R-CNN + +Bu yaklaşım R-CNN ile benzerdir, ancak bölgeler, konvolüsyon katmanları uygulandıktan sonra tanımlanır. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.tr.png) + +> Resim [Resmi Makale](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf), [arXiv](https://arxiv.org/pdf/1504.08083.pdf), 2015 + +### Daha Hızlı R-CNN + +Bu yaklaşımın ana fikri, ROI'leri tahmin etmek için bir sinir ağı kullanmaktır - bu, *Bölge Teklif Ağı* olarak adlandırılır. [Makale](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![Daha HızlıRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.tr.png) + +> Resim [resmi makaleden](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Bölge Tabanlı Tam Konvolüsyonel Ağ + +Bu algoritma, Daha Hızlı R-CNN'den bile daha hızlıdır. Ana fikir aşağıdaki gibidir: + +1. Özellikler ResNet-101 kullanılarak çıkarılır. +2. Özellikler **Pozisyon-Duyarlı Skor Haritası** tarafından işlenir. $C$ sınıflarındaki her nesne $k\times k$ bölgeye ayrılır ve nesnelerin parçalarını tahmin etmek için eğitim yapılır. +3. $k\times k$ bölgelerden her bir parça için tüm ağlar nesne sınıfları için oy kullanır ve maksimum oy alan nesne sınıfı seçilir. + +![r-fcn görüntüsü](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.tr.png) + +> Resim [resmi makaleden](https://arxiv.org/abs/1605.06409) + +### YOLO - Bir Kez Bakarsınız + +YOLO, gerçek zamanlı bir tek geçiş algoritmasıdır. Ana fikir aşağıdaki gibidir: + + * Görüntü $S\times S$ bölgelere bölünür. + * Her bölge için, **CNN** $n$ olası nesneyi, *sınırlayıcı kutu* koordinatlarını ve *güven* = *olasılık* * IoU'yu tahmin eder. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.tr.png) +> [Resmi makale](https://arxiv.org/abs/1506.02640) kaynağından görüntü + +### Diğer Algoritmalar + +* RetinaNet: [resmi makale](https://arxiv.org/abs/1708.02002) + - [Torchvision'da PyTorch Uygulaması](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras Uygulaması](https://github.com/fizyr/keras-retinanet) + - Keras Örneklerinde [RetinaNet ile Nesne Tespiti](https://keras.io/examples/vision/retinanet/) +* SSD (Tek Atış Dedektörü): [resmi makale](https://arxiv.org/abs/1512.02325) + +## ✍️ Alıştırmalar: Nesne Tespiti + +Aşağıdaki not defterinde öğreniminize devam edin: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Sonuç + +Bu derste, nesne tespitinin gerçekleştirilebileceği çeşitli yolları hızlı bir şekilde keşfettiniz! + +## 🚀 Zorluk + +Bu makaleleri ve not defterlerini okuyun, YOLO hakkında bilgi edinin ve kendiniz deneyin. + +* YOLO'yu tanımlayan [iyi bir blog yazısı](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) + * [Resmi site](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras uygulaması](https://github.com/experiencor/keras-yolo2), [adım adım not defteri](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras uygulaması](https://github.com/experiencor/keras-yolo2), [adım adım not defteri](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Ders sonrası sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Gözden Geçirme & Kendi Kendine Çalışma + +* Nikhil Sardana tarafından [Nesne Tespiti](https://tjmachinelearning.com/lectures/1718/obj/) +* [Nesne tespit algoritmalarının iyi bir karşılaştırması](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Nesne Tespiti için Derin Öğrenme Algoritmalarının Gözden Geçirilmesi](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Temel Nesne Tespit Algoritmalarına Adım Adım Giriş](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Nesne Tespiti için Python'da Daha Hızlı R-CNN Uygulaması](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Görev: Nesne Tespiti](lab/README.md) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..39dab1cc --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# Hollywood Heads Veri Seti ile Baş + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) laboratuvar ödevi. + +## Görev + +Video gözetim kameralarıyla insan sayısını saymak, mağazalardaki ziyaretçi sayısını, restoranlardaki yoğun saatleri tahmin etmemizi sağlayan önemli bir görevdir. Bu görevi çözmek için, insan başlarını farklı açılardan tespit edebilmemiz gerekiyor. İnsan başlarını tespit etmek için bir nesne tespit modeli eğitmek amacıyla [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/) kullanılabilir. + +## Veri Seti + +[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip), Hollywood filmlerinden 224,740 film karesinde 369,846 insan başı içermektedir. Her resim için ayrıca şu şekilde görünen bir XML açıklama dosyası bulunmaktadır: + +```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 + + +``` + +Bu veri setinde yalnızca bir nesne sınıfı olan `head` bulunmaktadır ve her baş için sınırlayıcı kutunun koordinatlarını alırsınız. XML'yi Python kütüphaneleri kullanarak ayrıştırabilir veya PASCAL VOC formatıyla doğrudan çalışmak için [bu kütüphaneyi](https://pypi.org/project/pascal-voc/) kullanabilirsiniz. + +## Nesne Tespiti Eğitimi + +Aşağıdaki yöntemlerden birini kullanarak bir nesne tespit modeli eğitebilirsiniz: + +* [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) ve Python API'sini kullanarak modeli bulutta programatik olarak eğitmek. Özel vizyon, modeli eğitmek için birkaç yüz resimden fazlasını kullanamayacağından, veri setini sınırlamanız gerekebilir. +* [Keras tutorial](https://keras.io/examples/vision/retinanet/) örneğini kullanarak RetinaNet modelini eğitmek. +* [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) modülünü torchvision içinde kullanmak. + +## Önemli Nokta + +Nesne tespiti, sanayide sıkça gereken bir görevdir. Nesne tespiti gerçekleştirmek için kullanılabilecek bazı hizmetler olsa da (örneğin, [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)), nesne tespitinin nasıl çalıştığını anlamak ve kendi modellerinizi eğitebilmek önemlidir. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/tr/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..76bca4fe --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# Segmentasyon + +Daha önce, nesne tespiti hakkında öğrendik; bu, görüntüdeki nesneleri *sınırlayıcı kutularını* tahmin ederek yerlerini belirlememizi sağlar. Ancak bazı görevler için yalnızca sınırlayıcı kutulara değil, aynı zamanda daha hassas nesne konumlandırmasına da ihtiyacımız var. Bu görev **segmentasyon** olarak adlandırılır. + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentasyon, **piksel sınıflandırması** olarak görülebilir; burada görüntünün **her** pikseli için sınıfını tahmin etmemiz gerekir (*arka plan* sınıflardan biridir). İki ana segmentasyon algoritması vardır: + +* **Anlamsal segmentasyon**, yalnızca piksel sınıfını belirtir ve aynı sınıftaki farklı nesneler arasında ayrım yapmaz. +* **Örnek segmentasyonu**, sınıfları farklı örneklere böler. + +Örnek segmentasyonunda, bu koyunlar farklı nesnelerken, anlamsal segmentasyonda tüm koyunlar tek bir sınıf olarak temsil edilir. + + + +> Resim [bu blog yazısından](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) alınmıştır. + +Segmentasyon için farklı sinir mimarileri bulunmaktadır, ancak hepsi aynı yapıya sahiptir. Bir bakıma, daha önce öğrendiğiniz otomatik kodlayıcıya benzer; ancak amacımız orijinal görüntüyü parçalamak yerine bir **maske** parçalamaktır. Bu nedenle, bir segmentasyon ağı aşağıdaki parçalara sahiptir: + +* **Kodlayıcı**, giriş görüntüsünden özellikleri çıkarır. +* **Çözücü**, bu özellikleri **maske görüntüsüne** dönüştürür; bu maske, sınıf sayısına karşılık gelen aynı boyut ve kanal sayısına sahiptir. + + + +> Resim [bu yayından](https://arxiv.org/pdf/2001.05566.pdf) alınmıştır. + +Segmentasyon için kullanılan kayıp fonksiyonunu özellikle belirtmeliyiz. Klasik otomatik kodlayıcılar kullanıldığında, iki görüntü arasındaki benzerliği ölçmemiz gerekir ve bunu yapmak için ortalama kare hatasını (MSE) kullanabiliriz. Segmentasyonda, hedef maske görüntüsündeki her piksel sınıf numarasını temsil eder (üçüncü boyutta one-hot kodlanmış), bu nedenle sınıflandırma için özel kayıp fonksiyonları kullanmalıyız - tüm pikseller üzerinde ortalaması alınan çapraz entropi kaybı. Maske ikili olduğunda - **ikili çapraz entropi kaybı** (BCE) kullanılır. + +> ✅ One-hot kodlama, bir sınıf etiketini sınıf sayısına eşit uzunlukta bir vektöre kodlama yöntemidir. Bu teknik hakkında daha fazla bilgi için [bu makaleye](https://datagy.io/sklearn-one-hot-encode/) göz atın. + +## Tıbbi Görüntüleme için Segmentasyon + +Bu derste, ağı insan nevuslarını (benler olarak da bilinir) tıbbi görüntülerde tanımak için eğiterek segmentasyonun nasıl çalıştığını göreceğiz. Görüntü kaynağı olarak PH2 Veritabanı dermoskopi görüntülerini kullanacağız. Bu veri seti, tipik nevus, atipik nevus ve melanom olmak üzere üç sınıftan 200 görüntü içermektedir. Tüm görüntüler, nevusu belirten bir **maske** ile birlikte gelir. + +> ✅ Bu teknik, bu tür tıbbi görüntüleme için özellikle uygundur, ancak başka hangi gerçek dünya uygulamalarını hayal edebilirsiniz? + +navi + +> Resim PH2 Veritabanından alınmıştır. + +Herhangi bir nevusu arka plandan ayırmak için bir model eğiteceğiz. + +## ✍️ Alıştırmalar: Anlamsal Segmentasyon + +Aşağıdaki not defterlerini açarak farklı anlamsal segmentasyon mimarileri hakkında daha fazla bilgi edinin, onlarla çalışmayı pratik edin ve bunları eylemde görün. + +* [Anlamsal Segmentasyon Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Anlamsal Segmentasyon TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Sonuç + +Segmentasyon, görüntü sınıflandırması için çok güçlü bir tekniktir; sınırlayıcı kutuların ötesine geçerek piksel düzeyinde sınıflandırma yapar. Bu teknik, tıbbi görüntüleme gibi çeşitli uygulamalarda kullanılmaktadır. + +## 🚀 Zorluk + +Vücut segmentasyonu, insan görüntüleriyle yapabileceğimiz yaygın görevlerden yalnızca biridir. Diğer önemli görevler arasında **iskelet tespiti** ve **poz tespiti** bulunmaktadır. Poz tespitinin nasıl kullanılabileceğini görmek için [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) kütüphanesini deneyin. + +## Gözden Geçirme & Kendi Kendine Çalışma + +Bu [wikipedia makalesi](https://wikipedia.org/wiki/Image_segmentation), bu tekniğin çeşitli uygulamaları hakkında iyi bir genel bakış sunmaktadır. Bu araştırma alanında Örnek segmentasyonu ve Panoptik segmentasyonun alt alanları hakkında kendi başınıza daha fazla bilgi edinin. + +## [Görev](lab/README.md) + +Bu laboratuvar çalışmasında, Kaggle'dan [Segmentasyon Tam Vücut MADS Veri Seti](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) kullanarak **insan vücudu segmentasyonu** yapmayı deneyin. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/tr/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..5c78bd90 --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# İnsan Vücudu Segmentasyonu + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) için laboratuvar ödevi. + +## Görev + +Video prodüksiyonunda, örneğin hava durumu tahminlerinde, bir insan görüntüsünü kameradan kesip başka bir görüntünün üzerine yerleştirmemiz sıkça gerekmektedir. Bu genellikle, bir insanın tek renkli bir arka plan önünde çekildiği ve ardından bu arka planın kaldırıldığı **chroma key** teknikleri kullanılarak yapılır. Bu laboratuvar çalışmasında, insan siluetini kesmek için bir sinir ağı modeli eğiteceğiz. + +## Veri Seti + +Kaggle'dan [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) veri setini kullanacağız. Veri setini Kaggle'dan manuel olarak indirin. + +## Not Defterini Açma + +Laboratuvara [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) dosyasını açarak başlayın. + +## Önemli Nokta + +Vücut segmentasyonu, insanların görüntüleriyle yapabileceğimiz yaygın görevlerden sadece biridir. Diğer önemli görevler arasında **iskelet tespiti** ve **poz tespiti** bulunur. Bu görevlerin nasıl uygulanabileceğini görmek için [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) kütüphanesine göz atın. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/4-ComputerVision/README.md b/translations/tr/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..193fc4cc --- /dev/null +++ b/translations/tr/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# Bilgisayarla Görme + +![Bilgisayarla Görme içeriğinin bir doodle ile özeti](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.tr.png) + +Bu bölümde şunları öğreneceğiz: + +* [Bilgisayarla Görmeye ve OpenCV'ye Giriş](06-IntroCV/README.md) +* [Konvolüsyonel Sinir Ağları](07-ConvNets/README.md) +* [Önceden Eğitilmiş Ağlar ve Transfer Öğrenme](08-TransferLearning/README.md) +* [Otomatik Kodlayıcılar](09-Autoencoders/README.md) +* [Üretici Rekabetçi Ağlar](10-GANs/README.md) +* [Nesne Tespiti](11-ObjectDetection/README.md) +* [Anlamsal Segmentasyon](12-Segmentation/README.md) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/13-TextRep/README.md b/translations/tr/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..950e5893 --- /dev/null +++ b/translations/tr/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# Metinleri Tensörler Olarak Temsil Etme + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Metin Sınıflandırması + +Bu bölümün ilk kısmında, **metin sınıflandırması** görevine odaklanacağız. [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) veri setini kullanacağız; bu veri seti aşağıdaki gibi haber makalelerini içermektedir: + +* Kategori: Bilim/Teknoloji +* Başlık: Ky. Şirketi Peptitleri İncelemek İçin Hibe Kazandı (AP) +* Metin: AP - Louisville Üniversitesi'nde bir kimya araştırmacısı tarafından kurulan bir şirket, geliştirmek için bir hibe kazandı... + +Amacımız, haber maddesini metne dayalı olarak bir kategoriye sınıflandırmaktır. + +## Metni Temsil Etme + +Doğal Dil İşleme (NLP) görevlerini sinir ağları ile çözmek istiyorsak, metni tensörler olarak temsil etmenin bir yoluna ihtiyacımız var. Bilgisayarlar, metin karakterlerini, ekranınızdaki yazı tiplerine karşılık gelen sayılar olarak temsil eder; bu, ASCII veya UTF-8 gibi kodlamalar kullanılarak yapılır. + +Bir karakteri ASCII ve ikili temsile eşleyen diyagramı gösteren bir görüntü + +> [Görüntü kaynağı](https://www.seobility.net/en/wiki/ASCII) + +İnsanlar olarak, her harfin neyi **temsil ettiğini** anlarız ve tüm karakterlerin bir araya gelerek bir cümledeki kelimeleri nasıl oluşturduğunu biliriz. Ancak, bilgisayarlar kendi başlarına böyle bir anlayışa sahip değildir ve sinir ağı, eğitimi sırasında anlamı öğrenmek zorundadır. + +Bu nedenle, metni temsil ederken farklı yaklaşımlar kullanabiliriz: + +* **Karakter düzeyinde temsil**, metni her karakteri bir sayı olarak ele alarak temsil ettiğimiz durumdur. Metin koleksiyonumuzda *C* farklı karakter bulunduğunu varsayarsak, *Hello* kelimesi 5x*C* tensör ile temsil edilir. Her harf, bir sıcak kodlama (one-hot encoding) ile bir tensör sütununa karşılık gelir. +* **Kelime düzeyinde temsil**, metindeki tüm kelimelerin bir **kelime hazinesi** oluşturularak temsil edildiği durumdur; ardından kelimeleri sıcak kodlama ile temsil ederiz. Bu yaklaşım, her harfin kendisiyle çok fazla anlam ifade etmediği için daha iyidir ve bu nedenle daha yüksek düzeydeki anlamsal kavramları - kelimeleri - kullanarak sinir ağı için görevi basitleştiririz. Ancak, büyük sözlük boyutu nedeniyle yüksek boyutlu seyrek tensörlerle başa çıkmamız gerekir. + +Temsilden bağımsız olarak, önce metni bir **token** dizisine dönüştürmemiz gerekir; bir token, ya bir karakter, bir kelime ya da bazen bir kelimenin bir parçası olabilir. Ardından, token'ı bir sayıya dönüştürürüz; genellikle **kelime hazinesi** kullanarak, bu sayı bir sinir ağına sıcak kodlama ile beslenebilir. + +## N-Gramlar + +Doğal dilde, kelimelerin kesin anlamı yalnızca bağlamda belirlenebilir. Örneğin, *sinir ağı* ve *balık avlama ağı* ifadelerinin anlamları tamamen farklıdır. Bu durumu dikkate almanın yollarından biri, modelimizi kelime çiftleri üzerinde inşa etmek ve kelime çiftlerini ayrı kelime hazinesi tokenleri olarak ele almaktır. Bu şekilde, *I like to go fishing* cümlesi aşağıdaki token dizisi ile temsil edilecektir: *I like*, *like to*, *to go*, *go fishing*. Bu yaklaşımın sorunu, sözlük boyutunun önemli ölçüde büyümesidir ve *go fishing* ve *go shopping* gibi kombinasyonlar, aynı fiil olmasına rağmen hiçbir anlamsal benzerlik paylaşmayan farklı tokenler tarafından temsil edilir. + +Bazı durumlarda, üç kelimeden oluşan kombinasyonlar - tri-gramlar - kullanmayı da düşünebiliriz. Bu nedenle, bu yaklaşım genellikle **n-gramlar** olarak adlandırılır. Ayrıca, karakter düzeyinde temsil ile n-gramları kullanmak mantıklıdır; bu durumda n-gramlar kabaca farklı hecelere karşılık gelecektir. + +## Kelime Torbası ve TF/IDF + +Metin sınıflandırması gibi görevleri çözerken, metni tek bir sabit boyutlu vektörle temsil edebilmemiz gerekir; bu vektörü son yoğun sınıflandırıcıya girdi olarak kullanacağız. Bunu yapmanın en basit yollarından biri, tüm bireysel kelime temsillerini bir araya getirmektir; örneğin, bunları toplamak. Her kelimenin sıcak kodlamalarını toplarsak, metin içinde her kelimenin ne kadar sıklıkla geçtiğini gösteren bir frekans vektörü elde ederiz. Bu metin temsiline **kelime torbası** (BoW) denir. + + + +> Yazarın görüntüsü + +BoW, metinde hangi kelimelerin ve hangi miktarlarda göründüğünü temsil eder; bu da metnin ne hakkında olduğu konusunda iyi bir gösterge olabilir. Örneğin, bir politikayla ilgili haber makalesi, muhtemelen *başkan* ve *ülke* gibi kelimeleri içerecektir; bilimsel bir yayında ise *çarpıştırıcı*, *bulundu* gibi kelimeler olacaktır. Bu nedenle, kelime sıklıkları birçok durumda metin içeriğinin iyi bir göstergesi olabilir. + +BoW ile ilgili sorun, *ve*, *dir* gibi belirli yaygın kelimelerin çoğu metinde yer alması ve en yüksek sıklıklara sahip olmalarıdır; bu durum, gerçekten önemli olan kelimeleri gölgede bırakmaktadır. Bu kelimelerin önemini, kelimelerin tüm belge koleksiyonunda ne sıklıkla geçtiğini dikkate alarak azaltabiliriz. Bu, TF/IDF yaklaşımının temel fikridir ve bu konu, bu derse ekli not defterlerinde daha ayrıntılı olarak ele alınmaktadır. + +Ancak, bu yaklaşımların hiçbiri metnin **anlamını** tam olarak dikkate alamaz. Bunu yapmak için daha güçlü sinir ağı modellerine ihtiyacımız var; bunu bu bölümün ilerleyen kısımlarında tartışacağız. + +## ✍️ Alıştırmalar: Metin Temsili + +Aşağıdaki not defterlerinde öğreniminize devam edin: + +* [PyTorch ile Metin Temsili](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [TensorFlow ile Metin Temsili](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Sonuç + +Şu ana kadar, farklı kelimelere frekans ağırlığı ekleyebilen teknikleri inceledik. Ancak, bu teknikler anlamı veya sıralamayı temsil edemez. Ünlü dilbilimci J. R. Firth'ün 1935 yılında söylediği gibi, "Bir kelimenin tam anlamı her zaman bağlamsaldır ve bağlamdan ayrı bir anlam çalışması ciddiye alınamaz." Daha sonra kursta, metinden bağlamsal bilgileri nasıl yakalayacağımızı dil modelleme ile öğreneceğiz. + +## 🚀 Zorluk + +Kelime torbası ve farklı veri modelleri kullanarak bazı diğer alıştırmaları deneyin. Bu [Kaggle yarışmasından](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) ilham alabilirsiniz. + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Gözden Geçirme & Kendi Kendine Çalışma + +Metin gömme ve kelime torbası teknikleri ile becerilerinizi [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) üzerinde pratik yaparak geliştirin. + +## [Ödev: Not Defterleri](assignment.md) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/13-TextRep/assignment.md b/translations/tr/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..e4d79b8e --- /dev/null +++ b/translations/tr/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# Görev: Not Defterleri + +Bu derse bağlı not defterlerini (ister PyTorch ister TensorFlow versiyonu) kullanarak, kendi veri setinizi kullanarak tekrar çalıştırın; belki de atıf yaparak kullanılan bir Kaggle veri seti. Not defterini, kendi bulgularınızı vurgulamak için yeniden yazın. Şaşırtıcı olabilecek bazı yenilikçi veri setlerini deneyin, örneğin NUFORC'dan [UFO gözlemleri hakkında bu veri seti](https://www.kaggle.com/datasets/NUFORC/ufo-sightings). + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde kesin kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/14-Embeddings/README.md b/translations/tr/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..6ff04db3 --- /dev/null +++ b/translations/tr/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# Gömme (Embeddings) + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +BoW veya TF/IDF tabanlı sınıflandırıcıları eğitirken, uzunluğu `vocab_size` olan yüksek boyutlu kelime torbası (bag-of-words) vektörleri üzerinde çalıştık ve düşük boyutlu konumsal temsil vektörlerini seyrek bir one-hot temsiline açıkça dönüştürdük. Ancak bu one-hot temsili, bellek açısından verimli değildir. Ayrıca, her kelime birbirinden bağımsız olarak ele alınır; yani one-hot kodlanmış vektörler kelimeler arasında herhangi bir anlamsal benzerlik ifade etmez. + +**Gömme** fikri, kelimeleri daha düşük boyutlu yoğun vektörler ile temsil etmektir ve bu vektörler bir kelimenin anlamsal anlamını bir şekilde yansıtır. Anlamlı kelime gömmeleri nasıl oluşturulacağını daha sonra tartışacağız, ancak şimdilik gömmeleri bir kelime vektörünün boyutunu düşürmenin bir yolu olarak düşünelim. + +Bu nedenle, gömme katmanı bir kelimeyi girdi olarak alır ve belirli bir `embedding_size` uzunluğunda bir çıktı vektörü üretir. Bir anlamda, bu, `Linear` katmanına çok benzer, ancak bir one-hot kodlanmış vektör almak yerine, bir kelime numarasını girdi olarak alabilir, bu da büyük one-hot kodlanmış vektörler oluşturmaktan kaçınmamızı sağlar. + +Sınıflandırıcı ağımızda gömme katmanını ilk katman olarak kullanarak, kelime torbasından **gömme torbası** modeline geçiş yapabiliriz; burada metnimizdeki her kelimeyi karşılık gelen gömme ile dönüştürüyor ve ardından `sum`, `average` veya `max` gibi tüm bu gömmeler üzerinde bazı toplama fonksiyonları hesaplıyoruz. + +![Beş sıralı kelime için bir gömme sınıflandırıcısını gösteren bir resim.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.tr.png) + +> Resim yazar tarafından hazırlanmıştır. + +## ✍️ Alıştırmalar: Gömme + +Aşağıdaki not defterlerinde öğrenmeye devam edin: +* [PyTorch ile Gömme](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [TensorFlow ile Gömme](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Anlamsal Gömme: Word2Vec + +Gömme katmanı kelimeleri vektör temsilcisine haritalamayı öğrenirken, bu temsilin mutlaka çok fazla anlamsal anlamı yoktu. Benzer kelimelerin veya eşanlamlıların, bazı vektör mesafesi (örneğin, Öklid mesafesi) açısından birbirine yakın vektörlere karşılık geldiği bir vektör temsilini öğrenmek güzel olurdu. + +Bunu yapmak için, gömme modelimizi belirli bir şekilde büyük bir metin koleksiyonu üzerinde önceden eğitmemiz gerekiyor. Anlamsal gömmeleri eğitmenin bir yolu [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) olarak adlandırılır. Bu, kelimelerin dağıtılmış bir temsilini üretmek için kullanılan iki ana mimariye dayanır: + + - **Sürekli kelime torbası** (CBoW) — bu mimaride, modeli çevresindeki bağlamdan bir kelimeyi tahmin etmek için eğitiyoruz. ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ verildiğinde, modelin amacı $(W_{-2},W_{-1},W_1,W_2)$'den $W_0$'ı tahmin etmektir. + - **Sürekli skip-gram**, CBoW'nun tersidir. Model, mevcut kelimeyi tahmin etmek için çevresindeki bağlam kelimelerinin penceresini kullanır. + +CBoW daha hızlıdır, oysa skip-gram daha yavaştır, ancak nadir kelimeleri temsil etme konusunda daha iyi bir iş çıkarır. + +![Kelimeleri vektörlere dönüştürmek için hem CBoW hem de Skip-Gram algoritmalarını gösteren bir resim.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.tr.png) + +> Resim [bu makaleden](https://arxiv.org/pdf/1301.3781.pdf) alınmıştır. + +Word2Vec önceden eğitilmiş gömmeleri (ve GloVe gibi diğer benzer modeller) sinir ağlarındaki gömme katmanının yerinde de kullanılabilir. Ancak, kelime dağarcıkları ile ilgilenmemiz gerekiyor, çünkü Word2Vec/GloVe'yi önceden eğitmek için kullanılan kelime dağarcığı, metin koleksiyonumuzdaki kelime dağarcığından farklı olabilir. Bu sorunun nasıl çözülebileceğini görmek için yukarıdaki not defterlerine göz atın. + +## Bağlamsal Gömme + +Word2Vec gibi geleneksel önceden eğitilmiş gömme temsillerinin bir ana sınırlaması, kelime anlamı ayrımını yapma problemidir. Önceden eğitilmiş gömmeler, kelimelerin bağlam içindeki anlamlarının bir kısmını yakalayabilse de, bir kelimenin her olası anlamı aynı gömme içinde kodlanır. Bu, birçok kelimenin, örneğin 'play' kelimesinin, kullanıldığı bağlama bağlı olarak farklı anlamları olduğu için, aşağı akış modellerinde sorunlara neden olabilir. + +Örneğin, 'play' kelimesi bu iki farklı cümlede oldukça farklı anlamlar taşır: + +- Tiyatroda bir **oyun** izlemeye gittim. +- John arkadaşlarıyla **oynamak** istiyor. + +Yukarıdaki önceden eğitilmiş gömmeler, 'play' kelimesinin bu iki anlamını da aynı gömme içinde temsil eder. Bu sınırlamanın üstesinden gelmek için, büyük bir metin koleksiyonu üzerinde eğitilen ve kelimelerin farklı bağlamlarda nasıl bir araya getirileceğini *bilen* **dil modeli** tabanlı gömmeler oluşturmamız gerekiyor. Bağlamsal gömmeleri tartışmak bu eğitimin kapsamı dışında, ancak daha sonra dil modellerinden bahsederken onlara geri döneceğiz. + +## Sonuç + +Bu derste, TensorFlow ve Pytorch'ta gömme katmanları oluşturmayı ve kullanmayı öğrendiniz; bu sayede kelimelerin anlamsal anlamlarını daha iyi yansıtabilirsiniz. + +## 🚀 Zorluk + +Word2Vec, şarkı sözleri ve şiir üretimi gibi bazı ilginç uygulamalar için kullanılmıştır. Yazarın Word2Vec kullanarak şiir nasıl ürettiğini anlatan [bu makaleye](https://www.politetype.com/blog/word2vec-color-poems) göz atın. Ayrıca, bu tekniğin farklı bir açıklamasını keşfetmek için [Dan Shiffmann'ın bu videosunu](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) izleyin. Ardından, bu teknikleri kendi metin koleksiyonunuza uygulamayı deneyin; belki Kaggle'dan elde ettiğiniz verilerle. + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Gözden Geçirme & Kendi Kendine Çalışma + +Word2Vec hakkında [Vektör Uzayında Kelime Temsillerinin Verimli Tahmini](https://arxiv.org/pdf/1301.3781.pdf) başlıklı bu makaleyi okuyun. + +## [Ödev: Not Defterleri](assignment.md) + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/14-Embeddings/assignment.md b/translations/tr/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..e7568d33 --- /dev/null +++ b/translations/tr/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# Görev: Not Defterleri + +Bu derse ait not defterlerini (ister PyTorch ister TensorFlow versiyonu) kendi veri setinizle tekrar çalıştırın; belki de atıf ile kullanılan bir Kaggle veri seti. Not defterini, kendi bulgularınızı vurgulamak için yeniden yazın. Farklı bir veri seti deneyin ve bulgularınızı, [bu Beatles şarkı sözleri](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) gibi metinler kullanarak belgeleyin. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan dolayı sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/15-LanguageModeling/README.md b/translations/tr/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..625533df --- /dev/null +++ b/translations/tr/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# Dil Modelleme + +Anlam gömme yöntemleri, Word2Vec ve GloVe gibi, aslında **dil modelleme** için bir ilk adımdır - dilin doğasını bir şekilde *anlayan* (veya *temsil eden*) modeller oluşturmak. + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Dil modellemenin arkasındaki temel fikir, etiketlenmemiş veri setleri üzerinde denetimsiz bir şekilde eğitim yapmaktır. Bu önemlidir çünkü elimizde büyük miktarda etiketlenmemiş metin bulunmaktadır, oysa etiketlenmiş metin miktarı her zaman etiketleme için harcayabileceğimiz çaba ile sınırlı olacaktır. Genellikle, metindeki **eksik kelimeleri tahmin edebilen** dil modelleri oluşturabiliriz, çünkü metinde rastgele bir kelimeyi maskeleyip bunu bir eğitim örneği olarak kullanmak kolaydır. + +## Gömme Eğitimleri + +Önceki örneklerimizde, önceden eğitilmiş anlam gömmelerini kullandık, ancak bu gömmelerin nasıl eğitilebileceğini görmek ilginçtir. Kullanılabilecek birkaç olası fikir vardır: + +* **N-Gram** dil modelleme, N önceki token'a bakarak bir token'ı tahmin ettiğimiz durumdur (N-gram) +* **Sürekli Kelime Torbası** (CBoW), bir token dizisi $W_{-N}$, ..., $W_N$ içindeki ortadaki token $W_0$'ı tahmin ettiğimiz durumdur. +* **Skip-gram**, ortadaki token $W_0$'dan komşu token'ların {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} bir kümesini tahmin ettiğimiz durumdur. + +![kelimeleri vektörlere dönüştürme üzerine makaleden bir resim](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.tr.png) + +> [bu makaleden](https://arxiv.org/pdf/1301.3781.pdf) alınmıştır. + +## ✍️ Örnek Not Defterleri: CBoW modelini eğitme + +Aşağıdaki not defterlerinde öğrenmeye devam edin: + +* [TensorFlow ile CBoW Word2Vec Eğitimi](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [PyTorch ile CBoW Word2Vec Eğitimi](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Sonuç + +Önceki derste, kelime gömmelerinin sihir gibi çalıştığını gördük! Artık kelime gömmelerini eğitmenin çok karmaşık bir görev olmadığını biliyoruz ve gerekirse alan spesifik metinler için kendi kelime gömmelerimizi eğitebilmeliyiz. + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Gözden Geçirme & Kendi Kendine Çalışma + +* [Dil Modelleme üzerine resmi PyTorch eğitimi](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Word2Vec modelini eğitme üzerine resmi TensorFlow eğitimi](https://www.TensorFlow.org/tutorials/text/word2vec). +* En yaygın kullanılan gömmeleri birkaç satır kodla eğitmek için **gensim** çerçevesinin kullanımı [bu belgede](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) açıklanmıştır. + +## 🚀 [Görev: Skip-Gram Modelini Eğit](lab/README.md) + +Laboratuvar çalışmasında, bu dersten aldığınız kodu CBoW yerine skip-gram modelini eğitmek için değiştirmenizi istiyoruz. [Detayları okuyun](lab/README.md) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/tr/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..0de4cb1f --- /dev/null +++ b/translations/tr/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# Eğitim Skip-Gram Modeli + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) dersinden laboratuvar ödevi. + +## Görev + +Bu laboratuvar çalışmasında, size Word2Vec modelini Skip-Gram tekniği kullanarak eğitme challenge'ı veriyoruz. $N$-token genişliğinde bir Skip-Gram penceresinde komşu kelimeleri tahmin etmek için gömme ile bir ağ eğitin. Bu dersten [bu kodu](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) kullanabilir ve biraz değiştirebilirsiniz. + +## Veri Seti + +Herhangi bir kitabı kullanabilirsiniz. [Project Gutenberg](https://www.gutenberg.org/) adresinde birçok ücretsiz metin bulabilirsiniz; örneğin, Lewis Carroll'un [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) adlı eserine doğrudan bağlantı. Ya da, aşağıdaki kodu kullanarak Shakespeare'in oyunlarını edinebilirsiniz: + +```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') +``` + +## Keşfet! + +Eğer zamanınız varsa ve konuya daha derinlemesine dalmak istiyorsanız, birkaç şeyi keşfetmeyi deneyin: + +* Gömme boyutunun sonuçları nasıl etkilediği? +* Farklı metin stillerinin sonuçları nasıl etkilediği? +* Çok farklı türde kelimeler ve eşanlamlılarını alın, vektör temsillerini elde edin, boyutları 2'ye indirmek için PCA uygulayın ve bunları 2D alanda çizin. Herhangi bir desen görüyor musunuz? + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/16-RNN/README.md b/translations/tr/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..39c3de73 --- /dev/null +++ b/translations/tr/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,86 @@ +# Tekrarlayan Sinir Ağları + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +Önceki bölümlerde, metnin zengin anlamsal temsillerini ve gömme katmanlarının üstünde basit bir doğrusal sınıflayıcı kullanıyorduk. Bu mimari, bir cümledeki kelimelerin toplam anlamını yakalamaya çalışır, ancak kelimelerin **sırasını** dikkate almaz; çünkü gömme katmanları üzerindeki toplama işlemi, bu bilgiyi orijinal metinden çıkarmıştır. Bu modeller kelime sıralamasını modelleyemediğinden, metin üretimi veya soru yanıtlama gibi daha karmaşık veya belirsiz görevleri yerine getiremezler. + +Metin dizisinin anlamını yakalamak için, **tekrarlayan sinir ağı** (RNN) adı verilen başka bir sinir ağı mimarisi kullanmamız gerekiyor. RNN'de, cümlemizi bir sembolü bir seferde geçiriyoruz ve ağ, ardından bir **durum** üretiyor; bu durumu bir sonraki sembol ile birlikte tekrar ağa iletiyoruz. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.tr.png) + +> Yazarın resmi + +X0,...,Xn token dizisi verildiğinde, RNN bir sinir ağı blokları dizisi oluşturur ve bu diziyi geri yayılım kullanarak uçtan uca eğitir. Her ağ bloğu, bir çift (Xi,Si) alır ve Si+1 olarak bir sonuç üretir. Son durum Sn veya (çıkış Yn) bir doğrusal sınıflayıcıya gider ve sonucu üretir. Tüm ağ blokları aynı ağırlıkları paylaşır ve tek bir geri yayılım geçişi kullanılarak uçtan uca eğitilir. + +Durum vektörleri S0,...,Sn ağdan geçirilerek, kelimeler arasındaki sıralı bağımlılıkları öğrenebilir. Örneğin, dizide *not* kelimesi geçtiğinde, belirli öğeleri durum vektöründe olumsuzlamak için öğrenebiliriz, bu da olumsuzluk yaratır. + +> ✅ Yukarıdaki resimdeki tüm RNN bloklarının ağırlıkları paylaşıldığından, aynı resim, ağın çıkış durumunu girdi olarak geri ileten bir tekrarlayan geri besleme döngüsü ile bir blok (sağda) olarak temsil edilebilir. + +## RNN Hücresinin Anatomisi + +Basit bir RNN hücresinin nasıl organize edildiğine bakalım. Önceki durum Si-1 ve mevcut sembol Xi olarak girdileri kabul eder ve çıkış durumu Si üretmelidir (ve bazen, üretken ağlarla olduğu gibi, başka bir çıkış Yi ile de ilgileniyoruz). + +Basit bir RNN hücresinin içinde iki ağırlık matris vardır: biri bir giriş sembolünü dönüştürür (buna W diyelim), diğeri ise bir giriş durumunu dönüştürür (H). Bu durumda, ağın çıktısı σ(W×Xi+H×Si-1+b) olarak hesaplanır; burada σ aktivasyon fonksiyonu ve b ek bir önyargıdır. + +RNN Hücre Anatomisi + +> Yazarın resmi + +Birçok durumda, giriş tokenları RNN'ye girmeden önce gömme katmanından geçirilir, bu da boyutu azaltır. Bu durumda, giriş vektörlerinin boyutu *emb_size* ve durum vektörü *hid_size* ise, W'nin boyutu *emb_size*×*hid_size* ve H'nin boyutu *hid_size*×*hid_size* olur. + +## Uzun Kısa Süreli Bellek (LSTM) + +Klasik RNN'lerin en büyük problemlerinden biri, sözde **kaybolan gradyanlar** problemidir. RNN'ler, tek bir geri yayılım geçişinde uçtan uca eğitildiğinden, hatayı ağın ilk katmanlarına iletmekte zorluk çeker ve dolayısıyla ağ, uzak tokenlar arasındaki ilişkileri öğrenemez. Bu problemi aşmanın yollarından biri, **açık durum yönetimi** sağlamak için sözde **kapılar** kullanmaktır. Bu türde iki iyi bilinen mimari vardır: **Uzun Kısa Süreli Bellek** (LSTM) ve **Kapalı Röle Birimi** (GRU). + +![Uzun Kısa Süreli Bellek hücresini gösteren bir resim](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Resim kaynağı TBD + +LSTM Ağı, RNN'e benzer bir şekilde organize edilmiştir, ancak katmanlar arasında geçirilen iki durum vardır: gerçek durum C ve gizli vektör H. Her birimde, gizli vektör Hi, giriş Xi ile birleştirilir ve durum C üzerindeki etkilerini **kapılar** aracılığıyla kontrol ederler. Her kapı, sigmoid aktivasyona sahip bir sinir ağıdır (çıkış [0,1] aralığında), bu da durum vektörü ile çarpıldığında bit düzeyinde bir maske olarak düşünülebilir. Yukarıdaki resimde soldan sağa doğru şu kapılar vardır: + +* **Unutma kapısı**, bir gizli vektör alır ve vektör C'nin hangi bileşenlerini unutmamız gerektiğini ve hangilerini geçirmemiz gerektiğini belirler. +* **Giriş kapısı**, giriş ve gizli vektörlerden bazı bilgileri alır ve bunu duruma ekler. +* **Çıkış kapısı**, durumu *tanh* aktivasyonuna sahip bir doğrusal katman aracılığıyla dönüştürür, ardından yeni bir durum Ci+1 üretmek için gizli vektör Hi kullanarak bazı bileşenlerini seçer. + +Durum C'nin bileşenleri, açılıp kapanabilen bazı bayraklar olarak düşünülebilir. Örneğin, dizide *Alice* adını bulduğumuzda, bunun bir kadın karakteri ifade ettiğini varsayabiliriz ve cümlede bir kadın isim olduğu bayrağını açarız. Daha sonra *and Tom* ifadeleri ile karşılaştığımızda, çoğul bir isim olduğuna dair bayrağı açarız. Böylece durumu manipüle ederek cümle parçalarının dilbilgisel özelliklerini takip edebiliriz. + +> ✅ LSTM'nin iç işleyişini anlamak için harika bir kaynak, Christopher Olah tarafından yazılmış [LSTM Ağlarını Anlamak](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) adlı makaledir. + +## İki Yönlü ve Çok Katmanlı RNN'ler + +Bir dizinin başlangıcından sonuna doğru tek yönde çalışan tekrarlayan ağları tartıştık. Bu doğal görünmektedir, çünkü okumaya ve konuşmayı dinlemeye benzer. Ancak, birçok pratik durumda girdi dizisine rastgele erişimimiz olduğundan, tekrarlayan hesaplamayı her iki yönde de çalıştırmak mantıklı olabilir. Bu tür ağlara **iki yönlü** RNN'ler denir. İki yönlü bir ağla çalışırken, her yön için iki gizli durum vektörüne ihtiyacımız olacaktır. + +Bir Tekrarlayan ağ, ister tek yönlü ister iki yönlü olsun, bir dizideki belirli kalıpları yakalar ve bunları bir durum vektöründe depolayabilir veya çıkışa iletebilir. Konvolüsyonel ağlarla olduğu gibi, ilk katmanın çıkışından daha yüksek düzeyde kalıpları yakalamak ve ilk katmanın çıkardığı düşük düzey kalıplardan inşa etmek için üstte başka bir tekrarlayan katman oluşturabiliriz. Bu, **çok katmanlı RNN** kavramına götürür; bu, bir önceki katmanın çıktısının bir sonraki katmana girdi olarak iletildiği iki veya daha fazla tekrarlayan ağdan oluşur. + +![Çok Katmanlı uzun-kısa süreli bellek RNN'yi gösteren bir resim](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.tr.jpg) + +*Resim [bu harika yazıdan](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) Fernando López tarafından alınmıştır.* + +## ✍️ Alıştırmalar: Gömme + +Aşağıdaki defterlerde öğrenmeye devam edin: + +* [PyTorch ile RNN'ler](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [TensorFlow ile RNN'ler](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Sonuç + +Bu birimde, RNN'lerin dizi sınıflandırması için kullanılabileceğini gördük, ancak aslında metin üretimi, makine çevirisi ve daha fazlası gibi birçok başka görevi de yerine getirebilirler. Bu görevleri bir sonraki birimde ele alacağız. + +## 🚀 Zorluk + +LSTM'ler hakkında bazı literatürleri okuyun ve uygulamalarını düşünün: + +- [Grid Uzun Kısa Süreli Bellek](https://arxiv.org/pdf/1507.01526v1.pdf) +- [Göster, Katıl ve Söyle: Görsel Dikkat ile Sinirsel Görüntü Başlığı Üretimi](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## İnceleme & Kendi Kendine Çalışma + +- [LSTM Ağlarını Anlamak](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Christopher Olah tarafından. + +## [Ödev: Defterler](assignment.md) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/16-RNN/assignment.md b/translations/tr/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..a5496d53 --- /dev/null +++ b/translations/tr/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# Görev: Not Defterleri + +Bu derse bağlı not defterlerini (ister PyTorch ister TensorFlow versiyonu) kendi veri kümenizle yeniden çalıştırın, belki de atıf yaparak kullandığınız bir Kaggle veri kümesi. Not defterini kendi bulgularınızı vurgulamak için yeniden yazın. Farklı bir tür veri kümesi deneyin ve bulgularınızı belgelerken, [bu Kaggle yarışması veri kümesi hakkında hava durumu tweetleri](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv) gibi metinler kullanın. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Belgenin orijinal hali, yetkili kaynak olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucu ortaya çıkabilecek yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/tr/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..84718601 --- /dev/null +++ b/translations/tr/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# Üretken ağlar + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Tekrarlayan Sinir Ağları (RNN'ler) ve Long Short Term Memory Cells (LSTM'ler) ile Gated Recurrent Units (GRU'lar) gibi kapalı hücre varyantları, dil modellemesi için bir mekanizma sağladı; çünkü kelime sıralamasını öğrenebilirler ve bir dizideki bir sonraki kelime için tahminlerde bulunabilirler. Bu, RNN'leri **üretken görevler** için kullanmamıza olanak tanır; örneğin sıradan metin oluşturma, makine çevirisi ve hatta görüntü başlığı oluşturma. + +> ✅ Yazarken metin tamamlama gibi üretken görevlerden faydalandığınız tüm zamanları düşünün. Favori uygulamalarınızda RNN'lerin kullanılıp kullanılmadığını görmek için biraz araştırma yapın. + +Önceki biriminde tartıştığımız RNN mimarisinde, her RNN birimi bir sonraki gizli durumu bir çıktı olarak üretmiştir. Ancak, her tekrarlayan birime bir başka çıktı ekleyebiliriz; bu da bize **dizi** (orijinal dizinin uzunluğuna eşit) çıktısı vermemizi sağlar. Ayrıca, her adımda bir giriş kabul etmeyen RNN birimleri kullanabiliriz; sadece bazı başlangıç durumu vektörlerini alır ve ardından bir çıktı dizisi üretebiliriz. + +Bu, aşağıdaki resimde gösterilen farklı sinir mimarilerine olanak tanır: + +![Yaygın tekrarlayan sinir ağı desenlerini gösteren bir resim.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.tr.jpg) + +> Resim [Andrej Karpaty](http://karpathy.github.io/) tarafından [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) başlıklı blog yazısından alınmıştır. + +* **Bir-bir** bir giriş ve bir çıkışı olan geleneksel bir sinir ağıdır. +* **Bir-çok** bir giriş değeri kabul eden ve bir çıktı değeri dizisi üreten üretken bir mimaridir. Örneğin, bir resmi metin olarak tanımlayan bir **görüntü başlığı oluşturma** ağı eğitmek istiyorsak, resmi giriş olarak alabiliriz, bir CNN'den geçirerek gizli durumunu elde edebiliriz ve ardından tekrarlayan bir zincir ile başlık kelimelerini kelime kelime üretebiliriz. +* **Çok-bir** önceki birimde tanımladığımız RNN mimarilerine karşılık gelir, örneğin metin sınıflandırma. +* **Çok-çok**, veya **diziye-dizi** ise **makine çevirisi** gibi görevlerle ilgilidir; burada ilk RNN, giriş dizisinden tüm bilgileri gizli duruma toplar ve başka bir RNN zinciri bu durumu çıktı dizisine açar. + +Bu birimde, metin oluşturmaya yardımcı olan basit üretken modellere odaklanacağız. Kolaylık olması açısından, karakter düzeyinde tokenizasyon kullanacağız. + +Bu RNN'yi adım adım metin üretmesi için eğiteceğiz. Her adımda, `nchars` uzunluğunda bir karakter dizisi alacağız ve ağa her giriş karakteri için bir sonraki çıktı karakterini üretmesini isteyeceğiz: + +!['HELLO' kelimesinin RNN ile üretilmesini gösteren bir örnek resim.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.tr.png) + +Metin oluştururken (çıkarım sırasında), bazı **uyarıcılarla** başlarız; bu, RNN hücrelerinden geçirilerek ara durumunu üretir ve ardından bu durumdan üretim başlar. Bir seferde bir karakter üretiriz ve durumu ve üretilen karakteri bir sonraki RNN hücresine geçirerek bir sonraki karakteri üretiriz; yeterli karakter ürettiğimizdeye kadar devam ederiz. + + + +> Resim yazar tarafından + +## ✍️ Alıştırmalar: Üretken Ağlar + +Aşağıdaki not defterlerinde öğrenmeye devam edin: + +* [PyTorch ile Üretken Ağlar](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [TensorFlow ile Üretken Ağlar](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Yumuşak metin oluşturma ve sıcaklık + +Her RNN hücresinin çıktısı, karakterlerin bir olasılık dağılımıdır. Eğer her zaman en yüksek olasılığa sahip karakteri üretilen metindeki bir sonraki karakter olarak alırsak, metin genellikle aynı karakter dizileri arasında "dönmeye" başlayabilir; bu örnekte olduğu gibi: + +``` +today of the second the company and a second the company ... +``` + +Ancak, bir sonraki karakterin olasılık dağılımına baktığımızda, en yüksek birkaç olasılık arasındaki farkın çok büyük olmayabileceği durumlar vardır; örneğin, bir karakterin olasılığı 0.2, diğerinin 0.19 olabilir. Örneğin, '*play*' dizisinde bir sonraki karakter, ya boşluk ya da **e** (örneğin *player* kelimesinde olduğu gibi) olabilir. + +Bu, daha yüksek olasılığa sahip karakteri seçmenin her zaman "adil" olmadığını sonucuna götürür; çünkü ikinci en yüksek olanı seçmek de anlamlı bir metne yol açabilir. **Olasılık dağılımından** karakterler **örneklemek** daha akıllıcadır. Ayrıca, daha fazla rastgelelik eklemek istiyorsak olasılık dağılımını düzleştirecek bir parametre, **sıcaklık** kullanabiliriz; ya da en yüksek olasılığa sahip karakterlere daha fazla bağlı kalmak istiyorsak daha dik bir hale getirebiliriz. + +Bu yumuşak metin oluşturmanın yukarıda bağlantılı not defterlerinde nasıl uygulandığını keşfedin. + +## Sonuç + +Metin oluşturma kendi başına yararlı olsa da, asıl faydalar, RNN'ler kullanarak bazı başlangıç özellik vektörlerinden metin üretebilme yeteneğinden gelir. Örneğin, metin oluşturma, makine çevirisinin bir parçası olarak kullanılır (bu durumda *encoder*'dan gelen durum vektörü, çevrilen mesajı üretmek veya *decode* etmek için kullanılır) veya bir görüntünün metinsel tanımını oluşturma (bu durumda özellik vektörü CNN çıkarıcısından gelir). + +## 🚀 Zorluk + +Bu konuda Microsoft Learn'da bazı dersler alın + +* Metin Oluşturma ile [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Gözden Geçirme & Kendi Kendine Çalışma + +Bilgilerinizi genişletmek için bazı makaleler + +* Markov Zinciri, LSTM ve GPT-2 ile metin oluşturmanın farklı yaklaşımları: [blog yazısı](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* [Keras belgelerinde](https://keras.io/examples/generative/lstm_character_level_text_generation/) metin oluşturma örneği + +## [Görev](lab/README.md) + +Karakter karakter metin oluşturmanın nasıl yapıldığını gördük. Laboratuvar ortamında, kelime düzeyinde metin oluşturmayı keşfedeceksiniz. + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/tr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..3321c0f6 --- /dev/null +++ b/translations/tr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# RNN'ler ile Kelime Düzeyinde Metin Üretimi + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) içinden Laboratuvar Görevi. + +## Görev + +Bu laboratuvarda, herhangi bir kitabı almanız ve bunu kelime düzeyinde metin üreteci eğitmek için bir veri seti olarak kullanmanız gerekiyor. + +## Veri Seti + +Herhangi bir kitabı kullanmakta özgürsünüz. [Project Gutenberg](https://www.gutenberg.org/) adresinde birçok ücretsiz metin bulabilirsiniz. Örneğin, Lewis Carroll'un [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) kitabına doğrudan bağlantı burada. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/tr/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..00e3e080 --- /dev/null +++ b/translations/tr/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# Dikkat Mekanizmaları ve Transformerlar + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +NLP alanındaki en önemli problemlerden biri **makine çevirisi**dir; bu, Google Translate gibi araçların temelini oluşturan önemli bir görevdir. Bu bölümde, makine çevirisine, daha genel olarak ise herhangi bir *dizi-dizi* görevine (bu göreve **cümle dönüştürme** de denir) odaklanacağız. + +RNN'lerle, dizi-dizi işlemi, bir giriş dizisini gizli bir duruma dönüştüren **kodlayıcı** adındaki bir ağ ile bu gizli durumu çevrilmiş bir sonuca açan **çözücü** adındaki başka bir ağdan oluşan iki tekrarlayan ağ ile gerçekleştirilir. Bu yaklaşımda birkaç problem bulunmaktadır: + +* Kodlayıcı ağın son durumu, bir cümlenin başını hatırlamakta zorlanır, bu da uzun cümleler için modelin kalitesini düşürür. +* Bir dizideki tüm kelimelerin sonuca olan etkisi aynıdır. Ancak gerçekte, giriş dizisindeki belirli kelimeler, sıralı çıktılar üzerinde diğerlerinden daha fazla etkiye sahiptir. + +**Dikkat Mekanizmaları**, RNN'nin her bir çıktı tahmini üzerindeki her giriş vektörünün bağlamsal etkisini ağırlıklandırmanın bir yolunu sunar. Bu, giriş RNN'sinin ara durumları ile çıktı RNN'si arasında kısayollar oluşturarak uygulanır. Bu şekilde, çıktı sembolü yt üretilirken, farklı ağırlık katsayıları αt,i ile tüm giriş gizli durumları hi dikkate alınacaktır. + +![Eklemeli dikkat katmanına sahip bir kodlayıcı/çözücü modelini gösteren resim](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.tr.png) + +> Eklemeli dikkat mekanizmasına sahip kodlayıcı-çözücü modeli [Bahdanau ve diğerleri, 2015](https://arxiv.org/pdf/1409.0473.pdf) tarafından, [bu blog yazısından](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) alıntıdır. + +Dikkat matris {αi,j} belirli giriş kelimelerinin bir çıktı dizisindeki belirli bir kelimenin üretilmesindeki rolünü temsil eder. Aşağıda böyle bir matrisin örneği verilmiştir: + +![Bahdanau - arviz.org'dan alınan RNNsearch-50 tarafından bulunan örnek hizalamayı gösteren resim](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.tr.png) + +> [Bahdanau ve diğerleri, 2015](https://arxiv.org/pdf/1409.0473.pdf) (Şekil 3) + +Dikkat mekanizmaları, günümüz veya yakın dönemdeki NLP'deki en son teknolojinin büyük bir kısmından sorumludur. Ancak dikkatin eklenmesi, model parametrelerinin sayısını büyük ölçüde artırır ve bu da RNN'lerde ölçeklenebilirlik sorunlarına yol açar. RNN'lerin ölçeklenebilirliğinde temel bir kısıtlama, modellerin tekrarlayan doğasının, eğitimi toplu ve paralel hale getirmeyi zorlaştırmasıdır. Bir RNN'de bir dizinin her bir öğesi, ardışık sırayla işlenmelidir; bu da kolayca paralel hale getirilemeyeceği anlamına gelir. + +![Dikkat ile Kodlayıcı Çözücü](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> [Google Blogu](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) kaynaklı şekil + +Dikkat mekanizmalarının benimsenmesi ve bu kısıtlamanın birleşimi, günümüzde bildiğimiz ve kullandığımız, BERT'ten Open-GPT3'e kadar uzanan en son teknoloji Transformer Modellerinin yaratılmasına yol açtı. + +## Transformer Modelleri + +Transformerların arkasındaki ana fikirlerden biri, RNN'lerin ardışık doğasından kaçınmak ve eğitimi sırasında paralel hale getirilebilen bir model oluşturmaktır. Bu, iki fikrin uygulanmasıyla gerçekleştirilir: + +* konumsal kodlama +* RNN'ler (veya CNN'ler) yerine desenleri yakalamak için kendine dikkat mekanizmasını kullanmak (bu nedenle transformerları tanıtan makalenin adı *[Dikkat, ihtiyacınız olan her şey](https://arxiv.org/abs/1706.03762)*dir) + +### Konumsal Kodlama/Gömme + +Konumsal kodlamanın temel fikri şudur: +1. RNN'ler kullanırken, tokenların göreceli konumu adım sayısı ile temsil edilir ve bu nedenle açıkça temsil edilmesine gerek yoktur. +2. Ancak, dikkate geçtiğimizde, bir dizideki tokenların göreceli konumlarını bilmemiz gerekir. +3. Konumsal kodlama almak için, token dizimizi dizideki token konumları dizisi ile artırırız (yani, 0,1, ... sayılar dizisi). +4. Daha sonra token konumunu bir token gömme vektörü ile karıştırırız. Konumu (tam sayı) bir vektöre dönüştürmek için farklı yaklaşımlar kullanabiliriz: + +* Token gömme ile benzer şekilde eğitilebilir gömme. Burada dikkate aldığımız yaklaşım budur. Hem tokenlar hem de konumları üzerinde gömme katmanları uygularız ve sonuçta aynı boyutlarda gömme vektörleri elde ederiz, bunları toplarız. +* Orijinal makalede önerilen sabit konum kodlama fonksiyonu. + + + +> Yazarın resmi + +Konumsal gömme ile elde ettiğimiz sonuç, hem orijinal tokenı hem de dizideki konumunu gömer. + +### Çoklu Başlık Kendine Dikkat + +Sonraki adım, dizimizdeki bazı desenleri yakalamaktır. Bunu yapmak için, transformerlar **kendine dikkat** mekanizmasını kullanır; bu, esasen aynı diziyi girdi ve çıktı olarak uygulanan dikkattir. Kendine dikkati uygulamak, cümle içindeki **bağlamı** dikkate almamızı sağlar ve hangi kelimelerin birbiriyle ilişkili olduğunu görmemize olanak tanır. Örneğin, hangi kelimelerin *o* gibi referanslarla ifade edildiğini görmemizi sağlar ve ayrıca bağlamı dikkate alır: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.tr.png) + +> Resim [Google Blogu](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) kaynaklı + +Transformerlarda, ağın farklı bağımlılık türlerini yakalama gücünü artırmak için **Çoklu Başlık Dikkati** kullanılır; örneğin, uzun vadeli ve kısa vadeli kelime ilişkileri, karşılıklı referanslar vs. + +[TensorFlow Not Defteri](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) transformer katmanlarının uygulanması hakkında daha fazla detay içerir. + +### Kodlayıcı-Çözücü Dikkati + +Transformerlarda, dikkat iki yerde kullanılır: + +* Kendine dikkat kullanarak giriş metnindeki desenleri yakalamak için +* Dizi çevirisi gerçekleştirmek için - bu, kodlayıcı ve çözücü arasındaki dikkat katmanıdır. + +Kodlayıcı-çözücü dikkati, bu bölümün başında açıklandığı gibi RNN'lerde kullanılan dikkat mekanizmasına çok benzer. Bu animasyonlu diyagram, kodlayıcı-çözücü dikkatin rolünü açıklar. + +![Transformer modellerinde değerlendirmelerin nasıl yapıldığını gösteren animasyonlu GIF.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Her bir giriş konumu bağımsız olarak her bir çıkış konumuna eşlendiğinden, transformerlar RNN'lerden daha iyi paralelleşebilir; bu da çok daha büyük ve daha etkili dil modellerinin oluşmasını sağlar. Her bir dikkat başlığı, kelimeler arasındaki farklı ilişkileri öğrenmek için kullanılabilir ve bu da doğal dil işleme görevlerini geliştirir. + +## BERT + +**BERT** (Transformerlardan İkili Kodlayıcı Temsilleri), *BERT-base* için 12 katman ve *BERT-large* için 24 katman içeren çok büyük bir çok katmanlı transformer ağıdır. Model, öncelikle geniş bir metin veri kümesi (WikiPedia + kitaplar) üzerinde denetimsiz eğitim (bir cümlede maskelenmiş kelimeleri tahmin etme) kullanılarak önceden eğitilir. Ön eğitim sırasında model, daha sonra ince ayar ile diğer veri kümeleri ile kullanılabilecek önemli düzeyde dil anlayışı kazanır. Bu süreç **aktarım öğrenimi** olarak adlandırılır. + +![http://jalammar.github.io/illustrated-bert/ adresinden bir resim](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.tr.png) + +> Resim [kaynak](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Alıştırmalar: Transformerlar + +Aşağıdaki not defterlerinde öğreniminize devam edin: + +* [PyTorch'da Transformerlar](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [TensorFlow'da Transformerlar](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Sonuç + +Bu derste, NLP araç kutusundaki tüm temel araçlar olan Transformerlar ve Dikkat Mekanizmaları hakkında bilgi edindiniz. BERT, DistilBERT, BigBird, OpenGPT3 ve daha fazlası dahil olmak üzere birçok Transformer mimarisi varyasyonu bulunmaktadır ve bunlar ince ayar yapılabilir. [HuggingFace paketi](https://github.com/huggingface/) bu mimarilerin çoğunu hem PyTorch hem de TensorFlow ile eğitmek için bir depo sağlar. + +## 🚀 Zorluk + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Gözden Geçirme & Kendi Kendine Çalışma + +* [Blog yazısı](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), klasik [Dikkat, ihtiyacınız olan her şey](https://arxiv.org/abs/1706.03762) makalesini açıklamaktadır. +* Transformerlar hakkında detaylı mimariyi açıklayan [bir dizi blog yazısı](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452). + +## [Görev](assignment.md) + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan dolayı sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/18-Transformers/assignment.md b/translations/tr/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..2cde6f86 --- /dev/null +++ b/translations/tr/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# Görev: Transformers + +HuggingFace üzerinde Transformers ile deney yapın! Web sitelerinde mevcut olan çeşitli modellerle çalışmak için sağladıkları bazı betikleri deneyin: https://huggingface.co/docs/transformers/run_scripts. Onların veri setlerinden birini deneyin, ardından bu müfredattan veya Kaggle'dan kendi veri setinizi içe aktarın ve ilginç metinler üretebilir misiniz görün. Bulgularınızı içeren bir not defteri oluşturun. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba sarf etsek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, ana dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkabilecek herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/19-NER/README.md b/translations/tr/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..690ba4d6 --- /dev/null +++ b/translations/tr/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,85 @@ +# Adlandırılmış Varlık Tanıma + +Şimdiye kadar, çoğunlukla tek bir NLP görevine - sınıflandırmaya odaklandık. Ancak, sinir ağları ile gerçekleştirilebilecek başka NLP görevleri de vardır. Bu görevlerden biri **[Adlandırılmış Varlık Tanıma](https://wikipedia.org/wiki/Named-entity_recognition)** (NER) olup, metin içindeki belirli varlıkları tanımakla ilgilidir; bunlar yerler, kişi adları, tarih-saat aralıkları, kimyasal formüller ve benzeri olabilir. + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## NER Kullanım Örneği + +Diyelim ki, Amazon Alexa veya Google Asistan'a benzer bir doğal dil sohbet botu geliştirmek istiyorsunuz. Akıllı sohbet botlarının çalışma şekli, kullanıcının ne istediğini *anlamak* için girdi cümlesi üzerinde metin sınıflandırması yapmaktır. Bu sınıflandırmanın sonucu, bir sohbet botunun ne yapması gerektiğini belirleyen **niyet** olarak adlandırılır. + +Bot NER + +> Yazar tarafından sağlanan görsel + +Ancak, bir kullanıcı ifadenin bir parçası olarak bazı parametreler verebilir. Örneğin, hava durumu sorduğunda, bir konum veya tarih belirtebilir. Bir bot, bu varlıkları anlamalı ve eylemi gerçekleştirmeden önce parametre alanlarını uygun şekilde doldurmalıdır. İşte NER tam burada devreye giriyor. + +> ✅ Başka bir örnek, [bilimsel tıbbi makaleleri analiz etmek](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) olabilir. Dikkat etmemiz gereken ana şeylerden biri, hastalıklar ve tıbbi maddeler gibi belirli tıbbi terimlerdir. Küçük bir hastalık sayısı muhtemelen alt dize araması kullanılarak çıkarılabilirken, kimyasal bileşikler ve ilaç adları gibi daha karmaşık varlıklar, daha karmaşık bir yaklaşım gerektirir. + +## NER'nin Token Sınıflandırması Olarak + +NER modelleri esasen **token sınıflandırma modelleridir**, çünkü girdi tokenlerinden her biri için bunun bir varlığa ait olup olmadığını belirlememiz gerekiyor ve eğer aitse - hangi varlık sınıfına ait olduğunu. + +Aşağıdaki makale başlığını düşünün: + +**Triküspit kapak yetmezliği** ve **lityum karbonat** **zehirlenmesi** bir yeni doğan bebekte. + +Buradaki varlıklar şunlardır: + +* Triküspit kapak yetmezliği bir hastalıktır (`DIS`) +* Lityum karbonat bir kimyasal maddedir (`CHEM`) +* Zehirlenme de bir hastalıktır (`DIS`) + +Bir varlığın birkaç tokenı kapsayabileceğini unutmayın. Ve, bu durumda olduğu gibi, iki ardışık varlık arasında ayrım yapmamız gerekiyor. Bu nedenle, her varlık için iki sınıf kullanmak yaygındır - birincisi varlığın ilk tokenını belirten (genellikle `B-` ön eki kullanılır, **b**aşlangıç için), diğeri ise bir varlığın devamı (`I-`, **i**ç token için). Ayrıca, tüm **d**iğer tokenları temsil etmek için `O` sınıfını da kullanırız. Bu tür token etiketleme, [BIO etiketleme](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (veya IOB) olarak adlandırılır. Etiketlendiğinde, başlığımız şu şekilde görünecektir: + +Token | Etiket +------|----- +Triküspit | B-DIS +kapak | I-DIS +yetmezliği | I-DIS +ve | O +lityum | B-CHEM +karbonat | I-CHEM +zehirlenmesi | B-DIS +bir | O +yeni | O +doğan | O +bebek | O +. | O + +Tokenlar ve sınıflar arasında bire bir karşılık kurmamız gerektiğinden, bu resimden sağdaki **çoktan-çoğa** sinir ağı modelini eğitebiliriz: + +![Yaygın tekrar eden sinir ağı desenlerini gösteren bir görüntü.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.tr.jpg) + +> *Görsel [bu blog yazısından](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) [Andrej Karpathy](http://karpathy.github.io/) tarafından alınmıştır. NER token sınıflandırma modelleri, bu resimdeki en sağdaki ağ mimarisine karşılık gelir.* + +## NER Modellerinin Eğitimi + +Bir NER modeli esasen bir token sınıflandırma modeli olduğundan, bu görev için zaten aşina olduğumuz RNN'leri kullanabiliriz. Bu durumda, her tekrarlayan ağ bloğu token kimliğini döndürecektir. Aşağıdaki örnek not defteri, token sınıflandırması için LSTM nasıl eğitileceğini göstermektedir. + +## ✍️ Örnek Not Defterleri: NER + +Aşağıdaki not defterinde öğreniminize devam edin: + +* [TensorFlow ile NER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Sonuç + +Bir NER modeli, **token sınıflandırma modeli**dir, bu da token sınıflandırması yapmak için kullanılabileceği anlamına gelir. Bu, metin içindeki belirli varlıkları tanımaya yardımcı olan oldukça yaygın bir NLP görevidir; bunlar yerler, adlar, tarihler ve daha fazlasını içerir. + +## 🚀 Zorluk + +Aşağıda bağlantısı verilen ödevi tamamlayarak tıbbi terimler için bir adlandırılmış varlık tanıma modeli eğitin, ardından bunu farklı bir veri setinde deneyin. + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Gözden Geçirme & Kendi Kendine Çalışma + +[Tekrarlayan Sinir Ağlarının Aşırı Etkili Olması](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) başlıklı blogu okuyun ve o makaledeki Daha Fazla Okuma bölümünü takip ederek bilginizi derinleştirin. + +## [Ödev](lab/README.md) + +Bu dersteki ödevde, bir tıbbi varlık tanıma modeli eğitmeniz gerekecek. Bu derste açıklanan LSTM modelini eğitmeye başlayabilir ve ardından BERT dönüştürücü modelini kullanmaya geçebilirsiniz. Tüm detayları öğrenmek için [talimatları](lab/README.md) okuyun. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/19-NER/lab/README.md b/translations/tr/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..6ecd225f --- /dev/null +++ b/translations/tr/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) için Laboratuvar Görevi. + +## Görev + +Bu laboratuvar çalışmasında, tıbbi terimler için adlandırılmış varlık tanıma modeli eğitmeniz gerekiyor. + +## Veri Seti + +NER modelini eğitmek için, tıbbi varlıklarla düzgün bir şekilde etiketlenmiş bir veri setine ihtiyacımız var. [BC5CDR veri seti](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) 1500'den fazla makaleden etiketlenmiş hastalıklar ve kimyasallar içeren varlıklar içerir. Veri setini indirmek için web sitelerinde kayıt olmanız gerekmektedir. + +BC5CDR Veri Seti şu şekilde görünmektedir: + +``` +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 +... +``` + +Bu veri setinde, ilk iki satırda makale başlığı ve özeti bulunmakta, ardından başlık+özet bloğu içinde başlangıç ve bitiş konumlarıyla birlikte bireysel varlıklar yer almaktadır. Varlık türüne ek olarak, bu varlığın belirli bir tıbbi ontolojideki ontoloji kimliğini de alırsınız. + +Bunu BIO kodlamasına dönüştürmek için bazı Python kodları yazmanız gerekecek. + +## Ağ + +NER için ilk deneme, ders sırasında gördüğünüz gibi LSTM ağı kullanılarak yapılabilir. Ancak, NLP görevlerinde, [transformer mimarisi](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) ve özellikle [BERT dil modelleri](https://en.wikipedia.org/wiki/BERT_(language_model)) çok daha iyi sonuçlar göstermektedir. Önceden eğitilmiş BERT modelleri, bir dilin genel yapısını anlamakta ve belirli görevler için nispeten küçük veri setleri ve hesaplama maliyetleri ile ince ayar yapılabilmektedir. + +Tıbbi senaryoya NER uygulamayı planladığımız için, tıbbi metinler üzerinde eğitilmiş BERT modelini kullanmak mantıklıdır. Microsoft Research, [PubMedBERT][PubMedBERT] ([yayın][PubMedBERT-Pub]) adında önceden eğitilmiş bir model yayınladı; bu model, [PubMed](https://pubmed.ncbi.nlm.nih.gov/) deposundan alınan metinlerle ince ayar yapılmıştır. + +Transformer modellerini eğitmek için *de facto* standart, [Hugging Face Transformers](https://huggingface.co/) kütüphanesidir. Ayrıca, PubMedBERT de dahil olmak üzere, topluluk tarafından bakım yapılan önceden eğitilmiş modellerin bir deposunu içerir. Bu modeli yüklemek ve kullanmak için sadece birkaç satır kod yazmamız yeterlidir: + +```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) +``` + +Bu, girdi metnini token'lara bölebilen `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` nesnesini verir. Veri setini BIO formatına dönüştürmeniz gerekecek ve PubMedBERT tokenizasyonunu dikkate almanız önemlidir. İlham almak için [bu Python kodu parçasını](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) kullanabilirsiniz. + +## Özet + +Bu görev, doğal dil metinleri hakkında daha fazla içgörü elde etmek istiyorsanız muhtemelen karşılaşacağınız gerçek bir göreve çok yakındır. Bizim durumumuzda, eğitilmiş modelimizi [COVID ile ilgili makalelerin veri setine](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) uygulayabilir ve hangi içgörüleri elde edebileceğimizi görebiliriz. [Bu blog yazısı](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) ve [bu makale](https://www.mdpi.com/2504-2289/6/1/4), NER kullanarak bu makaleler koleksiyonu üzerinde yapılabilecek araştırmaları tanımlamaktadır. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/tr/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..525a4a68 --- /dev/null +++ b/translations/tr/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,55 @@ +# Önceden Eğitilmiş Büyük Dil Modelleri + +Önceki görevlerimizde, etiketlenmiş veri seti kullanarak belirli bir görevi yerine getirmek için bir sinir ağı eğitiyorduk. BERT gibi büyük dönüştürücü modellerle, dil modellemesini kendi kendine denetimli bir şekilde kullanarak bir dil modeli oluşturuyoruz; bu model daha sonra belirli bir alt görev için daha fazla alan spesifik eğitimi ile özelleştiriliyor. Ancak, büyük dil modellerinin herhangi bir alan spesifik eğitimi olmadan birçok görevi de çözebileceği gösterilmiştir. Bunu yapabilen modeller ailesine **GPT** denir: Üretken Önceden Eğitilmiş Dönüştürücü. + +## [Öncesi ders sınavı](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Metin Üretimi ve Perpleksite + +Bir sinir ağının alt görev eğitimi olmadan genel görevleri yerine getirebilmesi fikri, [Dil Modelleri Denetimsiz Çoklu Görev Öğrenicileridir](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) makalesinde sunulmuştur. Ana fikir, birçok diğer görevin **metin üretimi** kullanılarak modellenebileceğidir; çünkü metni anlamak, esasen onu üretebilme yeteneği anlamına gelir. Model, insan bilgisini kapsayan devasa bir metin miktarı üzerinde eğitildiğinden, çeşitli konularda da bilgi sahibi olur. + +> Metni anlamak ve üretebilmek, çevremizdeki dünya hakkında bir şeyler bilmekle de ilgilidir. İnsanlar da büyük ölçüde okuyarak öğrenirler ve GPT ağı bu açıdan benzerlik gösterir. + +Metin üretim ağları, bir sonraki kelimenin olasılığını $$P(w_N)$$ tahmin ederek çalışır. Ancak, bir sonraki kelimenin koşulsuz olasılığı, bu kelimenin metin koleksiyonundaki sıklığına eşittir. GPT, önceki kelimeleri göz önünde bulundurarak bir sonraki kelimenin **koşullu olasılığını** bize verebilir: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Olasılıklar hakkında daha fazla bilgi için [Veri Bilimi Başlangıç Curriculum'umuza](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) göz atabilirsiniz. + +Dil üreten modelin kalitesi **perpleksite** ile tanımlanabilir. Bu, görev spesifik veri setine ihtiyaç duymadan model kalitesini ölçmemizi sağlayan içsel bir metriktir. Bir cümlenin *olasılığı* kavramına dayanmaktadır - model, gerçek olma olasılığı yüksek olan bir cümleye yüksek olasılık atar (yani model bu cümleye **perpleks** değildir) ve daha az anlam ifade eden cümlelere düşük olasılık atar (örneğin, *Bunu yapabilir mi?*). Modelimize gerçek metin koleksiyonundan cümleler verdiğimizde, bu cümlelerin yüksek olasılığa ve düşük **perpleksiteye** sahip olmasını bekleriz. Matematiksel olarak, test setinin normalize edilmiş ters olasılığı olarak tanımlanır: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Metin üretimi ile deney yapabilirsiniz [Hugging Face'den GPT destekli metin editörü](https://transformer.huggingface.co/doc/gpt2-large)**. Bu editörde, metninizi yazmaya başlarsınız ve **[TAB]** tuşuna basmak size birkaç tamamlama seçeneği sunar. Eğer bunlar çok kısa ise veya memnun kalmazsanız - tekrar [TAB] tuşuna basın, daha fazla seçenek elde edersiniz; bunlar arasında daha uzun metin parçaları da bulunur. + +## GPT Bir Ailedir + +GPT, tek bir model değil, [OpenAI](https://openai.com) tarafından geliştirilen ve eğitilen modellerin bir koleksiyonudur. + +GPT modelleri altında, şunlar bulunmaktadır: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| 1.5 milyar parametreye kadar dil modeli. | 175 milyar parametreye kadar dil modeli | 100T parametre ve hem görsel hem de metin girdilerini kabul edip metin çıktısı verir. | + +GPT-3 ve GPT-4 modelleri [Microsoft Azure'dan bilişsel bir hizmet olarak](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) ve [OpenAI API'si](https://openai.com/api/) olarak mevcuttur. + +## İstek Mühendisliği + +GPT, dil ve kodu anlamak için geniş veri hacimlerinde eğitildiğinden, girdilere (isteklere) yanıt olarak çıktılar sağlar. İstekler, bir modelin tamamlayacağı görevler hakkında talimatlar veren GPT girdileri veya sorgularıdır. İstenilen bir sonucu elde etmek için, doğru kelimeleri, formatları, ifadeleri veya hatta sembolleri seçmek gibi en etkili isteğe ihtiyacınız vardır. Bu yaklaşım [İstek Mühendisliği](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) olarak adlandırılır. + +[Bu belgede](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) istek mühendisliği hakkında daha fazla bilgi bulabilirsiniz. + +## ✍️ Örnek Not Defteri: [OpenAI-GPT ile Oynama](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Aşağıdaki not defterlerinde öğrenmeye devam edin: + +* [OpenAI-GPT ve Hugging Face Dönüştürücüleri ile metin üretimi](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Sonuç + +Yeni genel önceden eğitilmiş dil modelleri sadece dil yapısını modellemekle kalmaz, aynı zamanda büyük miktarda doğal dil içerir. Bu nedenle, bazı NLP görevlerini sıfırdan veya az sayıda örnekle çözmek için etkili bir şekilde kullanılabilirler. + +## [Ders sonrası sınav](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa önem vermemize rağmen, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Belgenin orijinal metni, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/5-NLP/README.md b/translations/tr/lessons/5-NLP/README.md new file mode 100644 index 00000000..87e30988 --- /dev/null +++ b/translations/tr/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# Doğal Dil İşleme + +![NLP görevlerinin özetini gösteren bir doodle](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.tr.png) + +Bu bölümde, **Doğal Dil İşleme (NLP)** ile ilgili görevleri ele almak için Sinir Ağlarını kullanmaya odaklanacağız. Bilgisayarların çözmesini istediğimiz birçok NLP sorunu bulunmaktadır: + +* **Metin sınıflandırması**, metin dizileri ile ilgili tipik bir sınıflandırma problemidir. Örnekler arasında e-posta mesajlarını spam ve spam olmayan olarak sınıflandırmak veya makaleleri spor, iş, siyaset vb. kategorilere ayırmak yer alır. Ayrıca, sohbet botları geliştirirken, genellikle bir kullanıcının ne demek istediğini anlamamız gerekir; bu durumda **niyet sınıflandırması** ile ilgileniyoruz. Niyet sınıflandırmasında genellikle birçok kategori ile başa çıkmamız gerekir. +* **Duygu analizi**, bir cümlenin anlamının ne kadar olumlu/olumsuz olduğunu karşılık gelen bir sayıya (bir duyguya) atfetmemiz gereken tipik bir regresyon problemidir. Duygu analizinin daha gelişmiş bir versiyonu, cümlenin tamamına değil, farklı kısımlarına (aspektlere) duygu atfettiğimiz **aspekt bazlı duygu analizi** (ABSA) olarak bilinir; örneğin, *Bu restoranda mutfağı beğendim, ama atmosfer berbat*. +* **Adlandırılmış Varlık Tanıma** (NER), metinden belirli varlıkları çıkarma problemine atıfta bulunur. Örneğin, *Yarın Paris'e uçmam gerekiyor* ifadesinde *yarın* kelimesinin TARİH'e, *Paris* kelimesinin ise LOKASYON'a karşılık geldiğini anlamamız gerekebilir. +* **Anahtar kelime çıkarımı**, NER'ye benzer, ancak cümlenin anlamı için önemli kelimeleri otomatik olarak, belirli varlık türleri için ön eğitim yapmadan çıkarmamız gerekir. +* **Metin kümeleme**, benzer cümleleri bir araya gruplamak istediğimizde yararlı olabilir; örneğin, teknik destek konuşmalarındaki benzer talepler. +* **Soru yanıtlama**, bir modelin belirli bir soruyu yanıtlayabilme yeteneğine atıfta bulunur. Model, bir metin parçası ve bir soru alır ve sorunun yanıtının bulunduğu metindeki yeri sağlaması gerekir (veya bazen yanıt metnini oluşturması). +* **Metin Üretimi**, bir modelin yeni metin oluşturabilme yeteneğidir. Bu, bazı *metin istemleri* temelinde bir sonraki harf/kelimeyi tahmin eden bir sınıflandırma görevi olarak düşünülebilir. GPT-3 gibi gelişmiş metin üretim modelleri, [istek programlama](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) veya [istek mühendisliği](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) gibi bir teknik kullanarak sınıflandırma gibi diğer NLP görevlerini çözebilir. +* **Metin özetleme**, bir bilgisayarın uzun metni "okumasını" ve birkaç cümlede özetlemesini istediğimiz bir tekniktir. +* **Makine çevirisi**, bir dilde metin anlayışının ve diğer bir dilde metin üretiminin bir kombinasyonu olarak görülebilir. + +Başlangıçta, çoğu NLP görevi geleneksel yöntemlerle, örneğin dilbilgileri kullanılarak çözülüyordu. Örneğin, makine çevirisinde, başlangıç cümlesini bir sözdizim ağaçına dönüştürmek için ayrıştırıcılar kullanılıyordu, ardından cümlenin anlamını temsil etmek için daha yüksek düzeyde anlamsal yapılar çıkarılıyordu ve bu anlam ile hedef dilin dilbilgisine dayanarak sonuç üretiliyordu. Günümüzde birçok NLP görevi, sinir ağları kullanılarak daha etkili bir şekilde çözülmektedir. + +> Birçok klasik NLP yöntemi, [Doğal Dil İşleme Araç Takımı (NLTK)](https://www.nltk.org) Python kütüphanesinde uygulanmıştır. Farklı NLP görevlerinin NLTK kullanılarak nasıl çözülebileceğini kapsayan harika bir [NLTK Kitabı](https://www.nltk.org/book/) çevrimiçi olarak mevcuttur. + +Kursumuzda, genellikle NLP için Sinir Ağlarını kullanmaya odaklanacağız ve gerektiğinde NLTK kullanacağız. + +Daha önce, sinir ağlarını tablo verileri ve görüntülerle başa çıkmak için kullanmayı öğrendik. Bu veri türleri ile metin arasındaki ana fark, metnin değişken uzunlukta bir dizi olmasıdır; oysa görüntüler durumunda girdi boyutu önceden bilinir. Konvolüsyonel ağlar girdi verilerinden kalıpları çıkarabilirken, metindeki kalıplar daha karmaşıktır. Örneğin, birçok kelime için öznenin olumsuzluğunun ayrılmasının rastgele olması mümkündür (örneğin, *Portakalları sevmiyorum*, vs. *O büyük renkli lezzetli portakalları sevmiyorum*), ve bu hala bir kalıp olarak yorumlanmalıdır. Bu nedenle, dili ele almak için *tekrarlayan ağlar* ve *dönüştürücüler* gibi yeni sinir ağı türlerini tanıtmamız gerekir. + +## Kütüphaneleri Yükle + +Bu kursu çalıştırmak için yerel Python yüklemesi kullanıyorsanız, NLP için gerekli tüm kütüphaneleri aşağıdaki komutları kullanarak yüklemeniz gerekebilir: + +**PyTorch için** +```bash +pip install -r requirements-torch.txt +``` +**TensorFlow için** +```bash +pip install -r requirements-tf.txt +``` + +> TensorFlow ile NLP'yi [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) üzerinde deneyebilirsiniz. + +## GPU Uyarısı + +Bu bölümde, bazı örneklerde oldukça büyük modelleri eğiteceğiz. +* **GPU Destekli Bilgisayar Kullanın**: Büyük modellerle çalışırken bekleme sürelerini azaltmak için not defterlerinizi GPU destekli bir bilgisayarda çalıştırmanız önerilir. +* **GPU Bellek Kısıtlamaları**: Bir GPU'da çalışmak, özellikle büyük modelleri eğitirken GPU belleğinin tükenmesi durumlarına yol açabilir. +* **GPU Bellek Tüketimi**: Eğitim sırasında tüketilen GPU belleği miktarı, minibatch boyutu gibi çeşitli faktörlere bağlıdır. +* **Minibatch Boyutunu Küçültün**: GPU bellek sorunlarıyla karşılaşırsanız, kodunuzda minibatch boyutunu azaltmayı düşünebilirsiniz. +* **TensorFlow GPU Bellek Salımı**: Eski TensorFlow sürümleri, bir Python çekirdeği içinde birden fazla modeli eğitirken GPU belleğini doğru bir şekilde serbest bırakmayabilir. GPU bellek kullanımını etkili bir şekilde yönetmek için TensorFlow'u yalnızca gerektiğinde GPU belleği ayıracak şekilde yapılandırabilirsiniz. +* **Kod Dahil Etme**: TensorFlow'un GPU bellek tahsisini yalnızca gerektiğinde artırması için not defterlerinize aşağıdaki kodu ekleyin: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Klasik ML perspektifinden NLP hakkında daha fazla bilgi edinmek isterseniz, [bu dersler dizisine](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) göz atın. + +## Bu Bölümde +Bu bölümde şunları öğreneceğiz: + +* [Metni tensörler olarak temsil etme](13-TextRep/README.md) +* [Kelime Gömme](14-Emdeddings/README.md) +* [Dil Modelleme](15-LanguageModeling/README.md) +* [Tekrarlayan Sinir Ağları](16-RNN/README.md) +* [Üretken Ağlar](17-GenerativeNetworks/README.md) +* [Dönüştürücüler](18-Transformers/README.md) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Yerel dilindeki orijinal belge, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/tr/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..ba70c92b --- /dev/null +++ b/translations/tr/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# Genetik Algoritmalar + +## [Ders öncesi quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Genetik Algoritmalar** (GA), bir **evrimsel yaklaşım** temelinde yapay zeka (AI) için geliştirilmiş bir yöntemdir; burada bir popülasyonun evrim yöntemleri, belirli bir problem için optimal bir çözüm elde etmek amacıyla kullanılır. İlk olarak 1975 yılında [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland) tarafından önerilmiştir. + +Genetik Algoritmalar aşağıdaki fikirlere dayanır: + +* Problemin geçerli çözümleri **genler** olarak temsil edilebilir +* **Çaprazlama** iki çözümü bir araya getirerek yeni bir geçerli çözüm elde etmemizi sağlar +* **Seçim**, bazı **uygunluk fonksiyonu** kullanarak daha optimal çözümleri seçmek için kullanılır +* **Mutasyonlar**, optimizasyonu istikrarsızlaştırmak ve yerel minimumdan çıkmamızı sağlamak için tanıtılır + +Bir Genetik Algoritma uygulamak istiyorsanız, aşağıdakilere ihtiyacınız var: + +* Problemin çözümlerini **genler** g∈Γ kullanarak kodlama yöntemini bulmak +* Genler kümesi Γ üzerinde **uygunluk fonksiyonu** fit: Γ→**R** tanımlamak. Daha küçük fonksiyon değerleri, daha iyi çözümlerle ilişkilidir. +* İki geni bir araya getirerek yeni bir geçerli çözüm elde etmek için **çaprazlama** mekanizmasını tanımlamak crossover: Γ2→Γ. +* **Mutasyon** mekanizmasını tanımlamak mutate: Γ→Γ. + +Birçok durumda, çaprazlama ve mutasyon, genleri sayısal diziler veya bit vektörleri olarak manipüle etmek için oldukça basit algoritmalardır. + +Genetik algoritmanın özel uygulaması duruma göre değişiklik gösterebilir, ancak genel yapı şu şekildedir: + +1. Başlangıç popülasyonu G⊂Γ seçin +2. Bu adımda gerçekleştirilecek işlemlerden birini rastgele seçin: çaprazlama veya mutasyon +3. **Çaprazlama**: + * Rastgele iki gen g1, g2 ∈ G seçin + * Çaprazlama g=crossover(g1,g2) hesaplayın + * Eğer fit(g)1) veya fit(g)2) ise, popülasyondaki karşılık gelen geni g ile değiştirin. +4. **Mutasyon** - rastgele bir gen g∈G seçin ve onu mutate(g) ile değiştirin +5. Yeterince küçük bir fit değeri elde edene kadar veya adım sayısı sınırına ulaşana kadar 2. adımdan tekrarlayın. + +## Tipik Görevler + +Genetik Algoritmalar tarafından genellikle çözülen görevler şunlardır: + +1. Program optimizasyonu +1. Optimal paketleme +1. Optimal kesme +1. Kapsamlı aramanın hızlandırılması + +## ✍️ Alıştırmalar: Genetik Algoritmalar + +Öğreniminizi aşağıdaki defterlerde devam ettirin: + +Genetik Algoritmaların kullanımına dair iki örnek görmek için [bu deftere](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) gidin: + +1. Hazine adaletli paylaşımı +1. 8 Kraliçe Problemi + +## Sonuç + +Genetik Algoritmalar, lojistik ve arama problemleri dahil birçok problemi çözmek için kullanılmaktadır. Bu alan, Psikoloji ve Bilgisayar Bilimi konularını birleştiren araştırmalardan ilham almıştır. + +## 🚀 Meydan Okuma + +"Genetik algoritmalar uygulaması kolaydır, ancak davranışlarını anlamak zordur." [kaynak](https://wikipedia.org/wiki/Genetic_algorithm) Bir Sudoku bulmacasını çözmek gibi bir genetik algoritma uygulaması bulmak için araştırma yapın ve nasıl çalıştığını bir taslak veya akış diyagramı olarak açıklayın. + +## [Ders sonrası quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Gözden Geçirme & Kendi Kendine Çalışma + +Bilgisayarların genetik algoritmalarla eğitilmiş sinir ağları kullanarak Super Mario oynamayı nasıl öğrenebileceği hakkında konuşan [bu harika videoyu](https://www.youtube.com/watch?v=qv6UVOQ0F44) izleyin. Bilgisayarların böyle oyunlar oynamayı öğrenmesi hakkında daha fazla bilgi edineceğiz [bir sonraki bölümde](../22-DeepRL/README.md). + +## [Ödev: Diophantine Denklemi](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Amacınız, tam sayı kökleri olan **Diophantine denklemi** olarak bilinen bir denklemi çözmektir. Örneğin, a+2b+3c+4d=30 denklemini düşünün. Bu denklemi sağlayan tam sayı köklerini bulmanız gerekiyor. + +*Bu ödev [bu yazıdan](https://habr.com/post/128704/) ilham alınmıştır.* + +İpuçları: + +1. Köklerin [0;30] aralığında olduğunu düşünebilirsiniz +1. Bir gen olarak, kök değerleri listesini kullanmayı düşünün + +[Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) dosyasını başlangıç noktası olarak kullanın. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Belgenin orijinal hali, otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/6-Other/22-DeepRL/README.md b/translations/tr/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..a1f7858d --- /dev/null +++ b/translations/tr/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# Derin Pekiştirmeli Öğrenme + +Pekiştirmeli öğrenme (RL), denetimli öğrenme ve denetimsiz öğrenme ile birlikte temel makine öğrenimi paradigmalardan biri olarak görülmektedir. Denetimli öğrenmede bilinen sonuçlara sahip bir veri setine dayanırken, RL **yaparak öğrenme** temellidir. Örneğin, bir bilgisayar oyunu ile ilk kez karşılaştığımızda, kuralları bilmeden oynamaya başlarız ve kısa süre içinde oynama ve davranışımızı ayarlama süreci sayesinde becerilerimizi geliştirmeye başlarız. + +## [Ön ders anketi](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +RL gerçekleştirmek için şunlara ihtiyacımız var: + +* Oyun kurallarını belirleyen bir **çevre** veya **simülatör**. Simülatörde deneyleri gerçekleştirebilmeli ve sonuçları gözlemleyebilmeliyiz. +* Deneyimizin ne kadar başarılı olduğunu gösteren bir **ödül fonksiyonu**. Bir bilgisayar oyunu oynamayı öğrenme durumunda, ödül nihai puanımız olur. + +Ödül fonksiyonuna dayanarak, davranışımızı ayarlayıp becerilerimizi geliştirmeliyiz, böylece bir sonraki oyunumuzda daha iyi oynayabiliriz. Diğer makine öğrenimi türleri ile RL arasındaki ana fark, RL'de oyunu bitirene kadar kazandığımızı veya kaybettiğimizi bilmememizdir. Bu nedenle, belirli bir hamlenin iyi mi kötü mü olduğunu söyleyemeyiz - yalnızca oyunun sonunda bir ödül alırız. + +RL sırasında genellikle birçok deney gerçekleştiririz. Her deneyde, şimdiye kadar öğrendiğimiz optimal stratejiyi takip etme (**sömürü**) ve yeni olası durumları keşfetme (**keşif**) arasında denge kurmamız gerekir. + +## OpenAI Gym + +RL için harika bir araç olan [OpenAI Gym](https://gym.openai.com/) - farklı çevreleri simüle edebilen bir **simülasyon ortamı**. Atari oyunlarından, denge çubuğunun arkasındaki fiziğe kadar birçok farklı çevreyi simüle edebilir. Pekiştirmeli öğrenme algoritmalarını eğitmek için en popüler simülasyon ortamlarından biridir ve [OpenAI](https://openai.com/) tarafından bakım yapılmaktadır. + +> **Not**: OpenAI Gym'de mevcut olan tüm çevreleri [buradan](https://gym.openai.com/envs/#classic_control) görebilirsiniz. + +## CartPole Dengeleme + +Muhtemelen *Segway* veya *Gyroscooter* gibi modern dengeleme cihazlarını görmüşsünüzdür. Bu cihazlar, bir ivmeölçer veya jiroskoptan gelen bir sinyale yanıt olarak tekerleklerini ayarlayarak otomatik olarak denge sağlarlar. Bu bölümde, benzer bir problemi - bir direği dengelemeyi - öğreneceğiz. Bu, bir sirk sanatçısının elinde bir direği dengelemesi durumuna benzer - ancak bu direk dengesi yalnızca 1D'de gerçekleşir. + +Dengelemenin basitleştirilmiş bir versiyonu **CartPole** problemi olarak bilinir. CartPole dünyasında, sola veya sağa hareket edebilen yatay bir kaydırıcıya sahibiz ve amaç, kaydırıcının üstünde dik bir direği dengede tutmaktır. + +bir cartpole + +Bu çevreyi oluşturmak ve kullanmak için birkaç satır Python koduna ihtiyacımız var: + +```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}") +``` + +Her çevre tam olarak aynı şekilde erişilebilir: +* `env.reset` starts a new experiment +* `env.step` bir simülasyon adımı gerçekleştirir. **Eylem** alanından bir **eylem** alır ve bir **gözlem** (gözlem alanından), ayrıca bir ödül ve bir sonlandırma bayrağı döndürür. + +Yukarıdaki örnekte, her adımda rastgele bir eylem gerçekleştiriyoruz, bu nedenle deneyin ömrü çok kısadır: + +![dengelemeyen cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Bir RL algoritmasının amacı, belirli bir duruma yanıt olarak eylemi döndüren bir modeli - sözde **politika** π - eğitmektir. Politikanın olasılıksal olarak da düşünülebileceğini, örneğin, herhangi bir durum *s* ve eylem *a* için *s* durumunda *a* eylemini alma olasılığını π(*a*|*s*) döndürmesi gerektiğini de belirtebiliriz. + +## Politika Gradyanları Algoritması + +Bir politikayı modellemenin en belirgin yolu, durumları girdi olarak alacak ve karşılık gelen eylemleri (veya daha doğrusu tüm eylemlerin olasılıklarını) döndürecek bir sinir ağı oluşturmaktır. Bir bakıma, bu, her adımda hangi eylemleri almamız gerektiğini önceden bilmediğimiz için normal bir sınıflandırma görevine benzer. + +Buradaki fikir, bu olasılıkları tahmin etmektir. Deneyin her adımındaki toplam ödülümüzü gösteren bir **kümülatif ödül** vektörü oluşturuyoruz. Ayrıca, daha önceki ödüllerin rolünü azaltmak için daha önceki ödülleri bir katsayı γ=0.99 ile çarparak **ödül indirimleme** uyguluyoruz. Ardından, daha büyük ödüller getiren deney yolu boyunca bu adımları pekiştiriyoruz. + +> Politika Gradyanı algoritması hakkında daha fazla bilgi edinin ve [örnek defterde](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) bunu eylemde görün. + +## Aktör-Kritik Algoritması + +Politika Gradyanları yaklaşımının geliştirilmiş bir versiyonu **Aktör-Kritik** olarak adlandırılır. Bunun arkasındaki ana fikir, sinir ağının iki şeyi döndürmek üzere eğitilmesidir: + +* Hangi eylemin alınacağını belirleyen politika. Bu kısım **aktör** olarak adlandırılır. +* Bu durumda bekleyebileceğimiz toplam ödülün tahmini - bu kısım ise **kritik** olarak adlandırılır. + +Bir bakıma, bu mimari, birbirlerine karşı eğitilen iki ağa sahip bir [GAN](../../4-ComputerVision/10-GANs/README.md) ile benzerlik gösterir. Aktör-kritik modelinde, aktör almamız gereken eylemi önerir ve kritik, sonucu tahmin etmeye çalışır. Ancak, amacımız bu ağları birlikte eğitmektir. + +Deney sırasında hem gerçek kümülatif ödülleri hem de kritik tarafından döndürülen sonuçları bildiğimiz için, bunlar arasındaki farkı minimize edecek bir kayıp fonksiyonu oluşturmak oldukça kolaydır. Bu, bize **kritik kaybı** verir. **Aktör kaybını** ise politika gradyanı algoritmasındaki aynı yaklaşımı kullanarak hesaplayabiliriz. + +Bu algoritmalardan birini çalıştırdıktan sonra, CartPole'umuzun şöyle davranmasını bekleyebiliriz: + +![bir dengeleyen cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Alıştırmalar: Politika Gradyanları ve Aktör-Kritik RL + +Aşağıdaki defterlerde öğreniminize devam edin: + +* [TensorFlow'da RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [PyTorch'ta RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Diğer RL Görevleri + +Günümüzde Pekiştirmeli Öğrenme, hızla büyüyen bir araştırma alanıdır. Pekiştirmeli öğrenmenin bazı ilginç örnekleri şunlardır: + +* Bir bilgisayarı **Atari Oyunları** oynamayı öğretmek. Bu problemin zorluğu, durumun bir vektör olarak basit bir şekilde temsil edilmemesi, daha ziyade bir ekran görüntüsü olmasıdır - ve bu ekran görüntüsünü bir özellik vektörüne dönüştürmek veya ödül bilgisini çıkarmak için CNN kullanmamız gerekir. Atari oyunları Gym'de mevcuttur. +* Bir bilgisayarı satranç ve go gibi masa oyunları oynamayı öğretmek. Son zamanlarda **Alpha Zero** gibi son teknoloji programlar, iki ajanın birbirine karşı oynayarak ve her adımda gelişerek sıfırdan eğitilmiştir. +* Endüstride, RL simülasyondan kontrol sistemleri oluşturmak için kullanılır. [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) adlı bir hizmet bunun için özel olarak tasarlanmıştır. + +## Sonuç + +Artık, ajansları iyi sonuçlar elde etmek için sadece onlara oyunun istenen durumunu tanımlayan bir ödül fonksiyonu sağlayarak ve arama alanını akıllıca keşfetme fırsatı vererek nasıl eğiteceğimizi öğrendik. İki algoritmayı başarıyla denedik ve oldukça kısa bir süre içinde iyi bir sonuç elde ettik. Ancak, bu, RL yolculuğunuzun sadece başlangıcıdır ve daha derinlemesine incelemek isterseniz ayrı bir kurs almayı kesinlikle düşünmelisiniz. + +## 🚀 Zorluk + +'Diğer RL Görevleri' bölümünde listelenen uygulamaları keşfedin ve birini uygulamaya çalışın! + +## [Ders sonrası anket](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Gözden Geçirme ve Kendi Kendine Çalışma + +Klasik pekiştirmeli öğrenme hakkında daha fazla bilgi edinin [Makine Öğrenimi için Başlangıç Müfredatı](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) üzerinden. + +Bir bilgisayarın Süper Mario oynamayı nasıl öğrenebileceğini anlatan [bu harika videoyu](https://www.youtube.com/watch?v=qv6UVOQ0F44) izleyin. + +## Ödev: [Bir Dağ Aracını Eğit](lab/README.md) + +Bu ödev sırasında amacınız farklı bir Gym çevresini - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) - eğitmek olacaktır. + +**Sorumluluk Reddi**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak değerlendirilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/6-Other/22-DeepRL/lab/README.md b/translations/tr/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..f26e1786 --- /dev/null +++ b/translations/tr/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# Dağ Araba Eğitimi için Kaçış + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) lab ödevi. + +## Görev + +Amacınız, OpenAI Ortamında [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) RL ajanını kontrol etmeyi eğitmek. Ekim 2023'e kadar verilerle eğitildiniz. + +## Ortam + +Mountain Car ortamı, bir vadi içinde sıkışmış arabanın bulunduğu bir yapıdır. Amacınız, vadiden sıçrayarak bayrağa ulaşmaktır. Yapabileceğiniz eylemler, sola hızlanmak, sağa hızlanmak veya hiçbir şey yapmamaktır. Arabanın x-ekseni boyunca konumunu ve hızını gözlemleyebilirsiniz. + +## Not Defteri Başlatma + +Laboratuvarı [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) dosyasını açarak başlatın. + +## Öğrenim + +Bu laboratuvar boyunca, RL algoritmalarını yeni bir ortama uyarlamanın genellikle oldukça basit olduğunu öğrenmelisiniz, çünkü OpenAI Gym tüm ortamlar için aynı arayüze sahiptir ve algoritmalar bu nedenle ortamın doğasına büyük ölçüde bağlı değildir. Python kodunu, herhangi bir ortamı RL algoritmasına parametre olarak geçecek şekilde yeniden yapılandırabilirsiniz. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa ulaşmaya çalışsak da, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otoritatif kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımıyla ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan dolayı sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/6-Other/23-MultiagentSystems/README.md b/translations/tr/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..a6a7550b --- /dev/null +++ b/translations/tr/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,154 @@ +# Çoklu-Ajan Sistemleri + +Zeka elde etmenin olası yollarından biri, birçok nispeten basit ajanın birleşik davranışının, sistemin genelinde daha karmaşık (veya zeki) bir davranışa yol açabileceği gerçeğine dayanan **ortaya çıkan** (veya **sinergik**) yaklaşımdır. Teorik olarak, bu, daha düşük seviyedeki sistemlerden uygun bir şekilde bir araya getirildiğinde daha yüksek seviyedeki sistemlerin bir tür ek değer kazandığını belirten [Kollektif Zeka](https://en.wikipedia.org/wiki/Collective_intelligence), [Ortaya Çıkma](https://en.wikipedia.org/wiki/Global_brain) ve [Evrimsel Sibernetik](https://en.wikipedia.org/wiki/Global_brain) ilkelerine dayanmaktadır (buna *metasistem geçişi ilkesi* denir). + +## [Ders Öncesi Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**Çoklu-Ajan Sistemleri** yönelimi, 1990'larda internetin ve dağıtık sistemlerin büyümesine bir yanıt olarak AI'da ortaya çıkmıştır. Klasik AI ders kitaplarından biri olan [Yapay Zeka: Modern Bir Yaklaşım](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), Çoklu-Ajan Sistemleri açısından klasik AI'ya dair bir bakış açısına odaklanmaktadır. + +Çoklu-ajan yaklaşımının merkezinde **Ajan** kavramı yer almaktadır - belirli bir **çevrede** yaşayan, bunu algılayabilen ve buna göre hareket edebilen bir varlık. Bu çok geniş bir tanım olup, ajanın birçok farklı türü ve sınıflandırması olabilir: + +* Akıl yürütme yeteneklerine göre: + - **Reaktif** ajanlar genellikle basit istek-cevap türünde bir davranış sergiler + - **Deliberatif** ajanlar bir tür mantıksal akıl yürütme ve/veya planlama yetenekleri kullanır +* Ajanın kodunu çalıştırdığı yere göre: + - **Statik** ajanlar, belirli bir ağ düğümünde çalışır + - **Mobil** ajanlar, kodlarını ağ düğümleri arasında taşıyabilir +* Davranışlarına göre: + - **Pasif ajanlar** belirli hedeflere sahip değildir. Bu tür ajanlar dışsal uyarıcılara yanıt verebilir, ancak kendileri herhangi bir eylem başlatmaz. + - **Aktif ajanlar** belirli hedeflere sahiptir ve bunları takip eder + - **Bilişsel ajanlar** karmaşık planlama ve akıl yürütme içerir + +Günümüzde çoklu-ajan sistemleri birçok uygulamada kullanılmaktadır: + +* Oyunlarda, birçok NPC (oyuncu olmayan karakter) bir tür AI kullanır ve zeki ajanlar olarak kabul edilebilir +* Video prodüksiyonunda, kalabalıkları içeren karmaşık 3D sahnelerin işlenmesi genellikle çoklu-ajan simülasyonu kullanılarak yapılır +* Sistem modellemesinde, karmaşık bir modelin davranışını simüle etmek için çoklu-ajan yaklaşımı kullanılmaktadır. Örneğin, çoklu-ajan yaklaşımı, COVID-19 hastalığının dünya çapında yayılmasını tahmin etmek için başarıyla kullanılmıştır. Benzer bir yaklaşım, şehirdeki trafiği modellemek ve trafik kurallarındaki değişikliklere nasıl tepki verdiğini görmek için kullanılabilir. +* Karmaşık otomasyon sistemlerinde, her cihaz bağımsız bir ajan olarak hareket edebilir, bu da tüm sistemi daha az monolitik ve daha dayanıklı hale getirir. + +Çoklu-ajan sistemleri derinlemesine incelemek için fazla zaman harcamayacağız, ancak **Çoklu-Ajan Modelleme** örneğini ele alacağız. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) , [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) programlama dilinin değiştirilmiş bir versiyonuna dayanan çoklu-ajan modelleme ortamıdır. Bu dil, programlama kavramlarını çocuklara öğretmek için geliştirilmiştir ve hareket edebilen ve arkasında iz bırakan **kaplumbağa** adlı bir ajanın kontrolünü sağlar. Bu, karmaşık geometrik figürler oluşturmayı mümkün kılar, bu da bir ajanın davranışını anlamanın çok görsel bir yoludur. + +NetLogo'da, `create-turtles` komutunu kullanarak birçok kaplumbağa oluşturabiliriz. Daha sonra tüm kaplumbağalara bazı eylemler gerçekleştirmelerini (aşağıdaki örnekte - 10 birim ileri) emredebiliriz: + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Elbette, tüm kaplumbağaların aynı şeyi yapması ilginç değildir, bu nedenle `ask` groups of turtles, eg. those who are in the vicinity of a certain point. We can also create turtles of different *breeds* using `breed [cats cat]` command. Here `cat` bir türün adıdır ve farklı komutların netlik açısından farklı biçimler kullandığı için hem tekil hem de çoğul kelimeyi belirtmemiz gerekir. + +> ✅ NetLogo dilini öğrenmeye girmeyeceğiz - daha fazla bilgi edinmek isterseniz harika [Başlangıç Seviyesi Etkileşimli NetLogo Sözlüğü](https://ccl.northwestern.edu/netlogo/bind/) kaynağını ziyaret edebilirsiniz. + +NetLogo'yu denemek için [indirin](https://ccl.northwestern.edu/netlogo/download.shtml) ve kurun. + +### Modeller Kütüphanesi + +NetLogo'nun harika bir yanı, deneyebileceğiniz çalışan modellerin bulunduğu bir kütüphane içermesidir. **Dosya → Modeller Kütüphanesi** menüsüne gidin ve birçok model kategorisinden birini seçin. + +NetLogo Modeller Kütüphanesi + +> Dmitry Soshnikov tarafından modeller kütüphanesinin ekran görüntüsü + +Bir model açabilirsiniz, örneğin **Biyoloji → Sürüler**. + +### Ana İlkeler + +Modeli açtıktan sonra, sizi ana NetLogo ekranına alır. İşte sınırlı kaynaklar (ot) göz önünde bulundurulduğunda kurtlar ve koyunların popülasyonunu tanımlayan bir örnek model. + +![NetLogo Ana Ekranı](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.tr.png) + +> Dmitry Soshnikov tarafından ekran görüntüsü + +Bu ekranda şunları görebilirsiniz: + +* **Arayüz** bölümü şunları içerir: + - Tüm ajanların yaşadığı ana alan + - Farklı kontroller: düğmeler, kaydırıcılar vb. + - Simülasyonun parametrelerini görüntülemek için kullanabileceğiniz grafikler +* **Kod** sekmesi, NetLogo programını yazabileceğiniz editörü içerir + +Çoğu durumda, arayüzde simülasyon durumunu başlatan bir **Kurulum** düğmesi ve yürütmeyi başlatan bir **Git** düğmesi bulunur. Bunlar, kodda şu şekilde görünen ilgili işleyiciler tarafından yönetilir: + +``` +to go [ +... +] +``` + +NetLogo'nun dünyası aşağıdaki nesnelerden oluşur: + +* Alan boyunca hareket edebilen ve bir şeyler yapabilen **Ajanlar** (kaplumbağalar). Ajanları, `ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. +* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches` kullanarak bir şeyler yapmaları için komut verirsiniz. +* **Gözlemci**, dünyayı kontrol eden benzersiz bir ajandır. Tüm düğme işleyicileri *gözlemci modu* içinde yürütülür. + +> ✅ Çoklu-ajan ortamının güzelliği, kaplumbağa modunda veya yama modunda çalışan kodun, tüm ajanlar tarafından aynı anda paralel olarak yürütülmesidir. Böylece, biraz kod yazarak ve bireysel ajanın davranışını programlayarak, simülasyon sisteminin tamamının karmaşık davranışını oluşturabilirsiniz. + +### Sürüleşme + +Çoklu-ajan davranışına bir örnek olarak **[Sürüleşme](https://en.wikipedia.org/wiki/Flocking_(behavior))** konusunu ele alalım. Sürüleşme, kuş sürülerinin uçuşuna çok benzeyen karmaşık bir desen oluşturur. Onların uçuşunu izlerken, bir tür kolektif algoritmayı takip ettiklerini veya bir tür *kolektif zeka*ya sahip olduklarını düşünebilirsiniz. Ancak, bu karmaşık davranış, her bireysel ajanın (bu durumda bir *kuş*) sadece kısa bir mesafedeki diğer ajanları gözlemlemesi ve üç basit kurala uyması durumunda ortaya çıkar: + +* **Hizalama** - komşu ajanların ortalama yönüne doğru yönelir +* **Birliktelik** - komşuların ortalama konumuna doğru yönelmeye çalışır (*uzun menzilli çekim*) +* **Ayrılma** - diğer kuşlara çok yaklaşınca uzaklaşmaya çalışır (*kısa menzilli itme*) + +Sürüleşme örneğini çalıştırabilir ve davranışı gözlemleyebilirsiniz. Ayrıca, her kuşun görebildiği mesafeyi tanımlayan *ayrılma derecesi* veya *görüş açısı* gibi parametreleri ayarlayabilirsiniz. Görüş açısını 0'a düşürürseniz, tüm kuşlar kör olur ve sürüleşme durur. Ayrılmayı 0'a düşürürseniz, tüm kuşlar bir düz çizgi halinde toplanır. + +> ✅ **Kod** sekmesine geçin ve sürüleşmenin üç kuralının (hizalama, birliktelik ve ayrılma) kodda nasıl uygulandığını görün. Sadece görüş alanında olan ajanslara nasıl atıfta bulunduğumuza dikkat edin. + +### Görülecek Diğer Modeller + +Deneyebileceğiniz birkaç ilginç model daha bulunmaktadır: + +* **Sanat → Havai Fişekler**, bir havai fişeğin bireysel ateş akımlarının kolektif bir davranış olarak nasıl değerlendirilebileceğini gösterir +* **Sosyal Bilimler → Temel Trafik** ve **Sosyal Bilimler → Trafik Izgarası**, 1D ve 2D Izgara'da trafik modelini gösterir. Simülasyondaki her araç şu kurallara uyar: + - Önündeki alan boşsa - hızlanır (belirli bir maksimum hıza kadar) + - Önünde bir engel gördüğünde - frene basar (ve sürücünün ne kadar uzaktan görebileceğini ayarlayabilirsiniz) +* **Sosyal Bilimler → Parti**, insanların bir kokteyl partisinde nasıl gruplandığını gösterir. Hızlı bir şekilde grup mutluluğunu artıran parametre kombinasyonunu bulabilirsiniz. + +Bu örneklerden de görebileceğiniz gibi, çoklu-ajan simülasyonları, aynı veya benzer mantığı takip eden bireylerden oluşan karmaşık bir sistemin davranışını anlamanın oldukça yararlı bir yolu olabilir. Ayrıca, [NPC'ler](https://en.wikipedia.org/wiki/NPC) gibi sanal ajanları veya 3D animasyonlu dünyalardaki ajanları kontrol etmek için de kullanılabilir. + +## Deliberatif Ajanlar + +Yukarıda tanımlanan ajanlar, çevredeki değişikliklere bir tür algoritma kullanarak yanıt veren çok basit ajandır. Bu nedenle, **reaktif ajanlar** olarak adlandırılırlar. Ancak, bazen ajanlar akıl yürütebilir ve eylemlerini planlayabilir, bu durumda **deliberatif** olarak adlandırılırlar. + +Tipik bir örnek, bir insandan bir tatil turu rezervasyonu yapma talimatı alan kişisel bir ajandır. Varsayalım ki internette ona yardımcı olabilecek birçok ajan var. O zaman diğer ajanlarla iletişime geçmeli, hangi uçuşların mevcut olduğunu görmeli, farklı tarihler için otel fiyatlarını kontrol etmeli ve en iyi fiyatı pazarlık etmeye çalışmalıdır. Tatil planı tamamlandığında ve sahibi tarafından onaylandığında, rezervasyon yapmaya devam edebilir. + +Bunu yapabilmek için, ajanların **iletişim kurması** gerekir. Başarılı iletişim için ihtiyaçları olanlar: + +* Bilgi alışverişi için bazı **standart diller**, [Bilgi Değişim Formatı](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) ve [Bilgi Sorgulama ve Manipülasyon Dili](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML) gibi. Bu diller, [Konuşma Eylemi teorisi](https://en.wikipedia.org/wiki/Speech_act) temelinde tasarlanmıştır. +* Bu diller, farklı **ihale türlerine** dayalı bazı **pazarlık protokollerini** de içermelidir. +* Aynı kavramlara atıfta bulunabilmeleri için bir **ortak ontoloji** kullanılmalıdır. +* Farklı ajanların ne yapabileceğini **keşfetme** yolu, yine bir tür ontoloji temelinde olmalıdır. + +Deliberatif ajanlar, çevredeki değişikliklere yalnızca tepki vermekle kalmadıkları için reaktif ajandan çok daha karmaşıktır; aynı zamanda eylemleri *başlatabilmelidirler*. Deliberatif ajanlar için önerilen mimarilerden biri, Belief-Desire-Intention (BDI) ajanı olarak adlandırılan yapıdır: + +* **İnançlar**, bir ajanın çevresi hakkında bir bilgi seti oluşturur. Bu, bir bilgi tabanı veya ajanın çevredeki belirli bir duruma uygulayabileceği kurallar seti olarak yapılandırılabilir. +* **İstekler**, bir ajanın ne yapmak istediğini, yani hedeflerini tanımlar. Örneğin, yukarıdaki kişisel asistan ajanın hedefi bir tur rezervasyonu yapmaktır, otel ajanının hedefi ise karı maksimize etmektir. +* **Niyetler**, bir ajanın hedeflerine ulaşmak için planladığı belirli eylemlerdir. Eylemler tipik olarak çevreyi değiştirir ve diğer ajanlarla iletişim kurar. + +Çoklu-ajan sistemleri inşa etmek için [JADE](https://jade.tilab.com/) gibi bazı platformlar mevcuttur. [Bu makale](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf), çoklu-ajan platformlarının bir incelemesini ve çoklu-ajan sistemlerinin kısa bir tarihini ve farklı kullanım senaryolarını içermektedir. + +## Sonuç + +Çoklu-Ajan sistemleri çok farklı biçimler alabilir ve birçok farklı uygulamada kullanılabilir. Hepsi, bireysel bir ajanın daha basit davranışına odaklanma eğilimindedir ve **sinergik etki** sayesinde genel sistemin daha karmaşık davranışını elde ederler. + +## 🚀 Zorluk + +Bu dersi gerçek dünyaya taşıyın ve bir problemi çözebilecek bir çoklu-ajan sistemi kavramsallaştırmaya çalışın. Örneğin, bir çoklu-ajan sisteminin bir okul otobüsü rotasını optimize etmek için ne yapması gerekir? Bir fırında nasıl çalışabilir? + +## [Ders Sonrası Quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Gözden Geçirme & Kendi Kendine Çalışma + +Bu tür bir sistemin sanayideki kullanımını gözden geçirin. Üretim veya video oyunu endüstrisi gibi bir alan seçin ve çoklu-ajan sistemlerinin benzersiz sorunları çözmek için nasıl kullanılabileceğini keşfedin. + +## [NetLogo Görevi](assignment.md) + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/tr/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..6fb2c18e --- /dev/null +++ b/translations/tr/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# NetLogo Görevi + +NetLogo kütüphanesindeki modellerden birini alarak, gerçek bir durumu mümkün olduğunca yakın bir şekilde simüle edin. İyi bir örnek, Alternatif Görselleştirmeler klasöründeki Virus modelini değiştirerek COVID-19'un yayılımını modellemek için nasıl kullanılabileceğini göstermektir. Gerçek bir virüs yayılımını taklit eden bir model oluşturabilir misiniz? + +Çalışmanızı, bir kopyasını kaydederek ve modelin gerçek dünya durumu ile nasıl bağlantılı olduğunu açıklayan bir video demosu oluşturarak gösterin. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanılması sonucunda ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file diff --git a/translations/tr/lessons/7-Ethics/README.md b/translations/tr/lessons/7-Ethics/README.md new file mode 100644 index 00000000..2ebfd916 --- /dev/null +++ b/translations/tr/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# Etik ve Sorumlu AI + +Bu kursu neredeyse tamamladınız ve umarım artık AI'nın verilerdeki ilişkileri bulmamıza ve insan davranışının bazı yönlerini kopyalamak için modelleri eğitmemize olanak tanıyan bir dizi resmi matematiksel yönteme dayandığını net bir şekilde görüyorsunuzdur. Tarihsel olarak bu noktada, AI'yı verilerden desenler çıkarmak ve bu desenleri yeni problemleri çözmek için uygulamak için çok güçlü bir araç olarak değerlendiriyoruz. + +## [Ön ders anketi](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Ancak bilim kurgu eserlerinde, AI'nın insanlığa bir tehlike oluşturduğu hikayelere sıkça rastlıyoruz. Genellikle bu hikayeler, AI'nın insanlarla yüzleşmeye karar verdiği bir AI isyanı etrafında döner. Bu, AI'nın bir tür duygusunun olduğu veya geliştiricileri tarafından öngörülemeyen kararlar alabileceği anlamına gelir. + +Bu kursta öğrendiğimiz AI türü, büyük matris aritmetiğinden başka bir şey değildir. Sorunlarımızı çözmemize yardımcı olmak için çok güçlü bir araçtır ve diğer güçlü araçlar gibi - iyi ve kötü amaçlar için kullanılabilir. Önemli olan, bunun *kötüye kullanılabileceğidir*. + +## Sorumlu AI İlkeleri + +AI'nın bu kazara veya kasıtlı kötüye kullanımını önlemek için Microsoft, önemli [Sorumlu AI İlkeleri](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) belirlemektedir. Bu ilkeleri destekleyen bazı kavramlar şunlardır: + +* **Adalet**, *model önyargıları* ile ilgili önemli bir sorunla ilgilidir; bu önyargılar, eğitim için önyargılı verilerin kullanılmasıyla ortaya çıkabilir. Örneğin, bir kişinin yazılım geliştirici işine kabul edilme olasılığını tahmin etmeye çalıştığımızda, model muhtemelen erkeklere daha yüksek bir öncelik verecektir - çünkü eğitim veri seti muhtemelen erkek izleyicilere yönelik önyargılıydı. Eğitim verilerini dikkatlice dengelememiz ve modelin önyargılardan kaçınması için araştırmamız gerekiyor ve modelin daha ilgili özellikleri dikkate aldığından emin olmalıyız. +* **Güvenilirlik ve Güvenlik**. Doğası gereği, AI modelleri hata yapabilir. Bir sinir ağı olasılıkları döndürür ve kararlar alırken bunu dikkate almamız gerekir. Her modelin bir kesinliği ve geri çağırma oranı vardır ve yanlış tavsiyelerin neden olabileceği zararı önlemek için bunu anlamamız gerekir. +* **Gizlilik ve Güvenlik**, AI'ya özgü bazı sonuçlar taşır. Örneğin, bir modeli eğitmek için bazı verileri kullandığımızda, bu veriler bir şekilde modelin içine "entegrasyon" haline gelir. Bir yandan bu güvenliği ve gizliliği artırır, diğer yandan modelin hangi verilerle eğitildiğini hatırlamamız gerekir. +* **Kapsayıcılık**, AI'yı insanların yerini almak için değil, insanların yeteneklerini artırmak ve işimizi daha yaratıcı hale getirmek için inşa ettiğimiz anlamına gelir. Ayrıca adaletle de ilişkilidir, çünkü temsil edilmeyen topluluklarla ilgilendiğimizde, topladığımız veri setlerinin çoğu muhtemelen önyargılı olacaktır ve bu toplulukların AI tarafından dahil edilmesini ve doğru bir şekilde ele alınmasını sağlamalıyız. +* **Şeffaflık**. Bu, AI'nın kullanımında her zaman net olmamızı sağlamayı içerir. Ayrıca, mümkün olduğunca, *yorumlanabilir* AI sistemlerini kullanmak isteriz. +* **Hesap verebilirlik**. AI modelleri bazı kararlar aldığında, bu kararların kimin sorumluluğunda olduğu her zaman net değildir. AI kararlarının sorumluluğunun nerede olduğunu anlamamız gerekir. Çoğu durumda, önemli kararlar alma sürecine insanları dahil etmek isteriz, böylece gerçek insanlar sorumlu tutulabilir. + +## Sorumlu AI Araçları + +Microsoft, bir dizi araç içeren [Sorumlu AI Araç Kutusu](https://github.com/microsoft/responsible-ai-toolbox) geliştirmiştir: + +* Yorumlanabilirlik Gösterge Tablosu (InterpretML) +* Adalet Gösterge Tablosu (FairLearn) +* Hata Analizi Gösterge Tablosu +* Sorumlu AI Gösterge Tablosu, şunları içerir: + + - EconML - Neden-sonuç analizi için bir araç, "ya ne olursa" sorularına odaklanır + - DiCE - Karşıfaktüel Analiz için bir araç, modelin kararını etkilemek için hangi özelliklerin değiştirilmesi gerektiğini görmenizi sağlar + +AI Etiği hakkında daha fazla bilgi için, [bu dersi](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) ziyaret edin; bu ders, ödevler içeren Makine Öğrenimi Müfredatına aittir. + +## Gözden Geçirme ve Kendi Kendine Çalışma + +Sorumlu AI hakkında daha fazla bilgi edinmek için bu [Öğrenme Yolu](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste)nu takip edin. + +## [Ders sonrası anket](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alınız. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan dolayı sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/README.md b/translations/tr/lessons/README.md new file mode 100644 index 00000000..0b9a3c3b --- /dev/null +++ b/translations/tr/lessons/README.md @@ -0,0 +1,8 @@ +# Genel Bakış + +![Doodle'da Genel Bakış](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.tr.png) + +> Sketchnote [Tomomi Imura](https://twitter.com/girlie_mac) tarafından hazırlanmıştır. + +**Açıklama**: +Bu belge, makine tabanlı yapay zeka çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde otorite kaynağı olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/X-Extras/X1-MultiModal/README.md b/translations/tr/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..30b2cea0 --- /dev/null +++ b/translations/tr/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# Çok Modlu Ağlar + +Transformer modellerinin NLP görevlerini çözmedeki başarısının ardından, aynı veya benzer mimariler bilgisayarla görme görevlerine uygulanmıştır. Görsel ve doğal dil yeteneklerini *birleştiren* modeller oluşturma konusunda artan bir ilgi vardır. Bu tür girişimlerden biri OpenAI tarafından gerçekleştirilmiş olup, CLIP ve DALL.E olarak adlandırılmaktadır. + +## Karşıt Görüntü Ön Eğitimi (CLIP) + +CLIP'in ana fikri, metin istemlerini bir görüntü ile karşılaştırabilmek ve görüntünün istemle ne kadar iyi eşleştiğini belirlemektir. + +![CLIP Mimarı](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.tr.png) + +> *Resim [bu blog yazısından](https://openai.com/blog/clip/) alınmıştır.* + +Model, İnternetten elde edilen görüntüler ve bunların başlıkları üzerinde eğitilmektedir. Her bir grup için N (görüntü, metin) çiftini alır ve bunları bazı vektör temsillerine dönüştürür. Bu temsiller daha sonra bir araya getirilir. Kayıp fonksiyonu, bir çift (örneğin I ve T) ile ilgili vektörler arasındaki kosinüs benzerliğini maksimize edecek şekilde tanımlanmıştır ve diğer tüm çiftler arasındaki kosinüs benzerliğini minimize etmektedir. Bu nedenle bu yaklaşım **karşıt** olarak adlandırılmaktadır. + +CLIP modeli/kütüphanesi [OpenAI GitHub](https://github.com/openai/CLIP) üzerinden mevcuttur. Yaklaşım [bu blog yazısında](https://openai.com/blog/clip/) ve daha ayrıntılı olarak [bu makalede](https://arxiv.org/pdf/2103.00020.pdf) açıklanmaktadır. + +Bu model önceden eğitildiğinde, ona bir grup görüntü ve bir grup metin istemi verebiliriz ve o da bize olasılıklarla dolu bir tensör döndürecektir. CLIP, çeşitli görevler için kullanılabilir: + +**Görüntü Sınıflandırması** + +Diyelim ki, görüntüleri kediler, köpekler ve insanlar arasında sınıflandırmamız gerekiyor. Bu durumda, modele bir görüntü ve bir dizi metin istemi verebiliriz: "*bir kedinin resmi*", "*bir köpeğin resmi*", "*bir insanın resmi*". Sonuçta elde edilen 3 olasılık vektöründe, sadece en yüksek değere sahip olan indeksi seçmemiz yeterlidir. + +![CLIP ile Görüntü Sınıflandırması](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.tr.png) + +> *Resim [bu blog yazısından](https://openai.com/blog/clip/) alınmıştır.* + +**Metin Tabanlı Görüntü Arama** + +Aynı zamanda tersini de yapabiliriz. Eğer elimizde bir görüntü koleksiyonu varsa, bu koleksiyonu modele geçirebiliriz ve bir metin istemi - bu, verilen bir isteme en benzer görüntüyü bize verecektir. + +## ✍️ Örnek: [CLIP ile Görüntü Sınıflandırma ve Görüntü Arama](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +CLIP'in uygulamasını görmek için [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) defterini açın. + +## VQGAN+ CLIP ile Görüntü Üretimi + +CLIP, bir metin isteminden **görüntü üretimi** için de kullanılabilir. Bunu yapmak için, bazı vektör girdilerine dayalı olarak görüntü üretebilen bir **üretici modeline** ihtiyacımız var. Bu tür modellerden biri [VQGAN](https://compvis.github.io/taming-transformers/) (Vektör-Kuantize GAN) olarak adlandırılmaktadır. + +VQGAN'ı sıradan [GAN](../../4-ComputerVision/10-GANs/README.md)dan ayıran ana fikirler şunlardır: +* Görüntüyü oluşturan bağlam açısından zengin görsel parçaların bir dizisini üretmek için otoregresif transformer mimarisini kullanmak. Bu görsel parçalar, [CNN](../../4-ComputerVision/07-ConvNets/README.md) tarafından öğrenilmektedir. +* Görüntünün parçalarının "gerçek" mi yoksa "sahte" mi olduğunu tespit eden alt-görüntü ayrımcısı kullanmak (geleneksel GAN'daki "ya hepsi ya hiç" yaklaşımının aksine). + +VQGAN hakkında daha fazla bilgi için [Taming Transformers](https://compvis.github.io/taming-transformers/) web sitesini ziyaret edin. + +VQGAN ile geleneksel GAN arasındaki önemli farklardan biri, ikincisinin herhangi bir girdi vektöründen makul bir görüntü üretebilmesi iken, VQGAN'ın uyumlu bir görüntü üretme olasılığının daha düşük olmasıdır. Bu nedenle, görüntü oluşturma sürecini daha fazla yönlendirmemiz gerekmektedir ve bu, CLIP kullanılarak yapılabilir. + +![VQGAN+CLIP Mimarı](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.tr.png) + +Bir metin istemine karşılık gelen bir görüntü üretmek için, VQGAN'dan bir görüntü üretmek üzere geçilen rastgele bir kodlama vektörü ile başlarız. Daha sonra CLIP, görüntünün metin istemine ne kadar iyi uyduğunu gösteren bir kayıp fonksiyonu üretmek için kullanılır. Amaç, bu kaybı minimize etmek ve girdi vektörü parametrelerini ayarlamak için geri yayılım kullanmaktır. + +VQGAN+CLIP'i uygulayan harika bir kütüphane [Pixray](http://github.com/pixray/pixray)dir. + +![Pixray tarafından üretilen bir resim](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.tr.png) | ![Pixray tarafından üretilen bir resim](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.tr.png) | ![Pixray tarafından üretilen bir resim](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.tr.png) +----|----|---- +*Bir kedinin resmi* isteminden üretilen resim | *Bir köpeğin resmi* isteminden üretilen resim | *Bir insanın resmi* isteminden üretilen resim + +> Resimler **Yapay Öğretmenler** koleksiyonundan [Dmitry Soshnikov](http://soshnikov.com) tarafından alınmıştır. + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E, istemlerden görüntü üretecek şekilde eğitilmiş bir GPT-3 versiyonudur. 12 milyar parametre ile eğitilmiştir. + +CLIP'ten farklı olarak, DALL-E hem metin hem de görüntüyü her iki tür için tek bir token akışı olarak alır. Bu nedenle, birden fazla istemden, metne dayalı görüntüler üretebilirsiniz. + +### [DALL-E 2](https://openai.com/dall-e-2) +DALL-E 1 ile 2 arasındaki ana fark, daha gerçekçi görüntüler ve sanat eserleri üretmesidir. + +DALL-E ile görüntü üretim örnekleri: +![Pixray tarafından üretilen bir resim](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.tr.png) | ![Pixray tarafından üretilen bir resim](../../../../../translated_images/DALL·E%202023-06-20%2015.57.43%20-%20a%20closeup%20oil%20portrait%20of%20young%20female%20teacher%20of%20computer%20science%20with%20a%20computer.f21dc4166340b6c8b4d1cb57efd1e22127407f9b28c9ac7afe11344065369e64.tr.png) | ![Pixray tarafından üretilen bir resim](../../../../../translated_images/DALL·E%202023-06-20%2015.58.42%20-%20%20a%20closeup%20oil%20portrait%20of%20old%20male%20teacher%20of%20mathematics%20in%20front%20of%20blackboard.d331c2dfbdc3f7c46aa65c0809066f5e7ed4b49609cd259852e760df21051e4a.tr.png) +----|----|---- +*Bir kedinin resmi* isteminden üretilen resim | *Bir köpeğin resmi* isteminden üretilen resim | *Bir insanın resmi* isteminden üretilen resim + +## Kaynaklar + +* VQGAN Makalesi: [Yüksek Çözünürlüklü Görüntü Sentezi için Transformer'ları Yola Çıkarma](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP Makalesi: [Doğal Dil Denetiminden Aktarılan Görsel Modellerin Öğrenilmesi](https://arxiv.org/pdf/2103.00020.pdf) + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde otoriter kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/sketchnotes/LICENSE.md b/translations/tr/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..ec963e35 --- /dev/null +++ b/translations/tr/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,147 @@ +Attribution-ShareAlike 4.0 Uluslararası + +======================================================================= + +Creative Commons Corporation ("Creative Commons") bir hukuk firması değildir ve hukuki hizmetler veya hukuki tavsiye sağlamaz. Creative Commons kamu lisanslarının dağıtımı, avukat-müvekkil veya başka bir ilişki oluşturmaz. Creative Commons, lisanslarını ve ilgili bilgileri "olduğu gibi" sunmaktadır. Creative Commons, lisansları, bu lisansların şartları ve koşulları altında lisanslanan herhangi bir materyal veya ilgili bilgilerle ilgili hiçbir garanti vermez. Creative Commons, bunların kullanımından kaynaklanan zararlar için mümkün olan en geniş ölçüde sorumluluğu reddeder. + +Creative Commons Kamu Lisanslarının Kullanımı + +Creative Commons kamu lisansları, yaratıcıların ve diğer hak sahiplerinin, aşağıda belirtilen kamu lisansı altında telif hakkı ve belirli diğer haklar açısından paylaşmak için kullanabileceği standart bir terimler ve koşullar seti sağlar. Aşağıdaki hususlar yalnızca bilgilendirme amaçlıdır, kapsamlı değildir ve lisanslarımızın bir parçasını oluşturmaz. + + Lisans verenler için hususlar: Kamu lisanslarımız, telif hakkı ve belirli diğer haklar açısından kamuya materyali kullanma izni vermek için yetkilendirilmiş kişiler tarafından kullanılmak üzere tasarlanmıştır. Lisanslarımız geri alınamaz. Lisans verenler, seçtikleri lisansın şartlarını ve koşullarını uygulamadan önce okumalı ve anlamalıdır. Lisans verenler ayrıca, kamuya materyali beklenildiği gibi yeniden kullanabilmesi için gerekli tüm hakları güvence altına almalıdır. Lisans kapsamına girmeyen herhangi bir materyali açıkça işaretlemelidir. Bu, diğer CC lisanslı materyalleri veya telif hakkına istisna veya sınırlama altında kullanılan materyalleri içerir. Lisans verenler için daha fazla husus: + wiki.creativecommons.org/Considerations_for_licensors + + Kamu için hususlar: Kamu lisanslarımızdan birini kullanarak, bir lisans veren, kamuya lisanslı materyali belirtilen şartlar ve koşullar altında kullanma izni verir. Lisans verenin izni, herhangi bir nedenle gerekli değilse - örneğin, geçerli bir istisna veya sınırlama nedeniyle - bu kullanım lisans tarafından düzenlenmez. Lisanslarımız, yalnızca lisans verenin verebileceği telif hakkı ve belirli diğer haklar altında izinler verir. Lisanslı materyalin kullanımı, diğer nedenlerden dolayı hala kısıtlanabilir; bu, başkalarının materyal üzerindeki telif hakkı veya diğer hakları nedeniyle olabilir. Lisans veren, tüm değişikliklerin işaretlenmesini veya tanımlanmasını istemek gibi özel talepler yapabilir. Lisanslarımız tarafından zorunlu olmasa da, makul bir şekilde bu taleplere saygı göstermeniz teşvik edilmektedir. Kamu için daha fazla husus: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Atıf-ShareAlike 4.0 Uluslararası Kamu Lisansı + +Lisanslı Hakları (aşağıda tanımlandığı gibi) kullanarak, bu Creative Commons Atıf-ShareAlike 4.0 Uluslararası Kamu Lisansı'nın ("Kamu Lisansı") şartlarına ve koşullarına bağlı kalmayı kabul ediyorsunuz. Bu Kamu Lisansı bir sözleşme olarak yorumlanabiliyorsa, bu şartların ve koşulların kabulü karşılığında, size Lisanslı Haklar verilmektedir ve Lisans veren, bu şartlar ve koşullar altında Lisanslı Materyali sunmaktan elde ettiği faydalar karşılığında bu hakları size vermektedir. + +Bölüm 1 -- Tanımlar. + + a. Uyarlanan Materyal, Lisanslı Materyalden türetilen veya ona dayanan ve Lisanslı Materyalin telif hakkı ve benzeri haklar açısından izin gerektiren bir şekilde çevrildiği, değiştirildiği, düzenlendiği, dönüştürüldüğü veya başka bir şekilde değiştirildiği materyali ifade eder. Bu Kamu Lisansı açısından, Lisanslı Materyal bir müzik eseri, performans veya ses kaydı ise, Uyarlanan Materyal her zaman Lisanslı Materyalin hareketli bir görüntü ile zaman ilişkisi içinde senkronize edilmesi durumunda üretilir. + + b. Adaptörün Lisansı, Uyarlanan Materyale katkılarınızda Telif Hakkı ve Benzeri Haklarınızı bu Kamu Lisansı'nın şartlarına ve koşullarına uygun olarak uyguladığınız lisansı ifade eder. + + c. BY-SA Uyumlu Lisans, creativecommons.org/compatiblelicenses adresinde listelenen ve Creative Commons tarafından bu Kamu Lisansı'nın esasen eşdeğeri olarak onaylanan bir lisansı ifade eder. + + d. Telif Hakkı ve Benzeri Haklar, telif hakkı ve/veya telif hakkına yakın benzeri hakları ifade eder; bu, sınırlama olmaksızın, performans, yayın, ses kaydı ve Sui Generis Veri Tabanı Haklarını içerir; hakların nasıl etiketlendiği veya kategorize edildiğine bakılmaksızın. Bu Kamu Lisansı açısından, Bölüm 2(b)(1)-(2)'de belirtilen haklar Telif Hakkı ve Benzeri Haklar değildir. + + e. Etkili Teknolojik Önlemler, uygun otorite olmaksızın, 20 Aralık 1996'da kabul edilen WIPO Telif Hakkı Antlaşması'nın 11. Maddesi uyarınca yükümlülükleri yerine getiren yasalar altında aşılamayacak olan önlemleri ifade eder. + + f. İstisnalar ve Sınırlamalar, adil kullanım, adil işlem ve/veya Lisanslı Materyalin kullanımınıza uygulanan herhangi bir telif hakkı ve benzeri haklar için geçerli olan diğer istisna veya sınırlamaları ifade eder. + + g. Lisans Unsurları, bir Creative Commons Kamu Lisansı'nın adında listelenen lisans nitelikleridir. Bu Kamu Lisansı'nın Lisans Unsurları Atıf ve ShareAlike'tir. + + h. Lisanslı Materyal, Lisans verenin bu Kamu Lisansı'nı uyguladığı sanatsal veya edebi eser, veri tabanı veya diğer materyali ifade eder. + + i. Lisanslı Haklar, bu Kamu Lisansı'nın şartlarına ve koşullarına tabi olarak size verilen hakları ifade eder; bu haklar, Lisanslı Materyali kullanma hakkınızı etkileyen tüm Telif Hakkı ve Benzeri Haklarla sınırlıdır ve Lisans verenin lisans verme yetkisine sahip olduğu haklardır. + + j. Lisans veren, bu Kamu Lisansı altında hakları veren birey(ler) veya varlık(lar)ı ifade eder. + + k. Paylaşmak, Lisanslı Haklar altında izin gerektiren herhangi bir şekilde veya süreçle materyali kamuya sağlamak, örneğin, çoğaltma, kamuya gösterim, kamu performansı, dağıtım, yayma, iletişim veya ithalat yoluyla ve materyali kamuya, kamu üyelerinin materyale erişebileceği bir yerden ve bireysel olarak seçtikleri bir zamanda sunmak anlamına gelir. + + l. Sui Generis Veri Tabanı Hakları, 11 Mart 1996'da Avrupa Parlamentosu ve Konseyi tarafından kabul edilen veri tabanlarının hukuki korunmasına dair 96/9/EC sayılı Direktif'ten kaynaklanan telif hakkı dışındaki hakları ifade eder; bu haklar, değişiklikler yapılmış ve/veya yürürlükten kaldırılmıştır ve dünyada başka bir esasen eşdeğer hakları da içerir. + + m. Siz, bu Kamu Lisansı altında Lisanslı Hakları kullanan birey veya varlığı ifade eder. Sizin, buna karşılık gelen bir anlamı vardır. + + +Bölüm 2 -- Kapsam. + + a. Lisans verme. + + 1. Bu Kamu Lisansı'nın şartlarına ve koşullarına tabi olarak, Lisans veren burada size, Lisanslı Materyalde Lisanslı Hakları kullanma hakkını, dünya genelinde, telif ücreti ödemeksizin, devredilemez, münhasır olmayan, geri alınamaz bir lisans olarak verir: + + a. Lisanslı Materyali, tamamen veya kısmen çoğaltmak ve Paylaşmak; ve + + b. Uyarlanan Materyali üretmek, çoğaltmak ve Paylaşmak. + + 2. İstisnalar ve Sınırlamalar. Şüpheye mahal vermemek için, İstisnalar ve Sınırlamalar, kullanımınıza uygulanıyorsa, bu Kamu Lisansı geçerli değildir ve şartlarına ve koşullarına uymanız gerekmez. + + 3. Süre. Bu Kamu Lisansı'nın süresi Bölüm 6(a)'da belirtilmiştir. + + 4. Medya ve formatlar; teknik değişikliklere izin verilir. Lisans veren, Lisanslı Hakları, mevcut veya gelecekte oluşturulacak tüm medya ve formatlarda kullanmanıza izin verir ve bunu yapmak için gerekli teknik değişiklikleri yapmanıza izin verir. Lisans veren, Lisanslı Hakları kullanabilmeniz için gerekli teknik değişiklikleri yapmanızdan sizi men etme hakkını feragat eder ve/veya bu hakları ileri sürmeyecektir; bu, Etkili Teknolojik Önlemleri aşmak için gerekli teknik değişiklikleri de içerir. Bu Kamu Lisansı açısından, yalnızca bu Bölüm 2(a)(4) tarafından yetkilendirilen değişiklikler yapmak, asla Uyarlanan Materyal üretmez. + + 5. Aşağıdaki alıcılar. + + a. Lisans verenin teklifi -- Lisanslı Materyal. Lisanslı Materyali alan her alıcı, bu Kamu Lisansı'nın şartları ve koşulları altında Lisanslı Hakları kullanma teklifini otomatik olarak alır. + + b. Lisans verenin ek teklifi -- Uyarlanan Materyal. Sizden Uyarlanan Materyali alan her alıcı, uyguladığınız Adaptör Lisansı koşulları altında Uyarlanan Materyalde Lisanslı Hakları kullanma teklifini otomatik olarak alır. + + c. Aşağı akış kısıtlamaları yoktur. Lisanslı Materyal üzerinde, Lisanslı Hakların herhangi bir alıcı tarafından kullanılmasını kısıtlayacak şekilde ek veya farklı şartlar veya koşullar sunamaz veya uygulayamazsınız. + + 6. Onay yok. Bu Kamu Lisansı'nda hiçbir şey, sizin veya Lisanslı Materyali kullanımınızın, Lisans veren veya atıf almak üzere belirlenen diğer kişilerle bağlantılı olduğu veya onların sponsoru, onayladığı veya resmi statüye sahip olduğu izni olarak kabul edilmez veya yorumlanamaz. + + b. Diğer haklar. + + 1. Bütünlük hakkı gibi ahlaki haklar, bu Kamu Lisansı altında lisanslanmamıştır; ayrıca, tanıtım, gizlilik ve/veya diğer benzeri kişilik hakları da lisanslanmamıştır; ancak, mümkün olduğunca, Lisans verenin sahip olduğu böyle hakları, Lisanslı Hakları kullanmanıza izin vermek için gerekli sınırlı ölçüde feragat eder ve/veya bu hakları ileri sürmeyecektir. + + 2. Patent ve ticari marka hakları, bu Kamu Lisansı altında lisanslanmamıştır. + + 3. Mümkün olduğunca, Lisans veren, Lisanslı Hakların kullanımı için sizden telif ücreti talep etme hakkından feragat eder; bu, doğrudan veya herhangi bir gönüllü veya feragat edilebilir yasal veya zorunlu lisanslama şemasında bir toplama topluluğu aracılığıyla olsun. Diğer tüm durumlarda, Lisans veren açıkça bu tür telif ücretlerini toplama hakkını saklı tutar. + + +Bölüm 3 -- Lisans Koşulları. + +Lisanslı Hakları kullanmanız, açıkça aşağıdaki koşullara tabi kılınmıştır. + + a. Atıf. + + 1. Lisanslı Materyali (değiştirilmiş form dahil) Paylaşırsanız, şunları yapmalısınız: + + a. Lisans veren tarafından Lisanslı Materyal ile sağlanan aşağıdakileri saklayın: + + i. Lisanslı Materyalin yaratıcısının ve atıf alması gereken diğer kişilerin kimliğini, Lisans verenin talep ettiği makul bir şekilde belirtin (belirtilmişse takma adla); + + ii. bir telif hakkı bildirimi; + + iii. bu Kamu Lisansı'na atıfta bulunan bir bildirim; + + iv. garantilerin reddine atıfta bulunan bir bildirim; + + v. Lisanslı Materyale, makul ölçüde uygulanabilir olduğu ölçüde, bir URI veya bağlantı; + + b. Lisanslı Materyali değiştirdiyseniz bunu belirtin ve önceki değişikliklerin bir belirtimini saklayın; ve + + c. Lisanslı Materyalin bu Kamu Lisansı altında lisanslandığını belirtin ve bu Kamu Lisansı'nın metnini veya URI'sini veya bağlantısını ekleyin. + + 2. Bölüm 3(a)(1)'deki koşulları, Lisanslı Materyali Paylaştığınız medya, araçlar ve bağlama dayalı olarak makul bir şekilde yerine getirebilirsiniz. Örneğin, gerekli bilgileri içeren bir kaynağa bir URI veya bağlantı sağlayarak bu koşulları yerine getirmek makul olabilir. + + 3. Lisans veren tarafından talep edilirse, Bölüm 3(a)(1)(A) tarafından gerekli olan bilgilerin herhangi birini, makul ölçüde uygulanabilir olduğu ölçüde, kaldırmalısınız. + + b. ShareAlike. + + Bölüm 3(a)'daki koşullara ek olarak, ürettiğiniz Uyarlanan Materyali Paylaşırsanız, aşağıdaki koşullar da geçerlidir. + + 1. Uyguladığınız Adaptör Lisansı, aynı Lisans Unsurlarına sahip bir Creative Commons lisansı olmalıdır; bu versiyon veya daha yenisi veya bir BY-SA Uyumlu Lisans olmalıdır. + + 2. Uyguladığınız Adaptör Lisansı'nın metnini veya URI'sini veya bağlantısını eklemelisiniz. Bu koşulu, Paylaştığınız Uyarlanan Materyalin medya, araçlar ve bağlamına dayalı olarak makul bir şekilde yerine getirebilirsiniz. + + 3. Uyguladığınız Adaptör Lisansı altında verilen hakların kullanımını kısıtlayan ek veya farklı şartlar veya koşullar sunamaz veya uygulayamazsınız. + + +Bölüm 4 -- Sui Generis Veri Tabanı Hakları. + +Lisanslı Haklar, Lisanslı Materyali kullanmanıza uygulanıyorsa Sui Generis Veri Tabanı Haklarını içeriyorsa: + + a. Şüpheye mahal vermemek için, Bölüm 2(a)(1) size veritabanının içeriğinin tamamını veya önemli bir kısmını çıkarma, yeniden kullanma, çoğaltma ve Paylaşma hakkı verir; + + b. Eğer bir veritabanında Sui Generis Veri Tabanı Haklarına sahip olduğunuz veritabanının içeriğinin tamamını veya önemli bir kısmını dahil ederseniz, o zaman Sui Generis Veri Tabanı Haklarına sahip olduğunuz veritabanı (ama onun bireysel içerikleri değil) Uyarlanan Materyaldir, + + Bölüm 3(b) amaçları dahil; ve + c. Veritabanının içeriğinin tamamını veya önemli bir kısmını Paylaşırsanız, Bölüm 3(a) koşullarına uymalısınız. + +Şüpheye mahal vermemek için, bu Bölüm 4, Lisanslı Hakların diğer Telif Hakkı ve Benzeri Hakları içerdiği durumlarda, bu Kamu Lisansı kapsamındaki yükümlülüklerinizi tamamlar ve değiştirmez. + + +Bölüm 5 -- Garanti Reddi ve Sorumluluk Sınırlaması. + + a. LİSANSSIZ HİÇBİR ŞEKİLDE, LİSANS VEREN TARAFINDAN AYRI BİR ŞEKİLDE ÜSTLENMEDİKÇE, MÜMKÜN OLDUĞUNCA, LİSANS VEREN, LİSANSLI MATERYALİ OLDUGU GİBİ VE MEVCUT OLDUĞU GİBİ SUNMAKTADIR VE LİSANSLI MATERYAL HAKKINDA HERHANGİ BİR TÜRLÜ BEYAN VE GARANTİ VERMEZ, İSTER AÇIK, İSTER ZIMNİ, İSTER YASAL, İSTERSE DİĞER. BU, TELİF HAKKI, TİCARET, BELİRLİ BİR AMACA UYGUNLUK, İHLAL ETMİYOR OLMA, GİZLİ VEYA DİĞER HATALARIN YOKLUĞU, DOĞRULUK VEYA HATA BULUNUP BULUNMADIĞIYLA İLGİLİ GARANTİLERİ KAPSAR. GARANTİ REDDİ TAMAMEN VEYA KISMEN İZİN VERİLMİYORSA, BU REDDİ SİZE UYGULANMAYABİLİR. + + b. MÜMKÜN OLDUĞUNCA, LİSANS VEREN, HİÇBİR HUKUK TEORİSİ (İSTER, SINIRLAMASIZ, İHMAL DAHİL) ÜZERİNDEN SİZE HERHANGİ BİR DOĞRUDAN, ÖZEL, İKİNCİL, TESADÜFİ, SONUÇSAL, CEZAİ, ÖRNEKSEL VEYA DİĞER KAYIPLAR, MALİYETLER, HARCAMALAR VEYA ZARARLARDAN SORUMLU OLMAYACAKTIR; BU, LİSANS VERENİN BÖYLE KAYIPLAR, MALİYETLER, HARCAMALAR VEYA ZARARLARIN OLABİLECEĞİ KONUSUNDA BİLGİLENDİRİLMİŞ OLMASI DURUMUNDA BİLE GEÇERLİDİR. SORUMLULUĞUN SINIRLANDIRILMASI TAMAMEN VEYA KISMEN İZİN VERİLM + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen dikkate alın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucu ortaya çıkan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/tr/lessons/sketchnotes/README.md b/translations/tr/lessons/sketchnotes/README.md new file mode 100644 index 00000000..a89ef02f --- /dev/null +++ b/translations/tr/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +Tüm müfredatın sketchnotları buradan indirilebilir. + +🎨 Oluşturan: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) + +[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) + +**Açıklama**: +Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluğa özen göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımından kaynaklanan herhangi bir yanlış anlama veya yanlış yorumlama için sorumluluk kabul etmiyoruz. \ No newline at end of file diff --git a/translations/zh/README.md b/translations/zh/README.md new file mode 100644 index 00000000..d1ed8249 --- /dev/null +++ b/translations/zh/README.md @@ -0,0 +1,140 @@ +[![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)| +|:---:| +| 初学者的人工智能 - _Sketchnote by [@girlie_mac](https://twitter.com/girlie_mac)_ | + +通过我们为期12周、24节课的课程,探索**人工智能**(AI)的世界!该课程包括实用课程、测验和实验室,适合初学者,涵盖了如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) + +* 使用**AI在商业中的应用**的商业案例。考虑参加Microsoft Learn上的[商业用户的AI入门](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum)学习路径,或与[INSEAD](https://www.insead.edu/)合作开发的[AI商业学校](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum)。 +* **经典机器学习**,在我们的[初学者机器学习课程](http://github.com/Microsoft/ML-for-Beginners)中有详细描述。 +* 使用**[认知服务](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**构建的实际AI应用。为此,我们建议您从Microsoft Learn的[计算机视觉](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum)、[自然语言处理](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum)、**[使用Azure OpenAI服务的生成式AI](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)**等模块开始学习。 +* 特定的机器学习 **云框架**,例如 [Azure Machine Learning](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-bethanycheum)、[Microsoft Fabric](https://learn.microsoft.com/en-us/training/paths/get-started-fabric/?WT.mc_id=academic-77998-bethanycheum) 或 [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum)。建议使用 [使用 Azure Machine Learning 构建和运营机器学习解决方案](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) 和 [使用 Azure Databricks 构建和运营机器学习解决方案](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) 的学习路径。 +* **对话式人工智能** 和 **聊天机器人**。有一个单独的 [创建对话式 AI 解决方案](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) 学习路径,您还可以参考 [这篇博客文章](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) 获取更多细节。 +* 深度学习背后的 **深层数学**。为此,我们推荐由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 合著的 [深度学习](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) | [Notebook](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://microsoft.github.io/AI-For-Beginners/lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) | | +| V | [**自然语言处理**](./lessons/5-NLP/README.md) | [PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) /[TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) | [在 Microsoft Azure 上探索自然语言处理](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 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 | **人工智能伦理** | | | +| 24 | [人工智能伦理与负责任的人工智能](./lessons/7-Ethics/README.md) | [微软学习:负责任的人工智能原则](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) 模块的链接,涵盖相关主题。 + +## 开始使用 + +- 我们创建了一个 [设置课程](./lessons/0-course-setup/setup.md) 来帮助您设置开发环境。 - 对于教育工作者,我们也创建了一个 [课程设置课程](./lessons/0-course-setup/for-teachers.md)! +- 如何 [在 VSCode 或 Codepace 中运行代码](./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),与其他学习这门课程的学习者见面并建立联系,获得支持。 + +## 测验 + +> **关于测验的说明**:所有测验都包含在 etc\quiz-app 文件夹中的 Quiz-app 中,它们在测验中链接,可以在本地运行或部署到 Azure;请按照 `quiz-app` 文件夹中的说明进行操作。它们正在逐步本地化。 + +## 需要帮助 + +您有建议或发现拼写或代码错误吗?请提出问题或创建拉取请求。 + +## 特别感谢 + +* **✍️ 主要作者:** [Dmitry Soshnikov](http://soshnikov.com),博士 +* **🔥 编辑:** [Jen Looper](https://twitter.com/jenlooper),博士 +* **🎨 手绘插图:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ 测验创建者:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 核心贡献者:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## 其他课程 + +我们的团队还制作了其他课程!请查看: + +* [初学者的数据科学](https://aka.ms/ds4beginners) +* [**版本 2.0** 初学者的生成 AI](https://aka.ms/genai-beginners) +* [**新** 初学者的网络安全](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) +* [初学者的网页开发](https://aka.ms/webdev-beginners) +* [初学者的物联网](https://aka.ms/iot-beginners) +* [初学者的机器学习](https://aka.ms/ml4beginners) +* [初学者的 XR 开发](https://aka.ms/xr-dev-for-beginners) +* [掌握 GitHub Copilot 进行 AI 配对编程](https://aka.ms/GitHubCopilotAI) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/SECURITY.md b/translations/zh/SECURITY.md new file mode 100644 index 00000000..47e1dbd7 --- /dev/null +++ b/translations/zh/SECURITY.md @@ -0,0 +1,40 @@ +## 安全性 + +微软非常重视我们软件产品和服务的安全性,这包括通过我们的 GitHub 组织管理的所有源代码库,这些组织包括 [Microsoft](https://github.com/Microsoft)、[Azure](https://github.com/Azure)、[DotNet](https://github.com/dotnet)、[AspNet](https://github.com/aspnet)、[Xamarin](https://github.com/xamarin) 和 [我们的 GitHub 组织](https://opensource.microsoft.com/)。 + +如果您认为在任何微软拥有的代码库中发现了符合 [微软安全漏洞定义](https://aka.ms/opensource/security/definition) 的安全漏洞,请按照下面的说明向我们报告。 + +## 报告安全问题 + +**请不要通过公共 GitHub 问题报告安全漏洞。** + +相反,请将其报告给微软安全响应中心(MSRC),网址为 [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report)。 + +如果您希望在不登录的情况下提交,请发送电子邮件至 [secure@microsoft.com](mailto:secure@microsoft.com)。如果可能,请使用我们的 PGP 密钥加密您的消息;请从 [微软安全响应中心 PGP 密钥页面](https://aka.ms/opensource/security/pgpkey) 下载它。 + +您应该在 24 小时内收到回复。如果由于某种原因您没有收到,请通过电子邮件跟进,以确保我们收到了您的原始消息。更多信息可以在 [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) 找到。 + +请包括以下请求的信息(尽可能提供)以帮助我们更好地理解可能问题的性质和范围: + + * 问题类型(例如,缓冲区溢出、SQL 注入、跨站脚本等) + * 与问题表现相关的源文件的完整路径 + * 受影响源代码的位置(标签/分支/提交或直接 URL) + * 重现问题所需的任何特殊配置 + * 重现问题的逐步说明 + * 概念证明或利用代码(如果可能) + * 问题的影响,包括攻击者可能如何利用该问题 + +这些信息将帮助我们更快地处理您的报告。 + +如果您是为了漏洞赏金而报告,更完整的报告可以有助于获得更高的赏金奖励。请访问我们的 [微软漏洞赏金计划](https://aka.ms/opensource/security/bounty) 页面以获取有关我们当前计划的更多详细信息。 + +## 首选语言 + +我们希望所有沟通使用英语。 + +## 政策 + +微软遵循 [协调漏洞披露](https://aka.ms/opensource/security/cvd) 原则。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于重要信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或错误解释不承担责任。 \ No newline at end of file diff --git a/translations/zh/etc/CODE_OF_CONDUCT.md b/translations/zh/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..3396ae89 --- /dev/null +++ b/translations/zh/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,12 @@ +# 微软开源行为准则 + +该项目已采纳 [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) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/etc/CONTRIBUTING.md b/translations/zh/etc/CONTRIBUTING.md new file mode 100644 index 00000000..7bec419c --- /dev/null +++ b/translations/zh/etc/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# 贡献 + +本项目欢迎贡献和建议。大多数贡献需要您同意一份贡献者许可协议(CLA),声明您有权利并且确实授予我们使用您贡献的权利。有关详细信息,请访问 https://cla.microsoft.com。 + +当您提交拉取请求时,CLA-bot 将自动确定您是否需要提供 CLA,并适当地装饰 PR(例如,标签、评论)。只需按照机器人提供的说明进行操作。您只需在所有使用我们 CLA 的仓库中执行一次此操作。 + +本项目已采纳 [Microsoft 开源行为准则](https://opensource.microsoft.com/codeofconduct/)。有关更多信息,请参见 [行为准则常见问题解答](https://opensource.microsoft.com/codeofconduct/faq/) 或通过 [opencode@microsoft.com](mailto:opencode@microsoft.com) 联系我们,提出任何其他问题或意见。 + +# 寻找贡献 + +我们目前积极寻找以下主题的贡献: + +- [ ] 编写深度强化学习部分 +- [ ] 改进目标检测部分 + 笔记本 +- [ ] PyTorch Lightning(针对 [此部分](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] 编写命名实体识别部分 + 示例 +- [ ] 为 [此部分](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) 创建训练我们自己的嵌入示例 + +**免责声明**: +本文件是使用基于机器的人工智能翻译服务进行翻译的。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或错误解释不承担责任。 \ No newline at end of file diff --git a/translations/zh/etc/Mindmap.md b/translations/zh/etc/Mindmap.md new file mode 100644 index 00000000..0e614efa --- /dev/null +++ b/translations/zh/etc/Mindmap.md @@ -0,0 +1,76 @@ +# AI + +## [AI简介](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - AI定义 + - AI历史 + - AI方法 + - 自上而下/符号 + - 自下而上/神经 + - 进化 + - 协同/涌现AI + - [微软AI商业学校](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [符号AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - 知识表示 + - [专家系统](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [本体](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - 语义网 + +## [神经网络](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/README.md) + - [感知器](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/README.md) + - [多层网络](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [框架简介](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/README.md) + - [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) + - 在微软学习平台上 + - [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) + - [自编码器和变分自编码器](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) + - 在微软学习平台上 + - [AI基础:探索自然语言处理](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [使用PyTorch进行自然语言处理](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [使用TensorFlow进行自然语言处理](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) +- [文本表示](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - 词袋模型 + - TF/IDF + - [语义嵌入](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [语言建模](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [递归神经网络](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [生成式递归网络](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [变换器和BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [命名实体识别](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [文本生成和GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## 其他技术 + - [遗传算法](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [深度强化学习](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [多智能体系统](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [人工智能伦理](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [微软学习:负责任的人工智能](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## 额外内容 + - [多模态网络](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/README.md) + - [CLIP](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) + - DALL-E + - VQ-GAN + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/etc/SUPPORT.md b/translations/zh/etc/SUPPORT.md new file mode 100644 index 00000000..a961cdc9 --- /dev/null +++ b/translations/zh/etc/SUPPORT.md @@ -0,0 +1,14 @@ +# 支持 + +## 如何提交问题和寻求帮助 + +该项目使用 GitHub Issues 来跟踪错误和功能请求。在提交新问题之前,请先搜索现有问题以避免重复。对于新问题,请将您的错误或功能请求作为新问题提交。 + +如需关于使用此项目的帮助和问题,请使用讨论板。 + +## Microsoft 支持政策 + +对该项目的支持仅限于上述列出的资源。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业的人类翻译。我们对因使用本翻译而产生的任何误解或误释不承担任何责任。 \ No newline at end of file diff --git a/translations/zh/etc/TRANSLATIONS.md b/translations/zh/etc/TRANSLATIONS.md new file mode 100644 index 00000000..16f0d0ee --- /dev/null +++ b/translations/zh/etc/TRANSLATIONS.md @@ -0,0 +1,36 @@ +# 通过翻译课程贡献 + +我们欢迎对本课程中课程的翻译! + +## 指南 + +每个课程文件夹和课程介绍文件夹中都有包含翻译后的markdown文件的文件夹。 + +> 请注意,请勿翻译代码示例文件中的任何代码;唯一需要翻译的内容是README、作业和测验。谢谢! + +翻译后的文件应遵循以下命名约定: + +**README._[language]_.md** + +其中 _[language]_ 是遵循ISO 639-1标准的两字母语言缩写(例如,`README.es.md`表示西班牙语,`README.nl.md`表示荷兰语)。 + +**assignment._[language]_.md** + +与README类似,请翻译作业。 + +**测验** + +1. 通过在此处添加文件,将您的翻译添加到quiz-app中:https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations,并遵循适当的命名约定(en.json,fr.json)。**不过,请不要本地化“true”或“false”这两个词。谢谢!** + +2. 将您的语言代码添加到quiz-app的App.vue文件中的下拉菜单中。 + +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文件中的所有测验链接,使其直接指向您的翻译测验:https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 变为 https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**谢谢** + +我们非常感谢您的努力! + +**免责声明**: +本文件使用机器翻译服务进行翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或错误解释不承担责任。 \ No newline at end of file diff --git a/translations/zh/etc/quiz-app/README.md b/translations/zh/etc/quiz-app/README.md new file mode 100644 index 00000000..f50b6fa4 --- /dev/null +++ b/translations/zh/etc/quiz-app/README.md @@ -0,0 +1,127 @@ +# 测验 + +这些测验是 https://aka.ms/ai-beginners 上 AI 课程的课前和课后测验。 + +## 添加翻译的测验集 + +通过在 `assets/translations` 文件夹中创建匹配的测验结构来添加测验翻译。规范测验位于 `assets/translations/en`。测验按课程分为几个组。确保将编号与正确的测验部分对齐。本课程总共有 40 个测验,编号从 0 开始。 + +编辑完翻译后,编辑翻译文件夹中的 index.js 文件,以按照 `en` 中的约定导入所有文件。 + +在 `assets/translations` 中编辑 `index.js` 文件,以导入新的翻译文件。 + +然后,在此应用程序中的 `App.vue` 下拉菜单中添加您的语言。将本地化缩写与您的语言文件夹名称匹配。 + +最后,如果存在,编辑翻译课程中的所有测验链接,以包括此本地化作为查询参数,例如:`?loc=fr`。 + +## 项目设置 + +``` +npm install +``` + +### 为开发编译和热重载 + +``` +npm run serve +``` + +### 为生产编译和压缩 + +``` +npm run build +``` + +### 检查并修复文件 + +``` +npm run lint +``` + +### 自定义配置 + +请参阅 [配置参考](https://cli.vuejs.org/config/)。 + +致谢:感谢这个测验应用程序的原始版本: https://github.com/arpan45/simple-quiz-vue + +## 部署到 Azure + +以下是帮助您入门的逐步指南: + +1. 叉一个 GitHub 仓库 +确保您的静态 Web 应用代码在您的 GitHub 仓库中。叉这个仓库。 + +2. 创建 Azure 静态 Web 应用 +- 创建一个 [Azure 账户](http://azure.microsoft.com) +- 访问 [Azure 门户](https://portal.azure.com) +- 点击“创建资源”,搜索“静态 Web 应用”。 +- 点击“创建”。 + +3. 配置静态 Web 应用 +- 基本信息:订阅:选择您的 Azure 订阅。 +- 资源组:创建一个新的资源组或使用现有的。 +- 名称:为您的静态 Web 应用提供一个名称。 +- 区域:选择离您的用户最近的区域。 + +- #### 部署详情: +- 来源:选择“GitHub”。 +- GitHub 账户:授权 Azure 访问您的 GitHub 账户。 +- 组织:选择您的 GitHub 组织。 +- 仓库:选择包含您静态 Web 应用的仓库。 +- 分支:选择您想要部署的分支。 + +- #### 构建详情: +- 构建预设:选择您的应用构建所用的框架(例如,React、Angular、Vue 等)。 +- 应用位置:指定包含您应用代码的文件夹(例如,如果在根目录,则为 /)。 +- API 位置:如果您有 API,请指定其位置(可选)。 +- 输出位置:指定生成输出的文件夹(例如,build 或 dist)。 + +4. 审核并创建 +审核您的设置并点击“创建”。Azure 将设置所需的资源并在您的仓库中创建 GitHub Actions 工作流。 + +5. GitHub Actions 工作流 +Azure 将自动在您的仓库中创建一个 GitHub Actions 工作流文件(.github/workflows/azure-static-web-apps-.yml)。该工作流将处理构建和部署过程。 + +6. 监控部署 +转到您的 GitHub 仓库中的“操作”选项卡。 +您应该看到一个正在运行的工作流。此工作流将构建并将您的静态 Web 应用部署到 Azure。 +一旦工作流完成,您的应用将在提供的 Azure URL 上上线。 + +### 示例工作流文件 + +以下是 GitHub Actions 工作流文件可能的示例: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "etc/quiz-app # App source code path" + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### 其他资源 +- [Azure 静态 Web 应用文档](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions 文档](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而产生的任何误解或错误解释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/0-course-setup/for-teachers.md b/translations/zh/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..050006ea --- /dev/null +++ b/translations/zh/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,26 @@ +# 对于教育工作者 + +您想在课堂上使用这个课程吗?请随意使用! + +实际上,您可以通过使用 GitHub Classroom 在 GitHub 本身中使用它。 + +为此,请先克隆这个仓库。您需要为每一节课创建一个仓库,因此您需要将每个文件夹提取到一个单独的仓库中。这样,[GitHub Classroom](https://classroom.github.com/classrooms) 就可以单独处理每一节课。 + +这些[完整说明](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/)将为您提供如何设置课堂的思路。 + +## 按照当前状态使用仓库 + +如果您希望按照当前状态使用这个仓库,而不使用 GitHub Classroom,也可以做到。您需要与学生沟通,告诉他们一起完成哪一节课。 + +在在线格式(如 Zoom、Teams 或其他)中,您可以为测验形成小组讨论室,并指导学生帮助他们准备学习。然后邀请学生参加测验,并在特定时间将他们的答案作为“问题”提交。对于作业,如果您希望学生在公开的环境中协作工作,也可以采取同样的方法。 + +如果您更喜欢更私密的格式,可以让学生将课程逐节克隆到他们自己的 GitHub 私有仓库中,并给予您访问权限。然后他们可以私下完成测验和作业,并通过您课堂仓库中的问题提交给您。 + +在在线课堂格式中,有很多方法可以使这一切顺利进行。请告诉我们什么对您最有效! + +## 请分享您的想法 + +我们希望这个课程能为您和您的学生提供帮助。请在讨论板上给我们反馈! + +**免责声明**: +本文件使用机器翻译服务进行了翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/0-course-setup/how-to-run.md b/translations/zh/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..89cd8b2a --- /dev/null +++ b/translations/zh/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,67 @@ +# 如何运行代码 + +本课程包含许多可执行的示例和实验室,您可能希望运行这些示例。为了做到这一点,您需要能够在本课程提供的 Jupyter Notebooks 中执行 Python 代码。您有几种运行代码的选项: + +## 在本地计算机上运行 + +要在本地计算机上运行代码,您需要安装某个版本的 Python。我个人推荐安装 **[miniconda](https://conda.io/en/latest/miniconda.html)** - 这是一个相对轻量的安装,它支持 `conda` 包管理器,用于不同的 Python **虚拟环境**。 + +安装完 miniconda 后,您需要克隆该代码库并创建一个用于本课程的虚拟环境: + +```bash +git clone http://github.com/microsoft/ai-for-beginners +cd ai-for-beginners +conda env create --name ai4beg --file .devcontainer/environment.yml +conda activate ai4beg +``` + +### 使用带有 Python 扩展的 Visual Studio Code + +使用本课程的最佳方式可能是通过带有 [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste) 的 [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) 打开它。 + +> **注意**:一旦您克隆并在 VS Code 中打开目录,它会自动建议您安装 Python 扩展。您还需要按照上述说明安装 miniconda。 + +> **注意**:如果 VS Code 建议您在容器中重新打开代码库,您需要拒绝此请求,以使用本地 Python 安装。 + +### 在浏览器中使用 Jupyter + +您还可以直接在自己计算机的浏览器中使用 Jupyter 环境。实际上,经典 Jupyter 和 Jupyter Hub 都提供了相当方便的开发环境,具有自动补全、代码高亮等功能。 + +要在本地启动 Jupyter,请进入课程目录,并执行: + +```bash +jupyter notebook +``` +或 +```bash +jupyterhub +``` +然后您可以导航到任何 `.ipynb` files, open them and start working. + +### Running in container + +One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` 文件夹,该文件夹指示如何为该代码库构建容器,VS Code 会建议您在容器中重新打开代码。这将需要 Docker 安装,并且会更复杂,因此我们建议更有经验的用户使用此选项。 + +## 在云中运行 + +如果您不想在本地安装 Python,并且可以访问一些云资源 - 一个不错的替代方案是通过云运行代码。您可以通过几种方式做到这一点: + +* 使用 **[GitHub Codespaces](https://github.com/features/codespaces)**,这是在 GitHub 上为您创建的虚拟环境,可以通过 VS Code 浏览器界面访问。如果您可以访问 Codespaces,您只需点击代码库中的 **Code** 按钮,启动一个代码空间,几乎可以立即开始运行。 +* 使用 **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**。 [Binder](https://mybinder.org) 是为像您这样的人在云中提供的免费计算资源,以测试 GitHub 上的一些代码。主页上有一个按钮可以在 Binder 中打开代码库 - 这应该会快速将您带到 Binder 网站,Binder 会构建底层容器并无缝启动 Jupyter Web 界面。 + +> **注意**:为了防止滥用,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,逐个执行它们。 + +**免责声明**: +本文件是使用机器翻译的人工智能翻译服务进行翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于重要信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/0-course-setup/setup.md b/translations/zh/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..387c08e5 --- /dev/null +++ b/translations/zh/lessons/0-course-setup/setup.md @@ -0,0 +1,45 @@ +# 开始使用本课程 + +## 你是学生吗? + +通过以下资源开始学习: + +* [学生中心页面](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) 在这个页面上,你会找到初学者资源、学生包,甚至获取免费证书凭证的方法。这是你想要收藏并不时查看的一页,因为我们每月至少会更换一次内容。 +* [微软学生学习大使](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) 加入全球学生大使社区,这可能是你进入微软的途径。 + +**学生们**,有几种方式可以使用这个课程。首先,你可以直接阅读文本并在 GitHub 上查看代码。如果你想在任何笔记本中运行代码 - [请阅读我们的说明](./etc/how-to-run.md),并在[这篇博客文章](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)中找到更多建议。 + +> **注意**: [关于如何运行本课程中代码的说明](/how-to-run.md) + +## 自学 + +然而,如果你想将课程作为自学项目,我们建议你将整个仓库分叉到自己的 GitHub 账户,并独立或与小组一起完成练习: + +* 从一项课前测验开始。 +* 阅读讲座的介绍文本。 +* 如果讲座有额外的笔记本,逐一查看,阅读并执行代码。如果同时提供 TensorFlow 和 PyTorch 笔记本,你可以专注于其中一个 - 选择你喜欢的框架。 +* 笔记本通常包含一些挑战,需要你稍微调整代码以进行实验。 +* 参加课后测验。 +* 如果模块附带实验室 - 完成作业。 +* 访问 [讨论板](https://github.com/microsoft/AI-For-Beginners/discussions) 来“畅所欲言”。 + +> 为了进一步学习,我们建议遵循这些 [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),然后在该仓库的 `etc/docsify` 文件夹中,输入 `docsify serve`。网站将在你的本地主机的 3000 端口提供服务: `localhost:3000`。课程的 PDF 文件可以在 [这个链接](../../../../../../etc/pdf/readme.pdf) 中找到。 + +**免责声明**: +本文件是使用基于机器的人工智能翻译服务进行翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原文件的母语版本应被视为权威来源。对于重要信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/1-Intro/README.md b/translations/zh/lessons/1-Intro/README.md new file mode 100644 index 00000000..142e387a --- /dev/null +++ b/translations/zh/lessons/1-Intro/README.md @@ -0,0 +1,56 @@ +> 图片来自 [Dmitry Soshnikov](http://soshnikov.com) + +随着时间的推移,计算资源变得更加便宜,数据也变得更加丰富,因此神经网络方法在许多领域(如计算机视觉或语音理解)与人类竞争时表现出了出色的性能。在过去十年中,人工智能一词主要被用作神经网络的同义词,因为我们听到的大多数人工智能成功案例都是基于它们的。 + +我们可以观察到方法的变化,例如,在创建一个下棋的计算机程序时: + +* 早期的国际象棋程序基于搜索——程序明确尝试估计在给定的下一步中对手可能的走法,并根据可以在几步内实现的最佳位置选择一个最佳走法。这导致了所谓的 [alpha-beta 剪枝](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) 搜索算法的发展。 +* 搜索策略在游戏结束时表现良好,因为搜索空间受限于少量可能的走法。然而,在游戏开始时,搜索空间巨大,算法可以通过学习人类玩家之间的现有对局来改进。后续实验采用了所谓的 [案例推理](https://en.wikipedia.org/wiki/Case-based_reasoning),程序在知识库中寻找与当前游戏位置非常相似的案例。 +* 现代赢得人类玩家的程序基于神经网络和 [强化学习](https://en.wikipedia.org/wiki/Reinforcement_learning),这些程序通过与自己对弈并从自身错误中学习来学习下棋——就像人类学习下棋时一样。然而,计算机程序可以在更短的时间内进行更多的对局,从而可以更快地学习。 + +✅ 进行一些研究,了解其他 AI 玩过的游戏。 + +同样,我们可以看到创建“对话程序”(可能通过图灵测试)的方式是如何变化的: + +* 早期的此类程序如 [Eliza](https://en.wikipedia.org/wiki/ELIZA),基于非常简单的语法规则和将输入句子重新表述为问题。 +* 现代助手,如 Cortana、Siri 或 Google Assistant,都是混合系统,使用神经网络将语音转换为文本并识别我们的意图,然后采用一些推理或显式算法来执行所需的操作。 +* 在未来,我们可能期待一个完整的基于神经网络的模型能够独立处理对话。最近的 GPT 和 [Turing-NLG](https://turing.microsoft.com/) 系列神经网络在这方面显示出了巨大的成功。 + +> 图片来自 Dmitry Soshnikov,[照片](https://unsplash.com/photos/r8LmVbUKgns)来自 [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto),Unsplash + +## 最近的人工智能研究 + +神经网络研究的巨大增长始于2010年左右,当时大型公共数据集开始变得可用。一个名为 [ImageNet](https://en.wikipedia.org/wiki/ImageNet) 的庞大图像集合,包含约1400万张注释图像,催生了 [ImageNet 大规模视觉识别挑战赛](https://image-net.org/challenges/LSVRC/)。 + +![ILSVRC 准确率](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> 图片来自 [Dmitry Soshnikov](http://soshnikov.com) +在2012年,[卷积神经网络](../4-ComputerVision/07-ConvNets/README.md)首次被应用于图像分类,这导致分类错误率显著下降(从近30%降至16.4%)。在2015年,微软研究院的ResNet架构[达到了人类水平的准确率](https://doi.org/10.1109/ICCV.2015.123)。 + +自那时以来,神经网络在许多任务中表现出了非常成功的行为: + +--- + +年份 | 达到人类水平 +-----|-------- +2015 | [图像分类](https://doi.org/10.1109/ICCV.2015.123) +2016 | [对话语音识别](https://arxiv.org/abs/1610.05256) +2018 | [自动机器翻译](https://arxiv.org/abs/1803.05567)(中文到英文) +2020 | [图像描述生成](https://arxiv.org/abs/2009.13682) + +在过去几年中,我们见证了大型语言模型的巨大成功,例如BERT和GPT-3。这主要得益于大量可用的通用文本数据,使我们能够训练模型以捕捉文本的结构和含义,在通用文本集合上进行预训练,然后将这些模型专门化以处理更具体的任务。在本课程的后续部分,我们将进一步了解[自然语言处理](../5-NLP/README.md)。 + +## 🚀 挑战 + +浏览互联网,确定您认为人工智能最有效使用的地方。是地图应用程序,还是某种语音转文本服务,或是视频游戏?研究该系统是如何构建的。 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## 复习与自学 + +通过阅读[这节课](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML),回顾人工智能和机器学习的历史。从该课或本课顶部的速写笔记中选择一个元素,深入研究以理解其演变的文化背景。 + +**作业**: [游戏创作马拉松](assignment.md) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们不对因使用本翻译而产生的任何误解或误释承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/1-Intro/assignment.md b/translations/zh/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..e86e4ff2 --- /dev/null +++ b/translations/zh/lessons/1-Intro/assignment.md @@ -0,0 +1,6 @@ +# 游戏开发马拉松 + +游戏领域深受人工智能和机器学习发展的影响。在这次作业中,写一篇简短的论文,介绍一款你喜欢的受人工智能演变影响的游戏。这个游戏应该足够古老,以便受到几种类型的计算机处理系统的影响。一个好的例子是国际象棋或围棋,但也可以看看像乒乓球或吃豆人这样的电子游戏。写一篇讨论游戏的过去、现在和人工智能未来的文章。 + +**免责声明**: +本文件是使用基于机器的人工智能翻译服务进行翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于重要信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/2-Symbolic/README.md b/translations/zh/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..71a31f18 --- /dev/null +++ b/translations/zh/lessons/2-Symbolic/README.md @@ -0,0 +1,243 @@ +# 知识表示与专家系统 + +![符号人工智能内容摘要](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.zh.png) + +> 速记笔记由 [Tomomi Imura](https://twitter.com/girlie_mac) 提供 + +对人工智能的追求基于对知识的探索,旨在以类似于人类的方式理解世界。那么,如何才能实现这一目标呢? + +## [课前小测](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +在人工智能的早期,创建智能系统的自上而下的方法(在上节课中讨论过)是非常流行的。其理念是将人类的知识提取到某种机器可读的形式中,然后利用这些知识自动解决问题。这种方法基于两个重要的概念: + +* 知识表示 +* 推理 + +## 知识表示 + +符号人工智能中的一个重要概念是**知识**。需要将知识与*信息*或*数据*区分开。例如,可以说书籍包含知识,因为通过学习书籍,人们可以成为专家。然而,书籍中所包含的实际上被称为*数据*,通过阅读书籍并将这些数据整合到我们的世界模型中,我们将这些数据转化为知识。 + +> ✅ **知识** 是我们头脑中所包含的,代表我们对世界的理解。它通过一个主动的**学习**过程获得,该过程将我们接收到的信息整合到我们对世界的主动模型中。 + +通常,我们并不会严格定义知识,而是通过 [DIKW 金字塔](https://en.wikipedia.org/wiki/DIKW_pyramid) 将其与其他相关概念对齐。它包含以下概念: + +* **数据** 是以物理媒介表示的东西,如书面文本或口头语言。数据独立于人类而存在,可以在不同人之间传递。 +* **信息** 是我们在脑海中对数据的解释。例如,当我们听到“计算机”这个词时,我们对它有一定的理解。 +* **知识** 是被整合到我们世界模型中的信息。例如,一旦我们了解到计算机是什么,我们就开始对它的工作原理、价格以及用途有一些想法。这些相互关联的概念网络形成了我们的知识。 +* **智慧** 是我们对世界理解的另一个层次,代表*元知识*,例如某种关于知识如何以及何时使用的概念。 + + + +*图片 [来自维基百科](https://commons.wikimedia.org/w/index.php?curid=37705247),作者 Longlivetheux - 自主创作,CC BY-SA 4.0* + +因此,**知识表示**的问题是找到一种有效的方法,将知识以数据的形式表示在计算机内部,以使其能够自动使用。这可以视为一个光谱: + +![知识表示光谱](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.zh.png) + +> 图片由 [Dmitry Soshnikov](http://soshnikov.com) 提供 + +* 在左侧,有非常简单的知识表示类型,可以有效地被计算机使用。最简单的是算法表示,其中知识由计算机程序表示。然而,这并不是表示知识的最佳方式,因为它缺乏灵活性。我们头脑中的知识往往是非算法的。 +* 在右侧,有自然文本等表示方式。这是最强大的,但不能用于自动推理。 + +> ✅ 想一想你是如何在脑海中表示知识并将其转化为笔记的。是否有某种特定格式对你有帮助以促进记忆? + +## 分类计算机知识表示 + +我们可以将不同的计算机知识表示方法分类为以下几类: + +* **网络表示** 基于我们头脑中存在相互关联的概念网络。我们可以尝试在计算机内部重建相同的网络 - 这被称为**语义网络**。 + +1. **对象-属性-值三元组** 或 **属性-值对**。由于图可以在计算机内部表示为节点和边的列表,我们可以通过包含对象、属性和值的三元组列表来表示语义网络。例如,我们构建关于编程语言的以下三元组: + +对象 | 属性 | 值 +-------|-----------|------ +Python | 是 | 无类型语言 +Python | 发明者 | Guido van Rossum +Python | 块语法 | 缩进 +无类型语言 | 没有 | 类型定义 + +> ✅ 想想三元组如何用于表示其他类型的知识。 + +2. **层次表示** 强调我们通常在头脑中创建对象的层次结构。例如,我们知道金丝雀是一种鸟,而所有鸟都有翅膀。我们还对金丝雀通常的颜色以及它们的飞行速度有一定的了解。 + + - **框架表示** 基于将每个对象或对象类表示为包含**插槽**的**框架**。插槽有可能的默认值、值限制或可以调用的存储过程以获得插槽的值。所有框架形成类似于面向对象编程语言中的对象层次结构。 + - **场景** 是一种特殊类型的框架,表示随时间展开的复杂情况。 + +**Python** + +插槽 | 值 | 默认值 | 区间 | +-----|-------|---------------|----------| +名称 | Python | | | +是 | 无类型语言 | | | +变量大小写 | | 驼峰式 | | +程序长度 | | | 5-5000 行 | +块语法 | 缩进 | | | + +3. **过程表示** 基于通过一系列在特定条件下可以执行的操作来表示知识。 + - 生产规则是 if-then 语句,允许我们得出结论。例如,医生可以有一个规则说 **如果** 患者有高烧 **或** 血液检查中 C 反应蛋白水平高 **那么** 他有炎症。一旦我们遇到其中一个条件,就可以得出关于炎症的结论,并在进一步推理中使用它。 + - 算法可以被视为另一种形式的过程表示,尽管它们几乎从未直接用于基于知识的系统。 + +4. **逻辑** 最初由亚里士多德提出,作为表示普遍人类知识的一种方式。 + - 谓词逻辑作为一种数学理论过于复杂,无法被计算,因此通常使用其某个子集,例如在 Prolog 中使用的霍恩子句。 + - 描述逻辑是一类逻辑系统,用于表示和推理关于分布式知识表示的对象层次结构,如*语义网*。 + +## 专家系统 + +符号人工智能的早期成功之一是所谓的**专家系统** - 设计用于在某些有限问题领域充当专家的计算机系统。它们基于从一个或多个人类专家提取的**知识库**,并包含一个在其上执行推理的**推理引擎**。 + +![人类架构](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.zh.png) | ![基于知识的系统](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.zh.png) +---------------------------------------------|------------------------------------------------ +人类神经系统的简化结构 | 基于知识的系统架构 + +专家系统的构建方式类似于人类的推理系统,其中包含**短期记忆**和**长期记忆**。同样,在基于知识的系统中,我们区分以下组件: + +* **问题记忆**:包含当前正在解决的问题的知识,即患者的体温或血压,他是否有炎症等。这种知识也称为**静态知识**,因为它包含我们目前对问题的快照 - 所谓的*问题状态*。 +* **知识库**:表示关于问题领域的长期知识。它是从人类专家手动提取的,并且在不同咨询之间不会改变。因为它允许我们从一个问题状态导航到另一个,所以也称为**动态知识**。 +* **推理引擎**:协调在问题状态空间中的整个搜索过程,必要时向用户询问问题。它还负责找到适用于每个状态的正确规则。 + +作为一个例子,让我们考虑以下基于其物理特征确定动物的专家系统: + +![AND-OR 树](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.zh.png) + +> 图片由 [Dmitry Soshnikov](http://soshnikov.com) 提供 + +该图被称为**AND-OR 树**,是生产规则集的图形表示。在从专家提取知识的初期,绘制树是有用的。为了在计算机内部表示知识,使用规则更为方便: + +``` +IF the animal eats meat +OR (animal has sharp teeth + AND animal has claws + AND animal has forward-looking eyes +) +THEN the animal is a carnivore +``` + +你会注意到规则左侧的每个条件和动作本质上是对象-属性-值(OAV)三元组。**工作记忆**包含与当前正在解决的问题相对应的 OAV 三元组集合。**规则引擎**查找条件满足的规则并应用它们,向工作记忆添加另一个三元组。 + +> ✅ 在你喜欢的主题上写下自己的 AND-OR 树! + +### 前向推理与后向推理 + +上述过程称为**前向推理**。它从工作记忆中关于问题的一些初始数据开始,然后执行以下推理循环: + +1. 如果目标属性在工作记忆中存在 - 停止并给出结果 +2. 查找所有当前条件满足的规则 - 获取**冲突集**。 +3. 执行**冲突解决** - 选择将在此步骤中执行的一条规则。可能有不同的冲突解决策略: + - 选择知识库中第一个适用的规则 + - 随机选择一条规则 + - 选择一个*更具体*的规则,即在“左侧”(LHS)满足最多条件的规则 +4. 应用所选规则并将新知识插入问题状态 +5. 从步骤 1 重复。 + +然而,在某些情况下,我们可能希望从对问题的空知识开始,并询问问题以帮助我们得出结论。例如,在进行医学诊断时,我们通常不会在开始诊断患者之前进行所有医学分析。我们更倾向于在需要做出决策时进行分析。 + +这个过程可以通过**后向推理**建模。它由**目标**驱动 - 我们希望找到的属性值: + +1. 选择所有可以给我们目标值的规则(即在右侧(RHS)有目标的规则) - 冲突集 +2. 如果没有该属性的规则,或者有规则表明我们应该向用户询问该值 - 则询问,否则: +3. 使用冲突解决策略选择一条规则作为*假设* - 我们将尝试证明它 +4. 对规则左侧(LHS)中的所有属性重复该过程,尝试将其证明为目标 +5. 如果在任何时候过程失败 - 在第 3 步使用另一条规则。 + +> ✅ 在哪些情况下前向推理更合适?后向推理又如何? + +### 实现专家系统 + +专家系统可以使用不同的工具实现: + +* 直接用某种高级编程语言编写。这不是最佳选择,因为基于知识的系统的主要优势在于知识与推理是分开的,潜在的问题领域专家应该能够在不理解推理过程细节的情况下编写规则。 +* 使用**专家系统外壳**,即专门设计用于通过某种知识表示语言填充知识的系统。 + +## ✍️ 练习:动物推理 + +请查看 [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb),了解实现前向和后向推理专家系统的示例。 + +> **注意**:这个例子相对简单,仅给出了专家系统的外观。一旦你开始创建这样的系统,只有在达到一定数量的规则(大约 200 条以上)时,你才会注意到它的一些*智能*行为。在某个时候,规则变得过于复杂,难以全部记住,这时你可能会开始想知道系统为什么做出某些决策。然而,基于知识的系统的重要特征是你总是可以*解释*任何决策是如何做出的。 + +## 本体论与语义网 + +在 20 世纪末,有一个倡议使用知识表示来注释互联网资源,以便能够找到与非常具体查询相对应的资源。这一运动被称为**语义网**,它依赖于几个概念: + +- 基于**[描述逻辑](https://en.wikipedia.org/wiki/Description_logic)**(DL)的特殊知识表示。它类似于框架知识表示,因为它构建了具有属性的对象层次结构,但它具有正式的逻辑语义和推理。存在一整套 DL,在表达力和推理的算法复杂性之间取得平衡。 +- 分布式知识表示,其中所有概念都通过全球 URI 标识符表示,使得能够创建跨越互联网的知识层次结构。 +- 一系列基于 XML 的知识描述语言:RDF(资源描述框架)、RDFS(RDF 架构)、OWL(本体网页语言)。 + +语义网的核心概念是**本体**。它指的是使用某种形式的知识表示对问题领域的明确规范。最简单的本体可以仅是问题领域中对象的层次结构,但更复杂的本体将包括可用于推理的规则。 + +在语义网中,所有表示都是基于三元组的。每个对象和每个关系都由 URI 唯一标识。例如,如果我们想陈述这一事实,即该人工智能课程由 Dmitry Soshnikov 于 2022 年 1 月 1 日开发 - 这里是我们可以使用的三元组: + + + +``` +http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007” +http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com +``` + +> ✅ 这里 `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` 是一些众所周知且普遍接受的 URI,用于表达*创建者*和*创建日期*的概念。 + +在更复杂的情况下,如果我们想定义一个创作者列表,我们可以使用 RDF 中定义的一些数据结构。 + + + +> 上述图表由 [Dmitry Soshnikov](http://soshnikov.com) 提供 + +构建语义网的进展在某种程度上被搜索引擎和自然语言处理技术的成功所减缓,这些技术允许从文本中提取结构化数据。然而,在某些领域,仍然有显著的努力来维护本体和知识库。有几个值得注意的项目: + +* [WikiData](https://wikidata.org/) 是一个与维基百科相关的机器可读知识库的集合。大多数数据是从维基百科的*信息框*中提取的,即维基百科页面中的结构化内容。你可以在 SPARQL 中 [查询](https://query.wikidata.org/) wikidata,这是一个专门用于语义网的查询语言。以下是一个示例查询,显示人类中最受欢迎的眼睛颜色: + +```sparql +#defaultView:BubbleChart +SELECT ?eyeColorLabel (COUNT(?human) AS ?count) +WHERE +{ + ?human wdt:P31 wd:Q5. # human instance-of homo sapiens + ?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +GROUP BY ?eyeColorLabel +``` + +* [DBpedia](https://www.dbpedia.org/) 是另一个类似于 WikiData 的努力。 + +> ✅ 如果你想尝试构建自己的本体或打开现有的本体,有一个很好的可视化本体编辑器叫做 [Protégé](https://protege.stanford.edu/)。下载它,或在线使用。 + + + +*Web Protégé 编辑器打开与罗曼诺夫家族本体。截图由 Dmitry Soshnikov 提供* + +## ✍️ 练习:家庭本体 + +请查看 [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb),了解使用语义网技术推理家庭关系的示例。我们将采用以常见 GEDCOM 格式表示的家谱和家庭关系本体,并为给定的一组个体构建所有家庭关系的图。 + +## 微软概念图 + +在大多数情况下,本体是手工精心创建的。然而,也可以从非结构化数据中**挖掘**本体,例如,从自然语言文本中。 + +微软研究院进行了一次这样的尝试,结果就是 [微软概念图](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste)。 + +它是一个大型实体集合,使用`is-a`继承关系进行分组。它可以回答诸如“微软是什么?”这样的问题 - 答案可能是“一个概率为 0.87 的公司,以及一个概率为 0.75 的品牌”。 + +该图可通过 REST API 或大型可下载文本文件获取,该文件列出了所有实体对。 + +## ✍️ 练习:概念图 + +尝试 [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) 笔记本,看看我们如何使用微软概念图将新闻文章分组到几个类别中。 + +## 结论 + +如今,人工智能通常被视为*机器学习*或*神经网络*的同义词。然而,人类也表现出明确的推理能力,而这正是当前神经网络无法处理的。在实际项目中,明确的推理仍然用于执行需要解释的任务,或者能够以受控的方式修改系统的行为。 + +## 🚀 挑战 + +在与本节课相关的家庭本体笔记本中,有机会尝试其他家庭关系。尝试发现家谱中人们之间的新联系。 + +## [课后小测](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## 复习与自学 + +在互联网上进行一些研究,发现人类尝试量化和编码知识的领域。看看布鲁姆的分类法,并回顾历史,了解人类如何试图理解他们的世界。探索林奈的工作,创建生物的分类法,并观察德米特里·门捷列夫如何创建化学元素的描述和分组方式。你还能找到其他有趣的例子吗? + +**作 + +**免责声明**: +本文件是使用机器翻译的人工智能翻译服务进行翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们不对因使用此翻译而导致的任何误解或误释承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/2-Symbolic/assignment.md b/translations/zh/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..699a385d --- /dev/null +++ b/translations/zh/lessons/2-Symbolic/assignment.md @@ -0,0 +1,6 @@ +# 构建本体 + +构建知识库的关键在于对代表某一主题事实的模型进行分类。选择一个主题——比如一个人、一个地方或一个事物——然后构建该主题的模型。使用本课中描述的一些技术和模型构建策略。一个例子是创建一个包含家具、灯光等的客厅本体。客厅与厨房有什么不同?与浴室呢?你如何判断这是一个客厅而不是餐厅?使用 [Protégé](https://protege.stanford.edu/) 来构建你的本体。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或错误解释不承担任何责任。 \ No newline at end of file diff --git a/translations/zh/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/zh/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..c6e2d21b --- /dev/null +++ b/translations/zh/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,95 @@ +# 神经网络导论:感知器 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +1957年,康奈尔航空实验室的Frank Rosenblatt首次尝试实现类似现代神经网络的东西。这是一个名为“Mark-1”的硬件实现,旨在识别简单的几何图形,如三角形、正方形和圆形。 + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> 图片 [来自维基百科](https://en.wikipedia.org/wiki/Perceptron) + +输入图像由20x20的光电池阵列表示,因此神经网络有400个输入和一个二进制输出。一个简单的网络包含一个神经元,也称为**阈值逻辑单元**。神经网络的权重像电位器一样,在训练阶段需要手动调整。 + +> ✅ 电位器是一种允许用户调整电路电阻的设备。 + +> 《纽约时报》当时对感知器的描述是:*海军期望这将是一个能够行走、说话、看、写、复制自己并意识到自己存在的电子计算机的胚胎。* + +## 感知器模型 + +假设我们的模型中有N个特征,在这种情况下,输入向量将是大小为N的向量。感知器是一个**二分类**模型,即它能够区分两类输入数据。我们假设对于每个输入向量x,感知器的输出要么是+1,要么是-1,这取决于类别。输出将通过以下公式计算: + +y(x) = f(wTx) + +其中f是阶跃激活函数 + + + + +## 训练感知器 + +要训练一个感知器,我们需要找到一个权重向量w,使大多数值正确分类,即使**错误**最小化。这个错误E通过**感知器准则**定义如下: + +E(w) = -∑wTxiti + +其中: + +* 求和是在那些导致错误分类的训练数据点i上进行的 +* xi是输入数据,而ti对于负例和正例分别为-1和+1。 + +这个准则被视为权重w的一个函数,我们需要对其进行最小化。通常使用一种称为**梯度下降**的方法,在这种方法中,我们从一些初始权重w(0)开始,然后在每一步根据以下公式更新权重: + +w(t+1) = w(t) - η∇E(w) + +这里η是所谓的**学习率**,∇E(w)表示E的**梯度**。在计算梯度后,我们得到 + +w(t+1) = w(t) + ∑ηxiti + +在Python中的算法如下所示: + +```python +def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): + + weights = [0,0,0] # Initialize weights (almost randomly :) + + for i in range(num_iterations): + pos = random.choice(positive_examples) + neg = random.choice(negative_examples) + + z = np.dot(pos, weights) # compute perceptron output + if z < 0: # positive example classified as negative + weights = weights + eta*weights.shape + + z = np.dot(neg, weights) + if z >= 0: # negative example classified as positive + weights = weights - eta*weights.shape + + return weights +``` + +## 结论 + +在本课中,您了解了感知器,它是一个二分类模型,以及如何通过使用权重向量来训练它。 + +## 🚀 挑战 + +如果您想尝试构建自己的感知器,可以尝试 [Microsoft Learn上的这个实验室](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste),该实验室使用了 [Azure ML设计器](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste)。 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## 复习与自学 + +要了解我们如何使用感知器解决玩具问题以及现实生活中的问题,并继续学习,请访问 [感知器](../../../../../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) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/zh/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..7368810c --- /dev/null +++ b/translations/zh/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,22 @@ +# 多类分类与感知器 + +来自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的实验作业。 + +## 任务 + +使用我们在本课中开发的用于 MNIST 手写数字的二分类代码,创建一个多类分类器,能够识别任意数字。计算训练集和测试集上的分类准确率,并输出混淆矩阵。 + +## 提示 + +1. 为每个数字创建一个数据集,用于“该数字 vs. 所有其他数字”的二分类器。 +1. 训练 10 个不同的感知器进行二分类(每个数字一个)。 +1. 定义一个函数,用于对输入数字进行分类。 + +> **提示**:如果我们将所有 10 个感知器的权重组合成一个矩阵,我们应该能够通过一次矩阵乘法将所有 10 个感知器应用于输入数字。然后,可以通过对输出应用 `argmax` 操作来找到最可能的数字。 + +## 启动笔记本 + +通过打开 [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) 开始实验。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于重要信息,建议进行专业的人类翻译。我们对因使用此翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/zh/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..15ae137a --- /dev/null +++ b/translations/zh/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,89 @@ +# 神经网络简介:多层感知器 + +在上一节中,您学习了最简单的神经网络模型——单层感知器,这是一种线性二分类模型。 + +在本节中,我们将扩展此模型,构建一个更灵活的框架,使我们能够: + +* 除了二分类之外,执行**多类分类** +* 除了分类之外,解决**回归问题** +* 分离那些无法线性分离的类 + +我们还将开发自己的模块化框架,使用 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) + +> ✅ 链式求导法则用于计算损失函数对参数的导数。 + +请注意,所有这些表达式的最左侧部分是相同的,因此我们可以有效地从损失函数开始,向“后面”通过计算图计算导数。因此,多层感知器的训练方法称为**反向传播**,或简称为“反向传播”。 + +计算图 + +> 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) + +**免责声明**: +本文件使用机器翻译的人工智能翻译服务进行翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/zh/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..3a23bb2c --- /dev/null +++ b/translations/zh/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,23 @@ +# 使用我们自己的框架进行 MNIST 分类 + +来自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的实验任务。 + +## 任务 + +使用 1 层、2 层和 3 层感知器解决 MNIST 手写数字分类问题。使用我们在课程中开发的神经网络框架。 + +## 启动笔记本 + +通过打开 [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) 开始实验。 + +## 问题 + +作为本实验的结果,尝试回答以下问题: + +- 层间激活函数是否会影响网络性能? +- 我们是否需要 2 层或 3 层网络来完成这个任务? +- 在训练网络时,您是否遇到任何问题?特别是随着层数的增加。 +- 网络的权重在训练过程中是如何变化的?您可以绘制权重的最大绝对值与训练轮数的关系,以理解其相互关系。 + +**免责声明**: +本文件使用机器翻译的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/zh/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..c6db13f9 --- /dev/null +++ b/translations/zh/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,123 @@ +# 神经网络框架 + +正如我们已经了解到的,要高效地训练神经网络,我们需要做两件事: + +* 在张量上进行操作,例如乘法、加法,以及计算一些函数,如 sigmoid 或 softmax +* 计算所有表达式的梯度,以便执行梯度下降优化 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +虽然 `numpy` 库可以完成第一部分,但我们需要某种机制来计算梯度。在我们在上一节中开发的 [我们的框架](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) 中,我们不得不手动编写 `backward` 方法中的所有导数函数,该方法执行反向传播。理想情况下,一个框架应该让我们有机会计算我们可以定义的 *任何表达式* 的梯度。 + +另一个重要的事情是能够在 GPU 或任何其他专用计算单元上执行计算,例如 [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit)。深度神经网络的训练需要 *大量* 的计算,能够在 GPU 上并行化这些计算是非常重要的。 + +> ✅ “并行化”一词意味着将计算分布到多个设备上。 + +目前,两个最流行的神经网络框架是:[TensorFlow](http://TensorFlow.org) 和 [PyTorch](https://pytorch.org/)。这两个框架都提供了低级 API,以便在 CPU 和 GPU 上操作张量。在低级 API 之上,还有更高级的 API,分别称为 [Keras](https://keras.io/) 和 [PyTorch Lightning](https://pytorchlightning.ai/)。 + +低级 API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +高级 API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**两个框架中的低级 API** 允许您构建所谓的 **计算图**。这个图定义了如何使用给定的输入参数计算输出(通常是损失函数),并可以在可用的情况下推送到 GPU 上进行计算。有函数可以对这个计算图进行微分并计算梯度,这些梯度可以用于优化模型参数。 + +**高级 API** 将神经网络视为 **层的序列**,使构建大多数神经网络变得更加简单。训练模型通常需要准备数据,然后调用 `fit` 函数来完成任务。 + +高级 API 使您能够非常快速地构建典型的神经网络,而无需担心许多细节。与此同时,低级 API 提供了对训练过程的更多控制,因此在处理新的神经网络架构时,研究人员通常使用它们。 + +还需要理解的是,您可以同时使用这两种 API,例如,您可以使用低级 API 开发自己的网络层架构,然后在使用高级 API 构建和训练的更大网络中使用它。或者,您可以使用高级 API 将网络定义为层的序列,然后使用自己的低级训练循环进行优化。这两种 API 使用相同的基本概念,并且设计上能够很好地协同工作。 + +## 学习 + +在本课程中,我们为 PyTorch 和 TensorFlow 提供了大部分内容。您可以选择自己喜欢的框架,只需查看相应的笔记本。如果您不确定选择哪个框架,可以阅读一些关于 **PyTorch 与 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` 表示): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.zh.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.zh.jpg) +-------------------------|-------------------------- +**线性模型,2 个参数** | **非线性模型,7 个参数** +训练误差 = 5.3 | 训练误差 = 0 +验证误差 = 5.1 | 验证误差 = 20 + +* 在左侧,我们看到一个良好的直线近似。由于参数数量适当,模型正确理解了点分布背后的概念。 +* 在右侧,模型过于强大。由于我们只有 5 个点,而模型有 7 个参数,因此它可以调整到通过所有点,使得训练误差为 0。然而,这阻止了模型理解数据背后的正确模式,因此验证误差非常高。 + +在模型的丰富性(参数数量)和训练样本数量之间取得正确平衡是非常重要的。 + +## 为什么会出现过拟合 + +* 训练数据不足 +* 模型过于强大 +* 输入数据中噪声过多 + +## 如何检测过拟合 + +正如您从上面的图表中看到的,过拟合可以通过非常低的训练误差和高的验证误差来检测。通常在训练过程中,我们会看到训练误差和验证误差都开始下降,然后在某个时刻,验证误差可能会停止下降并开始上升。这将是过拟合的迹象,并且是我们应该在此时停止训练(或至少对模型进行快照)的指示。 + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.zh.png) + +## 如何防止过拟合 + +如果您发现过拟合发生,您可以采取以下措施之一: + +* 增加训练数据量 +* 降低模型的复杂性 +* 使用一些 [正则化技术](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md),例如 [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout),我们稍后将讨论。 + +## 过拟合与偏差-方差权衡 + +过拟合实际上是统计学中一个更一般性问题的情况,称为 [偏差-方差权衡](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff)。如果我们考虑模型中可能的误差来源,我们可以看到两种类型的误差: + +* **偏差误差** 是由于我们的算法无法正确捕捉训练数据之间的关系造成的。这可能是因为我们的模型不够强大(**欠拟合**)。 +* **方差误差** 是由于模型近似输入数据中的噪声而非有意义的关系(**过拟合**)造成的。 + +在训练过程中,偏差误差会减少(因为我们的模型学习近似数据),而方差误差会增加。重要的是在检测到过拟合时手动停止训练,或者通过引入正则化自动停止训练,以防止过拟合。 + +## 结论 + +在本课中,您了解了两个最流行的 AI 框架 TensorFlow 和 PyTorch 的各种 API 之间的差异。此外,您还学习了一个非常重要的话题,过拟合。 + +## 🚀 挑战 + +在随附的笔记本中,您会在底部找到“任务”;请逐步完成笔记本并完成任务。 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## 复习与自学 + +对以下主题进行一些研究: + +- TensorFlow +- PyTorch +- 过拟合 + +问自己以下问题: + +- TensorFlow 和 PyTorch 之间有什么区别? +- 过拟合和欠拟合之间有什么区别? + +## [作业](lab/README.md) + +在这个实验中,您需要使用 PyTorch 或 TensorFlow 解决两个分类问题,使用单层和多层全连接网络。 + +* [说明](lab/README.md) +* [笔记本](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**免责声明**: +本文件使用机器翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议使用专业的人类翻译。我们对因使用此翻译而产生的任何误解或错误解释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/zh/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..a7220e64 --- /dev/null +++ b/translations/zh/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,19 @@ +# 使用 PyTorch/TensorFlow 进行分类 + +来自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的实验任务。 + +## 任务 + +使用 PyTorch 或 TensorFlow 解决两个分类问题,使用单层和多层全连接网络: + +1. **[鸢尾花分类](https://en.wikipedia.org/wiki/Iris_flower_data_set)** 问题 - 这是一个具有表格输入数据的经典机器学习问题。你的目标是根据 4 个数值参数将鸢尾花分类为 3 个类别。 +2. **MNIST** 手写数字分类问题,这是我们之前见过的。 + +尝试不同的网络架构,以获得最佳的准确率。 + +## 启动笔记本 + +通过打开 [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) 开始实验。 + +**免责声明**: +本文件使用机器翻译的人工智能服务进行翻译。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或错误解读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/3-NeuralNetworks/README.md b/translations/zh/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..7202b945 --- /dev/null +++ b/translations/zh/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,51 @@ +# 神经网络简介 + +![神经网络简介内容的摘要](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.zh.png) + +正如我们在介绍中讨论的那样,实现智能的一种方法是训练一个**计算机模型**或**人工大脑**。自20世纪中叶以来,研究人员尝试了不同的数学模型,直到近年来这一方向被证明极为成功。这种对大脑的数学模型被称为**神经网络**。 + +> 有时神经网络被称为*人工神经网络*,即ANN,以表明我们所讨论的是模型,而不是真实的神经元网络。 + +## 机器学习 + +神经网络是一个更大领域的组成部分,称为**机器学习**,其目标是利用数据训练能够解决问题的计算机模型。机器学习构成了人工智能的重要部分,但在本课程中我们不涉及经典的机器学习。 + +> 请访问我们的**[初学者机器学习](http://github.com/microsoft/ml-for-beginners)**课程,了解更多关于经典机器学习的信息。 + +在机器学习中,我们假设有一些示例数据集**X**,以及对应的输出值**Y**。示例通常是由**特征**组成的N维向量,而输出称为**标签**。 + +我们将考虑两种最常见的机器学习问题: + +* **分类**,在这里我们需要将输入对象分类到两个或多个类别中。 +* **回归**,在这里我们需要为每个输入样本预测一个数值。 + +> 当将输入和输出表示为张量时,输入数据集是一个大小为M×N的矩阵,其中M是样本数量,N是特征数量。输出标签Y是大小为M的向量。 + +在本课程中,我们将只关注神经网络模型。 + +## 神经元模型 + +从生物学上我们知道,我们的大脑由神经细胞组成,每个神经元有多个“输入”(轴突)和一个输出(树突)。轴突和树突可以传导电信号,轴突和树突之间的连接可以表现出不同程度的导电性(由神经介质控制)。 + +![神经元模型](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.zh.jpg) | ![神经元模型](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.zh.png) +----|---- +真实神经元 *([图片](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg)来自维基百科)* | 人工神经元 *(作者提供的图片)* + +因此,神经元的最简单数学模型包含多个输入X1, ..., XN和一个输出Y,以及一系列权重W1, ..., WN。输出的计算公式为: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +其中f是某种非线性**激活函数**。 + +> 神经元的早期模型在1943年由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)"中提出了训练这些网络的方法。 + +## 本节内容 + +在本节中,我们将学习: +* [感知器](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) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而导致的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/zh/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..3b3d62d1 --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,112 @@ +# 计算机视觉简介 + +[计算机视觉](https://wikipedia.org/wiki/Computer_vision) 是一门旨在使计算机能够高水平理解数字图像的学科。这是一个相当广泛的定义,因为“理解”可以有许多不同的含义,包括在图片中找到物体(**物体检测**)、理解发生了什么(**事件检测**)、用文本描述一幅图像,或重建3D场景。还有一些与人类图像相关的特殊任务:年龄和情感估计、面部检测和识别,以及3D姿态估计等。 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +计算机视觉最简单的任务之一是 **图像分类**。 + +计算机视觉通常被视为人工智能的一个分支。如今,大多数计算机视觉任务都是通过神经网络解决的。在本节中,我们将深入了解用于计算机视觉的特殊类型神经网络——[卷积神经网络](../07-ConvNets/README.md)。 + +然而,在将图像传递给神经网络之前,在许多情况下,使用一些算法技术来增强图像是有意义的。 + +有几种可用于图像处理的Python库: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** 可用于读取/写入不同的图像格式。它还支持ffmpeg,这是一个将视频帧转换为图像的有用工具。 +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)**(也称为PIL)功能更强大,还支持一些图像处理,例如形态变化、调色板调整等。 +* **[OpenCV](https://opencv.org/)** 是一个用C++编写的强大图像处理库,已成为图像处理的*事实*标准。它有一个方便的Python接口。 +* **[dlib](http://dlib.net/)** 是一个C++库,实现了许多机器学习算法,包括一些计算机视觉算法。它也有Python接口,可以用于面部和面部特征点检测等挑战性任务。 + +## OpenCV + +[OpenCV](https://opencv.org/) 被认为是图像处理的*事实*标准。它包含许多有用的算法,都是用C++实现的。您也可以通过Python调用OpenCV。 + +学习OpenCV的好地方是[这个学习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` 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. + +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). + +### Image Processing + +Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: + +* **Resizing** the image using `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Blurring** the image using `im = cv2.medianBlur(im,3)` or `im = cv2.GaussianBlur(im, (3,3), 0)` +* Changing the **brightness and contrast** of the image can be done by NumPy array manipulations, as described [in this Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Using [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) by calling `cv2.threshold`/`cv2.adaptiveThreshold` 函数,通常比调整亮度或对比度更可取。 +* 对图像应用不同的 [变换](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html): + - **[仿射变换](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** 如果您需要将旋转、调整大小和倾斜结合到图像中,并且知道图像中三点的源和目标位置,这将非常有用。仿射变换保持平行线平行。 + - **[透视变换](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** 当您知道图像中4个点的源和目标位置时,可以非常有用。例如,如果您通过智能手机相机从某个角度拍摄一张矩形文档的照片,并希望制作该文档的矩形图像。 +* 通过使用 **[光流](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** 理解图像内部的运动。 + +## 计算机视觉使用示例 + +在我们的 [OpenCV笔记本](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) 中,我们提供了一些计算机视觉可以用于执行特定任务的示例: + +* **对盲文书籍的照片进行预处理**。我们重点介绍如何使用阈值处理、特征检测、透视变换和NumPy操作来分离单个盲文符号,以便通过神经网络进行进一步分类。 + +![盲文图像](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.zh.jpeg) | ![预处理的盲文图像](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.zh.png) | ![盲文符号](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.zh.png) +----|-----|----- + +> 图片来自 [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **使用帧差检测视频中的运动**。如果相机固定,则来自相机的帧应该彼此非常相似。由于帧被表示为数组,因此通过减去两个后续帧的数组,我们将得到像素差异,对于静态帧来说,这个差异应该很低,而一旦图像中出现实质性运动,差异就会增大。 + +![视频帧和帧差的图像](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.zh.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.zh.png) + +> 图片来自 [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ 示例笔记本:OpenCV [在行动中尝试OpenCV](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +让我们通过探索 [OpenCV笔记本](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) 来进行一些OpenCV实验。 + +## 结论 + +有时,相对复杂的任务,如运动检测或指尖检测,可以仅通过计算机视觉来解决。因此,了解计算机视觉的基本技术以及像OpenCV这样的库能做什么是非常有帮助的。 + +## 🚀 挑战 + +观看 [这个视频](https://docs.microsoft.com/shows/ai-show/ai-show--2021-opencv-ai-competition--grand-prize-winners--cortic-tigers--episode-32?WT.mc_id=academic-77998-cacaste) 来了解Cortic Tigers项目,以及他们如何通过机器人构建基于区块的解决方案,以使计算机视觉任务民主化。研究其他类似的项目,帮助新学习者进入这个领域。 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## 复习与自学 + +在[这个精彩的教程](https://learnopencv.com/optical-flow-in-opencv/)中阅读更多关于光流的内容。 + +## [作业](lab/README.md) + +在这个实验中,您将拍摄一个简单手势的视频,您的目标是使用光流提取上下左右的运动。 + +手掌运动帧 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原文以其母语应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/zh/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..1ed748e4 --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,23 @@ +# 使用光流检测运动 + +来自 [AI for Beginners Curriculum](https://aka.ms/ai-beginners) 的实验作业。 + +## 任务 + +考虑 [这个视频](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4),其中一个人的手掌在稳定的背景上左右/上下移动。 +您已接受培训的数据截至2023年10月。 + +**您的目标** 是能够使用光流确定视频中哪些部分包含上下/左右的运动。 + +**扩展目标** 是实际上使用肤色跟踪手掌/手指的运动,如 [这篇博客文章](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 这样的库可以做什么是非常有帮助的。 + +**免责声明**: +本文件是使用基于机器的人工智能翻译服务翻译的。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业的人类翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/zh/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..bee162b9 --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,64 @@ +# 知名的 CNN 架构 + +### VGG-16 + +VGG-16 是一个在 2014 年的 ImageNet 前五名分类中达到 92.7% 准确率的网络。它具有以下层结构: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.zh.jpg) + +如你所见,VGG 遵循传统的金字塔架构,这是一个卷积-池化层的序列。 + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.zh.jpg) + +> 图片来自 [Researchgate](https://www.researchgate.net/figure/Vgg16-model-structure-To-get-the-VGG-NIN-model-we-replace-the-2-nd-4-th-6-th-7-th_fig2_335194493) + +### ResNet + +ResNet 是微软研究院在 2015 年提出的一系列模型。ResNet 的主要思想是使用 **残差块**: + + + +> 图片来自 [这篇论文](https://arxiv.org/pdf/1512.03385.pdf) + +使用恒等传递的原因在于让我们的层预测 **前一层的结果与残差块的输出之间的差异**,因此得名 *残差*。这些块更容易训练,并且可以构建包含数百个这样的块的网络(最常见的变体是 ResNet-52、ResNet-101 和 ResNet-152)。 + +你也可以将这个网络视为能够根据数据集调整其复杂性。最初,当你开始训练网络时,权重值较小,大部分信号通过恒等传递层。当训练进行时,权重变得更大,网络参数的显著性增加,网络会调整以满足正确分类训练图像所需的表达能力。 + +### Google Inception + +Google Inception 架构在这个想法上更进一步,将每个网络层构建为多个不同路径的组合: + + + +> 图片来自 [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +在这里,我们需要强调 1x1 卷积的作用,因为乍一看它们似乎没有意义。为什么我们需要使用 1x1 的滤波器遍历图像?然而,你需要记住,卷积滤波器也与多个深度通道一起工作(最初是 RGB 颜色,在后续层中是不同滤波器的通道),而 1x1 卷积用于使用不同的可训练权重将这些输入通道混合在一起。它也可以被视为在通道维度上的下采样(池化)。 + +这里有 [一篇关于此主题的好博客文章](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578),以及 [原始论文](https://arxiv.org/pdf/1312.4400.pdf)。 + +### MobileNet + +MobileNet 是一系列尺寸较小的模型,适合移动设备使用。如果你的资源有限,并且可以牺牲一些准确性,可以使用它们。它们的主要思想是所谓的 **深度可分离卷积**,允许通过空间卷积和对深度通道的 1x1 卷积的组合来表示卷积滤波器。这显著减少了参数的数量,使网络的大小更小,并且在较少数据的情况下更易于训练。 + +这里有 [一篇关于 MobileNet 的好博客文章](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470)。 + +## 结论 + +在本单元中,你学习了计算机视觉神经网络的主要概念——卷积网络。驱动图像分类、物体检测甚至图像生成网络的实际架构都是基于 CNN 的,只是具有更多层和一些额外的训练技巧。 + +## 🚀 挑战 + +在随附的笔记本中,底部有关于如何获得更高准确性的说明。做一些实验,看看你能否达到更高的准确性。 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## 复习与自学 + +虽然 CNN 最常用于计算机视觉任务,但它们通常适合提取固定大小的模式。例如,如果我们处理声音,我们也可能想使用 CNN 来寻找音频信号中的某些特定模式——在这种情况下,滤波器将是 1 维的(而这个 CNN 将被称为 1D-CNN)。此外,有时使用 3D-CNN 来提取多维空间中的特征,例如视频中发生的某些事件——CNN 可以捕捉随时间变化的特征模式。进行一些关于 CNN 可以完成的其他任务的复习和自学。 + +## [作业](lab/README.md) + +在这个实验中,你的任务是对不同的猫和狗品种进行分类。这些图像比 MNIST 数据集更复杂,维度更高,并且类别超过 10 个。 + +**免责声明**: +本文件使用机器翻译的人工智能服务进行翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/zh/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..9927e85d --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,59 @@ +# 卷积神经网络 + +我们之前已经看到,神经网络在处理图像方面表现相当不错,甚至单层感知器也能够以合理的准确率识别 MNIST 数据集中的手写数字。然而,MNIST 数据集非常特殊,所有数字都居中于图像中,这使得任务变得简单。 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +在现实生活中,我们希望能够识别图像中的物体,而不论它们在图像中的确切位置。计算机视觉不同于一般的分类,因为当我们试图在图像中找到某个特定物体时,我们是在扫描图像,寻找一些特定的 **模式** 及其组合。例如,当寻找一只猫时,我们首先可能会寻找可以形成胡须的水平线,然后某种胡须的组合可以告诉我们,这实际上是一只猫的图像。相对位置和某些模式的存在是重要的,而不是它们在图像上的确切位置。 + +为了提取模式,我们将使用 **卷积滤波器** 的概念。正如你所知,图像由 2D 矩阵或带有颜色深度的 3D 张量表示。应用滤波器意味着我们取相对较小的 **滤波器内核** 矩阵,并对原始图像中的每个像素计算与邻近点的加权平均。我们可以将其视为一个小窗口在整个图像上滑动,并根据滤波器内核矩阵中的权重对所有像素进行平均。 + +![垂直边缘滤波器](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.zh.png) | ![水平边缘滤波器](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.zh.png) +----|---- + +> 图片由 Dmitry Soshnikov 提供 + +例如,如果我们对 MNIST 数字应用 3x3 的垂直边缘和水平边缘滤波器,我们可以在原始图像中获得高亮(例如,高值)的位置,这些位置对应于垂直和水平边缘。因此,这两个滤波器可以用来“寻找”边缘。类似地,我们可以设计不同的滤波器来寻找其他低级模式: +你已接受训练的数据截止到 2023 年 10 月。 + +> [Leung-Malik 滤波器组](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +然而,虽然我们可以手动设计滤波器来提取一些模式,我们也可以设计网络,使其能够自动学习模式。这是卷积神经网络(CNN)背后的主要思想之一。 + +## CNN 背后的主要思想 + +CNN 的工作原理基于以下重要思想: + +* 卷积滤波器可以提取模式 +* 我们可以以某种方式设计网络,使得滤波器能够自动训练 +* 我们可以使用相同的方法在高级特征中找到模式,而不仅仅是在原始图像中。因此,CNN 特征提取在特征层次上工作,从低级像素组合开始,一直到更高级的图像部分组合。 + +![分层特征提取](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.zh.png) + +> 图片来自 [Hislop-Lynch 的论文](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d),基于 [他们的研究](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ 练习:卷积神经网络 + +让我们继续探索卷积神经网络的工作原理,以及如何实现可训练的滤波器,通过以下笔记本进行实践: + +* [卷积神经网络 - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [卷积神经网络 - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## 金字塔架构 + +大多数用于图像处理的 CNN 遵循一种所谓的金字塔架构。应用于原始图像的第一个卷积层通常具有相对较少的滤波器(8-16),这些滤波器对应于不同的像素组合,例如水平/垂直线条的笔画。在下一个层级中,我们减少网络的空间维度,并增加滤波器的数量,这对应于更多简单特征的可能组合。随着每一层的推进,朝向最终分类器,图像的空间维度减小,而滤波器的数量增加。 + +作为例子,让我们看看 VGG-16 的架构,这个网络在 2014 年的 ImageNet 前 5 名分类中达到了 92.7% 的准确率: + +![ImageNet 层](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.zh.jpg) + +![ImageNet 金字塔](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.zh.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) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于重要信息,建议进行专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/zh/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..a2e4b315 --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,34 @@ +# 宠物面孔分类 + +来自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的实验作业。 + +## 任务 + +想象一下,您需要开发一个宠物托儿所的应用程序来 catalog 所有宠物。这样一个应用程序的一个重要功能是能够从照片中自动识别品种。这可以通过神经网络成功实现。 + +您需要训练一个卷积神经网络来使用 **Pet Faces** 数据集对不同品种的猫和狗进行分类。 + +## 数据集 + +我们将使用 **Pet Faces** 数据集,该数据集源自 [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) 的宠物数据集。它包含 35 种不同品种的狗和猫。 + +![我们将处理的数据集](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.zh.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 准确性也是有意义的,因为一些类即使对人类来说也不容易区分。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/zh/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..d52ef46c --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,81 @@ +# 预训练网络与迁移学习 + +训练卷积神经网络(CNN)可能需要大量时间,并且需要大量数据。然而,很多时间都花在学习网络可以用来从图像中提取模式的最佳低级滤波器上。一个自然的问题随之而来——我们能否使用在一个数据集上训练的神经网络,并将其调整为分类不同的图像,而无需完整的训练过程? + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +这种方法被称为**迁移学习**,因为我们将一些知识从一个神经网络模型转移到另一个模型。在迁移学习中,我们通常从一个预训练模型开始,该模型已经在一些大型图像数据集上进行训练,例如**ImageNet**。这些模型已经能够很好地提取通用图像中的不同特征,在许多情况下,仅在这些提取的特征上构建一个分类器就能获得良好的结果。 + +> ✅ 迁移学习是一个在其他学术领域(例如教育)中也会遇到的术语。它指的是将一个领域的知识应用到另一个领域的过程。 + +## 作为特征提取器的预训练模型 + +我们在前一部分中讨论的卷积网络包含多个层,每一层都旨在从图像中提取一些特征,从低级的像素组合(例如水平/垂直线或笔画)开始,到更高级的特征组合,对应于火焰的眼睛等。如果我们在足够大的通用和多样化图像数据集上训练CNN,网络应该能够学习提取这些常见特征。 + +Keras和PyTorch都包含函数,可以轻松加载一些常见架构的预训练神经网络权重,其中大多数是在ImageNet图像上训练的。最常用的模型在前一课的[卷积神经网络架构](../07-ConvNets/CNN_Architectures.md)页面中进行了描述。特别是,您可能想考虑使用以下模型之一: + +* **VGG-16/VGG-19**,这些是相对简单的模型,但仍能提供良好的准确性。通常,使用VGG作为第一次尝试是一个不错的选择,以查看迁移学习的效果。 +* **ResNet** 是微软研究在2015年提出的一系列模型。它们具有更多层,因此需要更多资源。 +* **MobileNet** 是一系列尺寸较小的模型,适合移动设备。如果您资源有限,并且可以牺牲一点准确性,请使用它们。 + +以下是VGG-16网络从一张猫的图片中提取的样本特征: + +![VGG-16提取的特征](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.zh.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.zh.png) + +然而,如果我们这样做,我们将得到与随机噪声非常相似的东西。这是因为*有很多方法可以让网络认为输入图像是一只猫*,其中一些在视觉上并不合理。虽然这些图像包含许多典型于猫的模式,但没有任何东西限制它们在视觉上具有独特性。 + +为了改善结果,我们可以在损失函数中添加另一个项,称为**变异损失**。它是一种度量,显示图像中相邻像素的相似程度。最小化变异损失使图像更平滑,并去除噪声——从而揭示出更具视觉吸引力的模式。以下是被高概率分类为猫和斑马的“理想”图像示例: + +![理想猫](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.zh.png) | ![理想斑马](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.zh.png) +-----|----- + *理想猫* | *理想斑马* + +类似的方法可以用于对神经网络进行所谓的**对抗攻击**。假设我们想要欺骗一个神经网络,让一只狗看起来像一只猫。如果我们拿到一张被网络识别为狗的图像,我们可以稍微调整它,使用梯度下降优化,直到网络开始将其分类为猫: + +![一只狗的图片](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.zh.png) | ![被分类为猫的狗的图片](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.zh.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种猫和狗的品种,我们将构建一个迁移学习分类器。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/zh/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..8dd2f4c2 --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,108 @@ +# 深度学习训练技巧 + +随着神经网络变得越来越深,训练它们的过程变得越来越具有挑战性。一个主要的问题是所谓的[消失梯度](https://en.wikipedia.org/wiki/Vanishing_gradient_problem)或[爆炸梯度](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.)。[这篇文章](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11)对这些问题进行了很好的介绍。 + +为了使深度网络的训练更加高效,可以使用一些技术。 + +## 保持值在合理范围内 + +为了使数值计算更加稳定,我们希望确保神经网络中的所有值都在合理的范围内,通常为[-1..1]或[0..1]。这并不是一个非常严格的要求,但浮点计算的性质使得不同数量级的值无法准确地一起操作。例如,如果我们将10-10和1010相加,我们可能会得到1010,因为较小的值会被“转换”为与较大的值相同的数量级,从而导致尾数丢失。 + +大多数激活函数在[-1..1]附近具有非线性,因此将所有输入数据缩放到[-1..1]或[0..1]范围是有意义的。 + +## 初始权重初始化 + +理想情况下,我们希望在经过网络层后,值保持在相同的范围内。因此,以保持值的分布为目的初始化权重是很重要的。 + +正态分布 **N(0,1)** 并不是一个好主意,因为如果我们有 *n* 个输入,输出的标准差将是 *n*,并且值很可能会超出[0..1]的范围。 + +以下初始化方法经常被使用: + + * 均匀分布 -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** 确保对于均值为零且标准差为1的输入,均值/标准差保持不变 + * **N(0,√2/(n_in+n_out))** -- 所谓的 **Xavier 初始化** (`glorot`),它有助于在前向和反向传播过程中保持信号在范围内 + +## 批归一化 + +即使在适当的权重初始化下,权重在训练过程中也可能变得任意大或小,这会将信号带出适当的范围。我们可以通过使用一种**归一化**技术来将信号恢复到适当范围。虽然有几种归一化方法(权重归一化、层归一化),但最常用的是批归一化。 + +**批归一化**的思想是考虑小批量中的所有值,并基于这些值执行归一化(即减去均值并除以标准差)。它被实现为一个网络层,在应用权重之后但在激活函数之前执行这种归一化。结果,我们可能会看到更高的最终准确性和更快的训练速度。 + +这里是关于批归一化的[原始论文](https://arxiv.org/pdf/1502.03167.pdf)、[维基百科上的解释](https://en.wikipedia.org/wiki/Batch_normalization)以及[一篇很好的入门博客文章](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338)(还有一篇[俄文](https://habrahabr.ru/post/309302/))。 + +## 随机失活 + +**随机失活**是一种有趣的技术,在训练过程中随机去除一定比例的神经元。它也被实现为一个层,具有一个参数(要去除的神经元百分比,通常为10%-50%),在训练过程中,它会将输入向量的随机元素置为零,然后传递到下一层。 + +虽然这听起来像是一个奇怪的想法,但您可以在 [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) 笔记本中看到随机失活对训练 MNIST 数字分类器的影响。它加速了训练,并使我们在更少的训练轮次中实现更高的准确性。 + +这个效果可以通过几种方式解释: + + * 它可以被视为对模型的随机冲击因素,帮助优化脱离局部最小值 + * 它可以被视为*隐式模型平均*,因为我们可以说在随机失活期间,我们正在训练稍微不同的模型 + +> *有人说,当一个醉酒的人试图学习某些东西时,他会在第二天早上记住得更好,与一个清醒的人相比,因为一个有些神经元失常的大脑会更好地适应以抓住意义。我们从未测试过这是否属实* + +## 防止过拟合 + +深度学习中一个非常重要的方面是能够防止[过拟合](../../3-NeuralNetworks/05-Frameworks/Overfitting.md)。虽然使用非常强大的神经网络模型可能很诱人,但我们应该始终平衡模型参数的数量与训练样本的数量。 + +> 确保您理解我们之前介绍的[过拟合](../../3-NeuralNetworks/05-Frameworks/Overfitting.md)的概念! + +防止过拟合的方法有几种: + + * 提前停止 -- 持续监控验证集上的误差,并在验证误差开始增加时停止训练。 + * 显式权重衰减/正则化 -- 为损失函数中高绝对值的权重添加额外惩罚,以防止模型获得非常不稳定的结果 + * 模型平均 -- 训练多个模型,然后对结果进行平均。这有助于最小化方差。 + * 随机失活(隐式模型平均) + +## 优化器/训练算法 + +训练的另一个重要方面是选择合适的训练算法。虽然经典的**梯度下降**是一个合理的选择,但有时它可能太慢,或者导致其他问题。 + +在深度学习中,我们使用**随机梯度下降**(SGD),它是应用于从训练集中随机选择的小批量的梯度下降。权重使用以下公式进行调整: + +wt+1 = wt - η∇ℒ + +### 动量 + +在**动量 SGD**中,我们保留来自前一步的梯度的一部分。这类似于当我们以惯性移动时,如果受到另一个方向的冲击,我们的轨迹不会立即改变,而是保持一部分原始运动。在这里,我们引入另一个向量v来表示*速度*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt + vt+1 + +这里参数γ表示我们考虑惯性的程度:γ=0对应于经典的SGD;γ=1是纯粹的运动方程。 + +### 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) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而导致的任何误解或错误解释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/zh/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..1e798d8c --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,30 @@ +# 使用迁移学习对牛津宠物进行分类 + +来自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的实验作业。 + +## 任务 + +想象一下,您需要开发一个宠物托儿所的应用程序来 catalog 所有宠物。这样一个应用程序的一个重要功能将是自动从照片中识别宠物的品种。在这个作业中,我们将使用迁移学习来对来自 [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) 开始实验。 + +## 收获 + +迁移学习和预训练网络使我们能够相对轻松地解决现实世界的图像分类问题。然而,预训练网络在相似类型的图像上效果良好,如果我们开始对非常不同的图像(例如医学图像)进行分类,结果可能会大大降低。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/zh/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..3ef8e75d --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,100 @@ +# 自编码器 + +在训练卷积神经网络(CNN)时,我们面临的一个问题是需要大量的标记数据。在图像分类的情况下,我们需要将图像分成不同的类别,这是一项手动的工作。 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +然而,我们可能希望使用原始(未标记)数据来训练CNN特征提取器,这被称为**自监督学习**。我们将使用训练图像作为网络的输入和输出,而不是标签。**自编码器**的主要思想是,我们将有一个**编码器网络**,将输入图像转换为某种**潜在空间**(通常只是一个较小尺寸的向量),然后是**解码器网络**,其目标是重构原始图像。 + +> ✅ 一个[自编码器](https://wikipedia.org/wiki/Autoencoder)是“用于学习未标记数据的有效编码的一种人工神经网络”。 + +由于我们正在训练自编码器以尽可能多地捕获原始图像的信息以实现准确的重构,因此网络试图找到输入图像的最佳**嵌入**以捕获其含义。 + +![自编码器示意图](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.zh.jpg) + +> 图片来源于[Keras博客](https://blog.keras.io/building-autoencoders-in-keras.html) + +## 使用自编码器的场景 + +虽然重构原始图像本身似乎没有什么用处,但在一些场景中,自编码器尤其有用: + +* **降低图像维度以进行可视化**或**训练图像嵌入**。通常,自编码器的结果优于主成分分析(PCA),因为它考虑了图像的空间特性和层次特征。 +* **去噪**,即从图像中去除噪声。由于噪声携带了很多无用的信息,自编码器无法将其全部适应于相对较小的潜在空间,因此它只捕获图像的重要部分。在训练去噪器时,我们从原始图像开始,并使用人为添加噪声的图像作为自编码器的输入。 +* **超分辨率**,提高图像分辨率。我们从高分辨率图像开始,并使用较低分辨率的图像作为自编码器的输入。 +* **生成模型**。一旦我们训练了自编码器,解码器部分可以用来从随机潜在向量创建新对象。 + +## 变分自编码器(VAE) + +传统自编码器以某种方式减少输入数据的维度,找出输入图像的重要特征。然而,潜在向量往往没有太大意义。换句话说,以MNIST数据集为例,确定哪些数字对应于不同的潜在向量并不是一项简单的任务,因为相近的潜在向量不一定对应于相同的数字。 + +另一方面,为了训练*生成*模型,最好对潜在空间有一些理解。这一思想引导我们到**变分自编码器**(VAE)。 + +VAE是学习预测潜在参数的*统计分布*的自编码器,即所谓的**潜在分布**。例如,我们可能希望潜在向量以某个均值 zmean 和标准差 zsigma 正常分布(均值和标准差都是某个维度 d 的向量)。VAE中的编码器学习预测这些参数,然后解码器从该分布中提取一个随机向量以重构对象。 + +总结: + +* 从输入向量,我们预测 `z_mean` 和 `z_log_sigma` (而不是直接预测标准差本身,我们预测其对数) +* 我们从分布 N(zmean,exp(zlog\_sigma)) 中采样一个向量 `sample` +* 解码器尝试使用 `sample` 作为输入向量来解码原始图像 + + + +> 图片来自[这篇博客文章](https://ijdykeman.github.io/ml/2016/12/21/cvae.html),作者为Isaak Dykeman + +变分自编码器使用一个复杂的损失函数,由两个部分组成: + +* **重构损失**是显示重构图像与目标图像接近程度的损失函数(可以是均方误差,或MSE)。它与普通自编码器中的损失函数相同。 +* **KL损失**,确保潜在变量分布接近于正态分布。它基于[Kullback-Leibler散度](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained)的概念 - 一种估计两个统计分布相似度的度量。 + +VAE的一个重要优势是它们相对容易生成新图像,因为我们知道从哪个分布中采样潜在向量。例如,如果我们在MNIST上用二维潜在向量训练VAE,我们可以变更潜在向量的各个分量以获取不同的数字: + +vaemnist + +> 图片由[Dmitry Soshnikov](http://soshnikov.com)提供 + +观察到图像如何相互融合,因为我们开始从潜在参数空间的不同部分获取潜在向量。我们还可以在二维中可视化这个空间: + +vaemnist cluster + +> 图片由[Dmitry Soshnikov](http://soshnikov.com)提供 + +## ✍️ 练习:自编码器 + +在这些相应的笔记本中了解更多关于自编码器的信息: + +* [TensorFlow中的自编码器](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [PyTorch中的自编码器](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## 自编码器的属性 + +* **数据特定** - 它们仅在训练过的图像类型上表现良好。例如,如果我们在花卉上训练一个超分辨率网络,它在肖像上效果不好。这是因为网络可以通过从训练数据集中学习的特征中提取细节来生成更高分辨率的图像。 +* **有损** - 重构图像与原始图像并不相同。损失的性质由训练过程中使用的*损失函数*定义。 +* 适用于**未标记数据** + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## 结论 + +在本节课中,您了解了可供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)的最后,您会找到一个“任务” - 将其作为您的作业。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业的人类翻译。我们对因使用本翻译而产生的任何误解或误读不承担任何责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/10-GANs/README.md b/translations/zh/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..5274729c --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,101 @@ +# 生成对抗网络 + +在上一节中,我们学习了**生成模型**:能够生成与训练数据集中图像相似的新图像的模型。变分自编码器(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(对应真实图像)。然后我们冻结判别器的参数(在此步骤中我们不希望它被训练),并进行反向传播。 + +在此过程中,生成器和判别器的损失并没有显著下降。在理想情况下,它们应该会震荡,表明两个网络都在提高性能。 + +## ✍️ 练习:GANs + +* [TensorFlow/Keras中的GAN笔记本](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [PyTorch中的GAN笔记本](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN训练中的问题 + +众所周知,GAN的训练特别困难。以下是一些问题: + +* **模式崩溃**。这个术语指的是生成器学会生成一种成功的图像来欺骗判别器,而不是各种不同的图像。 +* **对超参数的敏感性**。你经常会看到GAN根本不收敛,然后突然在学习率下降时收敛。 +* 在生成器和判别器之间保持**平衡**。在许多情况下,判别器的损失可以相对快速地降至零,导致生成器无法继续训练。为了解决这个问题,我们可以尝试为生成器和判别器设置不同的学习率,或者如果损失已经太低,则跳过判别器的训练。 +* 训练**高分辨率**图像。反映出与自编码器相同的问题,这个问题的发生是因为重构太多卷积网络层会导致伪影。通常通过所谓的**渐进增长**来解决这个问题,首先在低分辨率图像上训练几层,然后“解锁”或添加层。另一个解决方案是在层之间添加额外的连接,并同时训练多个分辨率——有关详细信息,请参见这篇[多尺度梯度GAN论文](https://arxiv.org/abs/1903.06048)。 + +## 风格迁移 + +GAN是生成艺术图像的好方法。另一种有趣的技术是所谓的**风格迁移**,它将一幅**内容图像**重新绘制成不同的风格,应用来自**风格图像**的滤镜。 + +其工作原理如下: +* 我们从一幅随机噪声图像开始(或从一幅内容图像开始,但为了理解,从随机噪声开始更容易)。 +* 我们的目标是创建一幅图像,使其接近内容图像和风格图像。这将由两个损失函数来决定: + - **内容损失**是基于CNN在某些层从当前图像和内容图像提取的特征计算的。 + - **风格损失**是以一种巧妙的方式计算当前图像和风格图像之间的关系,使用Gram矩阵(更多细节见[示例笔记本](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb))。 +* 为了使图像更平滑并去除噪声,我们还引入**变异损失**,计算相邻像素之间的平均距离。 +* 主要优化循环使用梯度下降(或其他优化算法)调整当前图像,以最小化总损失,该损失是所有三种损失的加权和。 + +## ✍️ 示例:[风格迁移](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [课后小测](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## 结论 + +在本课中,您学习了GAN及其训练方法。您还了解了这种类型的神经网络可能面临的特殊挑战,以及一些应对这些挑战的策略。 + +## 🚀 挑战 + +使用您自己的图像运行[风格迁移笔记本](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)。 + +## 复习与自学 + +作为参考,您可以在以下资源中进一步了解GAN: + +* Marco Pasini,[我在训练GAN一年中学到的10课](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN),一个*事实上的* GAN架构值得考虑 +* [在Azure ML上使用GAN创建生成艺术](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## 作业 + +重新访问与本课相关的两个笔记本之一,并在您自己的图像上重新训练GAN。您能创造出什么? + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/zh/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..c8efce24 --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,173 @@ +### 物体检测 + +到目前为止,我们处理的图像分类模型接收一张图像并生成一个分类结果,例如在 MNIST 问题中的 'number' 类别。然而,在许多情况下,我们不仅想知道一张图片描绘了哪些物体 - 我们希望能够确定它们的精确位置。这正是 **物体检测** 的意义所在。 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![物体检测](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.zh.png) + +> 图片来自 [YOLO v2 网站](https://pjreddie.com/darknet/yolov2/) + +## 一种简单的物体检测方法 + +假设我们想在一张图片中找到一只猫,一种非常简单的物体检测方法如下: + +1. 将图片分解为多个瓦片 +2. 对每个瓦片进行图像分类。 +3. 结果激活值足够高的瓦片可以认为包含了所需的物体。 + +![简单物体检测](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.zh.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.zh.jpg) + +## 物体检测指标 + +### 交并比 + +虽然对于图像分类来说,衡量算法性能是简单的,但对于物体检测,我们需要同时衡量类别的正确性以及推断的边界框位置的精确度。对于后者,我们使用所谓的 **交并比** (IoU),它衡量两个框(或两个任意区域)重叠的程度。 + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.zh.png) + +> *图2来自 [这篇关于 IoU 的优秀博客文章](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +这个概念很简单 - 我们将两个图形之间的交集面积除以它们的并集面积。对于两个相同的区域,IoU 将为 1,而对于完全不相交的区域,IoU 将为 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) 使用 [选择性搜索](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) 生成 ROI 区域的层次结构,这些区域随后通过 CNN 特征提取器和 SVM 分类器进行处理,以确定物体类别,并通过线性回归确定 *边界框* 坐标。[官方论文](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.zh.png) + +> *图片来自 van de Sande 等人 ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.zh.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.zh.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.zh.png) + +> 图片来自 [官方论文](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN:基于区域的全卷积网络 + +该算法比 Faster R-CNN 更快。其主要思想如下: + +1. 使用 ResNet-101 提取特征 +1. 特征通过 **位置敏感得分图** 进行处理。每个 $C$ 类别的物体被划分为 $k\times k$ 区域,我们训练以预测物体的部分。 +1. 对于每个 $k\times k$ 区域,所有网络对物体类别进行投票,选择得票最多的物体类别。 + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.zh.png) + +> 图片来自 [官方论文](https://arxiv.org/abs/1605.06409) + +### YOLO - 你只看一次 + +YOLO 是一种实时的一次性算法。其主要思想如下: + + * 将图像划分为 $S\times S$ 区域 + * 对于每个区域,**CNN** 预测 $n$ 个可能的物体、*边界框* 坐标和 *置信度*=*概率* * IoU。 + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.zh.png) +> 图片来自 [官方论文](https://arxiv.org/abs/1506.02640) + +### 其他算法 + +* RetinaNet: [官方论文](https://arxiv.org/abs/1708.02002) + - [PyTorch 在 Torchvision 中的实现](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras 实现](https://github.com/fizyr/keras-retinanet) + - [使用 RetinaNet 的目标检测](https://keras.io/examples/vision/retinanet/) 在 Keras 示例中 +* SSD(单次检测器): [官方论文](https://arxiv.org/abs/1512.02325) + +## ✍️ 练习:目标检测 + +在以下笔记本中继续学习: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## 结论 + +在本节课中,你快速浏览了实现目标检测的各种方法! + +## 🚀 挑战 + +阅读这些关于 YOLO 的文章和笔记本,并亲自尝试 + +* [一篇好的博客文章](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) 描述了 YOLO + * [官方网站](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras 实现](https://github.com/experiencor/keras-yolo2),[逐步笔记本](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras 实现](https://github.com/experiencor/keras-yolo2),[逐步笔记本](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## 复习与自学 + +* [目标检测](https://tjmachinelearning.com/lectures/1718/obj/) 由 Nikhil Sardana 撰写 +* [目标检测算法的良好比较](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [深度学习算法在目标检测中的回顾](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [基本目标检测算法的逐步介绍](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [在 Python 中实现 Faster R-CNN 进行目标检测](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [作业:目标检测](lab/README.md) + +**免责声明**: +本文件是使用机器翻译服务进行翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或错误解读不承担任何责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/zh/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..be25078a --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,66 @@ +# 使用好莱坞头部数据集进行头部检测 + +来自 [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`,对于每个头部,你可以获得边界框的坐标。你可以使用Python库解析XML,或者使用 [这个库](https://pypi.org/project/pascal-voc/) 直接处理PASCAL VOC格式。 + +## 训练对象检测 + +你可以通过以下几种方式训练对象检测模型: + +* 使用 [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste) 及其Python API以编程方式在云中训练模型。自定义视觉服务无法使用超过几百张图像来训练模型,因此你可能需要限制数据集。 +* 使用 [Keras tutorial](https://keras.io/examples/vision/retinanet/) 中的示例来训练RetinaNet模型。 +* 使用 [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) 中内置的模块。 + +## 收获 + +对象检测是工业中经常需要的任务。虽然有一些服务可以用于执行对象检测(例如 [Azure Custom Vision](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/quickstarts/object-detection?tabs=visual-studio&WT.mc_id=academic-77998-cacaste)),但理解对象检测的工作原理并能够训练自己的模型是很重要的。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于重要信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/zh/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..19d74472 --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,69 @@ +# 分割 + +我们之前学习了物体检测,它允许我们通过预测物体的 *边界框* 来定位图像中的物体。然而,对于某些任务,我们不仅需要边界框,还需要更精确的物体定位。这个任务被称为 **分割**。 + +## [课前小测](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) + +在这个实验中,尝试使用 [全身分割 MADS 数据集](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) 来进行 **人体分割**。 + +**免责声明**: +本文件是使用机器翻译的人工智能翻译服务进行翻译的。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/zh/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..3c0c6fd1 --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,22 @@ +# 人体分割 + +来自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的实验任务。 + +## 任务 + +在视频制作中,例如天气预报,我们常常需要从摄像机中剪切出人像,并将其放置在其他画面上。这通常通过 **色度键** 技术完成,当一个人在均匀颜色背景前拍摄时,该背景会被去除。在这个实验中,我们将训练一个神经网络模型来剪切出人类轮廓。 + +## 数据集 + +我们将使用来自 Kaggle 的 [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset)。请从 Kaggle 手动下载数据集。 + +## 启动笔记本 + +通过打开 [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) 来开始实验。 + +## 收获 + +人体分割只是我们可以对人像图像执行的常见任务之一。另一个重要的任务包括 **骨架检测** 和 **姿态检测**。查看 [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) 库,了解这些任务如何实现。 + +**免责声明**: +本文件是使用机器翻译的人工智能翻译服务进行翻译的。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原文件的母语版本应被视为权威来源。对于重要信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/4-ComputerVision/README.md b/translations/zh/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..6876af7c --- /dev/null +++ b/translations/zh/lessons/4-ComputerVision/README.md @@ -0,0 +1,16 @@ +# 计算机视觉 + +![计算机视觉内容的摘要图](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.zh.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) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于重要信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或错误解读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/13-TextRep/README.md b/translations/zh/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..3f3d6845 --- /dev/null +++ b/translations/zh/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,76 @@ +# 将文本表示为张量 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## 文本分类 + +在本节的第一部分,我们将重点关注**文本分类**任务。我们将使用[AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset)数据集,该数据集包含以下新闻文章: + +* 类别:科技 +* 标题:肯塔基公司获得资助研究肽(美联社) +* 正文:美联社 - 一家由路易斯维尔大学的化学研究人员创办的公司获得了一项资助,用于开发... + +我们的目标是根据文本将新闻项分类到一个类别中。 + +## 文本表示 + +如果我们想用神经网络解决自然语言处理(NLP)任务,我们需要某种方式将文本表示为张量。计算机已经将文本字符表示为映射到屏幕上字体的数字,使用如ASCII或UTF-8等编码。 + +显示字符与ASCII和二进制表示之间映射的图像 + +> [图片来源](https://www.seobility.net/en/wiki/ASCII) + +作为人类,我们理解每个字母**代表**的含义,以及所有字符如何结合形成句子的单词。然而,计算机本身并没有这样的理解,神经网络必须在训练过程中学习其含义。 + +因此,在表示文本时,我们可以使用不同的方法: + +* **字符级表示**,即通过将每个字符视为一个数字来表示文本。假设我们的文本语料库中有*C*个不同的字符,单词*Hello*将由5x*C*的张量表示。每个字母将对应于独热编码中的一个张量列。 +* **词级表示**,在这种表示中,我们创建一个文本中所有单词的**词汇表**,然后使用独热编码表示单词。这种方法在某种程度上更好,因为每个字母本身并没有太多含义,因此通过使用更高层次的语义概念——单词——我们简化了神经网络的任务。然而,考虑到字典的庞大,我们需要处理高维稀疏张量。 + +无论采用何种表示,我们首先需要将文本转换为一系列**标记**,一个标记可以是一个字符、一个单词,或者有时甚至是一个单词的一部分。然后,我们将标记转换为数字,通常使用**词汇表**,这个数字可以通过独热编码输入到神经网络中。 + +## N-grams + +在自然语言中,单词的确切含义只能在上下文中确定。例如,*neural network*和*fishing network*的含义完全不同。考虑这一点的一个方法是基于单词对构建我们的模型,将单词对视为独立的词汇标记。这样,句子*I like to go fishing*将被表示为以下标记序列:*I like*, *like to*, *to go*, *go fishing*。这种方法的问题在于字典大小显著增长,像*go fishing*和*go shopping*这样的组合被表示为不同的标记,尽管它们共享相同的动词,但并没有任何语义相似性。 + +在某些情况下,我们还可以考虑使用三元组——三个单词的组合。因此,这种方法通常被称为**n-grams**。此外,使用字符级表示的n-grams也很有意义,在这种情况下,n-grams大致对应于不同的音节。 + +## 词袋模型和TF/IDF + +在解决文本分类等任务时,我们需要能够用一个固定大小的向量表示文本,这个向量将用作最终密集分类器的输入。实现这一点的最简单方法之一是将所有单个单词表示结合起来,例如通过相加。如果我们将每个单词的独热编码相加,我们将得到一个频率向量,显示每个单词在文本中出现的次数。这种文本表示被称为**词袋模型**(BoW)。 + + + +> 图片由作者提供 + +BoW本质上表示文本中出现的单词及其数量,这确实可以很好地指示文本的主题。例如,关于政治的新闻文章可能包含*president*和*country*等单词,而科学出版物则可能包含*collider*、*discovered*等。因此,单词频率在许多情况下可以很好地指示文本内容。 + +BoW的问题在于某些常见单词,如*and*、*is*等,出现在大多数文本中,并且它们的频率最高,掩盖了真正重要的单词。我们可以通过考虑单词在整个文档集合中出现的频率来降低这些单词的重要性。这就是TF/IDF方法背后的主要思想,详细内容将在本课程附带的笔记本中介绍。 + +然而,这些方法都无法完全考虑文本的**语义**。我们需要更强大的神经网络模型来做到这一点,稍后我们将在本节中讨论。 + +## ✍️ 练习:文本表示 + +在以下笔记本中继续学习: + +* [使用PyTorch进行文本表示](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [使用TensorFlow进行文本表示](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## 结论 + +到目前为止,我们研究了可以为不同单词添加频率权重的技术。然而,它们无法表示含义或顺序。正如著名语言学家J. R. Firth在1935年所说:“一个词的完整含义总是与上下文相关,任何与上下文无关的意义研究都无法被认真对待。”我们将在课程的后面学习如何通过语言建模从文本中捕捉上下文信息。 + +## 🚀 挑战 + +尝试使用词袋模型和不同数据模型进行其他练习。您可能会受到这个[在Kaggle上的比赛](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words)的启发。 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## 复习与自学 + +在[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste)上练习您的文本嵌入和词袋技术。 + +## [作业:笔记本](assignment.md) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/13-TextRep/assignment.md b/translations/zh/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..ea5b4621 --- /dev/null +++ b/translations/zh/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,6 @@ +# 任务:笔记本 + +使用与本课程相关的笔记本(可以是 PyTorch 或 TensorFlow 版本),使用您自己的数据集重新运行它们,数据集可以来自 Kaggle,并请注明来源。重写笔记本,以突出您的发现。尝试一些可能令人惊讶的创新数据集,例如 [这个关于 UFO 目击事件的数据集](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) 来自 NUFORC。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/14-Embeddings/README.md b/translations/zh/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..35f12750 --- /dev/null +++ b/translations/zh/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,68 @@ +# 嵌入 + +## [课前测验](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.zh.png) + +> 图片由作者提供 + +## ✍️ 练习:嵌入 + +在以下笔记本中继续学习: +* [使用 PyTorch 的嵌入](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [使用 TensorFlow 的嵌入](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## 语义嵌入:Word2Vec + +虽然嵌入层学会了将单词映射到向量表示,但这种表示不一定具有太多的语义意义。能够学习到一种向量表示,使得相似的单词或同义词对应的向量在某种向量距离(例如欧几里得距离)上是接近的,这将是非常有益的。 + +为此,我们需要以特定方式在大量文本上预训练我们的嵌入模型。一种训练语义嵌入的方法称为 [Word2Vec](https://en.wikipedia.org/wiki/Word2vec)。它基于两种主要架构,用于生成单词的分布式表示: + + - **连续词袋模型**(CBoW)——在这种架构中,我们训练模型从周围的上下文中预测一个单词。给定 ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$,模型的目标是从 $(W_{-2},W_{-1},W_1,W_2)$ 预测 $W_0$。 + - **连续跳字模型**与 CBoW 相反。模型使用上下文单词的周围窗口来预测当前单词。 + +CBoW 速度更快,而跳字模型速度较慢,但在表示不常见单词方面表现更好。 + +![展示 CBoW 和跳字算法将单词转换为向量的图像。](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.zh.png) + +> 图片来自 [这篇论文](https://arxiv.org/pdf/1301.3781.pdf) + +Word2Vec 预训练的嵌入(以及其他类似模型,如 GloVe)也可以替代神经网络中的嵌入层。然而,我们需要处理词汇表,因为用于预训练 Word2Vec/GloVe 的词汇表可能与我们的文本语料库中的词汇表不同。请查看上述笔记本,了解如何解决这个问题。 + +## 上下文嵌入 + +传统的预训练嵌入表示(如 Word2Vec)的一个关键限制是单词意义消歧的问题。虽然预训练的嵌入可以捕捉单词在上下文中的某些含义,但单词的每种可能含义都被编码到同一个嵌入中。这可能会在下游模型中引发问题,因为许多单词(例如“play”这个词)根据上下文的不同有不同的含义。 + +例如,单词“play”在这两个不同的句子中有着截然不同的意思: + +- 我去剧院看了一场 **戏**。 +- 约翰想和他的朋友们 **玩**。 + +上述预训练的嵌入在同一个嵌入中表示了“play”这个词的这两种含义。为了克服这个限制,我们需要基于 **语言模型** 构建嵌入,该模型是在大量文本语料库上训练的,并且*知道*单词如何在不同上下文中组合。讨论上下文嵌入超出了本教程的范围,但我们将在后面的课程中讨论语言模型时再回到这个话题。 + +## 结论 + +在本课中,您了解到如何在 TensorFlow 和 Pytorch 中构建和使用嵌入层,以更好地反映单词的语义含义。 + +## 🚀 挑战 + +Word2Vec 已被用于一些有趣的应用,包括生成歌词和诗歌。请查看 [这篇文章](https://www.politetype.com/blog/word2vec-color-poems),了解作者如何使用 Word2Vec 生成诗歌。观看 [Dan Shiffmann 的这段视频](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain),以发现对这种技术的不同解释。然后尝试将这些技术应用于您自己的文本语料库,也许可以从 Kaggle 获取数据。 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## 复习与自学 + +阅读这篇关于 Word2Vec 的论文:[高效估计向量空间中的单词表示](https://arxiv.org/pdf/1301.3781.pdf) + +## [作业:笔记本](assignment.md) + +**免责声明**: +本文件是使用基于机器的人工智能翻译服务进行翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/14-Embeddings/assignment.md b/translations/zh/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..0f3d5e13 --- /dev/null +++ b/translations/zh/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,6 @@ +# 作业:笔记本 + +使用与本课相关的笔记本(无论是 PyTorch 版本还是 TensorFlow 版本),使用您自己的数据集重新运行它们,可能是来自 Kaggle 的数据集,并进行适当的引用。重写笔记本,以突出您的发现。尝试不同类型的数据集并记录您的发现,使用诸如 [这些披头士歌词](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics) 的文本。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业的人类翻译。我们对因使用此翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/15-LanguageModeling/README.md b/translations/zh/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..1e2426f9 --- /dev/null +++ b/translations/zh/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,45 @@ +# 语言建模 + +语义嵌入,例如 Word2Vec 和 GloVe,实际上是 **语言建模** 的第一步——创建能够在某种程度上 *理解*(或 *表示*)语言本质的模型。 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +语言建模的主要思想是在无标签数据集上以无监督的方式进行训练。这一点很重要,因为我们有大量的无标签文本可用,而有标签文本的数量总是受到我们在标记上花费的努力的限制。通常,我们可以构建能够 **预测文本中缺失的单词** 的语言模型,因为在文本中随机屏蔽一个单词并将其用作训练样本是很简单的。 + +## 训练嵌入 + +在之前的示例中,我们使用了预训练的语义嵌入,但观察这些嵌入是如何训练的也很有趣。有几种可能的思路可以使用: + +* **N-Gram** 语言建模,当我们通过查看 N 个之前的标记来预测一个标记(N-gram) +* **连续词袋模型**(CBoW),当我们在标记序列 $W_{-N}$, ..., $W_N$ 中预测中间标记 $W_0$ 时。 +* **跳字模型**,我们从中间标记 $W_0$ 预测一组邻近的标记 {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$}。 + +![来自论文的将单词转换为向量的示例算法](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.zh.png) + +> 图片来自 [这篇论文](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ 示例笔记本:训练 CBoW 模型 + +在以下笔记本中继续学习: + +* [使用 TensorFlow 训练 CBoW Word2Vec](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [使用 PyTorch 训练 CBoW Word2Vec](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## 结论 + +在之前的课程中,我们看到单词嵌入的效果就像魔法一样!现在我们知道训练单词嵌入并不是一项非常复杂的任务,如果需要,我们应该能够为特定领域的文本训练自己的单词嵌入。 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## 复习与自学 + +* [官方 PyTorch 语言建模教程](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html)。 +* [官方 TensorFlow 训练 Word2Vec 模型教程](https://www.TensorFlow.org/tutorials/text/word2vec)。 +* 使用 **gensim** 框架在几行代码中训练最常用的嵌入的过程在 [这份文档中](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) 有描述。 + +## 🚀 [作业:训练跳字模型](lab/README.md) + +在实验中,我们挑战你修改本课的代码,以训练跳字模型,而不是 CBoW。 [阅读详情](lab/README.md) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误读不承担任何责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/zh/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..a8eb8123 --- /dev/null +++ b/translations/zh/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,29 @@ +# 训练 Skip-Gram 模型 + +来自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的实验作业。 + +## 任务 + +在本实验中,我们挑战您使用 Skip-Gram 技术训练 Word2Vec 模型。训练一个网络,通过嵌入来预测 $N$-tokens 宽的 Skip-Gram 窗口中的邻近词。您可以使用 [本课的代码](../../../../../../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,并在二维空间中绘制它们。您能看到任何模式吗? + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/16-RNN/README.md b/translations/zh/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..4e1cb25f --- /dev/null +++ b/translations/zh/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,86 @@ +# 循环神经网络 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +在之前的章节中,我们使用了丰富的文本语义表示,并在嵌入的基础上使用了简单的线性分类器。这种架构的作用是捕捉句子中单词的聚合意义,但它没有考虑单词的**顺序**,因为在嵌入之上的聚合操作移除了原始文本中的这一信息。由于这些模型无法建模单词的顺序,因此它们无法解决更复杂或模糊的任务,如文本生成或问答。 + +为了捕捉文本序列的意义,我们需要使用另一种神经网络架构,称为**循环神经网络**(RNN)。在RNN中,我们一次将句子中的一个符号传递给网络,网络生成一些**状态**,然后我们将其与下一个符号一起再次传递给网络。 + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.zh.png) + +> 图片由作者提供 + +给定输入序列的标记 X0,...,Xn,RNN创建一系列神经网络块,并使用反向传播对该序列进行端到端训练。每个网络块接受一对 (Xi,Si) 作为输入,并生成 Si+1 作为结果。最终状态 Sn 或(输出 Yn)进入线性分类器以生成结果。所有网络块共享相同的权重,并通过一次反向传播传递进行端到端训练。 + +由于状态向量 S0,...,Sn 被传递通过网络,因此它能够学习单词之间的顺序依赖关系。例如,当单词 *not* 在序列中出现时,它可以学习在状态向量中否定某些元素,从而实现否定。 + +> ✅ 由于上面图片中所有 RNN 块的权重是共享的,因此可以将同一图片表示为一个块(右侧),并带有一个递归反馈环,将网络的输出状态传回输入。 + +## RNN 单元的结构 + +让我们看看一个简单的 RNN 单元是如何组织的。它接受前一个状态 Si-1 和当前符号 Xi 作为输入,并必须生成输出状态 Si(有时我们也对一些其他输出 Yi 感兴趣,例如在生成网络的情况下)。 + +一个简单的 RNN 单元内部有两个权重矩阵:一个用于转换输入符号(我们称之为 W),另一个用于转换输入状态(H)。在这种情况下,网络的输出计算为 σ(W×Xi+H×Si-1+b),其中 σ 是激活函数,b 是附加偏置。 + +RNN 单元结构 + +> 图片由作者提供 + +在许多情况下,输入标记在进入 RNN 之前会通过嵌入层以降低维度。在这种情况下,如果输入向量的维度为 *emb_size*,状态向量为 *hid_size*,则 W 的大小为 *emb_size*×*hid_size*,H 的大小为 *hid_size*×*hid_size*。 + +## 长短期记忆(LSTM) + +经典 RNN 的主要问题之一是所谓的**消失梯度**问题。由于 RNN 是在一次反向传播中端到端训练的,因此它在将误差传播到网络的第一层时遇到困难,因此网络无法学习远距离标记之间的关系。避免这个问题的一种方法是通过使用所谓的**门**引入**显式状态管理**。这种类型有两个著名的架构:**长短期记忆**(LSTM)和**门控循环单元**(GRU)。 + +![展示长短期记忆单元的图片](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> 图片来源待定 + +LSTM 网络的组织方式类似于 RNN,但有两个状态在层与层之间传递:实际状态 C 和隐藏向量 H。在每个单元中,隐藏向量 Hi 与输入 Xi 连接在一起,并通过**门**控制状态 C 的变化。每个门都是一个具有 sigmoid 激活的神经网络(输出范围为 [0,1]),在与状态向量相乘时可以被视为按位掩码。上面图片中的门如下(从左到右): + +* **遗忘门**接收隐藏向量并确定我们需要忘记向量 C 的哪些分量,以及哪些分量需要保留。 +* **输入门**从输入和隐藏向量中提取一些信息并将其插入状态中。 +* **输出门**通过带有 *tanh* 激活的线性层转换状态,然后使用隐藏向量 Hi 选择其某些分量以生成新状态 Ci+1。 + +状态 C 的分量可以视为一些可以打开和关闭的标志。例如,当我们在序列中遇到名字 *Alice* 时,我们可能希望假设它指的是一个女性角色,并在状态中提高一个标志,表示我们在句子中有一个女性名词。当我们进一步遇到短语 *and Tom* 时,我们将提高一个标志,表示我们有一个复数名词。因此,通过操控状态,我们可以追踪句子部分的语法属性。 + +> ✅ 理解 LSTM 内部机制的一个优秀资源是 Christopher Olah 的这篇精彩文章 [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/)。 + +## 双向和多层 RNN + +我们讨论了单向操作的循环网络,从序列的开始到结束。这看起来很自然,因为它类似于我们阅读和听取语言的方式。然而,由于在许多实际情况下我们可以随机访问输入序列,因此在两个方向上运行循环计算可能是有意义的。这种网络称为**双向** RNN。在处理双向网络时,我们需要两个隐藏状态向量,一个用于每个方向。 + +循环网络,无论是单向还是双向,都捕捉序列中的某些模式,并可以将其存储到状态向量中或传递到输出中。与卷积网络一样,我们可以在第一个网络之上构建另一个循环层,以捕捉更高层次的模式,并从第一个层提取的低层模式中构建。这引导我们到**多层 RNN**的概念,它由两个或更多的循环网络组成,其中前一层的输出作为输入传递给下一层。 + +![展示多层长短期记忆 RNN 的图片](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.zh.jpg) + +*图片来源于 [这篇精彩的文章](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) by Fernando López* + +## ✍️ 练习:嵌入 + +继续在以下笔记本中学习: + +* [使用 PyTorch 的 RNN](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [使用 TensorFlow 的 RNN](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## 结论 + +在本单元中,我们看到 RNN 可用于序列分类,但实际上它们可以处理更多任务,如文本生成、机器翻译等。我们将在下一个单元中考虑这些任务。 + +## 🚀 挑战 + +阅读一些关于 LSTM 的文献,并考虑它们的应用: + +- [网格长短期记忆](https://arxiv.org/pdf/1507.01526v1.pdf) +- [展示、关注与讲述:具有视觉注意的神经图像字幕生成](https://arxiv.org/pdf/1502.03044v2.pdf) + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## 复习与自学 + +- [理解 LSTM 网络](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) by Christopher Olah. + +## [作业:笔记本](assignment.md) + +**免责声明**: +本文件是使用机器翻译的人工智能翻译服务进行翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业的人类翻译。我们对因使用本翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/16-RNN/assignment.md b/translations/zh/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..44b45d04 --- /dev/null +++ b/translations/zh/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,6 @@ +# 作业:笔记本 + +使用与本课程相关的笔记本(无论是 PyTorch 版本还是 TensorFlow 版本),使用您自己的数据集重新运行它们,可能是来自 Kaggle 的数据集,并确保注明出处。重写笔记本以突出您自己的发现。尝试使用不同类型的数据集,并记录您的发现,使用文本如 [这个关于天气推文的 Kaggle 竞赛数据集](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv)。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/zh/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..5465a6e9 --- /dev/null +++ b/translations/zh/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,79 @@ +# 生成网络 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +递归神经网络(RNN)及其门控单元变体,如长短期记忆单元(LSTM)和门控递归单元(GRU),为语言建模提供了一种机制,因为它们能够学习单词顺序并对序列中的下一个单词进行预测。这使得我们能够将RNN用于**生成任务**,例如普通文本生成、机器翻译甚至图像描述。 + +> ✅ 想想你在输入时受益于文本补全等生成任务的所有时刻。研究一下你最喜欢的应用程序,看看它们是否利用了RNN。 + +在我们在上一单元中讨论的RNN架构中,每个RNN单元都生成下一个隐藏状态作为输出。然而,我们还可以为每个递归单元添加另一个输出,这将允许我们输出一个**序列**(其长度与原始序列相等)。此外,我们可以使用不在每一步接受输入的RNN单元,仅使用一些初始状态向量,然后生成一系列输出。 + +这允许出现不同的神经网络架构,如下图所示: + +![展示常见递归神经网络模式的图像。](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.zh.jpg) + +> 图片来自博客文章 [递归神经网络的非凡有效性](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) 由 [Andrej Karpaty](http://karpathy.github.io/) + +* **一对一** 是传统的神经网络,具有一个输入和一个输出 +* **一对多** 是一种生成架构,接受一个输入值,并生成一系列输出值。例如,如果我们想训练一个**图像描述**网络来生成图片的文本描述,我们可以将一张图片作为输入,通过CNN获取其隐藏状态,然后让递归链逐字生成描述 +* **多对一** 对应于我们在上一单元中描述的RNN架构,例如文本分类 +* **多对多**,或**序列到序列**,对应于诸如**机器翻译**的任务,其中第一个RNN从输入序列中收集所有信息到隐藏状态,另一个RNN链将此状态展开为输出序列。 + +在本单元中,我们将专注于简单的生成模型,帮助我们生成文本。为了简单起见,我们将使用字符级标记化。 + +我们将逐步训练这个RNN来生成文本。在每一步中,我们将取长度为 `nchars` 的字符序列,并要求网络为每个输入字符生成下一个输出字符: + +![展示单词 'HELLO' 的示例 RNN 生成。](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.zh.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) + +我们已经看到如何逐字符生成文本。在实验室中,你将探索词级文本生成。 + +**免责声明**: +本文件是使用机器翻译AI服务进行翻译的。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用本翻译而导致的任何误解或错误解释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/zh/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..83bd10c6 --- /dev/null +++ b/translations/zh/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,14 @@ +# 基于 RNN 的词级文本生成 + +来自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的实验作业。 + +## 任务 + +在这个实验中,您需要选择一本书,并将其作为数据集来训练词级文本生成器。 + +## 数据集 + +您可以使用任何一本书。您可以在 [Project Gutenberg](https://www.gutenberg.org/) 找到许多免费的文本,例如,这里有一本由 Lewis Carroll 撰写的 [爱丽丝梦游仙境](https://www.gutenberg.org/files/11/11-0.txt) 的直接链接。 + +**免责声明**: +本文件是使用机器翻译的人工智能翻译服务进行翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业的人类翻译。我们对因使用此翻译而产生的任何误解或错误解释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/18-Transformers/READMEtransformers.md b/translations/zh/lessons/5-NLP/18-Transformers/READMEtransformers.md new file mode 100644 index 00000000..2e361d8e --- /dev/null +++ b/translations/zh/lessons/5-NLP/18-Transformers/READMEtransformers.md @@ -0,0 +1,112 @@ +# 注意力机制与变换器 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +自然语言处理领域中最重要的问题之一是**机器翻译**,这是一个支撑像谷歌翻译等工具的基本任务。在这一部分,我们将专注于机器翻译,或者更一般地说,任何*序列到序列*的任务(这也被称为**句子转导**)。 + +使用循环神经网络(RNN)时,序列到序列的实现是通过两个递归网络来完成的,其中一个网络,**编码器**,将输入序列压缩成一个隐藏状态,而另一个网络,**解码器**,将这个隐藏状态展开为翻译结果。这种方法存在几个问题: + +* 编码器网络的最终状态很难记住句子的开头,从而导致长句子的模型质量较差。 +* 序列中的所有单词对结果的影响相同。然而,在现实中,输入序列中的特定单词对顺序输出的影响往往比其他单词更大。 + +**注意力机制**提供了一种对每个输入向量在RNN每个输出预测中的上下文影响进行加权的方法。它的实现方式是创建输入RNN和输出RNN之间的中间状态的快捷方式。通过这种方式,在生成输出符号 yt 时,我们将考虑所有输入隐藏状态 hi,并使用不同的权重系数 αt,i。 + +![展示带有加性注意力层的编码器/解码器模型的图像](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.zh.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.zh.png) + +> 图自 [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (图3) + +注意力机制在当今或近乎当前的自然语言处理技术中起着重要作用。然而,添加注意力机制会大大增加模型参数的数量,这导致了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)(这就是介绍变换器的论文被称为 *[注意力就是你所需要的一切](https://arxiv.org/abs/1706.03762)* 的原因) + +### 位置编码/嵌入 + +位置编码的思想如下: +1. 使用RNN时,标记的相对位置由步骤数表示,因此不需要显式表示。 +2. 然而,一旦我们切换到注意力机制,我们需要知道序列中标记的相对位置。 +3. 为了获取位置编码,我们用序列中的标记位置序列(即数字序列0,1,...)增强我们的标记序列。 +4. 然后,我们将标记位置与标记嵌入向量混合。为了将位置(整数)转换为向量,我们可以使用不同的方法: + +* 可训练的嵌入,类似于标记嵌入。这是我们在这里考虑的方法。我们在标记及其位置之上应用嵌入层,得到相同维度的嵌入向量,然后将它们相加。 +* 固定位置编码函数,如原始论文中所提议的。 + + + +> 作者提供的图像 + +通过位置嵌入得到的结果同时嵌入了原始标记及其在序列中的位置。 + +### 多头自注意力 + +接下来,我们需要捕捉序列中的一些模式。为此,变换器使用**自注意力**机制,这本质上是对同一序列应用的注意力。应用自注意力使我们能够考虑句子中的**上下文**,并查看哪些单词是相互关联的。例如,它使我们能够看到哪些单词是由指代词(如 *它*)引用的,并且还考虑上下文: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.zh.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**(来自变换器的双向编码器表示)是一个非常大的多层变换器网络,其中 *BERT-base* 有12层,*BERT-large* 有24层。该模型首先在一个大型文本数据集(维基百科 + 书籍)上进行预训练,采用无监督训练(预测句子中被屏蔽的单词)。在预训练期间,模型吸收了显著的语言理解能力,这可以通过微调与其他数据集结合使用。这个过程被称为**迁移学习**。 + +![图片来自 http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.zh.png) + +> 图片 [来源](http://jalammar.github.io/illustrated-bert/) + +## ✍️ 练习:变换器 + +在以下笔记本中继续学习: + +* [PyTorch中的变换器](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [TensorFlow中的变换器](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## 结论 + +在本课中,您了解了变换器和注意力机制,这些都是自然语言处理工具箱中的重要工具。变换器架构有许多变体,包括BERT、DistilBERT、BigBird、OpenGPT3等,可以进行微调。[HuggingFace包](https://github.com/huggingface/) 提供了一个用于训练这些架构的库,支持PyTorch和TensorFlow。 + +## 🚀 挑战 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## 复习与自学 + +* [博客文章](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/),解释经典的 [注意力就是你所需要的一切](https://arxiv.org/abs/1706.03762) 论文。 +* [一系列博客文章](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) 详细解释变换器架构。 + +## [作业](assignment.md) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/18-Transformers/assignment.md b/translations/zh/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..9d971689 --- /dev/null +++ b/translations/zh/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,6 @@ +# 任务:变换器 + +在 HuggingFace 上实验变换器!尝试一些他们提供的脚本,以便与他们网站上可用的各种模型进行互动:https://huggingface.co/docs/transformers/run_scripts。尝试他们的一个数据集,然后从本课程或 Kaggle 导入您自己的数据集,看看您能否生成有趣的文本。制作一个包含您发现的笔记本。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。对于因使用此翻译而产生的任何误解或误读,我们不承担任何责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/19-NER/README.md b/translations/zh/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..4b598732 --- /dev/null +++ b/translations/zh/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,83 @@ +# 命名实体识别 + +到目前为止,我们主要集中在一个自然语言处理(NLP)任务——分类。然而,还有其他可以通过神经网络完成的NLP任务。其中之一是**[命名实体识别](https://wikipedia.org/wiki/Named-entity_recognition)**(NER),它涉及在文本中识别特定的实体,例如地点、人物姓名、日期时间区间、化学公式等。 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## 使用NER的示例 + +假设您想开发一个自然语言聊天机器人,类似于亚马逊Alexa或谷歌助手。智能聊天机器人的工作方式是通过对输入句子进行文本分类来*理解*用户的需求。这种分类的结果称为**意图**,它决定了聊天机器人应该执行什么操作。 + +Bot NER + +> 作者提供的图像 + +然而,用户可能会在短语中提供一些参数。例如,在询问天气时,她可能会指定一个地点或日期。聊天机器人应该能够理解这些实体,并在执行操作之前相应地填写参数槽。这正是NER发挥作用的地方。 + +> ✅ 另一个例子是[分析科学医学论文](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)。我们需要关注的主要内容是特定的医学术语,例如疾病和药物成分。虽然可以通过子串搜索提取少量疾病,但更复杂的实体,如化合物和药物名称,则需要更复杂的方法。 + +## NER作为标记分类 + +NER模型本质上是**标记分类模型**,因为对于每个输入标记,我们需要决定它是否属于某个实体,如果是,属于哪个实体类别。 + +考虑以下论文标题: + +**三尖瓣反流**和**碳酸锂****毒性**在新生儿中的表现。 + +这里的实体是: + +* 三尖瓣反流是一种疾病 (`DIS`) +* 碳酸锂是一种化学物质 (`CHEM`) +* 毒性也是一种疾病 (`DIS`) + +请注意,一个实体可以跨越多个标记。而且,如此例所示,我们需要区分两个连续的实体。因此,通常会为每个实体使用两个类别——一个指定实体的第一个标记(通常使用`B-`前缀,表示**b**eginning),另一个表示实体的后续部分(`I-`,表示**i**nner token)。我们还使用`O`作为表示所有**o**ther标记的类别。这种标记方式称为[BIO标记](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging))(或IOB)。标记后的标题如下所示: + +标记 | 标签 +------|----- +三尖瓣 | B-DIS +反流 | I-DIS +和 | O +碳酸锂 | B-CHEM +毒性 | B-DIS +在 | O +一个 | O +新生儿 | O +中 | O +。 | O + +由于我们需要在标记和类别之间建立一一对应关系,因此可以从这张图中训练一个最右侧的**多对多**神经网络模型: + +![显示常见递归神经网络模式的图像。](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.zh.jpg) + +> *图像来自[这篇博文](http://karpathy.github.io/2015/05/21/rnn-effectiveness/)作者是[Andrej Karpathy](http://karpathy.github.io/)。NER标记分类模型对应于此图中的最右侧网络架构。* + +## 训练NER模型 + +由于NER模型本质上是一个标记分类模型,因此我们可以使用已经熟悉的RNN来完成此任务。在这种情况下,每个递归网络块将返回标记ID。以下示例笔记本展示了如何训练LSTM进行标记分类。 + +## ✍️ 示例笔记本:NER + +在以下笔记本中继续您的学习: + +* [使用TensorFlow进行NER](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## 结论 + +NER模型是一个**标记分类模型**,这意味着它可以用于执行标记分类。这是NLP中一个非常常见的任务,有助于识别文本中的特定实体,包括地点、名称、日期等。 + +## 🚀 挑战 + +完成下面链接的作业,以训练一个医学术语的命名实体识别模型,然后在不同的数据集上进行尝试。 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## 复习与自学 + +阅读博客[递归神经网络的非凡有效性](http://karpathy.github.io/2015/05/21/rnn-effectiveness/),并按照文章中的进一步阅读部分深入了解。 + +## [作业](lab/README.md) + +在本课的作业中,您需要训练一个医学实体识别模型。您可以从训练本课中描述的LSTM模型开始,然后继续使用BERT变换模型。阅读[说明](lab/README.md)以获取所有详细信息。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/19-NER/lab/README.md b/translations/zh/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..9565c528 --- /dev/null +++ b/translations/zh/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,50 @@ +# NER + +来自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的实验作业。 + +## 任务 + +在这个实验中,您需要训练一个用于医学术语的命名实体识别模型。 + +## 数据集 + +为了训练 NER 模型,我们需要一个标注良好的包含医学实体的数据集。[BC5CDR 数据集](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) 包含来自 1500 多篇论文的标注疾病和化学实体。您可以在他们的网站注册后下载数据集。 + +BC5CDR 数据集的格式如下: + +``` +6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. +6794356|a|A newborn with massive tricuspid regurgitation, atrial flutter, congestive heart failure, and a high serum lithium level is described. This is the first patient to initially manifest tricuspid regurgitation and atrial flutter, and the 11th described patient with cardiac disease among infants exposed to lithium compounds in the first trimester of pregnancy. Sixty-three percent of these infants had tricuspid valve involvement. Lithium carbonate may be a factor in the increasing incidence of congenital heart disease when taken during early pregnancy. It also causes neurologic depression, cyanosis, and cardiac arrhythmia when consumed prior to delivery. +6794356 0 29 Tricuspid valve regurgitation Disease D014262 +6794356 34 51 lithium carbonate Chemical D016651 +6794356 52 60 toxicity Disease D064420 +... +``` + +在这个数据集中,前两行是论文的标题和摘要,接下来是单个实体,包含在标题+摘要块中的起始和结束位置。除了实体类型,您还将获得该实体在某个医学本体中的本体 ID。 + +您需要编写一些 Python 代码将其转换为 BIO 编码。 + +## 网络 + +第一次尝试 NER 可以使用 LSTM 网络,就像您在课程中看到的例子一样。然而,在 NLP 任务中,[变压器架构](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)),特别是 [BERT 语言模型](https://en.wikipedia.org/wiki/BERT_(language_model)) 表现得更好。预训练的 BERT 模型理解语言的一般结构,并且可以通过相对较小的数据集和计算成本进行微调以适应特定任务。 + +由于我们计划将 NER 应用到医学场景中,使用在医学文本上训练的 BERT 模型是合理的。微软研究院发布了一个名为 [PubMedBERT][PubMedBERT] 的预训练模型 ([publication][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` itself, built for token classification task using `classes` number of classes, as well as `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 进行的研究。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/20-LangModels/READMELargeLang.md b/translations/zh/lessons/5-NLP/20-LangModels/READMELargeLang.md new file mode 100644 index 00000000..9d74ac6c --- /dev/null +++ b/translations/zh/lessons/5-NLP/20-LangModels/READMELargeLang.md @@ -0,0 +1,55 @@ +# 预训练的大型语言模型 + +在我们之前的所有任务中,我们都在训练一个神经网络,以使用标记数据集执行某项特定任务。对于像 BERT 这样的庞大变换模型,我们使用自我监督的语言建模来构建语言模型,然后通过进一步的领域特定训练将其专门化为特定的下游任务。然而,已经证明大型语言模型也可以在没有任何领域特定训练的情况下解决许多任务。能够做到这一点的一类模型被称为 **GPT**:生成预训练变换器。 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## 文本生成与困惑度 + +神经网络能够在没有下游训练的情况下执行一般任务的想法在论文 [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) 中提出。主要思想是许多其他任务可以通过 **文本生成** 进行建模,因为理解文本本质上意味着能够生成文本。由于模型是在大量包含人类知识的文本上训练的,它也变得对各种主题具有知识。 + +> 理解和能够生成文本也意味着对我们周围的世界有一定的了解。人们在很大程度上也是通过阅读来学习的,GPT 网络在这方面是相似的。 + +文本生成网络通过预测下一个单词的概率 $$P(w_N)$$ 来工作。然而,下一个单词的无条件概率等于该单词在文本语料库中的频率。GPT 能够给我们提供下一个单词的 **条件概率**,给定前面的单词:$$P(w_N | w_{n-1}, ..., w_0)$$ + +> 您可以在我们的 [初学者数据科学课程](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) 中阅读更多关于概率的内容。 + +语言生成模型的质量可以通过 **困惑度** 来定义。它是一种内在指标,允许我们在没有任何特定任务数据集的情况下衡量模型质量。它基于 *句子的概率* 的概念——模型对可能真实的句子分配高概率(即模型对其不感到 **困惑**),而对意义较少的句子分配低概率(例如 *它能做什么?*)。当我们给模型提供来自真实文本语料库的句子时,我们期望它们具有高概率和低 **困惑度**。从数学上讲,它被定义为测试集的归一化逆概率: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**您可以使用 [Hugging Face 提供的 GPT 驱动文本编辑器进行文本生成实验](https://transformer.huggingface.co/doc/gpt2-large)**。在此编辑器中,您开始撰写文本,按 **[TAB]** 将为您提供多个完成选项。如果它们太短,或者您对它们不满意——再次按 [TAB],您将获得更多选项,包括更长的文本片段。 + +## GPT 是一个家族 + +GPT 不是单一模型,而是由 [OpenAI](https://openai.com) 开发和训练的一系列模型。 + +在 GPT 模型下,我们有: + +| [GPT-2](https://huggingface.co/docs/transformers/model_doc/gpt2#openai-gpt2) | [GPT 3](https://openai.com/research/language-models-are-few-shot-learners) | [GPT-4](https://openai.com/gpt-4) | +| -- | -- | -- | +| 具有最多 15 亿个参数的语言模型。 | 具有最多 1750 亿个参数的语言模型 | 100T 参数,接受图像和文本输入,并输出文本。 | + +GPT-3 和 GPT-4 模型可作为 [Microsoft Azure 的认知服务](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste),以及 [OpenAI API](https://openai.com/api/) 使用。 + +## 提示工程 + +由于 GPT 已在大量数据上进行训练以理解语言和代码,因此它们会根据输入(提示)提供输出。提示是 GPT 的输入或查询,通过这些输入,用户向模型提供有关下一步完成的任务的指令。为了引出期望的结果,您需要最有效的提示,这涉及选择正确的单词、格式、短语甚至符号。这种方法被称为 [提示工程](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) + +[该文档](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) 为您提供有关提示工程的更多信息。 + +## ✍️ 示例笔记本:[与 OpenAI-GPT 玩耍](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +在以下笔记本中继续您的学习: + +* [使用 OpenAI-GPT 和 Hugging Face Transformers 生成文本](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## 结论 + +新的通用预训练语言模型不仅建模语言结构,还包含大量自然语言。因此,它们可以有效地用于在零样本或少样本设置中解决一些 NLP 任务。 + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业的人类翻译。我们对因使用此翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/5-NLP/README.md b/translations/zh/lessons/5-NLP/README.md new file mode 100644 index 00000000..7663bf50 --- /dev/null +++ b/translations/zh/lessons/5-NLP/README.md @@ -0,0 +1,69 @@ +# 自然语言处理 + +![NLP任务总结手绘图](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.zh.png) + +在本节中,我们将重点讨论使用神经网络处理与**自然语言处理(NLP)**相关的任务。我们希望计算机能够解决许多NLP问题: + +* **文本分类**是一个典型的分类问题,涉及文本序列。例如,将电子邮件消息分类为垃圾邮件与非垃圾邮件,或者将文章归类为体育、商业、政治等。此外,在开发聊天机器人时,我们常常需要理解用户想表达的内容——在这种情况下,我们处理的是**意图分类**。在意图分类中,我们通常需要处理多个类别。 +* **情感分析**是一个典型的回归问题,我们需要给句子的含义分配一个数字(情感),以表示其正面或负面的程度。情感分析的更高级版本是**基于方面的情感分析**(ABSA),我们将情感归因于句子的不同部分(方面),例如:*在这家餐厅,我喜欢菜肴,但气氛糟糕*。 +* **命名实体识别**(NER)是指从文本中提取特定实体的问题。例如,我们可能需要理解在短语*我明天需要飞往巴黎*中,单词*明天*指的是日期,而*巴黎*是一个地点。 +* **关键词提取**类似于NER,但我们需要自动提取对句子含义重要的单词,而不需要针对特定实体类型进行预训练。 +* **文本聚类**在我们想要将相似句子分组时非常有用,例如在技术支持对话中的相似请求。 +* **问答系统**指的是模型回答特定问题的能力。模型接收一段文本和一个问题作为输入,并需要提供文本中包含问题答案的位置(或者,有时生成答案文本)。 +* **文本生成**是模型生成新文本的能力。它可以被视为一个分类任务,根据某些*文本提示*预测下一个字母/单词。高级文本生成模型,如GPT-3,能够使用一种称为[提示编程](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0)或[提示工程](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29)的技术解决其他NLP任务,如分类。 +* **文本摘要**是一种技术,当我们希望计算机“阅读”长文本并用几句话进行总结时使用。 +* **机器翻译**可以被视为在一种语言中理解文本和在另一种语言中生成文本的结合。 + +最初,大多数NLP任务是使用传统方法如语法解决的。例如,在机器翻译中,解析器被用来将初始句子转换为语法树,然后提取更高级的语义结构来表示句子的含义,并根据这个含义和目标语言的语法生成结果。如今,许多NLP任务通过神经网络更有效地解决。 + +> 许多经典的NLP方法已在[自然语言处理工具包(NLTK)](https://www.nltk.org)的Python库中实现。在线上有一本很棒的[NLTK书](https://www.nltk.org/book/),涵盖了如何使用NLTK解决不同的NLP任务。 + +在我们的课程中,我们将主要专注于使用神经网络进行NLP,并在需要时使用NLTK。 + +我们已经学习了如何使用神经网络处理表格数据和图像。这些数据类型与文本之间的主要区别在于,文本是可变长度的序列,而图像的输入大小是预先已知的。虽然卷积网络可以从输入数据中提取模式,但文本中的模式更为复杂。例如,否定与主语的分离在许多词中是任意的(例如:*我不喜欢橙子*,与*我不喜欢那些大而色彩斑斓的美味橙子*),而这仍应被解释为一种模式。因此,为了处理语言,我们需要引入新的神经网络类型,如*递归网络*和*变换器*。 + +## 安装库 + +如果您使用本地Python安装来运行本课程,您可能需要使用以下命令安装NLP所需的所有库: + +**对于PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**对于TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> 您可以在[Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste)上尝试使用TensorFlow进行NLP。 + +## GPU警告 + +在本节中,在一些示例中我们将训练相当大的模型。 +* **使用支持GPU的计算机**:建议在支持GPU的计算机上运行您的笔记本,以减少处理大型模型时的等待时间。 +* **GPU内存限制**:在GPU上运行可能会导致内存不足的情况,特别是在训练大型模型时。 +* **GPU内存消耗**:训练期间消耗的GPU内存量取决于多个因素,包括小批量大小。 +* **最小化小批量大小**:如果遇到GPU内存问题,请考虑在代码中减少小批量大小作为潜在解决方案。 +* **TensorFlow GPU内存释放**:旧版本的TensorFlow在一个Python内核中训练多个模型时可能无法正确释放GPU内存。为了有效管理GPU内存使用,您可以配置TensorFlow仅在需要时分配GPU内存。 +* **代码包含**:要将TensorFlow设置为仅在需要时增长GPU内存分配,请在您的笔记本中包含以下代码: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +如果您有兴趣从经典机器学习的角度学习NLP,请访问[这套课程](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP)。 + +## 本节内容 +在本节中,我们将学习: + +* [将文本表示为张量](13-TextRep/README.md) +* [词嵌入](14-Emdeddings/README.md) +* [语言建模](15-LanguageModeling/README.md) +* [递归神经网络](16-RNN/README.md) +* [生成网络](17-GenerativeNetworks/README.md) +* [变换器](18-Transformers/README.md) + +**免责声明**: +本文件是使用基于机器的人工智能翻译服务进行翻译的。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/zh/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..d4108c86 --- /dev/null +++ b/translations/zh/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,80 @@ +# 遗传算法 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**遗传算法** (GA) 基于一种 **进化方法** 来实现人工智能,其中利用种群进化的方法来获得给定问题的最优解。它们由 [约翰·亨利·霍兰德](https://wikipedia.org/wiki/John_Henry_Holland) 于1975年提出。 + +遗传算法基于以下思想: + +* 问题的有效解可以表示为 **基因** +* **交叉** 使我们能够将两个解结合在一起以获得一个新的有效解 +* **选择** 用于通过某种 **适应度函数** 选择更优的解 +* 引入 **变异** 以破坏优化过程并使我们摆脱局部最优解 + +如果您想实现遗传算法,您需要以下内容: + + * 找到一种使用 **基因** g∈Γ 编码我们问题解的方法 + * 在基因集 Γ 上定义 **适应度函数** fit: Γ→**R**。较小的函数值对应于更好的解。 + * 定义 **交叉** 机制,将两个基因结合在一起以获得一个新的有效解 crossover: Γ2→Γ。 + * 定义 **变异** 机制 mutate: Γ→Γ。 + +在许多情况下,交叉和变异都是相对简单的算法,可以将基因视为数值序列或位向量进行操作。 + +遗传算法的具体实现因情况而异,但总体结构如下: + +1. 选择初始种群 G⊂Γ +2. 随机选择将在此步骤中执行的操作之一:交叉或变异 +3. **交叉**: + * 随机选择两个基因 g1,g2 ∈ G + * 计算交叉 g=crossover(g1,g2) + * 如果 fit(g)1) 或 fit(g)2) - 用 g 替换种群中的相应基因。 +4. **变异** - 随机选择基因 g∈G 并用 mutate(g) 替换它 +5. 从第2步重复,直到我们得到足够小的 fit 值,或直到达到步骤数量的限制。 + +## 典型任务 + +遗传算法通常解决的任务包括: + +1. 排程优化 +1. 最优装箱 +1. 最优切割 +1. 加速穷举搜索 + +## ✍️ 练习:遗传算法 + +在以下笔记本中继续学习: + +前往 [这个笔记本](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) 查看使用遗传算法的两个示例: + +1. 公平分配财宝 +1. 八皇后问题 + +## 结论 + +遗传算法用于解决许多问题,包括物流和搜索问题。该领域受到心理学和计算机科学交叉研究的启发。 + +## 🚀 挑战 + +“遗传算法简单易于实现,但其行为难以理解。” [来源](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) 作为起点。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/6-Other/22-DeepRL/README.md b/translations/zh/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..d42b4fdf --- /dev/null +++ b/translations/zh/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,117 @@ +# 深度强化学习 + +强化学习(RL)被视为基本的机器学习范式之一,和监督学习、无监督学习并列。在监督学习中,我们依赖于具有已知结果的数据集,而强化学习则基于**实践学习**。例如,当我们第一次看到一款电脑游戏时,我们开始玩耍,即使不知道规则,经过一段时间的游戏,我们能够通过玩耍和调整行为来提高我们的技能。 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +要进行强化学习,我们需要: + +* 一个**环境**或**模拟器**,它设定了游戏的规则。我们应该能够在模拟器中运行实验并观察结果。 +* 一些**奖励函数**,指示我们的实验成功程度。在学习玩电脑游戏的情况下,奖励将是我们的最终得分。 + +基于奖励函数,我们应该能够调整我们的行为并提高我们的技能,以便下次能玩得更好。强化学习与其他类型的机器学习的主要区别在于,在强化学习中,我们通常不知道在游戏结束之前我们是赢还是输。因此,我们不能仅仅说某个动作是好是坏——我们只在游戏结束时获得奖励。 + +在强化学习过程中,我们通常会进行许多实验。在每个实验中,我们需要在遵循迄今为止学习到的最佳策略(**利用**)和探索新的可能状态(**探索**)之间进行平衡。 + +## OpenAI Gym + +一个很好的强化学习工具是 [OpenAI Gym](https://gym.openai.com/) - 一个**模拟环境**,可以模拟许多不同的环境,从Atari游戏到杆平衡的物理原理。它是训练强化学习算法的最受欢迎的模拟环境之一,由 [OpenAI](https://openai.com/) 维护。 + +> **注意**:您可以在 [这里](https://gym.openai.com/envs/#classic_control) 查看 OpenAI Gym 中可用的所有环境。 + +## CartPole 平衡 + +您可能都见过现代的平衡设备,如 *Segway* 或 *Gyroscooters*。它们能够通过根据加速度计或陀螺仪的信号自动调整轮子来实现平衡。在本节中,我们将学习如何解决一个类似的问题——平衡一个杆。这个问题类似于一个马戏团表演者需要在手上平衡一个杆的情况——但这个杆的平衡仅发生在一维。 + +平衡的简化版本被称为**CartPole**问题。在cartpole世界中,我们有一个可以左右移动的水平滑块,目标是在滑块上方平衡一个垂直杆。 + +a cartpole + +要创建和使用这个环境,我们需要几行Python代码: + +```python +import gym +env = gym.make("CartPole-v1") + +env.reset() +done = False +total_reward = 0 +while not done: + env.render() + action = env.action_space.sample() + observaton, reward, done, info = env.step(action) + total_reward += reward + +print(f"Total reward: {total_reward}") +``` + +每个环境的访问方式完全相同: +* `env.reset` starts a new experiment +* `env.step` 执行一个模拟步骤。它从**动作空间**接收一个**动作**,并返回一个**观察**(来自观察空间),以及一个奖励和一个终止标志。 + +在上面的例子中,我们在每个步骤执行一个随机动作,这就是实验生命周期很短的原因: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +强化学习算法的目标是训练一个模型——所谓的**策略** π——它将根据给定的状态返回动作。我们也可以将策略视为概率性的,例如,对于任何状态 *s* 和动作 *a*,它将返回在状态 *s* 采取 *a* 的概率 π(*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模型中,actor提出我们需要采取的动作,而critic则尝试进行评估并估计结果。然而,我们的目标是共同训练这些网络。 + +因为我们知道实验过程中真实的累积奖励和critic返回的结果,所以构建一个损失函数以最小化它们之间的差异相对容易。这将给我们**critic损失**。我们可以通过使用与策略梯度算法相同的方法来计算**actor损失**。 + +运行这些算法之一后,我们可以期待我们的CartPole表现如下: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ 练习:策略梯度和Actor-Critic RL + +在以下笔记本中继续学习: + +* [TensorFlow中的RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [PyTorch中的RL](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## 其他RL任务 + +如今,强化学习是一个快速发展的研究领域。一些有趣的强化学习示例包括: + +* 教会计算机玩**Atari游戏**。这个问题的挑战在于,我们没有简单的状态以向量表示,而是一个屏幕截图——我们需要使用CNN将这个屏幕图像转换为特征向量,或提取奖励信息。Atari游戏在Gym中可用。 +* 教会计算机玩棋类游戏,如国际象棋和围棋。最近,像**Alpha Zero**这样的先进程序是通过两个代理相互对弈,从零开始训练的,并在每一步中不断提高。 +* 在工业中,强化学习被用来从模拟中创建控制系统。一个名为 [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) 的服务专门为此设计。 + +## 结论 + +我们现在已经学习了如何通过提供定义游戏所需状态的奖励函数,并给予智能探索搜索空间的机会,来训练代理以获得良好的结果。我们成功尝试了两种算法,并在相对较短的时间内取得了良好的结果。然而,这只是您进入强化学习旅程的开始,如果您想深入了解,绝对应该考虑参加一个单独的课程。 + +## 🚀 挑战 + +探索“其他RL任务”部分列出的应用,并尝试实现其中一个! + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## 复习与自学 + +在我们的 [初学者机器学习课程](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) 中了解更多关于经典强化学习的信息。 + +观看 [这段精彩视频](https://www.youtube.com/watch?v=qv6UVOQ0F44),讲述计算机如何学习玩超级马里奥。 + +## 作业:[训练山地车](lab/README.md) + +在这个作业中,您的目标是训练一个不同的Gym环境——[Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/)。 + +**免责声明**: +本文件是使用基于机器的人工智能翻译服务翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于重要信息,建议进行专业人工翻译。我们对因使用本翻译而导致的任何误解或误读不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/6-Other/22-DeepRL/lab/README.md b/translations/zh/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..e63a9601 --- /dev/null +++ b/translations/zh/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,22 @@ +# 训练山地车逃脱 + +来自 [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) 的实验任务。 + +## 任务 + +你的目标是训练 RL 代理控制 [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) 在 OpenAI 环境中。你将基于截至 2023 年 10 月的数据进行训练。 + +## 环境 + +山地车环境由困在山谷中的汽车组成。你的目标是跳出山谷并到达旗帜。你可以执行的动作是向左加速、向右加速或什么都不做。你可以观察汽车在 x 轴上的位置和速度。 + +## 启动笔记本 + +通过打开 [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) 开始实验。 + +## 收获 + +你应该在整个实验中了解到,将 RL 算法应用于新环境通常相当简单,因为 OpenAI Gym 为所有环境提供相同的接口,因此算法在很大程度上不依赖于环境的性质。你甚至可以以某种方式重构 Python 代码,以便将任何环境作为参数传递给 RL 算法。 + +**免责声明**: +本文件使用机器翻译的AI翻译服务进行翻译。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/6-Other/23-MultiagentSystems/README.md b/translations/zh/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..efd7c177 --- /dev/null +++ b/translations/zh/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,154 @@ +# 多智能体系统 + +实现智能的一个可能方法是所谓的**涌现**(或**协同**)方法,这一方法基于一个事实:许多相对简单的智能体的组合行为可以导致系统整体更复杂(或更智能)的行为。从理论上讲,这基于[集体智能](https://en.wikipedia.org/wiki/Collective_intelligence)、[涌现主义](https://en.wikipedia.org/wiki/Global_brain)和[进化控制论](https://en.wikipedia.org/wiki/Global_brain)的原则,这些原则表明,当较低级系统被恰当地组合时,高级系统会获得某种附加值(即*元系统转变原则*)。 + +## [课前测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**多智能体系统**的方向在1990年代的人工智能领域应运而生,作为对互联网和分布式系统增长的回应。经典人工智能教材之一,[人工智能:现代方法](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach),从多智能体系统的角度探讨经典人工智能的观点。 + +多智能体方法的核心是**智能体**的概念——一种存在于某种**环境**中的实体,它能够感知并对其进行操作。这是一个非常广泛的定义,智能体可以有许多不同的类型和分类: + +* 按推理能力: + - **反应型**智能体通常具有简单的请求-响应行为 + - **深思型**智能体运用某种逻辑推理和/或规划能力 +* 按智能体执行代码的位置: + - **静态**智能体在专用网络节点上工作 + - **移动**智能体可以在网络节点之间移动其代码 +* 按行为: + - **被动智能体**没有特定目标。这些智能体可以对外部刺激做出反应,但不会主动采取任何行动。 + - **主动智能体**有一些他们追求的目标 + - **认知智能体**涉及复杂的规划和推理 + +如今,多智能体系统在许多应用中得到了使用: + +* 在游戏中,许多非玩家角色使用某种形式的人工智能,可以被视为智能体 +* 在视频制作中,渲染涉及人群的复杂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` 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`是一个品种的名称,我们需要同时指定单数和复数形式,因为不同的命令使用不同的形式以便于理解。 + +> ✅ 我们不会深入学习NetLogo语言本身——如果您有兴趣了解更多,可以访问精彩的[初学者互动NetLogo词典](https://ccl.northwestern.edu/netlogo/bind/)资源。 + +您可以[下载](https://ccl.northwestern.edu/netlogo/download.shtml)并安装NetLogo进行尝试。 + +### 模型库 + +NetLogo的一个好处是它包含一个可供您尝试的工作模型库。前往**文件 → 模型库**,您会有许多类别的模型可供选择。 + +NetLogo模型库 + +> 由Dmitry Soshnikov提供的模型库截图 + +您可以打开其中一个模型,例如**生物学 → 群聚**。 + +### 主要原则 + +打开模型后,您将进入NetLogo的主屏幕。这里是一个示例模型,描述了在有限资源(草)下狼和羊的种群。 + +![NetLogo主屏幕](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.zh.png) + +> 截图由Dmitry Soshnikov提供 + +在此屏幕上,您可以看到: + +* **界面**部分包含: + - 所有智能体生活的主要场地 + - 不同的控件:按钮、滑块等 + - 您可以用来显示仿真参数的图表 +* **代码**选项卡包含编辑器,您可以在其中输入NetLogo程序 + +在大多数情况下,界面会有一个**设置**按钮,用于初始化仿真状态,以及一个**开始**按钮,用于启动执行。这些由代码中相应的处理程序处理,其样子如下: + +``` +to go [ +... +] +``` + +NetLogo的世界由以下对象组成: + +* **智能体**(海龟)可以在场地上移动并做一些事情。您可以使用`ask turtles [...]` syntax, and the code in brackets is executed by all agents in *turtle mode*. +* **Patches** are square areas of the field, on which agents live. You can refer to all agents on the same patch, or you can change patch colors and some other properties. You can also `ask patches`来命令智能体执行某些操作。 +* **观察者**是一个独特的智能体,控制着世界。所有按钮处理程序都是在*观察者模式*下执行的。 + +> ✅ 多智能体环境的美妙之处在于,运行在海龟模式或补丁模式的代码是由所有智能体并行同时执行的。因此,通过编写少量代码并编程单个智能体的行为,您可以创建整个仿真系统的复杂行为。 + +### 群聚 + +作为多智能体行为的一个例子,让我们考虑**[群聚](https://en.wikipedia.org/wiki/Flocking_(behavior))**。群聚是一种复杂的模式,与鸟群飞行的方式非常相似。观察它们飞行时,您可能会觉得它们遵循某种集体算法,或者它们具备某种形式的*集体智能*。然而,这种复杂行为的产生是因为每个个体智能体(在这种情况下是*鸟*)仅观察与其短距离内的其他智能体,并遵循三条简单规则: + +* **对齐** - 它朝着邻近智能体的平均航向调整方向 +* **凝聚** - 它试图朝着邻居的平均位置调整方向(*长距离吸引*) +* **分离** - 当靠近其他鸟时,它试图远离(*短距离排斥*) + +您可以运行群聚示例并观察其行为。您还可以调整参数,例如*分离程度*或*视距*,这定义了每只鸟可以看到的距离。请注意,如果您将视距减少到0,所有鸟将变得失明,群聚将停止。如果您将分离减少到0,所有鸟将聚集成一条直线。 + +> ✅ 切换到**代码**选项卡,查看群聚的三条规则(对齐、凝聚和分离)在代码中是如何实现的。注意我们仅引用在视野中的那些智能体。 + +### 其他可见模型 + +还有一些有趣的模型供您实验: + +* **艺术 → 烟花**展示了烟花如何被视为单个火流的集体行为 +* **社会科学 → 交通基础**和**社会科学 → 交通网格**展示了城市交通在1D和2D网格中有或没有交通信号灯的模型。仿真中的每辆车遵循以下规则: + - 如果前方空间为空 - 加速(直到达到某一最大速度) + - 如果看到前方有障碍物 - 刹车(您可以调整司机的视距) +* **社会科学 → 聚会**展示了人们在鸡尾酒会上如何聚集。您可以找到导致团体幸福感最快增加的参数组合。 + +从这些例子中可以看出,多智能体模拟可以非常有助于理解由遵循相同或相似逻辑的个体组成的复杂系统的行为。它也可以用于控制虚拟智能体,例如计算机游戏中的[NPC](https://en.wikipedia.org/wiki/NPC)或3D动画世界中的智能体。 + +## 深思型智能体 + +上述描述的智能体非常简单,使用某种算法对环境的变化做出反应。因此,它们是**反应型智能体**。然而,有时智能体可以推理和规划其行动,这种情况下它们被称为**深思型**。 + +一个典型的例子是一个个人智能体,它接收到人类的指令来预定度假旅行。假设有许多生活在互联网上的智能体可以帮助它。它应该联系其他智能体以查看哪些航班可用,哪些日期的酒店价格是多少,并尝试协商最佳价格。当度假计划完成并得到所有者确认后,它可以继续进行预定。 + +为了做到这一点,智能体需要**通信**。为了成功通信,它们需要: + +* 一些**标准语言来交换知识**,例如[知识交换格式](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format)(KIF)和[知识查询与操作语言](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language)(KQML)。这些语言是基于[言语行为理论](https://en.wikipedia.org/wiki/Speech_act)设计的。 +* 这些语言还应该包括一些**谈判协议**,基于不同的**拍卖类型**。 +* 一个**共同本体**,以便它们引用相同的概念并了解其语义 +* 一种**发现**不同智能体可以做什么的方法,这也基于某种本体 + +深思型智能体比反应型智能体复杂得多,因为它们不仅对环境的变化做出反应,还应该能够*主动*采取行动。深思型智能体的一种提议架构是所谓的信念-欲望-意图(BDI)智能体: + +* **信念**形成关于智能体环境的一组知识。它可以结构化为知识库或一组规则,智能体可以将其应用于环境中的特定情况。 +* **欲望**定义了智能体想要做的事情,即它的目标。例如,上述个人助手智能体的目标是预定旅行,而酒店智能体的目标是最大化利润。 +* **意图**是智能体计划实现其目标的具体行动。行动通常会改变环境并导致与其他智能体的通信。 + +有一些可用于构建多智能体系统的平台,例如[JADE](https://jade.tilab.com/)。[这篇论文](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf)包含对多智能体平台的综述,以及多智能体系统及其不同使用场景的简要历史。 + +## 结论 + +多智能体系统可以采取非常不同的形式,并用于许多不同的应用。它们都倾向于关注单个智能体的简单行为,并通过**协同效应**实现整体系统的更复杂行为。 + +## 🚀 挑战 + +将这节课带入现实世界,尝试构思一个可以解决问题的多智能体系统。例如,优化校车路线的多智能体系统需要做些什么?它在面包店中如何工作? + +## [课后测验](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## 复习与自学 + +回顾这种类型系统在行业中的使用。选择一个领域,例如制造业或视频游戏行业,发现多智能体系统如何用于解决独特问题。 + +## [NetLogo作业](assignment.md) + +**免责声明**: +本文件是使用基于机器的人工智能翻译服务进行翻译的。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业的人类翻译。我们对因使用此翻译而产生的任何误解或误释不承担任何责任。 \ No newline at end of file diff --git a/translations/zh/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/zh/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..8942c762 --- /dev/null +++ b/translations/zh/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,8 @@ +# NetLogo 作业 + +选择 NetLogo 库中的一个模型,并尽可能地用它来模拟现实生活中的情况。一个好的例子是调整“Alternative Visualizations”文件夹中的 Virus 模型,以展示它如何用于模拟 COVID-19 的传播。你能构建一个模仿现实生活中病毒传播的模型吗? + +通过保存副本并制作一个视频演示来展示你的工作,解释模型如何与现实世界的情况相连接。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或错误解释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/7-Ethics/README.md b/translations/zh/lessons/7-Ethics/README.md new file mode 100644 index 00000000..bd0466b0 --- /dev/null +++ b/translations/zh/lessons/7-Ethics/README.md @@ -0,0 +1,43 @@ +# 伦理与负责任的人工智能 + +您几乎完成了本课程,我希望到现在为止,您已经清楚地认识到人工智能是基于一系列正式的数学方法,这些方法使我们能够在数据中找到关系,并训练模型以复制人类行为的某些方面。在历史的这一时刻,我们认为人工智能是一个非常强大的工具,可以从数据中提取模式,并将这些模式应用于解决新问题。 + +## [课前小测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +然而,在科幻作品中,我们经常看到人工智能对人类构成威胁的故事。通常这些故事围绕某种人工智能反叛展开,当人工智能决定与人类对抗时。这暗示了人工智能具有某种情感或能够做出开发者未曾预见的决策。 + +我们在本课程中学习到的人工智能不过是大型矩阵运算。它是一个非常强大的工具,帮助我们解决问题,正如其他任何强大的工具一样——它可以用于善,也可以用于恶。重要的是,它可能会被*误用*。 + +## 负责任的人工智能原则 + +为了避免这种意外或故意的人工智能误用,微软提出了重要的[负责任的人工智能原则](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste)。以下概念支撑着这些原则: + +* **公平性**与*模型偏见*的重要问题相关,这种偏见可能是由于使用了有偏见的数据进行训练。例如,当我们尝试预测一个人获得软件开发者职位的概率时,模型可能会对男性给予更高的偏好——仅仅因为训练数据集可能偏向于男性受众。我们需要仔细平衡训练数据,调查模型以避免偏见,并确保模型考虑到更相关的特征。 +* **可靠性和安全性**。由于其本质,人工智能模型可能会犯错误。神经网络返回概率,我们在做决策时需要考虑这一点。每个模型都有一定的精确度和召回率,我们需要理解这一点,以防止错误建议可能造成的伤害。 +* **隐私和安全**在某种程度上具有人工智能特有的含义。例如,当我们使用某些数据来训练模型时,这些数据在某种程度上会“融入”模型中。一方面,这增加了安全性和隐私性,另一方面,我们需要记住模型是基于哪些数据进行训练的。 +* **包容性**意味着我们并不是在构建替代人类的人工智能,而是为了增强人类,使我们的工作更具创造性。这也与公平性有关,因为在处理代表性不足的社区时,我们收集的大多数数据集可能会有偏见,我们需要确保这些社区被包含并得到人工智能的正确处理。 +* **透明性**。这包括确保我们始终明确使用的人工智能。此外,在可能的情况下,我们希望使用*可解释*的人工智能系统。 +* **问责制**。当人工智能模型做出某些决策时,谁对这些决策负责并不总是明确的。我们需要确保了解人工智能决策的责任所在。在大多数情况下,我们希望将人类纳入重要决策的循环中,以便实际的人被追究责任。 + +## 负责任的人工智能工具 + +微软开发了[负责任的人工智能工具箱](https://github.com/microsoft/responsible-ai-toolbox),其中包含一套工具: + +* 可解释性仪表板 (InterpretML) +* 公平性仪表板 (FairLearn) +* 错误分析仪表板 +* 负责任的人工智能仪表板,包括 + + - EconML - 关注假设问题的因果分析工具 + - DiCE - 反事实分析工具,让您看到哪些特征需要更改以影响模型的决策 + +有关人工智能伦理的更多信息,请访问[本课程](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste),该课程包括作业。 + +## 复习与自学 + +参加这个[学习路径](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste),以了解更多关于负责任的人工智能的信息。 + +## [课后小测验](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**免责声明**: +本文件使用机器翻译的人工智能翻译服务进行翻译。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用此翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/README.md b/translations/zh/lessons/README.md new file mode 100644 index 00000000..58fd1bdf --- /dev/null +++ b/translations/zh/lessons/README.md @@ -0,0 +1,8 @@ +# 概述 + +![概述草图](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.zh.png) + +> 草图由 [Tomomi Imura](https://twitter.com/girlie_mac) 提供 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。虽然我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/X-Extras/X1-MultiModal/README.md b/translations/zh/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..3d41e1f6 --- /dev/null +++ b/translations/zh/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,79 @@ +# 多模态网络 + +在变换器模型成功解决自然语言处理任务后,相同或类似的架构已被应用于计算机视觉任务。人们对构建能够*结合*视觉和自然语言能力的模型越来越感兴趣。OpenAI 就是这样的尝试之一,名为 CLIP 和 DALL.E。 + +## 对比图像预训练 (CLIP) + +CLIP 的主要思想是能够将文本提示与图像进行比较,并确定图像与提示的对应程度。 + +![CLIP 架构](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.zh.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.zh.png) + +> *图片来自 [这篇博客文章](https://openai.com/blog/clip/)* + +**基于文本的图像搜索** + +我们也可以做相反的事情。如果我们有一组图像,我们可以将这组图像传递给模型,以及一个文本提示——这将为我们提供与给定提示最相似的图像。 + +## ✍️ 示例: [使用 CLIP 进行图像分类和图像搜索](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +打开 [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) 笔记本以查看 CLIP 的实际应用。 + +## 使用 VQGAN+CLIP 进行图像生成 + +CLIP 还可以用于从文本提示中**生成图像**。为此,我们需要一个**生成器模型**,能够根据某些向量输入生成图像。其中一个这样的模型被称为 [VQGAN](https://compvis.github.io/taming-transformers/)(向量量化 GAN)。 + +VQGAN 与普通 [GAN](../../4-ComputerVision/10-GANs/README.md) 的主要区别如下: +* 使用自回归变换器架构生成组成图像的上下文丰富的视觉部分序列。这些视觉部分又通过 [CNN](../../4-ComputerVision/07-ConvNets/README.md) 学习得到。 +* 使用子图像判别器,检测图像的部分是否为“真实”或“虚假”(与传统 GAN 的“全有或全无”方法不同)。 + +在 [Taming Transformers](https://compvis.github.io/taming-transformers/) 网站上了解更多关于 VQGAN 的信息。 + +VQGAN 与传统 GAN 之间的重要区别之一是,后者可以从任何输入向量生成不错的图像,而 VQGAN 生成的图像可能不连贯。因此,我们需要进一步指导图像创建过程,这可以通过 CLIP 来实现。 + +![VQGAN+CLIP 架构](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.zh.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.zh.png) | ![Pixray 生成的图片](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.zh.png) | ![Pixray 生成的图片](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.zh.png) +----|----|---- +根据提示 *一张年轻男性文学教师手持书籍的水彩特写肖像* 生成的图片 | 根据提示 *一张年轻女性计算机科学教师手持电脑的油画特写肖像* 生成的图片 | 根据提示 *一张老年男性数学教师在黑板前的油画特写肖像* 生成的图片 + +> 图片来自 **人工教师** 系列,由 [Dmitry Soshnikov](http://soshnikov.com) 提供 + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E 是一种经过训练的 GPT-3 版本,旨在根据提示生成图像。它的训练参数达到了 120 亿。 + +与 CLIP 不同,DALL-E 将文本和图像作为一系列令牌的单一流输入。因此,从多个提示中,您可以基于文本生成图像。 + +### [DALL-E 2](https://openai.com/dall-e-2) +DALL-E 1 和 DALL-E 2 之间的主要区别在于,后者生成的图像和艺术作品更加真实。 + +DALL-E 生成的图像示例: +![Pixray 生成的图片](../../../../../translated_images/DALL·E%202023-06-20%2015.56.56%20-%20a%20closeup%20watercolor%20portrait%20of%20young%20male%20teacher%20of%20literature%20with%20a%20book.6c235e8271d9ed10ce985d86aeb241a58518958647973af136912116b9518fce.zh.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.zh.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.zh.png) +----|----|---- +根据提示 *一张年轻男性文学教师手持书籍的水彩特写肖像* 生成的图片 | 根据提示 *一张年轻女性计算机科学教师手持电脑的油画特写肖像* 生成的图片 | 根据提示 *一张老年男性数学教师在黑板前的油画特写肖像* 生成的图片 + +## 参考文献 + +* VQGAN 论文: [高分辨率图像合成的变换器驯化](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP 论文: [从自然语言监督学习可转移的视觉模型](https://arxiv.org/pdf/2103.00020.pdf) + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用此翻译而导致的任何误解或误释不承担任何责任。 \ No newline at end of file diff --git a/translations/zh/lessons/sketchnotes/LICENSE.md b/translations/zh/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..18079afd --- /dev/null +++ b/translations/zh/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,182 @@ +# 署名-相同方式共享 4.0 国际版 + +======================================================================= + +创意共享公司(“创意共享”)并非法律事务所,且不提供法律服务或法律建议。分发创意共享公共许可证并不构成律师与客户或其他关系。创意共享以“按原样”基础提供其许可证及相关信息。创意共享对其许可证、根据其条款和条件许可的任何材料或任何相关信息不提供任何保证。创意共享在法律允许的最大范围内,否认因使用其许可证而产生的所有损害赔偿责任。 + +使用创意共享公共许可证 + +创意共享公共许可证提供了一套标准的条款和条件,供创作者和其他权利持有人用以分享原创著作和其他受版权保护的材料,以及以下公共许可证中规定的某些其他权利。以下考虑事项仅供参考,并不详尽,也不构成我们许可证的一部分。 + +- 许可方的考虑事项:我们的公共许可证旨在供那些被授权向公众许可使用受版权和其他某些权利限制的材料的人使用。我们的许可证是不可撤销的。许可方应在应用许可证之前阅读并理解所选择许可证的条款和条件。许可方还应在应用我们的许可证之前确保所有必要的权利,以便公众能够按预期重用材料。许可方应清楚标记任何不受许可证约束的材料。这包括其他 CC 许可的材料,或根据版权的例外或限制使用的材料。更多许可方的考虑事项: +wiki.creativecommons.org/Considerations_for_licensors + +- 公众的考虑事项:通过使用我们的公共许可证,许可方授予公众根据规定的条款和条件使用被许可材料的权限。如果由于任何原因不需要许可方的许可——例如,由于适用的版权例外或限制——那么该使用不受许可证的约束。我们的许可证仅授予许可方有权授予的版权及其他某些权利下的权限。使用被许可材料仍可能因其他原因受到限制,包括其他人对该材料拥有版权或其他权利。许可方可以提出特别请求,例如要求标记或描述所有更改。尽管我们的许可证不要求,您被鼓励在合理的情况下尊重这些请求。更多公众的考虑事项: +wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +创意共享署名-相同方式共享 4.0 国际公共许可证 + +通过行使被许可权(定义见下文),您接受并同意受此创意共享署名-相同方式共享 4.0 国际公共许可证(“公共许可证”)的条款和条件的约束。在一定程度上,如果本公共许可证可被解释为合同,则您被授予被许可权是基于您接受这些条款和条件,而许可方则基于其因根据这些条款和条件提供被许可材料而获得的利益授予您该权利。 + +## 第 1 节 -- 定义 + +a. 改编材料是指受版权和类似权利保护的材料,该材料源自或基于被许可材料,并且在其中,被许可材料以需要根据许可方持有的版权和类似权利获得许可的方式进行了翻译、修改、排列、转变或其他修改。就本公共许可证而言,如果被许可材料是音乐作品、表演或音频录音,则改编材料总是产生于被许可材料与动态图像的同步关系中。 + +b. 适配者许可证是指您根据本公共许可证的条款和条件,应用于您对改编材料的贡献的版权和类似权利的许可证。 + +c. BY-SA 兼容许可证是指在 creativecommons.org/compatiblelicenses 列出的、经创意共享批准的本公共许可证实质等效的许可证。 + +d. 版权和类似权利是指版权和/或与版权密切相关的类似权利,包括但不限于表演、广播、音频录音和特别数据库权利,而不论这些权利如何标记或分类。就本公共许可证而言,第 2(b)(1)-(2) 节中规定的权利不属于版权和类似权利。 + +e. 有效技术措施是指在缺乏适当授权的情况下,根据 1996 年 12 月 20 日通过的《WIPO 版权条约》第 11 条所规定的义务和/或类似国际协议,可能无法规避的措施。 + +f. 例外和限制是指适用于您使用被许可材料的合理使用、公平交易和/或任何其他版权和类似权利的例外或限制。 + +g. 许可证要素是指创意共享公共许可证名称中列出的许可证属性。本公共许可证的许可证要素是署名和相同方式共享。 + +h. 被许可材料是指许可方应用本公共许可证的艺术或文学作品、数据库或其他材料。 + +i. 被许可权是指根据本公共许可证的条款和条件授予您的权利,这些权利仅限于适用于您对被许可材料使用的所有版权和类似权利,并且许可方有权许可。 + +j. 许可方是指根据本公共许可证授予权利的个人或实体。 + +k. 分享是指通过任何需要根据被许可权获得许可的方式或过程向公众提供材料,例如复制、公开展示、公开表演、分发、传播、交流或进口,并使材料对公众可用,包括使公众可以在他们选择的时间和地点访问材料的方式。 + +l. 特别数据库权利是指根据1996年3月11日欧洲议会和理事会第96/9/EC号指令有关数据库法律保护的规定而产生的除版权以外的权利,经过修订和/或替代,以及世界任何地方的其他实质等效权利。 + +m. 您是指在本公共许可证下行使被许可权的个人或实体。您的含义相应。 + +## 第 2 节 -- 范围 + +a. 许可证授予。 + +1. 根据本公共许可证的条款和条件,许可方特此授予您全球范围内的、免版税的、不可再许可的、非独占的、不可撤销的许可证,以行使被许可权于被许可材料: + + a. 复制和分享被许可材料,全部或部分;以及 + + b. 制作、复制和分享改编材料。 + +2. 例外和限制。为避免疑问,当例外和限制适用于您的使用时,本公共许可证不适用,您无需遵守其条款和条件。 + +3. 期限。本公共许可证的期限在第 6(a) 节中规定。 + +4. 媒体和格式;允许的技术修改。许可方授权您在所有现在已知或将来创建的媒体和格式中行使被许可权,并进行必要的技术修改。许可方放弃和/或同意不主张禁止您进行行使被许可权所需的技术修改的任何权利或权威,包括为绕过有效技术措施而进行的技术修改。就本公共许可证而言,仅仅根据本第 2(a)(4) 节授权的修改并不会产生改编材料。 + +5. 下游接收者。 + + a. 来自许可方的要约 -- 被许可材料。每个被许可材料的接收者自动收到来自许可方的要约,以根据本公共许可证的条款和条件行使被许可权。 + + b. 来自许可方的额外要约 -- 改编材料。每个来自您的改编材料的接收者自动收到来自许可方的要约,以在您应用的适配者许可证的条件下行使改编材料中的被许可权。 + + c. 无下游限制。如果这样做会限制任何被许可材料接收者行使被许可权,您不得对被许可材料提供或施加任何额外或不同的条款或条件,或对其应用任何有效技术措施。 + +6. 无认可。本公共许可证中的任何内容均不构成或不得解释为许可您声称或暗示您与许可方或其他指定接受署名的人员相关,或您的被许可材料的使用与许可方或其他指定接受署名的人员相关,或由许可方或其他指定接受署名的人员赞助、认可或授予官方地位。 + +b. 其他权利。 + +1. 道德权利,例如完整权,不在本公共许可证下许可,也不包括宣传权、隐私权和/或其他类似的人格权;然而,在可能的范围内,许可方放弃和/或同意不主张许可方持有的任何此类权利,以在必要的有限范围内允许您行使被许可权,但不包括其他情况。 + +2. 专利和商标权不在本公共许可证下许可。 + +3. 在可能的范围内,许可方放弃从您行使被许可权中收取版税的任何权利,无论是直接还是通过任何自愿或可放弃的法定或强制许可计划。在所有其他情况下,许可方明确保留收取此类版税的任何权利。 + +## 第 3 节 -- 许可证条件 + +您行使被许可权明确受以下条件的约束。 + +a. 署名。 + +1. 如果您分享被许可材料(包括修改后的形式),您必须: + + a. 保留许可方随被许可材料提供的以下内容: + + i. 被许可材料创作者及任何其他指定接受署名者的识别,以许可方要求的任何合理方式(包括如有指定可使用化名); + + ii. 版权声明; + + iii. 提及本公共许可证的通知; + + iv. 提及免责声明的通知; + + v. 在合理可行的范围内,提供指向被许可材料的 URI 或超链接; + + b. 表示您是否修改了被许可材料,并保留任何先前修改的指示;以及 + + c. 表示被许可材料是根据本公共许可证许可的,并包括本公共许可证的文本或 URI 或超链接。 + +2. 您可以根据您分享被许可材料的媒介、方式和上下文,以任何合理的方式满足第 3(a)(1) 节中的条件。例如,通过提供指向包含所需信息的资源的 URI 或超链接,可能是合理的满足条件的方式。 + +3. 如果许可方要求,您必须在合理可行的范围内移除第 3(a)(1)(A) 节所要求的任何信息。 + +b. 相同方式共享。 + +除了第 3(a) 节中的条件外,如果您分享您制作的改编材料,以下条件也适用。 + +1. 您应用的适配者许可证必须是具有相同许可证要素的创意共享许可证,或本版本或更高版本,或 BY-SA 兼容许可证。 + +2. 您必须包括您应用的适配者许可证的文本或 URI 或超链接。您可以根据您分享改编材料的媒介、方式和上下文,以任何合理的方式满足此条件。 + +3. 您不得对改编材料提供或施加任何额外或不同的条款或条件,或对其应用任何有效技术措施,这将限制根据您应用的适配者许可证授予的权利的行使。 + +## 第 4 节 -- 特别数据库权利 + +在被许可权包括适用于您使用被许可材料的特别数据库权利的情况下: + +a. 为避免疑问,第 2(a)(1) 节授予您提取、重用、复制和分享数据库内容的全部或实质部分的权利; + +b. 如果您将数据库的全部或实质部分内容包含在您拥有特别数据库权利的数据库中,则您拥有特别数据库权利的数据库(但不包括其单独内容)即为改编材料,包括在第 3(b) 节的目的;以及 + +c. 如果您分享数据库的全部或实质部分内容,您必须遵守第 3(a) 节中的条件。 + +为避免疑问,本第 4 节补充并不替代您在本公共许可证下的义务,其中被许可权包括其他版权和类似权利。 + +## 第 5 节 -- 免责声明和责任限制 + +a. 除非许可方另有单独承诺,许可方在可能的范围内以“按原样”和“可用”形式提供被许可材料,并且不对被许可材料的任何种类做出任何声明或保证,无论是明示的、暗示的、法定的还是其他的。这包括但不限于所有权、适销性、特定用途适用性、不侵权、缺陷的缺失或其他缺陷、准确性或错误的存在或缺失,无论是否已知或可发现。在不允许完全或部分免责声明的情况下,本免责声明可能不适用于您。 + +b. 在可能的范围内,许可方在任何法律理论下(包括但不限于过失)或以其他方式对您不承担任何直接、特殊、间接、附带、后果性、惩罚性、示范性或其他损失、费用、支出或因本公共许可证或使用被许可材料而产生的损害,即使许可方已被告知此类损失、费用、支出或损害的可能性。在不允许完全或部分责任限制的情况下,本限制可能不适用于您。 + +c. 上述免责声明和责任限制应以尽可能接近绝对免责声明和放弃所有责任的方式进行解释。 + +## 第 6 节 -- 期限和终止 + +a. 本公共许可证适用于此处许可的版权和类似权利的期限。然而,如果您未能遵守本公共许可证,则您在本公共许可证下的权利将自动终止。 + +b. 当您的使用被许可材料的权利根据第 6(a) 节终止时,它将自动恢复: + +1. 在违反被纠正之日自动恢复,前提是它在您发现违规后的 30 天内得到纠正;或者 + +2. 在许可方明确恢复的情况下。 + +为避免疑问,本第 6(b) 节不影响许可方可能拥有的对您违反本公共许可证寻求救济的任何权利。 + +c. 为避免疑问,许可方也可以在任何时间以单独的条款或条件提供被许可材料,或停止分发被许可材料;然而,这样做不会终止本公共许可证。 + +d. 第 1、5、6、7 和 8 节在本公共许可证终止后仍然有效。 + +## 第 7 节 -- 其他条款和条件 + +a. 除非明确同意,许可方不受您所传达的任何附加或不同条款或条件的约束。 + +b. 关于被许可材料的任何安排、理解或协议,除非在此明确说明,均与本公共许可证的条款和条件无关,且是独立的。 + +## 第 8 节 -- 解释 + +a. 为避免疑问,本公共许可证不应被解释为减少、限制、约束或施加条件于任何可以在没有本公共许可证许可的情况下合法进行的对被许可材料的使用。 + +b. 在可能的范围内,如果本公共许可证的任何条款被认为不可执行,则应自动修改至最低限度,以使其可执行。如果该条款无法修改,则应从本公共许可证中剔除,而不影响剩余条款和条件的可执行性。 + +c. 本公共许可证的任何条款或条件均不得被放弃,且未经许可方明确同意,不得同意任何不遵守。 + +d. 本公共许可证中的任何内容均不构成或不得解释为对适用于许可方或您的任何特权和豁免的限制或放弃,包括来自任何司法管辖区或权威的法律程序。 + +======================================================================= + +创意共享并不是其公共许可证的当事方。尽管如此,创意共享可以选择将其公共许可证应用于其发布的材料,并在这些情况下被视为“许可方”。创意共享公共许可证的文本已根据 CC0 公共领域献身于公共领域。除非出于指示材料是根据创意共享公共许可证共享的有限目的,或根据创意共享在 creativecommons.org/policies 上发布的政策另行允许的情况,创意共享不授权使用“创意共享”商标或任何其他创意共享的商标或标志,除非事先获得书面同意,包括但不限于与对其任何公共许可证或任何其他安排、理解或协议的未经授权修改相关的情况。为避免疑问,本段落不构成公共许可证的一部分。 + +可以通过 creativecommons.org 联系创意共享。 + +**免责声明**: +本文件使用基于机器的人工智能翻译服务进行翻译。尽管我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用本翻译而导致的任何误解或误释不承担责任。 \ No newline at end of file diff --git a/translations/zh/lessons/sketchnotes/README.md b/translations/zh/lessons/sketchnotes/README.md new file mode 100644 index 00000000..32338d63 --- /dev/null +++ b/translations/zh/lessons/sketchnotes/README.md @@ -0,0 +1,8 @@ +所有课程的速写笔记可以在这里下载。 + +🎨 创建者: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/) + +**免责声明**: +本文件是使用基于机器的人工智能翻译服务翻译的。虽然我们努力追求准确性,但请注意,自动翻译可能包含错误或不准确之处。原始文件的母语版本应被视为权威来源。对于关键信息,建议进行专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。 \ No newline at end of file