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

Ввод:

Нейронные сети могут показаться непонятными, но, разобравшись на простые части, понять их несложно. Для целей этой статьи давайте рассмотрим набор данных как изображения собак, каждое из которых имеет размер 64 * 64. Эта матрица размером 64 * 64 представляет пиксель каждого атрибута изображения. Для каждого изображения нам нужны три отдельные матрицы размером 64 * 64, я имею в виду, что мы не можем забыть цвета, не так ли? Следовательно, результирующие матрицы для каждого изображения составляют 64 * 64 * 3 для красного, зеленого и синего соответственно. Умножение 64 * 64 * 3 даст 12288, который переходит в строку для входного вектора, содержащего числовые значения для каждого атрибута, как указано выше. В столбце будет количество изображений в наборе данных. Например, набор данных, состоящий из 50 изображений с размерами 64 * 64, будет иметь входной вектор m * n, где m равно 12288 (64 * 64 * 3), а n равно 50.

Вес и смещение:

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

Функция активации:

Функция активации нормализует огромные результаты линейных вычислений входного вектора * веса, добавленного к смещению, чтобы они попали в диапазон от 0 до 1. Поскольку прогнозы основаны на условных вероятностях, то есть p (y | x), результаты должны упасть. в диапазоне или 0 ‹y‹ 1. В зависимости от проблемы используются такие функции активации, как сигмоид, tanh, ReLU, softmax. Наиболее часто используемой функцией активации является функция ReLU, поскольку она позволяет эффективно выполнять градиентный спуск (алгоритм обратного распространения, описанный в статье).

Функция потерь и затрат:

Термин потеря не требует пояснений. Вся концепция, лежащая в основе построения нейронных сетей, заключается в том, чтобы улучшить обучение и прогнозирование, чтобы оно было почти идеальным, если не совсем идеальным. Следовательно, мы сравниваем потери на всех тренировочных данных. Функция потерь дает меру того, насколько хорошо алгоритм работает с каждыми обучающими данными; чем меньше, тем лучше. К широко используемым функциям потерь для различных задач относятся SVM, softmax или любые другие (функция потерь для логистической регрессии выглядит как функция потерь). Функция потерь вычисляется для каждых обучающих данных, где как, все потери, понесенные в наборе данных, называются функцией стоимости.

Обратное распространение:

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

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