Как стать автором
Обновить
38
0
Александр @M00nL1ght

Lead iOS engineer / Machine learning engineer

Отправить сообщение
Не смог удержаться и не оставить это тут :)

image

А если по делу, то, честно говоря, вообще не понял о чем статья.
Ну если уж на то пошло в TensorFlow все встроенные методы оптимизации тоже блэкбоксы, для обучения сети с использованием RMSProp или adaptive moment estimation (Adam) даже не требуется понимания принципа их работы. В Theano на уровне просто включить, в принципе, ни один метод оптимизации работать не будет, просто потому, что их там нет. Надо или писать самому или искать чужую реализацию и разбираться с ней.
Vanishing gradients это все таки немного другая проблема. HFO это скорее другой взгляд на поверхность ошибки, собственно как и все методы второго порядка.
А в целом, да, HFO это экспериментальный метод, который позволяет использовать плюсы метода Ньютона и до сих пор требует тщательного исследования.
Естественно, так как GD довольно хорошо изученный и простой метод, в промышленных масштабах он и его модификации остаются в приоритете.
В Theano и GD не включен как это сделано в TF. Особенность Theano в том, что там весь граф вычислений надо прописывать самому, что делает ее более гибкой для исследовательских целей, но и вероятность ошибки конечно намного больше. Там нет таких классов как AdamOptimizer, GradientDescentOptimizer и тд. TF же больше подходит для использования в проде (много методов работают из коробки и не надо заморачиваться над вопросом их реализации).
Отвечу сначала на второй вопрос: для задачи с XOR это и есть как вы выразились «чистый» GD так как подавался весь датасет сразу (все 4 примера), для задачи с MNIST использовался mini batch GD, а не SGD, потому-что подавалась некоторая часть (mini batch) примеров, а не каждый по отдельности как это делается в случае SGD.
Да HF довольно хороший метод оптимизации, но есть некоторые особенности. Он довольно сложный в реализации и это его основная проблема. Из-за своей сложности требуется очень аккуратно за всем следить, иначе может возникнуть численная нестабильность. Плюс на данный момент особенность TensorFlow не позволяет реализовать его, так сказать, на нативном уровне для всех типов сетей. До не давнего времени на GitHub висел issue на его имплементацию, сейчас она закрыта, но люди просят возобновить.
Помимо этого существуют варианты HF, сделанные с помощью Theano или просто numpy + pycuda и они довольно хорошо работают. В общем вопрос стабильной и аккуратной реализации данного метода на TensorFlow для работы «из коробки» с нативной поддержкой различных типов сетей остается открытым.
В шестой формуле, да это число шагов самоорганизации, соответственно на 1000 шаге сигма всегда будет останавливаться на значении 1.

Константу minlr можно определить в __init__ только из-за удобства. Место определения не будет влиять на скорость выполнения. Это особенность TensorFlow, training_op определяется до цикла и константы так же инициализируются до основного цикла. (код функции def training_op(self) выполняется всего один раз).

У меня TensorFlow на это не ругается:
lr_summary = tf.summary.scalar('Learning rate', lr)

Вообще этот код служит для записи данных по переменной параметра скорости обучения в tensorboard, его можно убрать, на обучения он не влияет.

Размер решетки — это и есть число нейронов. То есть если dim=10, то решетка будет 10Х10 = 100 нейронов. В массиве self.positions хранятся 2d координаты нейронов.
#self.postions.shape = (100, 2), для dim = 10
#self.positions => [[0,1],[0,2], ..., [9,8], [9,9]


self.dim.eval()

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность