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

Пример: проблема растерянного инвестора

Предположим, вы венчурный капиталист и хотите выяснить, в какие стартапы вам следует инвестировать. Итак, вы посмотрите на сотни стартапов и для каждого запишите:

  1. сколько денег они уже собрали
  2. какой% их сотрудников инженеры
  3. были ли они в конечном итоге успешными по шкале от 1 (наиболее успешный) до 4 (общий кластер)

Затем вы решаете поместить эту информацию в график, нанося (1) деньги на ось x и (2)% инженеров на ось y. Цвет каждой отметки показывает, насколько они были успешными. Вот что вы найдете:

Хорошо… 😕 Но что ты узнаешь из этого? Немного. Показывают ли данные, что успешные стартапы всегда приносили больше денег? Нет, не всегда ... В успешных стартапах было больше инженеров? Нет, не всегда ...

Итак, теперь вы пытаетесь провести линии, чтобы разделить «регионы» успешных и неудачных стартапов. Вы пытаетесь это сделать, но это оказывается очень сложно. Вот одна из ваших бесплодных попыток:

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

Итак, вы немного застряли ...

Поступающие нейронные сети

(Простите инвестора за каламбур ...)

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

Нейронные сети - это просто модели, которые принимают различные атрибуты «вещи», а затем классифицируют эту «вещь». Например, «вещь» может быть стартапом (с атрибутами, состоящими из собранных денег и% инженеров) с классификацией уровня его успеха. Или «вещь» может быть избирателем из США (с атрибутами, включающими город, в котором он живет, и семейный доход) с классификацией, проголосует ли он за демократа или за республиканца.

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

Это пример полносвязной нейронной сети, потому что каждый вход связан с каждым выходом. Каждая строка (т.е. запуск) во входных данных имеет два значения: привлеченные деньги и% инженеров. Результатом является предсказание модели успеха стартапа.

Вы можете визуализировать эту нейронную сеть на своем исходном графике, чтобы показать свои «области» успеха:

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

Здесь на помощь приходит концепция скрытого слоя. Это означает вставку дополнительного «слоя» узлов (математических функций) между входным и выходным слоями. Это уточняет модель, а также допускает нелинейность, что означает, что регионы не обязательно будут разделены прямыми линиями. Вот как будет выглядеть ваша нейронная сеть с одним скрытым слоем:

Опять же, вы можете визуализировать это на своем исходном графике:

Это способ лучше! Видите, как скрытый слой добавил нелинейности? Эта модель теперь является гораздо лучшим классификатором стартапов. Но ... это все еще не идеально, так как некоторые из синих точек переходят в зеленую область (справа), а некоторые из красных точек переходят в оранжевую область. Таким образом, вы можете улучшить это еще больше , добавив второй скрытый слой в свою нейронную сеть, что означает, что он будет выглядеть так:

Еще раз, мы можем визуализировать это на графике, чтобы увидеть, насколько хорошо наша модель классифицирует наши данные:

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

(Если вам интересно, вот мой код для вышеперечисленного.)

Важное предостережение

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

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

* Если вам интересно, как работают сетевые сети, вот отличный обзор