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

Есть много типов нейронных сетей:

  1. Глубокие нейронные сети (DNN)
  2. Сверточные нейронные сети (CNN)
  3. Рекуррентные нейронные сети (RNN)
  4. Генеративные состязательные сети (GAN)

Эта серия статей будет состоять из семи частей.

  1. Глубокие нейронные сети (DNN), часть 1: представление и прямое распространение.
  2. Глубокие нейронные сети (DNN), часть 2: функции активации и инициализация весов и смещений.
  3. Глубокие нейронные сети (DNN), часть 3: обратное распространение.
  4. Глубокие нейронные сети (DNN). Часть 4: Реализация с нуля.
  5. Глубокие нейронные сети (DNN). Часть 5: Работа с чрезмерной и недостаточной настройкой.
  6. Глубокие нейронные сети (DNN), часть 6: алгоритмы оптимизации и настройка гиперпараметров.
  7. Глубокие нейронные сети (DNN). Часть 7: DNN с использованием TensorFlow2.0.

В части 1 DNN мы собираемся обсудить основные обозначения, которые мы собираемся использовать в этой серии статей, и сделаем forward-prop.

В этой статье мы собираемся начать с DNN, часть 1: представление и прямое распространение.

Прежде чем перейти к части 1 DNN, я бы порекомендовал перейти к логистической регрессии, поскольку это базовая нейронная сеть 1-го уровня. Чтобы получить более полное представление о логистической регрессии, перейдите по этой ссылке https://medium.com/@pdhameliya3333/logistic-regression-implementation-from-scratch-3dab8cf134a8

Начнем шаг за шагом.

Представительство:

  1. 1 нейронная архитектура нейронной сети уровня 1 (логистическая регрессия):

Предположим, мы хотим предсказать, есть ли у пациента диабет или нет, на основе заданных данных.

Итак, здесь выведите ŷ ∈ {1,0}, есть ли у человека диабет, например [1], или человек, не страдающий диабетом, например, [0].

Например, у нас есть данные о пациентах с диабетом. Для простоты понимания я использовал только 3 функции.

Обозначения:

X = функции или входные переменные [глюкоза, артериальное давление, инсулин] - ›[X1, X2, X3]

y = целевая или выходная переменная [Результат] - ›[y]

ŷ = Прогнозы

W = вес [W1, W2, W3]

b = предвзятость

Теперь наша функция прогнозирования будет иметь следующий вид:

Z = X1 (i) * W1 + X2 (i) * W2 + X3 (i) * W3 + b (линейное уравнение)

a = σ (Z) (сигмовидная активация)

ŷ = a (функция прогноза), где ŷ ∈ {1,0}

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

Z = W * X + b (линейное уравнение)

a = σ (Z) (сигмовидная активация)

ŷ = a (функция прогноза), где ŷ ∈ {1,0}

Здесь размер X будет (n_x, m), где n_x = количество функций, т.е. 3 и m = количество. обучающих примеров.

В этих статьях мы просто сосредоточимся на представлении и прямом распространении нейронной сети. Мы собираемся подробно обсудить, что такое веса (W) и смещение (b), а также их значения в DNN части 2 и 3.

Для тех, кто видел мою статью о логистической регрессии, в которой весами были (1, Θ2, Θ3,… .Θn) и смещение (Θ0).

2. Архитектура глубокой нейронной сети:

Чтобы упростить задачу, мы будем использовать разные обозначения для представления нейронной сети.

Слои: вы можете взять любое количество скрытых слоев в нейронной сети. Например, на изображении выше есть 3 скрытых слоя. В нейронной сети входной слой не считается скрытым слоем.

узел, нейроны или скрытые блоки (n): количество узлов в скрытых слоях

Например, В слое L = 1 есть 3 узла или скрытых блока n [1] = 3. Здесь входными слоями является матрица X. Выходным слоем является ŷ = a1 [3] ∈ {1,0}, некоторое время думайте только о классификации бинарных классов. Мы также собираемся обсудить классификацию Multi Class в следующих частях.

Для облегчения понимания возьмем небольшую нейронную сеть из 2 слоев.

Здесь у нас есть 2 скрытых слоя. Слой L = 1 содержит три узла или скрытых единиц n [1] = 3, а L = 2 (выходной слой) содержит 1 узел.

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

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

Как вы можете видеть на изображении выше, мы можем вычислить узел a1 слоя 1.

Аналогично для a2 слоя 1.

Аналогично для a3 слоя 1.

Аналогично для a1 выходного слоя, т.е. слоя 2

Теперь мы собираемся сложить все переменные в матричную форму.

Мы собираемся инициализировать веса W и смещение b случайными значениями, поэтому для создания случайных значений матрицы весов и вектора смещения мы передадим следующие измерения:

Размер W [L], т.е. матрица веса будет (количество узлов в следующем слое, количество узлов в предыдущем слое).

Размер W [L] будет (n [L], n [L-1])

Размерность b [L], т.е. вектор смещения будет (количество узлов в следующем слое, 1)

b [L] размер будет (n [L], 1)

Для расчета L-слоя:

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

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

Мы также обсудим, каковы различные методы инициализации случайных значений весов и смещений.