Введение в машинное обучение

1.1. Что такое машинное обучение

Машинное обучение - одна из самых захватывающих современных технологий. Вы используете алгоритмы машинного обучения десятки раз в день, даже не подозревая об этом. Каждый раз, когда вы пользуетесь поисковыми системами, такими как Google или Яндекс, для поиска в интернете, одной из причин, по которой они работают так хорошо, является используемый компанией алгоритм обучения, который научился ранжировать веб-страницы.

Каждый раз, когда приложение Facebook или Apple распознаёт фотографии ваших друзей, это также результат машинного обучения. Каждый раз, когда вы читаете электронную почту, спам-фильтр уберегает вас от тонн спам сообщений - это также алгоритм обучения.

Есть два определения машинного обучения. Первое: область исследования, которая дает компьютерам возможность учиться, не являясь явно запрограммированными. Это старое, неформальное определение.

Более современное определение звучит так: компьютерная программа называется обучающейся опыту Е относительно некоторого класса задач Т и производительности Р, если ее производительность на задачах Т, указанная как Р, улучшается с опытом Е.

Пример: игра в шашки.

Е - опыт, полученный в нескольких партиях.

Т - задача играть в шашки.

Р - вероятность того, что программа выиграет следующую игру.

1.2. Обучение с учителем и без учителя

Любая задача машинного обучения может быть отнесена к одной из двух широких классификаций: обучение с учителем или обучение без учителя.

В обучении с учителем дается набор данных, и уже известно, что правильный результат подразумевает идею существования связи входных и выходных данных.

Задачи обучения с учителем подразделяются на "регрессию" и "классификацию". В задачах регрессии алгоритм должен прогнозировать значение непрерывной величины.

Например: стоимость дома в зависимости от его параметров, прогноз продаж каких либо товаров.

Задачи классификации подразумевают предсказание дискретного значения. Например, какая погода будет завтра: солнечная, будет дождь или будет снег и так далее. В данном примере каждый тип погоды будет принимать

з дискретное значение {солнце = 0, дождь = 1, снег = 2 и так далее}. Или вы хотите написать программу, которая будет проверять учетные записи каждого из ваших клиентов и определять, была ли эта запись взломана или скомпрометирована.

Обучение без учителя позволяет подходить к решению задач, не имея представления о том, как должны выглядеть результаты. В обучении без учителя не существует никакой обратной связи на основе результатов прогнозирования. Программа сама должна найти во входных данных какую- либо структуру.

Например, группировка новостных сообщений в сети интернет в связанные новостные блоки, определение принадлежности индивидуума к определенному генному типу; создание компьютерных кластерных систем (можно, объединив машины, повысить эффективность работы ЦОД); анализ социальных сетей (автоматическое определение сплоченных группы друзей или групп людей, где все друг с другом знакомы); сегментация рынка. Чтобы иметь возможность автоматически и более эффективно продавать или продвигать свою продукцию в различных сегментах и так далее.

Рассмотрим задачу о «шумной вечеринке». Представим вечеринку: в комнате полно людей, все сидят рядом и говорят одновременно, из-за этого их голоса перекрываются, и сложно услышать даже человека напротив. Упростив задачу до двух человек, сможем получить решение в Octave в виде одной строки.

У исследователей ушло много времени на то, чтобы создать эту строку кода, это была непростая задача. Но, используя правильную среду разработки, многие обучающиеся алгоритмы могут быть реализованы с помощью коротких программ. Поэтому в этом курсе мы будем использовать среду разработки Octave. Octave — это бесплатное программное обеспечение с открытым кодом. Используя инструменты вроде Octave, многие обучающиеся алгоритмы можно реализовать всего в нескольких строках кода.

1.3. Программные среды разработки

Основной обязанностью инженера является решение производственных задач, важнейшими из которых являются проектирование и создание новых видов наукоемкой технической продукции. В процессе работы инженеру приходится выполнять большой объем математических расчетов, обрабатывать данные, полученные в ходе экспериментов и испытаний, чертить большое количество чертежей, подготавливать и оформлять нормативно-техническую документацию.

Одним из основных критериев при размещении заказа на выполнение проектных работ является минимальное время выполнения проекта. Существенным фактором увеличения производительности проектных работ является автоматизация инженерной работы (расчетов, выполнения чертежей, создание текстовых документов).

Для этих целей используют различные математические пакеты, такие как MathCad, MatLab, Octave, Maple, Mathematica, Scilab.

Как правило, работа инженера связанна с поиском подходящего решения и запуском его в производство. Поиск оптимального решения начинается с тщательного изучения возможных решений. Затем, на основе собранной информации изготавливается простой прототип и строится математическая модель разрабатываемого изделия или процесса, чтобы оценить и проверить правильность принятого решения.

Экономические соображения на этом этапе играют важную роль, так как практическая проверка решения отнимает много времени и требует больших материальных затрат. Построив модель, изучают её свойства, чтобы выяснить, насколько разрабатываемое изделие соответствует своему назначению. Чаще всего этапы построения модели и изучения ее свойств повторяются до тех пор, пока не будет найдено наилучшее решение. Причем на некоторых этапах приходится выполнять большие объемы вычислений. И здесь необходимо использовать программное обеспечение, позволяющее значительно ускорить работу. Тем более, что вычислительный эксперимент наталкивает порой на нужное решение. Для достижения этих целей в настоящее время используют как коммерческие пакеты программ, так и свободные программы. Авторы делают основной акцент на использование в инженерных вычислениях такого свободно распространяемого математического пакета, как Octave. Пакет Octave, спроектированный как открытая система большим числом участников инженерно-научного сообщества, обладает широкими функциональными возможностями. Кроме того, возможности Octave могут быть расширены внешними программами и модулями, а программы существующих версий модифицированы непосредственно.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >