Гарвард CS50: Введение в Искусственный Интеллект с Python 2020

Feb 10, 2021 21:08

image Click to view



Этим видео мы начинаем цикл лекций "CS50: введение в искусственный интеллект с Python".

Этот курс начинается там, где заканчивается основной курс CS50 и он посвящен концепциям и алгоритмам, находящимся в основе современного ИИ.

Мы затронем такие темы как: поиск оптимальных решений, оптимизация, анализ данных, нейронные сети, обработка естественного языка и многое другое.

image Click to view



Это легендарный Гарвардский курс CS50 на русском языке: основы искусственного интеллекта с Python.

Этот курс познакомит нас с концепциями и алгоритмами, лежащими в основе современного искусственного интеллекта, мы погрузимся в идеи, которые лежат в основе таких технологий как игровые движки, распознавание рукописного ввода и машинный перевод.

В первой лекции посвященной задачам поиска, мы ознакомимся с такими алгоритмами как: Поиск в ширину, Поиск в глубину, Жадный алгоритм поиска по первому лучшему, Минимакс, A * (A star) и посмотрим на их практическое применение к решению задач нахождения выхода из лабиринта или игр с нулевой суммой, таких например, как крестики-нолики и все это на примере популярного языка программирования - Python.

Тайм-коды:
0:24​ в уроке идеи, техники и алгоритмы, которые лежат в основе Искусственного Интеллекта (Artificial Intelligence)
0:30​ Небольшое описание курса
3:13​ алгоритм поиска. Что компьютеру делать в определенной ситуации. Проблемы различных типов и форматов
3:34​ примеры: пятнашки, лабиринт, гугл карты
4:41​ что из себя представляет задача поиска. Из чего состоит её алгоритм обучения
4:49​ Терминология: агент (agent), состояние (state), начальное состояние (initial state),
6:16​ действия (actions),
7:28​ модель перехода состояний (transition model),
9:34​ пространство состояний (state space),
10:04​ представление в виде Графа
10:56​ проверка цели (goal test),
11:51​ стоимость пути (path cost),
13:41​ задача поиска (search problems),
14:18​ цель-решение (solution),
14:28​ оптимальное решение (optimal solution),
14:46​ представление набора данных, связанных с задачей:
15:07​ структура данных Узел (node),
16:34​ Подход, с которого надо начать решать задачу. фронтир (frontier). Все варианты решения
18:21​ проверка цели
18:37​ развёртывание узла - оценка всех его соседей
19:29​ применение в задаче поиска
22:06​ возможные проблемы. Зацикливание
24:01​ улучшенный способ решить задачу поиска
25:58​ Структура данных Стэк (Stack) для добавления и удаления элементов last-in first-out
26:22​ применение стэка к задаче
27:51​ Алгоритм поиска Depth-First Search Поиск в глубину
28:37​ Алгоритм поиска Breadth-First Search Поиск в ширину
29:04​ Структура данных Очередь (Queue) first-in first-out
29:12​ применение очереди к задаче
30:36​ эти 2 алгоритма поиска на практике. Лабиринт
36:22​ код
44:00​ работа кода
44:37​ пример 2 maze2
48:31​ пример 3 maze3
51:58​ выбор при нескольких возможных вариантах
53:13​ 2 типа поисковых алгоритмов. Это были неинформированные поиски
53:54​ информированный поиск (informed search):
54:29​ Алгоритм Greedy Best-First Search Жадный поиск по первому лучшему совпадению
56:36​ с помощью эвристической функции Манхэттанское расстояние
57:40​ на практике
1:01:39​ хорошая эвристика
1:03:43​ оценка пути (расстояния) до цели
1:04:31​ улучшение
1:05:23​ Алгоритм A* Search Астар. Учитывает 2 вида информации
1:09:30​ находит оптимальный путь, при 2 условиях
1:11:51​ Алгоритмы с 2 агентами. Состязательный поиск. Adversarial Search. Крестики нолики
1:14:11​ Алгоритм Minimax Минимакс
1:17:15​ описание кода Game
1:23:08​ вычисление алгоритма минимакс
1:23:42​ рекурсия в минимакс
1:28:20​ диаграмма дерево минимакс
1:30:39​ псевдо-код
1:36:40​ оптимизация
1:39:57​ Алгоритм Alpha-Beta Pruning Альфа-Бета обрезка
1:45:25​ Алгоритм Depth-Limited Minimax минимакс с ограничением глубины. Для этого добавляется функция оценки
1:48:18​ на следующем уроке о Знаниях, учитываемых ИИ

image Click to view



В этой лекции: Законы ДеМоргана, Логика предикатов, Пропозициональная логика, Логика первого порядка, Импликация, Конъюнкция, Дизъюнкция, Эквиваленция, Доказательство от противного, Инженерия знаний, Кванторы всеобщности, Кванторы существования и много практических примеров, где мы можем применить работу искусственного интеллекта с знаниями.

Тайм коды:
0:48​ Knowledge Знания. Способность делать выводы на их основании
4:25​ sentence высказывания. Язык представления знаний
4:51​ Propositional Logic Пропозициональная логика. Логика Высказываний, основанная на утверждениях о мире
5:03​ proposition symbols пропозициональные переменные (какой-либо факт о мире)
5:51​ logical connectives логические союзы
6:38​ Таблица истинности. Not (Не)
7:56​ Конъюнкция (логическое и) And
9:33​ Дизъюнкция (логическое или) Or
11:09​ Импликация (подразумевает, приводит) Implication
13:13​ Эквиваленция (условие равносильно в обе стороны, двухусловие) Biconditional
14:51​ model модель
16:15​ knowledge base база знаний. Представление знаний
17:05​ entailment следствие
18:26​ inference умозаключение
21:48​ механизмы выводов
22:45​ Model Checking Проверка Модели
27:16​ код пример
34:28​ алгоритм проверки модели
40:07​ Knowledge Engineering Инженерия Знаний
40:59​ пример Clue
45:31​ код clue.py
54:04​ пример Logic Puzzles
54:47​ комбинированные переменные
56:58​ код puzzle.py
1:01:39​ пример Mastermind
1:03:28​ асимптотика полного перебора в проверке модели
1:04:32​ Inference Rules Правила Вывода:
1:05:12​ modus ponens применение импликации
1:06:53​ and elimination устранение конъюнкции
1:07:47​ double negative elimination устранение двойного отрицания
1:08:36​ implication elimination устранение импликации
1:10:18​ biconditional elimination устранение эквиваленции
1:11:14​ De Morgan's law Закон ДеМоргана
1:13:42​ distributive property распределительный закон, распределительное свойство
1:14:53​ обобщение выводов
1:15:57​ Theorem Proving Доказательство Теоремы, как разновидность задачи поиска
1:17:43​ Правило резолюции, правило вывода
1:18:06​ контрарные литералы (литералы, которые дополняют друг друга)
1:19:19​ clause клауза. Дизъюнкция литералов
1:23:03​ Conjunctive Normal Form (CNF) Конъюнктивная Нормальная Форма (это конъюнкции дизъюнкций)
1:23:54​ conversion to CNF преобразование любого логического выражения к выражению, содержащему только логические и и или
1:27:55​ inference by resolution вывод на основе правила резолюции. Новый дизъюнкт. Резольвента
1:29:28​ пустая клауза = ложь
1:30:34​ rule of contraries Доказательство От противного
1:34:15​ пример выводов на основе правила резолюции
1:38:29​ First-Order Logic Логика Первого Порядка. Логика Предикатов. Предикатные символы Predicate Symbol
1:42:50​ дополнительные 2 операции (кванторы):
1:43:01​ 1) universal quantification Квантор Всеобщности
1:44:20​ 2) existential quantification Квантор Существования
1:47:18​ на следующей лекции понятие неопределённости

image Click to view



Добро пожаловать вновь на введение в искусственный интеллект с Python.

В прошлый раз мы рассматривали концепции и методики представления знаний, эта лекция посвящена подходам и методикам, благодаря которым ИИ может принимать решения в условии неопределенности.

Мы поговорим о таких вещах как: условная вероятность, правило Байеса, байесовская сеть, цепи Маркова, и о многом другом.

image Click to view



Добро пожаловать вновь на введение в искусственный интеллект с Python.

В прошлый раз мы говорили о таких вещах как: условная вероятность, правило Байеса, байесовская сеть, цепи Маркова, и о многом другом.

На этот раз мы рассмотрим основные принципы оптимизации задач, рассмотрим графы, алгоритмы локального поиска, задачи удовлетворения ограничений, линейные программы, поиск с возвратом (backtracking search), а также многое другое.

Тайм-коды:
0:55​ оптимизация - выбор наилучшего варианта из набора возможных вариантов
1:25​ алгоритм Локальный поиск (local search) те случаи, когда выяснение того, что именно является решением и как именно выглядит цель - суть задачи
2:34​ пример на практике: дома и больницы
4:07​ задачи поиска в пространстве состояний (state-space landscape). Целевая функция. Функция стоимости
7:26​ алгоритм Восхождение к вершине (hill climbing)
14:41​ ограничение этого алгоритма - не всегда результат - самое оптимальное решение
17:51​ разновидности hill climbing: 1) Наискорейшее восхождение к вершине
18:34​ 2) Стохастическое восхождение к вершине
19:11​ 3) Восхождение к вершине по первому лучшему совпадению
19:39​ случайное возобновление
20:23​ 4) Локальный лучевой поиск
20:57​ код наискорейшее восхождение к вершине hospitals.py
29:25​ алгоритм Имитация отжига (simulated annealing)
37:04​ варианты использования. Задача коммивояжера
40:23​ Линейное программирование (linear programming)
43:11​ пример: минимизация затрат при том, что есть ограничения, надо наколбасить 90 единиц продукции
46:48​ есть ряд алгоритмов для решения таких типов задач (линейные неравенства с ограничениями). Популярные алгоритмы: Симплекс метод (simplex), Метод внутренней точки (interior-point)
47:26​ код production.py
50:58​ Задачи удовлетворения ограничений (constraint satisfaction problem) CSP
51:37​ пример: студенты. Граф Ограничений
55:00​ пример: игра судоку
56:49​ разные формы ограничений: жёсткие, мягкие
58:04​ классификация ограничений: 1) унарные ограничения (зависят от констант), 2) бинарные (двоичные) ограничения (зависят от 2 величин)
59:07​ условия: 1) проблемный узел сделать согласованным (удовлетворять всем унарным ограничениям)
1:03:06​ другой тип согласованности - 2) согласованность дуги (удовлетворять всем бинарным ограничениям)
1:06:43​ псевдокод: согласованность дуги
1:09:01​ алгоритм AC-3 (задача удовлетворения всем ограничениям)
1:13:33​ Граф ограничений
1:14:40​ задача поиска состоит из частей...
1:15:07​ формулировка CSP как подтип задач поиска
1:16:18​ способы улучшить алгоритм, используя структуру задачи
1:16:53​ алгоритм Поиск с возвратом (backtracking search). Рекурсивная функция. Псевдокод
1:20:21​ пример на практике: поиск с возвратом
1:25:00​ код поиск с возвратом scheduling -- schedule0.py
1:27:44​ существуют библиотеки, реализующие этот алгоритм
1:29:33​ алгоритм Поддержания согласованности дуги. Идеи логического вывода (inference). Использование согласованности дуг, без возврата
1:33:34​ псевдокод
1:35:10​ улучшенные варианты (select-unassigned-var). Какую переменную рассматривать дальше
1:37:17​ пример на практике
1:39:25​ функция domain_values Значения домена. Для какой переменной (выбор переменной, оставляющей наименьшее количество таких же вариантов в других переменных)
1:43:07​ Вывод. Есть несколько различных способов сформулировать задачу. 1) задача в виде локального поиска, 2) в виде линейных программ, 3) задача удовлетворения ограничений

Смотрите также:
Весь гарвардский курс по основам программирования (CS50 2015 год)
Нейросеть сделала компьютерную игру
Игра «Маг кода» для изучения Python, JavaScript, анализа данных, машинного обучения и нейронных сетей

программирование, искусственный интеллект

Previous post Next post
Up