Нейронные сети и биг-о - PullRequest
       31

Нейронные сети и биг-о

0 голосов
/ 19 декабря 2018

Мне пришлось выполнить домашнее задание ниже.Я потерял все баллы за этот вопрос, потому что я даже не знал, с чего начать.Честно говоря, нас этому не учили.Я не получил отзывов об этой домашней работе, но я действительно хочу узнать, как это понять.Может кто-нибудь дать мне знать, с чего начать?Я очень расстроен, что мне не помогает мой профессор.Все, что я хочу сделать, это научиться чему-то.Я, черт возьми, гуглил это и не смог найти ничего, что помогло бы.

Предположим, у меня есть тренировочный набор из m точек данных с n функциями.Предположим далее, что я использую нейронную сеть с h скрытыми узлами для изучения этих данных, и что для завершения backprop требуются эпохи.Ответьте на каждый из следующих вопросов в формате Big-O.(например, O (m ^ 2n ^ 5 / h).

a. Сколько памяти необходимо для хранения этой нейронной сети, при условии, что каждая функция в наборе данных соответствует входному узлу? b. Сколько временинужно для обучения такого классификатора нейронной сети? C. Сколько времени нужно, чтобы определить класс контрольной точки после завершения обучения?

1 Ответ

0 голосов
/ 19 декабря 2018

Позвольте мне дать некоторые основные рекомендации, чтобы вы начали.Вы должны быть в состоянии выполнить домашнее задание.

Предположим, у нас есть нейронная сеть с n входами, скрытым слоем h нейронов и m выходов.Всего у нас есть много нейронов:

nbNeurons = h + m.

Теперь объем памяти, который занимает нейрон, равен O(w), где w - количество входов, которые получает нейрон.Причина в том, что нейрон имеет один вес на вход плюс некоторую дополнительную информацию, такую ​​как bias, learning rate, output, error.Поскольку все они ограничены константой, объем памяти, требуемый одним нейроном, пропорционален количеству весов, т. Е. Входам.

В скрытом слое имеется h нейронов с n входами в каждом, поэтомуему нужно h*O(n) единиц памяти.Выходной слой имеет m нейронов с h входами каждый, следовательно, m*O(h).Таким образом,

memory = h*O(n) + m*O(h) = O(h*n) + O(m*h) = O((n+m)*h)

Питание нейрона с k входами требует k умножений плюс k+1 сложений + 1 оценки сигмовидной (или подобной) функции.Это явно пропорционально k и, следовательно, O(k).

Питание нашей сети требует подачи h скрытых нейронов с n входами каждый, следовательно, h*O(n) плюс подача m выходных нейронов с h входов каждый, m*O(h).Итак,

feed time = h*O(n) + m*O(h) = O((n+m)*h)

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

...