Не обижайте котиков и собачек, а ищите их среди… питонов

Kate

Administrator
Команда форума
Давненько интересуюсь вопросами искусственного интеллекта, но сейчас актуальней говорить о вопросах машинного обучения. Ну что ж такое действительно актуально и в любимом мной python - https://pypi.org/search/?q=Machine+Learning, сам прошёл обучения, получил сертификатик, поучаствовал в создании реального и полезного с такой технологией. Осмелюсь поделиться некоторым, что заставляет думать.

Котик из текстуры, сделанной из изображения питона
Котик из текстуры, сделанной из изображения питона

Введение​

Начнём с простого, которое и сложное — зачем это надо (https://habr.com/ru/post/448892/). По-простому — для автоматизации, для замены труда человека везде, где может трудиться машина (например, там, где человеку просто опасно). Не будем в рамках данной заметки рассматривать этические стороны таких подходов, ограничимся лишь принятием их разнообразия. По-сложному — нам хочется попытаться детерминировать то, что пока детерминировать явным и простым образом не удаётся.

Далее станем обучаться подходам, практикам, методологиям машинного обучения (ML - Machine Learning), например, в python (например, https://habr.com/ru/post/540112/). Существует несколько подходов и концепций в ML – концепция обучаемого нейрона, концепция построения нейронной сети, концепция её обучения, подходы к методам обучения, подходы к методам использования и другие.

На каком-то этапе нашего обучения проблемам ML мы приходим к существованию разнообразия готовых инструментов (фреймвёрков ML).

Затем встаёт вопрос перечисления и классификации фреймвёрков. Ни то ни другое не является основным предметом данной заметки, но приведу несколько классификаций и немного перечислю. Классифицировать можно по разным параметрам, например, по популярности либо по области применения. По области применения встречаются универсальные, но есть и специализированные. Примеры специализированных: NLTK (Natural Language Toolkit - пакет библиотек и программ для символьной и статистической обработки естественного языка — https://www.nltk.org/, https://habr.com/ru/company/lanit/blog/462959/) используют для обучения к обработке в частности текстов; OpenCV (Open Source Computer Vision Library, библиотека компьютерного зрения — https://opencv.org/, https://habr.com/ru/post/519454/) используют для обучения к обработке визуальной информации.

Продолжая вникать в знания о ML знакомимся с обычными примерами отделения образов котиков от образов собачек (https://habr.com/ru/post/226347/).

Постановка задачи​

Не было никогда и вот опять одно и то же. И да и нет.

Мне лично приходилось принимать участие в обсуждении реального проекта по распознаванию условных котиков (других «мимимишных четвероногих») среди окружающей природы и неприроды, и других котиков, и некотиков. И этот проект сулил немалые денежные вливания аки выгоды заказавшим. Тогда мы не осилили сложность задачи (мало нас умных энтузиастов в команде было).

Представьте, учитель в начальном классе для одарённых деток задала задачу учащимся дома изобразить котика или собачку, а потом принести в школу.

Новенький пошёл и сделал картинку котика фломастером в альбоме,
дочь фотографа принесла фото борзой в погоне за добычей,
сын саундпродюсера записал мяуканье домашней кошечки и распечатал сжатую осциллограмму на принтере,
дочь преподавательницы японского нарисовала иероглиф пса (а что там сложного — человек и ну),
сын дизайнера придумал новый витиеватый шрифт и написал им слово собака,
дочь врача рентгенолога принесла снимок кота — проглотившего рыбку, сын рукодельницы вышил кота бисером,
дочка охотника принесла оттиск следа собаки, дочь микроисследователя принесла макроснимок языка котика,
сын музыканта принёс ноты собачьего вальса,
сын математика принёс параметрическую функцию, которая описывала подобие пёсика (подобно кардиоидам там и прочим),
дочь домохозяйки принесла фото, где она гладит кошечку на своих коленках.

Задача — как научить машину (электронную и вычислительную, например) распознавать различия изображения котика от изображения собачки?

Критическое мышление​

Некоторые воскликнут про бред и сбрендивших — ведь есть же границы областей применения, но какие границы (наука обожает исследовать проявляемое на таких границах) области применения у нас — у людей, разве мы не хотим обучить машины, которые могут нам подсобить и нас заменить (не слышал я ни про какой Скайнет — не волнуйтесь).

Ведающие в ML заметят некорректность задачи именно для этой области (ML) — обученная нейронная сеть обычно используется для решения конкретных задач и ограничена областями нецелевого применения.

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

В каждом подобном утверждении — есть зерно истины, но есть и стена, искусственно созданная для области понимания и развития ML.

Поиск решения​

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

Хороший тимлид оценит порыв молодого джуна материально и публичной похвалой. Действительно большое подспорье команде, решающей задачи ML в получении решения с первым приближением точности. Это позволяет сразу показать нечто готовое клиенту, а затем спокойно начать улучшение готового, которое, очевидно, несовершенно. Кроме того публичная похвала и награда джуна стимулирует других членов команды к более творческим подходам поиска решения. Однако, откуда взялась команда ML, и когда просто мысленный эксперимент перестал быть им?

Да ладно — взялась и взялась. Что же могут придумать мидлы? Разбить задачу на подзадачи выявления по рисунку, по фото, по надписи, и т. д. А затем — обучение классификатора — к чему из вышеперечисленных следует каждое относить изображение. Собственно — данное решение подразумевает наличие нескольких обученных сетей и сборку их в качестве компонентов одного большого проекта. В принципе, решение — логичное и более точное, но за усложнение проекта потребуется заплатить необходимостью в решении дополнительных задач объединения разного (интеграции).

Чем может принести пользу синьор — опытом. Он знает и про особенности обучения и про особенности тестирования, улучшения, внедрения. Может сделать решение легко масштабируемым, за счёт предусматривания наличия некоторой ошибки — когда предложенное изображение не относится к случаям, для которых уже происходило обучение. Можно попытаться автоматизировать поиск материалов, на которых проект сможет усовершенствоваться самостоятельно или с учителем, расширяя разнообразие обученных нейронных сетей. При необходимости, можно конечно и избавится от необходимости в учителе, но желательно предусмотреть и возможность его вмешательство в процесс обучения. Конечно, всегда надо помнить про ворона, который может выколоть глаз, если его вскормить (отсылка к поговорке, а не оскорбление одного из умнейших пернатых).

Финальная часть​

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

 
Сверху