Наконец, последний компонент, который мы должны понять, прежде чем мы сможем начать собирать все воедино! Вот функция активации сигмовидной кишки!

Имейте в виду, что в контексте искусственных нейронных сетей термин «сигмовидная функция используется как псевдоним логистической функции» [вики]. Если быть более строгим в нашей терминологии, сигмовидная функция — это любая функция, имеющая S-образную кривую. В Википедии перечислены другие функции, которые также классифицируются как сигмовидные функции, такие как arctan() и error(). В сфере глубокого обучения, когда вы видите всплывающее окно с термином сигмовидная функция, это можно понимать как логистическую функцию.

Теперь давайте углубимся в детали сигмовидной функции, также известной как логистическая функция. Итак, первое, что мы замечаем, это диапазон от (0,1). Мы можем сказать, что когда x приближается к отрицательной бесконечности, s(x) приближается к 0. Таким образом, мы можем сказать, что нижний предел равен 0. Мы также можем сказать, что когда x приближается к положительной бесконечности, s(x) приближается к 1. Таким образом, мы можем сказать это имеет верхний предел, равный 1. Таким образом, мы можем сказать, что s(x) имеет диапазон (0,1). Теперь на графике выше мы видим, что переменная отмечена буквой z, но можно использовать x или любой другой символ. Мы также можем сказать, что x принадлежит множеству всех действительных чисел. Математически это можно выразить как xεℝ.

Хорошо, теперь мы знаем, что домен — ℝ; таким образом, xεℝ. Кроме того, мы знаем, что диапазон равен (0,1); R(x)€(0,1). Теперь давайте подумаем о некоторых общих случаях использования, когда мы хотели бы получить некоторые заданные входные данные и преобразовать их в диапазон (0,1). Первое, что пришло на ум, — это вероятность. Мы можем думать о чем-то равном 1 как о 100% вероятности того, что это правда, и о 0 как о 0% вероятности того, что это правда.

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

Пусть существует модель, принимающая изображения кошек и собак, которую мы называем бинарным классификатором CNN. Модель имеет N скрытых слоев, каждый из которых абстрагирует элементы с помощью операции свертки. В конечном итоге у нас осталось K карт объектов, где каждая карта объектов имеет меньшее измерение, поскольку каждый скрытый слой имеет свертку с шагом >1. Таким образом, каждая карта объектов показывает степень интенсивности этого объекта. У нас есть сглаживающий слой, который объединяет все карты K признаков в вектор, где каждая векторная ячейка является нейроном. Мы полностью подключаем этот сплющенный слой к одному выходному нейрону, который имеет сигмовидный слой активации, представляющий вероятность присутствия кошки на изображении. Эта модель представлена ​​в примере 1.2 ниже.

Вы можете спросить: «А как насчет вероятностей нескольких классов?». Например, что если я хочу предсказать, кто это: кошка, собака, черепаха или кролик. Я не могу сделать это с моделью, которая выдает двоичную вероятность. Модель бинарной классификации — это любая модель, которая выводит вероятность только одного нейрона. В абзаце выше я определил модель бинарной классификации, которая научит классифицировать кошка или нет по шансам. Когда шансы ниже 50%, то есть большая вероятность, что это не кошка, это говорит нам только о том, что это не кошка. Если у нас было более двух классов, подобных 4 классам, которые мы определили выше (собака, кошка, черепаха, кролик), то бинарный классификатор не является удовлетворительным; он не говорит нам, кто это, скорее всего, будет собака, черепаха или кролик. Нам понадобится мультиклассовая модель, то есть несколько выходов с softmax. Я не хочу сейчас вдаваться в подробности мультиклассового моделирования и функции активации softmax, хотя хочу, чтобы об этом стало известно.

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

Семейное сходство — это философская идея, которую Витгенштейн использовал, чтобы отметить, что нет ничего, на что мы могли бы указать, что делало бы объект таким, какой он есть. Он использовал слово «игра», чтобы показать свою философию в действии. Если мы думаем об играх, мы не можем найти какую-то единую сущность, какое-то свойство игровости, которым обладают все игры; скорее, когда мы используем слово «игра», мы говорим о некотором семейном сходстве, которое делает игру игрой. Я настоятельно рекомендую посмотреть это видео, чтобы понять философию семейного сходства Витгенштейна и лучше понять эту концепцию.

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

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

Когда мы говорим о кошке, нет никакой сущности. Являются ли уши сутью того, что значит для объекта быть кошкой? Нет, я могу представить безухого кота и при этом сказать, что это кот. Хвост, лапы, глаза, шерсть… Нет. Я не могу выделить что-то одно, в чем суть. Скорее это некоторое сходство друг с другом. В этом наборе объектов есть общие черты, но они не вписываются в какую-то единую сущность, на которую я могу указать.

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

Модель при обучении пытается минимизировать потерю перекрестной энтропии. По сути, это означает, что если мы видим кошку, мы должны предсказать ее с вероятностью 100%, а когда мы видим собаку, мы должны предсказать, что собака имеет вероятность 100%. Чтобы уменьшить потери, модель изучает правильные веса функций, а также то, какие функции ей следует искать.

Это одна из основных причин функции активации сигмовидной кишки, когда мы хотим, чтобы нейрон представлял вероятность; хотя и не единственный!

Почему же мы говорим о сигмовидной форме для автоэнкодеров? Помните, что декодер занимается деабстрагированием скрытого пространства, в которое встроен кодер. Выход декодера должен быть точным изображением входа кодера, если он обучен идеально. Также помните, что пиксели входных каналов изображений (r,g,b) находятся в диапазоне [0,1]. Да, сигмовидный диапазон равен (0,1), но мы можем бесконечно приближаться к 0 и 1; таким образом, это удовлетворительно. Поэтому мы используем сигмовидную функцию, чтобы получить диапазон (0,1) для пикселей.

Теперь мы можем обобщить использование и сказать, что сигмовидная функция активации используется, когда вы хотите, чтобы какой-либо нейрон выдавал диапазон (0,1). Сигмоида нам нужна не только для ограничения вывода до (0,1), но и для использования ее нелинейности для комплексного моделирования реальности.

Итак, я мог бы довольно быстро объяснить использование сигмоида в автоэнкодерах, но мне казалось, что это не отражает истинную природу возможностей сигмоида. Сигмоид — мощная функция активации, когда вам нужно ограничить выход нейронов до (0,1), точно так же, как вероятность и интенсивность пикселей!

Ух ты! Теперь я рассмотрел все основные компоненты автоэнкодера. Мои следующие шаги — продемонстрировать, как кодировщик, декодер и объединенные в автокодировщик конструируются в кодированном виде! Для нашей первой модели это был долгий путь, но это важная основа для генеративного глубокого обучения! Я думаю, что смогу объяснить конструкцию и код кодеров, декодеров и автоэнкодеров еще в трех статьях. Теперь, когда у вас есть теория, лежащая в основе всех компонентов, конструкция и код должны быть достаточно простыми. С теорией мы закончили, осталось только собрать все части воедино!