Но зачем упоминать CNN в заголовке статьи в которой нет CNN?
>Свёрточное ядро представляет из себя обычно -1 и 1, обозначающие черные и белые цвета соответственно, либо на оборот.
Ну строго говоря не обязательно (для случая с CNN), веса же в процессе обучения получаются, по большому счету они могут быть любыми
Я к сожалению не особо разбираюсь в Theano от слова совсем.
Однако чуть погуглив наткнулся на это
http://deeplearning.net/software/theano/library/sandbox/cuda/dnn.html
>The recently added Theano flag dnn.enabled allows to change the default behavior to force it or disable it. Older Theano version do not support this flag. To get an error when cuDNN can not be used with them, use this flag: optimizer_including=cudnn
Прикольно, не знал. Честно говоря, я так и не освоил преобразования Фурье и всякие DFT/FFT
Собственно еще одна причина думать что с оригинальным функционалом что-то не так
Посмотрел во вторую статью из списка источников, там вроде есть Total variation term (2*lambda*||x||_TV который говорит что градиент по картинке должен быть примерно одинаков, но допускаются разрывы), если его подставить в первую формулу, то все несколько проясняется. Но хотелось бы увидеть все это в данной статье
Есть еще несколько вопросов. Не сочтите за грубость, просто мне интересны численные оптимизации.
В оригинальной постановке задачи (|| y — Ax ||_2) если || x ||_2 = sum_i ((x_i)^2), то вся задача это просто МНК который выливается в решение очень сильно разреженной СЛАУ. Я не большой специалист, но мне кажется что что-нибудь из семейства сопряженных градиентов на GPU должно было показать себя очень хорошо по части производительности.
Хотелось бы увидеть обоснование второго «улучшенного» функционала. Если со слагаемым (||alpha * ( x — x_k) ||^2) все более менее ясно (просим чтобы текущее решение было поближе к предыдущему), то с термом -A^t*A все совсем не понятно (откуда он взялся, зачем нужен и т.д.)
И да,
>Задача значительно проще
Вот это вот совсем не очевидно. Было бы здорово рассказать чем проще
Возможно пропустил, но soft thresholding подразумевает что у нас есть L1 слагаемое в функционале, а в формулах вроде только L2
> Добавляя на каждом шаге разницу между результатом двух предыдущих итераций, мы увеличиваем сходимость алгоритма до квадратичной
Было бы здорово объяснить почему
По поводу второй задачи
> q=(k1-10)^2+(k2+15)^2+(k3+10*k4-0.06)^2+
>она равна сумме квадратов от неких линейных функций
>У функции много локальных оптимумов, но она гладкая.
Это же просто что-то в духе МНК. И тут либо есть глобальный минимум, либо бесконечное число равнозначных минимумов (зависит от того, SPD ли матрица вторых производных, или же semi positive definite).
Такой же как и любой интерпретируемый язык — если удается сводить обработку к редким (относительно) вызовам сишных функций, то все хорошо, в противном случае — не очень
>Но есть ведь и другие способы приближения нелинейных функций. Хоть в ряд Тейлора её разложить, или в Фурье.
Как правило у вас нет почти никакой информации о ф-ии которую вы хотите аппроксимировать, только ее значения в некоторых точках. В этих условиях взять туже производную для ряда Тейлора несколько проблематично.
>Свёрточное ядро представляет из себя обычно -1 и 1, обозначающие черные и белые цвета соответственно, либо на оборот.
Ну строго говоря не обязательно (для случая с CNN), веса же в процессе обучения получаются, по большому счету они могут быть любыми
Однако чуть погуглив наткнулся на это
http://deeplearning.net/software/theano/library/sandbox/cuda/dnn.html
>The recently added Theano flag dnn.enabled allows to change the default behavior to force it or disable it. Older Theano version do not support this flag. To get an error when cuDNN can not be used with them, use this flag: optimizer_including=cudnn
Собственно еще одна причина думать что с оригинальным функционалом что-то не так
Если можно смаз описать сверткой, то можно попробовать ее подсунуть в этот алгоритм да. Иначе — не знаю, надо смотреть статьи.
А так много что используют, к примеру,размытие по гауссу
В оригинальной постановке задачи (|| y — Ax ||_2) если || x ||_2 = sum_i ((x_i)^2), то вся задача это просто МНК который выливается в решение очень сильно разреженной СЛАУ. Я не большой специалист, но мне кажется что что-нибудь из семейства сопряженных градиентов на GPU должно было показать себя очень хорошо по части производительности.
Хотелось бы увидеть обоснование второго «улучшенного» функционала. Если со слагаемым (||alpha * ( x — x_k) ||^2) все более менее ясно (просим чтобы текущее решение было поближе к предыдущему), то с термом -A^t*A все совсем не понятно (откуда он взялся, зачем нужен и т.д.)
И да,
>Задача значительно проще
Вот это вот совсем не очевидно. Было бы здорово рассказать чем проще
> Добавляя на каждом шаге разницу между результатом двух предыдущих итераций, мы увеличиваем сходимость алгоритма до квадратичной
Было бы здорово объяснить почему
> q=(k1-10)^2+(k2+15)^2+(k3+10*k4-0.06)^2+
>она равна сумме квадратов от неких линейных функций
>У функции много локальных оптимумов, но она гладкая.
Это же просто что-то в духе МНК. И тут либо есть глобальный минимум, либо бесконечное число равнозначных минимумов (зависит от того, SPD ли матрица вторых производных, или же semi positive definite).
Я неправ?
Как правило у вас нет почти никакой информации о ф-ии которую вы хотите аппроксимировать, только ее значения в некоторых точках. В этих условиях взять туже производную для ряда Тейлора несколько проблематично.