TL; DR: Это наука, а не инструмент

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

Как разработчик открытие того, сколько абстрактных мыслей и статистики происходит в ML, было почти пощечиной, но как человек, не знающий, когда остановиться, я продолжал преследовать эту свою цель. Благодаря фантастической помощи Reddit и Coursera мне удалось составить простую дорожную карту концепций, которые я хотел понять.

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

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

Представьте себе все, что вы могли бы сделать, если бы знали или хотя бы точно угадывали чье-то настроение. Если ваш пользователь расстроен, почему бы не отправить обнадеживающее сообщение? Почему бы не объединить людей с одинаковыми чувствами, чтобы они могли поддерживать друг друга? Ориентируйтесь на рекламу по настроению! (Хотя на самом деле это может быть опасно аморально) Дело в том, что нет предела.

Поэтому, имея в виду цель, я разделил проект на четыре этапа.

  1. Во-первых, это создание модели, способной анализировать текст песни и определять вероятные эмоции, стоящие за текстом.
  2. За ней следует еще одна модель, способная анализировать мелодию песни с целью добавления еще одного уровня сложности / точности.
  3. Затем мне нужно было найти способ соединить две модели, используя магию математики, и, надеюсь, получить улучшенный уровень эмоций, связанных с песней.
  4. Наконец, я бы применил стратегии науки о данных к собранным данным, чтобы создать «глобальный» контекст и повысить точность.

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

Начальная ступень

План прост, мы можем использовать анализ сантиментов для лирики! Что может пойти не так?

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

Согласно наиболее распространенным теориям эмоций, существует шесть основных эмоций: гнев, отвращение, страх, счастье, печаль и удивление. Это оставляет нас далеко от простого двоичного анализатора.

Я обычно занимаюсь созданием продуктов: стараюсь выпустить что-то как можно быстрее, полагаясь на имеющиеся в моем распоряжении инструменты и дорабатывая их по мере необходимости. Поэтому я подумал о том, чтобы в какой-то мере полагаться на сильные стороны бинарных анализаторов, создав отдельный анализатор настроения для каждой эмоции. Они смогут читать текст песни в свете своих эмоций и определять вероятность того, что песня будет эмоциональной. Затем мне пришлось бы найти способ математически объединить эти результаты в один последовательный ответ. Что-то вроде: гнев 80%, радость 10%, удивление 5%. Проблема с этим подходом заключается в том, что он не обязательно гарантирует реальную эмоциональную точность, поскольку он очень "модульный".

Но после просмотра множества статей, статей и видео я понял, что N бинарных анализаторов - это просто мое желание получить что-то там, а не создавать что-то и учиться. Вскоре после осознания этого я наткнулся на эту статью и открыл для себя IBM Watson. Именно тогда я пришел к выводу, что я был не в себе в отношении учебного проекта, и что вы не можете подходить к такой научной области небрежно, иначе вы можете задеть гордость своего разработчика.

Если вас интересует эта тема, в конце есть список для чтения, так что не закрывайте вкладку так быстро. Ты почти там!

Для тех из вас, кто не знает, Watson - блестящий проект IBM, который значительно лучше всего, что я буду создавать в этом году. У них есть замечательный анализатор настроений, который делает именно то, что я пытаюсь сделать. Так что я сделал то, что сделал бы любой логичный человек. Погуглил самую грустную песню всех времен и попытался проанализировать ее текст.

Безумный мир Гэри Джулса оставил Ватсона в нерешительности. Может быть, злой, может быть, испуганный и грустный. Дела шли не очень хорошо, пока я не начал по-настоящему анализировать тексты с менее технической точки зрения.

Дети, поющие с днем ​​рождения, не говорят мне «самая грустная песня в мире». Тот же самый образец повторяется с каждой эмоцией, и это привело меня к надоедливой теории. Сам текст лишен эмоций, и читатель передает эмоции. Субъективность - проклятие машинного обучения.

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

Что, если бы вы никогда не испытывали страданий или смерти близкого человека? Сможете ли вы понять эту историю? Если вы читаете книгу в контексте, который понимает потерю кого-то, то вы определенно можете почувствовать грусть. Но если бы вы не понимали эмоций, как если бы вы были машиной, вы были бы способны реагировать только так, как вам велят. По совпадению, я обнаружил это видео об одном из моих любимых режиссеров в то время, что только подтолкнуло меня к этой идее.

В этом видео, которое я предлагаю вам посмотреть после того, как вы закончите последние две минуты, оставшиеся в этой статье, я узнал, что Хаяо Миядзаки, вдохновитель таких фильмов, как "Принцесса Мононоке" и "Унесенные призраками", считает истории следует рассказывать посредством взаимодействия, а не посредством диалога. Для него диалог - это просто проявление эмоций, тщательно пропитанных сценой. Для этого он создает целые сцены, прежде чем добавлять какие-либо диалоги. Это означает, что зритель должен знать, что происходит, только по тому, как действуют персонажи, декорации и т. Д. Зная это, мы можем видеть, что обычно вокруг разговора гораздо больше контекста, чем просто произнесенные слова. Вот почему простая попытка проанализировать текст никогда не будет точной на 100%, существует целый мир контекста за пределами нескольких строк, содержащихся в песне, и отсутствие наблюдения за ним ни к чему не приведет.

Второй и третий этап

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

Раз уж вы дочитали до этого места, дайте мне знать, если хотите чем-то помочь! Любой совет, который я получу, скорее всего, приблизит меня к моей цели!

Урок выучен

Как сказал @Mikettownsend: Машинное обучение похоже на секс в школе. Все говорят, что делают это, на самом деле никто не делает, и никто не знает, что это на самом деле . После этого небольшого побочного проекта это было первое, что пришло в голову.

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

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

Примечание. Я намеренно решил оставить эту статью в свете «технических разговоров», чтобы сделать ее доступной для чтения более широкой аудитории. Я считаю, что это в высшей степени концептуальная проблема, и было бы полезно иметь над ней разные типы умов.

Список для чтения

Если вам интересно почитать теорию, вот список большей части того, что я прочитал во время своего небольшого эксперимента. Имейте в виду, что я не доделал все эти документы, так как я мог потратить на это всего пару дней.

Статьи

Видео

Если вы хотите узнать о нейронных сетях, я настоятельно рекомендую эту серию видео: