Нейронная сеть - упражнение

В настоящее время я изучаю для себя концепцию нейронных сетей и работаю с очень хорошим PDF-файлом с сайта http://neuralnetworksanddeeplearning.com/chap1.html

Я также сделал несколько упражнений, но есть одно упражнение, которое я действительно не понимаю, по крайней мере, один шаг.

Задача: есть способ определить поразрядное представление цифры, добавив дополнительный уровень к трехуровневой сети выше. Дополнительный уровень преобразует выходные данные предыдущего уровня в двоичное представление, как показано на рисунке ниже. Найдите набор весов и смещений для нового выходного слоя. Предположим, что первые 3 слоя нейронов таковы, что правильный выход в третьем слое (т. Е. Старый выходной слой) имеет активацию не менее 0,99, а неправильные выходы имеют активацию менее 0,01. введите описание изображения здесь

Я также нашел решение, как видно на втором изображении  введите описание изображения здесь

Я понимаю, почему матрица должна иметь такую ​​форму, но мне очень трудно понять шаг, на котором пользователь вычисляет

0.99 + 3*0.01
4*0.01

Я действительно не понимаю этих двух шагов. Буду очень рад, если кто-нибудь поможет мне разобраться в этом расчете

Большое спасибо за помощь


person SMS    schedule 28.06.2019    source источник


Ответы (1)


Выход предыдущего слоя - 10x1 (x). Весовая матрица 4х10. Новый выходной слой будет 4x1. Сначала есть два предположения:

  • x равен 1 только в одной строке. xT = [1 0 0 0 0 0 0 0 0 0]. Если вы умножите этот вектор на матрицу W, вы получите yT = ​​[0 0 0 0], потому что в x есть только 1. После умножения на W это будет только 1, умноженный на 0-й столбец W, который равен нулям.

  • Второе предположение: что, если x больше не 1, вместо одного x может быть xT = [0,99 0,01 0,01 0,01 0,01 0,01 0,01 0,01 0,01 0,01]. И если вы выполните умножение x с первой строкой W, результат будет 0,05 (я считаю, что это опечатка). Когда xT = [0,01 0,99 0,01 0,01 0,01 0,01 0,01 0,01 0,01 0,01] после умножения на первую строку W результат будет 1,03. Так как:

0.01*0 + 0.99*1 + 0.01*0 + 0.01*1 + 0.01*0 + 0.01*1 + 0.01*0 + 0.01*1 + 0.01*0 + 0.01*1 = 1.03

Итак, я считаю, что это опечатка, потому что автор, вероятно, предполагает 4 единицы в первой строке W, что неверно, потому что их 5. Потому что, если в первой первой строке было 4 единицы, то на самом деле результаты будут 0,04 для 0,99 в первой строке x и 1,02 для 0,99 во второй строке x.

person viceriel    schedule 28.06.2019
comment
Ого, большое спасибо :) Это действительно здорово. - person SMS; 01.07.2019
comment
У меня есть дополнительный вопрос, на всякий случай. Я знаю, что уравнение для перцептрона: w x + b ‹= 0 -› 0 или w x + b ›0 --1 Я узнал, что b - это скаляр, смещение и W матрица весов и x вход, так что классическое умножение матрицы на вектор. Однако, если я умножу w и x, я получу вектор. Но тогда я не могу добавить смещение, поскольку это скаляр. Я неправильно понимаю эту концепцию или это не умножение матрицы на вектор? - person SMS; 01.07.2019
comment
Не уверен, что мы используем ту же терминологию. Первоначальный перцептрон был одним нейроном. У этого персептрона есть вектор веса (без матрицы, потому что только одна единица) и смещение (скаляр, потому что одна единица). Но если вы используете слои, в которых больше одной единицы, и вы используете смещение, то смещение может быть векторным с формой number_of_unitsx1, потому что каждый нейрон имеет смещение. number_of_unitsx1 также является формой умножения Wx, поэтому вы можете выполнить сложение между вектором смещения и результатом Wx. - person viceriel; 01.07.2019