запишу, пока не забыл
Jun. 14th, 2018 07:47 pmСлушал сегодня Нати Сребро про нейронные сети и их тайну. По мотивам этой статьи, частично - этой.
Прекрасная постановка вопроса, потом результаты - но они пока очень сырые, для сферического коня в вакууме все сходится, как это обобщить на продолговатую лошадь - ну.. направление в целом понятно, ясно, что суть примерно та же.
Фишка такая. Берем глубокую нейронную сеть, тренируем на данных. Скажем, миллион данных. Грубо говоря, чем больше параметров в сети, тем меньше ошибка. Когда их, скажем, миллион (ну, не совсем миллион, но допустим), ошибка обнуляется. Грубо говоря, у системы уравнений появляется решение. Если мы еще увеличиваем количество параметров, у нее появляеся чертова уйма решений. По всем теориям, если мы применим ту же сеть к другим данным, ошибка должна увеличиваться (при увеличении количества параметров). А она уменьшается. Все знают, что в нейронных сетяз можно взять миллион данных на сто миллионов параметров - и никакого overfitting.
Вопрос, почему так получается. Ответ: существует действительно чертова уйма решений (глобальных минимумов функции ошибки). Почти все из них - плохие, т.е. на тест-данных ошибка большая. А вот именно то, к которому процесс сходится - хорошее. Откуда же такое везение? Ответ: от gradient descent (на самом -то деле есть еще dropout, batch normalization. наказание за L2 коэффициентов, но их он не умеет учитывать). Дальше разбирает игрушечные задачки типа линейной сети или нелинейной, но каждый нейрон связан только с одним из предыдущего слоя и показывает, что в случае линейно разделимых данных gradient descent сходится к решению с maximal margin (т.е. генерализируется на новые данные лучшим образом). Дальше он даже вводит свою меру сложности сети, но это еще очень сыро.В общем, мне очень понравилось. Обычно на вопрос "а как же там с VC-dimension?" слышишь глубокомысленное "для этого у нас dropout есть - все будет в порядке" (а иногда: "ты че, бля! работает - не трогай!"), а тут - становится потихоньку понятно, почему же оно действительно работает.
Прекрасная постановка вопроса, потом результаты - но они пока очень сырые, для сферического коня в вакууме все сходится, как это обобщить на продолговатую лошадь - ну.. направление в целом понятно, ясно, что суть примерно та же.
Фишка такая. Берем глубокую нейронную сеть, тренируем на данных. Скажем, миллион данных. Грубо говоря, чем больше параметров в сети, тем меньше ошибка. Когда их, скажем, миллион (ну, не совсем миллион, но допустим), ошибка обнуляется. Грубо говоря, у системы уравнений появляется решение. Если мы еще увеличиваем количество параметров, у нее появляеся чертова уйма решений. По всем теориям, если мы применим ту же сеть к другим данным, ошибка должна увеличиваться (при увеличении количества параметров). А она уменьшается. Все знают, что в нейронных сетяз можно взять миллион данных на сто миллионов параметров - и никакого overfitting.
Вопрос, почему так получается. Ответ: существует действительно чертова уйма решений (глобальных минимумов функции ошибки). Почти все из них - плохие, т.е. на тест-данных ошибка большая. А вот именно то, к которому процесс сходится - хорошее. Откуда же такое везение? Ответ: от gradient descent (на самом -то деле есть еще dropout, batch normalization. наказание за L2 коэффициентов, но их он не умеет учитывать). Дальше разбирает игрушечные задачки типа линейной сети или нелинейной, но каждый нейрон связан только с одним из предыдущего слоя и показывает, что в случае линейно разделимых данных gradient descent сходится к решению с maximal margin (т.е. генерализируется на новые данные лучшим образом). Дальше он даже вводит свою меру сложности сети, но это еще очень сыро.В общем, мне очень понравилось. Обычно на вопрос "а как же там с VC-dimension?" слышишь глубокомысленное "для этого у нас dropout есть - все будет в порядке" (а иногда: "ты че, бля! работает - не трогай!"), а тут - становится потихоньку понятно, почему же оно действительно работает.