Задать вопрос
@pvs11

Какие простые, «бытовые» задачи подходят для изучения машинного обучения?

Коллеги, всем привет!

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

Есть ряд вопросов, в которых требуется помощь:

1. Как отличить задачи для которых подходит машинное обучение?

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

Приведу примеры:
- видел пример задачи распознавания языка по статистике символов. Интересно, но выглядит достаточно примитивно. Ведь я и без машиного обучения посчитаю статистику, и просто сравнивая буду поулчать результат ничем не хуже.
- различные примеры с логическими операторами. Да, выглядит интересно, но зачем? Ведь там в исходных данных есть вссе ответы, на все варианты входных данных. В чём суть?
- видел пару статей про классификацию твитов и спам, но пока их подробно не разобрал. Хотел сначала поиграть просто с числами, освоится, а потом уже на второй ступеньке идти туда, потому что пока не представляю, как эту задачу развить хотя бы как-то на бытовом уровне за рамки самих представленных примеров.

2. Для первых проб взял за основу примеры из php fann: https://github.com/bukka/php-fann

Пример с логикой. Интересно, но как и писал выше не ясно, как его развить?

Более интересным показался пример с OCR. Выглядит очень интересно. Но на практике всё оказалось хуже, чем предполагал. Стоит изменить во входных данных хотя бы одну ячейку и всё перестаёт работать. Нормальная работа идёт ТОЛЬКО если тестовые данные идентичны тем, на которых обучали.

Пример:

Массив для буквы F:
$test_F = array(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0);


Если просто подправлюнемного форму буквы, например так:
$test_F1 = array(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0);


$test_F2 = array(
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0);


То всё перестаёт работать. Но разве не в этом суть машинного обучения, чтобы система была способна решать подобные задачи?
Ведь то что есть сейчас - просто сравнение с одним из вариантов во входных данных. Но зачем мне инструмент машинное обучение если я и сам могу сравнить все исходные массивы, и найти тот, что совпадает?

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

Как правильно развить эти примеры, чтобы почувствовать эффект?
  • Вопрос задан
  • 193 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
mayton2019
@mayton2019
Bigdata Engineer
Машинное обучение (ML) это над-множество задач типа классификация, регрессия, кластеризация
и детектирование аномалий.
В последнее время очень часто идет подмена понятий и вместо ML
задач все время подсовывают нейронные сети, хотя они закрывают некое под-множество этих
же задач.

Вы совершенно правильно ставите вопрос говоря
Но зачем мне инструмент машинное обучение если я и сам могу сравнить все исходные массивы, и найти тот, что совпадает?


В этом есть инженерная мысль - решать задачи подходящим инструментом. И если ВАША задача решается
методами базовой линейной алгебры (скалярное произведение векторов)
или мат-статистики то и решайте ее так как удобно.

Сама по себе идея например применять нейронные сети не плоха, но с точки зрения экономического расчета
может быть полностью провальной ведь для хорошей НС - вам надо купить хостинг у гугла с процессорами
тензоров например
. А зачем это делать если вы и так решаете вашу задачу просто линейной логикой
(набором if-else)?
Ответ написан
NeiroNx
@NeiroNx
Программист
Оценка фотографии - чтобы не делать плохое фото. Обучаете нейросеть на фото с их оценкой, делаете приложение которое в реальном времени показывает оценку фото при предпросмотре камеры - и делает автоматом лучшие фотки.
Ответ написан
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Обнаружение разной степени "наготы" на фото.
Люди целые платные сервисы на этом строят и продают за копеечку api, авто-модерация контента.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы