Машинное обучение для Java-разработчиков. Ч.1 |
||||||||||||||||||||||||||||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-02-06 18:50 Настройте алгоритм машинного обучения и разработайте свою первую функцию прогнозирования с помощью Java. Автомобили с автономным управлением, системы распознавания лиц и голосовые помощники — всё они разработаны на базе технологий и фреймворков машинного обучения. И это только первая волна. За следующие 10 лет новое поколение продуктов, преобразит наш мир, порождая новые подходы к разработке программ, продуктов и приложений. Машинное обучение и искусственный интеллект Машинное обучение эволюционировало из области искусственного интеллекта, цель которой — создание машин, способных подражать человеческому интеллекту. Хотя термин «машинное обучение» появился в информатике, искусственный интеллект не является новой областью науки. Тест Тьюринга, разработанный математиком Аланом Тьюрингом в начале пятидесятых годов 20-го века, является одним из первых тестов, предназначенных для определения наличия настоящего интеллекта у вычислительной машины. Согласно тесту Тьюринга, вычислительная машина доказывает наличие человеческого интеллекта тем, что выдает себя за человека, и последний не догадывается, что говорит с машиной. Контролируемое обучение vs неконтролируемое обучение Контролируемое и неконтролируемое обучение являются двумя наиболее популярными подходами к машинному обучению. Для обоих вариантов необходимо давать машине огромное количество записей данных для построения соотношений и обучения. Такие собранные данные обычно называют «вектором признаков». Например, у нас есть некий жилой дом. В таком случае вектор признаков может содержать такие признаки, как: общая площадь дома, количество комнат, год постройки дома и так далее. При контролируемом обучении, алгоритм машинного обучения подготавливается для ответа на вопросы, связанные с векторами признаков. Для тренировки алгоритма, ему «скармливают» набор векторов признаков и связанных меток. Связанную метку предоставляет человек (учитель), и она содержит правильный «ответ» на заданный вопрос. Алгоритм обучения анализирует векторы признаков и правильные метки для поиска внутренней структуры и взаимоотношений между ними. Таким образом машина учится правильно отвечать на вопросы. В качестве примера можно рассмотреть некое интеллектуальное приложение для торговли недвижимостью. Его можно натренировать с помощью вектора признаков, включающего размер, количество комнат, и год постройки для набора домов. Человек должен присвоить каждому дому метку с правильной ценой дома, базируясь на этих факторах. Анализируя эти данные, умное приложение должно натренироваться, чтобы ответить на вопрос «Сколько денег я смогу получить за этот дом?». После того как процесс подготовки закончен, новые входные данные уже больше не маркируются. Машина должна быть способна правильно отвечать на вопросы, даже для не известных, не промаркированных векторов признаков. При неконтролируемом обучении, алгоритм строится таким образом чтобы предсказывать ответы без маркировки человеком (или даже без вопросов). Вместо определения маркировки или результата, алгоритмы неконтролируемого обучения используют большие массивы данных и вычислительные мощности для выявления ранее не известных взаимоотношений. Например, в маркетинге потребительских продуктов можно использовать неконтролируемое обучение для определения скрытых взаимосвязей или группирования клиентов, что в конце концов поможет усовершенствовать маркетинговую программу или создать новую. В этой статье мы сосредоточимся на контролируемом машинном обучении; в настоящее время этот подход используется чаще всего. Контролируемое машинное обучение Любое машинное обучение базируется на данных. Для проекта по контролируемому машинному обучению,нужно отметить маркерами данные таким образом, чтобы получить осмысленные ответы на задаваемый вопрос. Ниже, в Таблице-1, каждая запись информации о доме имеет метку «цена дома». Выявляя взаимосвязь между данными записей и ценой дома, алгоритм в итоге должен быть способным предсказать рыночную цену для домов не входящих в данный список. (Обратите внимание, площадь дома указана в квадратных метрах, а стоимость дома в евро).
Как машина обучается предсказывать Сложность контролируемого машинного обучения -- в поиске подходящей функции предсказания для определенного вопроса. Математически сложность состоит в том чтобы найти функцию которая получает на вход переменную y = h? (x)
х представляет собой массив данных. В нашем примере -- это двухмерный массив из элементов, определяющих дом, состоящий из количества комнат и площади дома. Массив таких значений является вектором признаков. Задав конкретную целевую функцию, мы можем использовать её для предсказания каждого вектора признаков х . Чтобы предсказать цену дома, вы должны вызвать целевую функцию используя вектор признаков {101.0, 3.0} , состоящий из площади дома и количества комнат: В исходном коде из примера-1, значения в массиве х представляют вектор признаков дома. Значение у , возвращаемое целевой функцией, -- это предсказанная цена дома. Целью машинного обучения является определение целевой функции, которая будет работать максимально точно при неизвестных входных параметров. В машинном обучении, целевая функция (h?) иногда называется моделью. Эта модель является результатом процесса обучения. Линейная регрессия Чтобы научить машину «думать», сначала нужно выбрать алгоритм обучения, который вы будете использовать. Например, линейную регрессию. Это – один из простейших и самых популярных алгоритмов контролируемого машинного обучения. Алгоритм предполагает что отношение между входными признаками и маркерами результата – линейно. Общая функция линейной регрессии, приведенная ниже, возвращает предсказанное значение путем суммирования всех элементов вектора признаков умноженных на параметр h? (x) = ?0 * 1 + ?1 * x1 + ... ?n * xn
(?) и параметра признака (х) в векторе. Обратите внимание, что признак x0 является постоянным элементом сдвига и имеет значение 1 для вычислительных целях. В результате индекс значимых параметров таких, как площадь дома, начинается с x1. Так, если x1 присвоено первое значение вектора признаков (площадь дома), то x2 будет принимать следующее значение (количество комнат) и так далее. Пример-2 демонстрирует Java-реализацию функции линейной регрессии, математически обозначаемой как h?(x). Для простоты, вычисления выполняются с использованием типа данных double . В методе apply() , предусмотрено, что первый элемент массива будет равен 1.0 и будет установлен за пределами этой функции. Пример 2. Линейная регрессия на Java Чтобы создать новый экземпляр LinearRegressionFunction , нужно задать параметр ? . Этот параметр или вектор используется для адаптации общей функции линейной регрессии к лежащим в основе тренировочных данных. Параметр ? , используемый в программе, будет настроен в процессе обучения, базируясь на тренировочных примерах. Качество обученной целевой функции будет зависеть от качества подготовленных для обучения данных. В примере ниже мы используем LinearRegressionFunction для иллюстрации предсказания цены, базируясь на размере дома. Принимая во внимание то, что x0 должен быть константой со значением 1.0, целевая функция инициализируется, используя два параметра ? , при этом они являются результатом процесса обучения. После создания нового примера, цена дома площадью 1330 квадратных метров будет предсказываться как показано ниже: На рисунке ниже вы можете видеть график целевой функции предсказаний (синяя линия). Он получен путем вычисления целевой функции для всех значений площади дома. График также содержит пары цена-площадь, используемые для обучения. Сейчас график предсказаний выглядит достаточно хорошо. Координаты графика (положение и наклон) определяются вектором ПРОДОЛЖЕНИЕ СЛЕДУЕТ Перевод с английского. Автор — Грегор Рот (Gregor Roth), Software Architect, JavaWorld. Источник: javarush.ru Комментарии: |
|||||||||||||||||||||||||||