lab
Neural Network
Русский

Что такое нейронная сеть

Обзор

Короче говоря, нейронная сеть - это функция: входные данные, выходной результат.

Функция

Возьмем распознавание рукописных цифр MNIST в качестве примера для определения соответствующей формы функции:

  • Тип задачи: классификация изображений
  • Вход: изображение содержит 28 x 28 = 784 пикселя, и каждый пиксель представлен действительным числом.
  • Выход: 0-9
  • Описание задачи: Определите уникальный номер с изображения
  • Определение функции
y=f(x1,x2,...,x784)xiR,i=1,...,784y{0,1,...,9}\begin{aligned} y &= f(x_1, x_2, ..., x_{784}) \\ &x_i \in \mathbb R, i = 1, ..., 784 \\ &y \in \{0, 1, ..., 9\} \end{aligned}

Это приложение нейронной сети начального уровня. Входными данными является изображение с низким разрешением (28 x 28) в оттенках серого, соответствующее функции с 784 входными переменными. Если это цветное изображение мегапикселя, соответствующие входные переменные достигнут 3 миллионов.


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


Как построить такую сложную функцию? Мы можем начать с простых функций. Самый простой и удачный пример - цифровые схемы.

Цифровые схемы

Цифровые схемы являются краеугольным камнем компьютеров и построили наш огромный цифровой мир. Но его ядро состоит из логических вентилей И, ИЛИ и НЕ.


Что такое логический вентиль? На самом деле это функция. И это самые простые функции.

Логический вентильвыражениефункциональная форма
AND воротаxyx \land yz=(x,y)z = \land(x, y)
OR воротаxyx \lor yz=(x,y)z = \lor(x, y)
NOT ворота¬x\lnot xy=¬(x)y = \lnot(x)
  • Тип переменной: все логические переменные, только 2 значения: {T,F}\{T, F\}, намного проще, чем натуральные числа (N\mathbb N) и действительные числа (R\mathbb R).
  • Количество переменных: унарная или двоичная функция, которая также является самой простой формой функции
  • Представление функции: используйте таблицу истинности для описания. Почему бы не использовать изображения? Поскольку это дискретная функция, на изображении есть отдельные точки, что не очень привлекательно.

NOT ворота

xx¬x\lnot x
TTFF
FFTT

NOT изображение ворот (используйте 0 дляFFи 1 дляTT)

AND ворота 、 OR ворота

xxyyxyx \land yxyx \lor y
TTTTTTTT
TTFFFFTT
FFTTFFTT
FFFFFFFF

AND изображение ворот

**OR изображение ворот

Комбинированный логический вентиль

Комбинируйте простые логические вентили, чтобы получить более мощные функции.


Создайте новую бинарную функцию:

  • XOR: xy=(x¬y)(¬xy)x \oplus y = (x \land \lnot y) \lor (\lnot x \land y)
  • XNOR: xy=(xy)(¬x¬y)x \odot y = (x \land y) \lor (\lnot x \land \lnot y)

Постройте многомерную функцию:

  • 3-битная операция И: f(x,y,z)=xyzf(x, y, z) = x \land y \land z
  • 8-битный сумматор: f(x1,...,x8,y1,...,y8)f(x_1, ..., x_8, y_1, ..., y_8)
    • Это 16-элементная функция, содержащая 16 логических переменных.
  • 32-битный сумматор: f(x1,...,x32,y1,...,y32)f(x*1, ..., x*{32}, y*1, ..., y*{32})
    • Это 64-элементная функция, содержащая 64 логических переменных.
    • Его также можно рассматривать как двоичную функцию 32-битных целых чисел: f(x,y)x,yInt32f(x, y) \quad x, y \in \text{Int32}

Суммировать

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

Язык программирования

Давайте снова посмотрим на языки программирования. Возьмите Python в качестве примера, посмотрите на элементы в Python.

Оператор

ИмяСимволФункция
Логические операторыand or notФункции двоичной и унарной логики
Арифметические операторы+, -, *, /,%, **, //Бинарные функции
Операторы сравнения==, !=, >, <, >=, <=Бинарные функции
...

На примере оператора сложения чисел с плавающей запятой (+) изображение функции выглядит следующим образом:

f(x,y)=x+yf(x, y) = x + y

Функции

Вы можете определять свои собственные функции в Python:

def f(x, y): return max(0, 2*x + 3*y - 3)

Здесь определяется новая функция. Он использует «+, -, *, max» и другие функции для создания новой функции. Метод построения также основан на композиции функций.

Суммировать

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

Нейронная сеть

Нейронная сеть тоже функционирует. Подобно цифровым схемам и языкам программирования, он также состоит из простых функций. Базовыми единицами цифровых схем являются логические функции, такие как И, ИЛИ и НЕ. Базовыми единицами в языках программирования являются такие функции, как различные операторы, а основной единицей нейронных сетей являются нейроны.

Нейрон

Так что же такое нейрон? Биологический нейрон - это клетка с входными дендритами и выходными аксонами. А нейрон в нейронной сети - это искусственный нейрон, это тоже функция, точнее, это некая функция.


Количество входов нейронов может быть изменено, а это означает, что он представляет собой nn -элементную функцию f(x1,...,xn)f(x_1, ..., x_n), а nn может быть различным для разных нейроны.

Нейронная сеть

Нейроны объединяются друг с другом, образуя нейронную сеть. Как показано ниже:

Нейронная сеть состоит из трех нейронов (не считая входных нейронов):

  • f1(x1,...,xn)f_1(x_1, ..., x_n)
  • f2(x1,...,xn)f_2(x_1, ..., x_n)
  • f3(x1,x2)f_3(x_1, x_2)

Функция, представленная нейронной сетью:

f(x1,...,xn)=f3(f1(x1,...,xn),f2(x1,...,xn))f(x_1, ..., x_n) = f_3(f_1(x_1, ..., x_n), f_2(x_1, ..., x_n))

Суммировать

  1. Ядром цифровых схем (аппаратных средств) является функция, а его основными функциями являются функции логического элемента И ИЛИ НЕ;
  2. Ядро языков программирования (программное обеспечение) - это функция, а его основные функции - это различные операторские функции и встроенные функции (предоставляемые аппаратными средствами или составные);
  3. Ядро нейронных сетей - это тоже функция, а ее основные функции - нейроны;
  4. Новые функции могут быть построены путем композиции простых функций. Нейронные сети - это функции, построенные из функций нейронов с помощью операций композиции функций.

Вопрос

Какую именно функцию представляет нейрон?

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