Я своего рода ML-researcher-любитель. Тыкаюсь в эти алгоритмы, обратное распространение ошибок, логлоссы... Ставлю перед собой немыслимые исследовательские задачи, гоняю данные туда-сюда, убеждаюсь, что это не работает и т.д.
Нейронные сети - это чистый лист бумаги, на который переписываются обучающие данные в сжатом виде. Нейронные сети - это слепок обучающих данных. Вся сложность гигабайт обучающих данных перекладывается в нейросетку.
И вот миф №1: Нейронные сети сложны, никто не понимает, как они работают.
Не следует распространять свое незнание на других. Если вы не знаете, как работают нейронки, то это еще ничего не значит. У нейронных сетей имеется геометрическая и логическая интерпретация. Эти интерпретации может понять студент первого курса любого технического ВУЗа. 1. В геометрической интерпретации появляется понятие разделяющей гиперплоскости, именно уравнение гиперплоскости представляет классический нейрон, а разделяющей она становится благодаря нелинейной функции активации, которая напоминает по форме функцию sign(). 2. В логической интерпретации нейрон рассматривают как логический элемент OR и AND. На вход нейрона подают сигналы логических уровней 0 и 1. Веса синапсов должны быть примерно одинаковы, для OR веса побольше, для AND поменьше. У OR-нейрона веса большие, поэтому от любого из синапсов с сильным сигналом 1 такой нейрон возбуждается. У AND-нейрона веса малые и требуется подать лог.1 на все синапсы, чтобы нейрон возбудился. Функция NOT имитируется изменением знака веса. Если вес отрицательный, а на синапсе логическая единица, то такой сигнал тормозит нейрон. 3. Есть еще фильтр-интерпретация для входных слоев нейронных сетей, которые выполняют роль рецепторного слоя сетчатки глаза. Это типичный подход к анализу изображений в ML. Изображение бьётся на пиксели. Каждый нейрон входного слоя имеет столько же синапсов, сколько и пикселей. То есть нейрон "видит" все пиксели. Но часть пикселей заглушаются весом синапса 0, часть пикселей усиливаются максимально весом 1 и еще есть антиусиление при весе -1. (На самом деле веса могут занимать промежуточные значения, например, 0,5 или -0,75, просто для таких весов интерпретация принимает вероятностный характер, думаю с этим у вас не возникнет проблем, если поймёте основные три характерные точки.) Нейрон возбуждается, если на его "весовом фильтре" в максимальном количестве синапсов происходят два вида совпадения: логическая единица попадает на синапс с весом +1, логические нули попадают на синапсы с весами -1. Там, где вес равен 0, нейрон "слепой" (то есть данные в этом пикселе для нейрона незначимы, мешающий случайный хаос). Таким образом нейрон способен возбуждаться от частей изображений, которые повторяют некоторую картинку в фильтре нейрона. Кстати, при решении практических задач эти фильтры можно визуализировать. Вы часто встречались с этими визуализациями.
4. Итого, мы имеем три вида интерпретации: геометрическая и фильтр-интерпретация работают для входных слоев, а логическая - для всех последующих. Еще следует понимать, как они работают в совокупности. Например, студенты изучают XOR-задачу, которая решается двухслойной (точнее трехслойной) нейронкой. Первый слой "геометрический", координаты точек переводятся, так сказать, в логический язык. А второй слой доводит работу до логического конца, ибо XOR-точки неразделяемы одной гиперплоскостью. Аналогично и с фильтр-интерпретацией: входные нейроны видят разные детали на изображении, а скрытые логические слои делают соответствующие выводы. Аля "усы есть, хвост есть и когти есть, значит это кошка".
|