Так чем отличается ИИ от машинного обучения? Как разобраться во всей этой терминологии?
ИИ (Искусственный интеллект) включает в себя все различные алгоритмы и подходы, которые позволяют принять решения не жёстко зашитые в алгоритм, а которые зависят от результатов опытов производимых ИИ или данных, которые регулярно отдаются на анализ.
Машинное обучение - это одно из подмножество алгоритмов ИИ. Одно из самых больших, самое перспективное, но не единственное. Именно поэтому и часто путают два этих термина.
Итак:
В состав ИИ входит:
- Машинное обучение
- Алгоритмы нахождения оптимального решения путем перебора вариантов
- Жёстко заданное дерево решений
Машинное обучение
В свою очередь подразделяется на три направления:
- Обучение с учителем - когда у нас есть примеры с готовыми правильными ответами и мы обучаем систему до тех пор, пока она не начнет отвечать так же как в примерах. Например: распознавание текста.
- Обучение без учителя - у нас нет готовых ответов, но есть большое количество данных. Например: нужно объединить любителей музыки в группы по интересам
- Обучение с подкреплением - система делает действие(эксперимент), а мы по результатам действия возвращаем оценку. Например: робот учится ходить, если упал низкий балл, если прошел безупречно - высокий.
В следующих статьях рассмотрим эти алгоритмы подробнее.
Алгоритмы нахождения оптимального решения путем перебора
Алгоритм с большой точностью нахождения оптимального результата, но имеющий 2 недостатка:
- Требует построение точной модели изучаемого объекта
- Большие затраты на перебор всех вариантов
При этом подходе мы просто перебираем все варианты и берем лучший результат.
Существуют различные подходы позволяющие уменьшить перебор вариантов.
Жестко заданное Дерево решений
Формально это алгоритм ИИ, но в машинном обучении появились алгоритмы самостоятельно создающие дерево решений и меняющие его на основании, новых данных. Поэтому остановимся на нем только кратко.
В этом подходе программист сам анализирует, как должна вести себя система и эти правила жестко вносит в систему. Недостатком этого подхода является сложность и трудоемкость, а так же необходимость внесения изменений в код в случае любых изменений.