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

Если вы открывали свой браузер за последние пару лет, вы, должно быть, видели выражение «Нейронные сети» пару (сотен) раз.

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

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

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

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

Например, допустим, я хочу, чтобы моя программа знала разницу между квадратом и кругом. Тогда один из способов справиться с этим - написать программу, которая может обнаруживать углы, а затем применять ее для подсчета углов. Если моя программа видит 4 угла, тогда эта фигура является квадратом, а если она видит без углов, то эта фигура представляет собой круг.

А машинное обучение? В общем, машинное обучение = обучение на примерах.

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

А затем, друзья мои, как только машина узнает все эти свойства, я могу дать ей новое изображение круга или квадрата, то, которое она не видела раньше, и, надеюсь, она его классифицирует. правильно.

Что такое нейрон?

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

Более того, нейрон можно рассматривать как одну обучающую единицу.

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

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

Итак, я собрал много примеров количества слов в сообщениях блога, обозначенных x, и того, сколько слов люди на самом деле читают в этих сообщениях, y, и я полагаю, что есть некоторая взаимосвязь между ними, обозначается f.

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

Что я здесь приобрел?

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

Итак, нейронная сеть - это…

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

Моя работа как разработчика этой сети - ответить на несколько вопросов:

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

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

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

Нейронные сети - бесконечная история

Поскольку это поле буквально растет, количество нового (и высококачественного!) Контента, выходящего каждую минуту, невозможно для любого человека. (Боже мой, как вы думаете, наступит время, когда люди смогут создать ИИ, который сможет отслеживать человеческие достижения в области ИИ?)

Приступая к работе в этой области, первое, что нужно знать, это то, что НИКТО не знает всего. Так что чувствуйте себя комфортно там, где вы находитесь, и просто сохраняйте любопытство :)

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