Короче говоря, нейронная сеть - это функция: входные данные, выходной результат.
Возьмем распознавание рукописных цифр MNIST в качестве примера для определения соответствующей формы функции:
Это приложение нейронной сети начального уровня. Входными данными является изображение с низким разрешением (28 x 28) в оттенках серого, соответствующее функции с 784 входными переменными. Если это цветное изображение мегапикселя, соответствующие входные переменные достигнут 3 миллионов.
Видно, что нейронная сеть используется для решения некоторых сложных задач, и соответствующие функции также являются сложными. Реализация алгоритма заключается в построении соответствующей функции.
Как построить такую сложную функцию? Мы можем начать с простых функций. Самый простой и удачный пример - цифровые схемы.
Цифровые схемы являются краеугольным камнем компьютеров и построили наш огромный цифровой мир. Но его ядро состоит из логических вентилей И, ИЛИ и НЕ.
Что такое логический вентиль? На самом деле это функция. И это самые простые функции.
Логический вентиль | выражение | функциональная форма |
---|---|---|
AND ворота | ||
OR ворота | ||
NOT ворота |
NOT изображение ворот (используйте 0 дляи 1 для)
AND изображение ворот
**OR изображение ворот
Комбинируйте простые логические вентили, чтобы получить более мощные функции.
Создайте новую бинарную функцию:
Постройте многомерную функцию:
Комбинируя простые функции логических вентилей, можно создавать новые логические функции. Включая такие операции, как сложение, вычитание, умножение и деление 32-битных целых чисел, а также операции 32-битных типов с плавающей запятой одинарной точности и т. Д.
Давайте снова посмотрим на языки программирования. Возьмите Python в качестве примера, посмотрите на элементы в Python.
Имя | Символ | Функция |
---|---|---|
Логические операторы | and or not | Функции двоичной и унарной логики |
Арифметические операторы | +, -, *, /,%, **, // | Бинарные функции |
Операторы сравнения | ==, !=, >, <, >=, <= | Бинарные функции |
... |
На примере оператора сложения чисел с плавающей запятой (+) изображение функции выглядит следующим образом:
Вы можете определять свои собственные функции в Python:
def f(x, y): return max(0, 2*x + 3*y - 3)
Здесь определяется новая функция. Он использует «+, -, *, max» и другие функции для создания новой функции. Метод построения также основан на композиции функций.
В языках программирования функции есть повсюду. Комбинируя базовые функции, можно создавать новые функции и получать новые алгоритмы.
Нейронная сеть тоже функционирует. Подобно цифровым схемам и языкам программирования, он также состоит из простых функций. Базовыми единицами цифровых схем являются логические функции, такие как И, ИЛИ и НЕ. Базовыми единицами в языках программирования являются такие функции, как различные операторы, а основной единицей нейронных сетей являются нейроны.
Так что же такое нейрон? Биологический нейрон - это клетка с входными дендритами и выходными аксонами. А нейрон в нейронной сети - это искусственный нейрон, это тоже функция, точнее, это некая функция.
Количество входов нейронов может быть изменено, а это означает, что он представляет собой -элементную функцию , а может быть различным для разных нейроны.
Нейроны объединяются друг с другом, образуя нейронную сеть. Как показано ниже:
Нейронная сеть состоит из трех нейронов (не считая входных нейронов):
Функция, представленная нейронной сетью:
Недостаточно просто знать, что это функция -элемент. Все основные элементы логических элементов И, ИЛИ и НЕ в цифровых схемах составляют таблицу истинности и рисуют рисунок, но как насчет нейрона?