PixelRNN и PixelCNN — различия между версиями
Tklochkov (обсуждение | вклад) (Обновление описания) |
Tklochkov (обсуждение | вклад) (→Идея) |
||
| Строка 14: | Строка 14: | ||
=== Идея === | === Идея === | ||
| + | Т.к. утверждается, что значение текущего пикселя зависит от значений предыдущего, то уместно использовать [[:Рекуррентные_нейронные_сети|RNN]], а точнее [[Долгая краткосрочная память|LSTM]]. В ранних работах уже использовался данный подход, и для вычисление <tex>h_{ij}</tex> - скрытого состояния, необходимы были значения <tex>h_{i-1j}</tex>, <tex>h_{ij-1}</tex>, <tex>x_{ij}</tex>, т.е. для того, чтобы вычислить текущее скрытое состояние, нужно было подсчитать все предыдущие, что занимает достаточно много времени. | ||
| + | |||
| + | Авторы алгоритма модернизировали [[Долгая краткосрочная память|LSTM]] таким образом, чтобы стало возможным распараллеливание вычислений, что в итоге положительно сказывается на времени обучения модели. | ||
| + | |||
=== Архитектура === | === Архитектура === | ||
=== Плюсы и минусы === | === Плюсы и минусы === | ||
Версия 21:07, 22 марта 2020
PixelRNN/PixelCNN - алгоритмы машинного обучения, входящие в семейство авторегрессивных моделей. Используются для генерации и дополнения изображений. Алгоритмы были представлены в 2016 году компанией DeepMind и являются предшественниками алгоритма WaveNet, который используется в голосовом помощнике Google.
Основным преимуществом PixelRNN/PixelCNN является уменьшение времени обучения, по сравнению с наивными способами попиксельной генерации изображений.
Содержание
Идея
Пусть дано черно-белое изображение размером . Построчно преобразуем картинку в вектор , соединяя конец текущей строки с началом следующей. В таком представлении изображения можно предположить, что значение любого пикселя может зависеть от значений предыдущих пикселей .
Тогда значение пикселя можно выразить через условную вероятность , и, используя цепное правило для вероятностей, оценка совместного распределения всех пикселей будет записываться в следующем виде: .
Задача алгоритма - восстановить данное распределение. Учитывая тот факт, что любой пиксель принимает значение , необходимо восстановить лишь дискретное распределение.
PixelRNN
Идея
Т.к. утверждается, что значение текущего пикселя зависит от значений предыдущего, то уместно использовать RNN, а точнее LSTM. В ранних работах уже использовался данный подход, и для вычисление - скрытого состояния, необходимы были значения , , , т.е. для того, чтобы вычислить текущее скрытое состояние, нужно было подсчитать все предыдущие, что занимает достаточно много времени.
Авторы алгоритма модернизировали LSTM таким образом, чтобы стало возможным распараллеливание вычислений, что в итоге положительно сказывается на времени обучения модели.