Pull to refresh

Comments 38

Отличная мотивирующая статья, которая, надеюсь, сподвигнет многих копать в тех областях знаний, где, по мнению «великих и ужасных» ничего нового уже сделать нельзя, в следствии их закостенелости мышления.
Спасибо.
Нет таких областей по мнению «Великих и Ужасных». Есть такие области по мнению «Чванливых и Самодовольных».
Раскройте суть полустохастических алгоритмов и адаптивного изменения… Размера пачки для Mini-batch…

Подскажите, что на верхнем правом графике показано?
Вероятно вы слишком бегло проглядели статью, что там на правом графике там пояснено и дана ссылка на статью исчерпывающим образом разъясняющую мысль. Хитрые алгоритмы будут публиковаться позже, по мере готовности.
UFO just landed and posted this here
TL;DR — изобретать велосипеды нужно потому что.

Я не спорю с тезисом, но тему вы раскрыли чуть менее, чем полностью. Хорошим примером может быть, например, история, когда один интерн дома на коленке собрал сеть, которая побила гугловое распознавание речи. Про это было у Джефри Хинтона в AMA. А у вас просто тонкая настройка. Ну и цитата Стиви совсем про другое.
Поддерживаю, коллега.

Сам в виде хобби обучаю нейросети генетическими алгоритмами. Стохастика при творческом подходе позволяет выскакивать из локальных минимумов.

А сколько физического времени занимает у вас 500 эпох?
Я не мерил, если честно. Долго. Дело в том, что я пока экспериментирую с малюсенькими сетками и сильно разными архитектурами, поэтому по времени не оптимизировал. Простой градиентный спуск те последние кадры в видео шли через 180 секунд на одном процессоре, там по 1,5-2 тысячи эпох в кадре. Мой спуск со стохастикой кушает примерно в полтора — раза по времени (там два лишних умножения получается), значит на 500 эпох уйдёт минуты полторы. Отрисовка красивого кадра занимает в десяток раз больше, чем само обучение. :)

Несколько лет назад делал набросок статьи с черновым названием «Велосипедофобия», где думал изложить свое видение последствий слепого следования принципу Лапласа: «Любое приличное решение открытой проблемы автоматически признается оптимальным». Потом как-то забылось, до публикации не дошло. Спасибо за статью, полностью согласен с посылом — продвижение вперед требует регулярного пересмотра и переосмысления основ и работы над ошибками.
не сумел прогуглить оригинал фразы. Можно какой-нибудь ссылочкой поделиться как она выглядела от рождения?
Увы. Это вольный перефраз высказывания, запавшего в память из книги (кажется, по реинжинирингу), которую читал давным-давно, но забыл и авторов, и название. Однако высказывание действительно правильное, по крайней мере если опираться на мой скромный опыт.
Мне, тем не менее, не очень понятны выводы. Вы сравнили оптимизацию градиентным (кстати, стохастическим градиентным, если речь идет о последовательном обучении по точкам выборки) с некоторым алгоритмом со стохастической вариацией, что, возможно, уменьшит шанс попадания в локальный минимум функционала качества, и получили лучший результат на конкретной тестовой задаче. Какой вывод Вы из этого сделали и какие положения предлагаете пересмотреть?
Поддерживаю вопрос в части конкретной тестовой задачи. Не очевидно, что результат удастся повторить на другой тестовой задаче, с иными параметрами тестового изображения.
Во-первых, я призываю отказываться не от каких то конкретных устарелостей, а искать, и отказываться от всего, если у вас есть идея как его попробовать изменить. В конкретно рассмотренных мною примерах:

1-ый. Оптимизация градиентным спуском Mini-Batch тоесть элемент стохастики в нём действительно есть, но маленький. Кроме того расспрашивая разных специалистов, в том числе преподающих это дело в международных университетах, я убедился, что никто из них не знает как размер пачки для минибатча влияет на обучение. о том, что он влияет больше, чем скорость в большинстве случаев они не догадывались. Поэтому первый пример — это решение «из коробки», которое вы получите вместе со стандартной библиотекой.

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

3-ий. Пример в котором я отказываюсь от слоёв в структуре перцептрона и получаю гораздо лучший результат. Это сделать это можно множеством разных способов. Я сделал одним способом и у меня получилось хорошо. Вы можете сделать десятком других способов и у вас, возможно получится на много лучше. Одна коммерческая контора работающая с большими данными на конференции увидела эту идею с небольшой иллюстрацией, и как я выяснил сегодня на встрече, они уже начали делать свои бесслойные перцептроны, причём не с такой как у меня топологией. Они будут экспериментировать. Это будет хорошо.

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

В ближайшее время планирую натравить свои сетки на Ирисы и другие эталонные задачи и надеюсь на хороший результат.
1. Думаю, что они отвечали Вам примерно следующее: «Нельзя заранее сказать, какой размер обучающей выборки необходим для достижения достаточного качества обучения, поскольку эффективность оптимизирующего процесса зависит от формы оптимизируемого функционала в пространстве синаптических весов сети, которая, в свою очередь, уникальна для каждой регрессионной задачи». Для функций, обладающих сложным рельефом с большим количеством локальных минимумов при использовании методов оптимизации первого порядка, к которым относятся градиентный спуск, обратное распространение и т.п., вероятность попадания в один из таких минимумов почти 100%, и для уменьшения этого шанса прибегают к различным хитростям, в частности, добавляют элементы стохастики. Это известный аспект, актуальный для всей теории численной оптимизации.
2. Оценивая качество алгоритма, недостаточно показать его эффективность на конкретном примере. Для того же градиентного спуска исследованы случаи, когда он гарантированно приводит в точку локального оптимума, а когда не приводит ни к какому вменяемому результату — тем самым давая возможность исследователю осмысленно интерпретировать результаты и менять свободные параметры алгоритма. При его модификации точно так же исследуют, как изменения параметров влияют на устойчивость и сходимость оптимизирующего процесса, поскольку, как говорят буржуи, «не бывает бесплатных завтраков». Я понимаю, что Ваше исследование носит экспериментальный характер, но чтобы к нему отнеслись серьезно, не плохо бы как привести сам алгоритм обучения, так и показать, что он действительно (гарантированно или хотя бы с допустимой вероятностью) приводит к нахождению удовлетворительного решения на любой задаче некоторой природы. В противном случае на утверждение, что Ваш алгоритм позволяет сильно сократить требуемый объем выборки Вам с полным основанием могут сказать: «Просто повезло в данном конкретном случае — и всё».
3. Увеличивая количество синаптических связей Вы вполне очевидным образом увеличиваете возможности структуры к обучению. Другой вопрос — это количество примеров, достаточное для тонкой настройки синаптических весов, поскольку чем их больше — тем больше пространство поиска, соответственно, задача оптимизации вычислительно сложнее. Учтите, что в практических приложениях размер обучающей выборки всегда сильно ограничен, редко достаточен и почти наверняка имеющиеся данные сильно зашумлены. Чтобы не попасть в капкан проблемы переобучения зачастую приходится находить компромисс между обучающей способностью сети и качеством обучения. Сети прямого распространения как раз являются таким компромиссным решением — не всегда хорошим, но для которого по крайней мере доказаны условия и ограничения, при которых достигается достаточное качество обучения. Вы, разумеется, вольны менять топологию сети — но ожидать, что при этом Вы получите стабильное улучшение по всем значимым характеристикам было бы самонадеенно, и уж точно такое утверждение должно быть доказано или хотя бы обоснованно.

В общем, надеюсь увидеть Ваши сети, алгоритмы и более показательные результаты их тестирования.
1) Нет, они удивлённо хлопали глазами, когда я им на своём планшете в реальном времени показывал как меняется график ошибки при изменении размеров пачки (не выборки) на лету. Я менял не размер обучающей выборки, а размер одной пачки mini-batch извлекаемой из обучающей выборки. Потому что все привыкли думать что важен размер выборки, и почти не задумываются о роли подвыборки. В этом сама суть поиска нового — не пытаться быть умнее величайших математиков прошлого, а менять то, что не пытались менять величайшие математики прошлого.

В вашем примере предполагаемого зашито сразу несколько ошибочных предположений, которые я проверил и выяснилось, что все они легко обходимы:
Во-первых эффективность обучения можно оценивать не по поведению графика ошибки, где есть сложности, а по поведению диаграммы положения сеты в фазовом пространстве. Эта диаграма, которую я придумал, возможно не первый, удивительным образом как раз и показывает «формы оптимизируемого функционала в пространстве синаптических весов сети». Подробнее можно прочитать в моей статье, ссылка на которую приведена выше.
Во-вторых, ошибочно вот это суждение: «при использовании методов оптимизации первого порядка, к которым относятся градиентный спуск». На самом деле алгоритмом первого порядка градиентный спуск является только при бесконечно-малой скорости или при использовании алгоритмов второго порядка на полных исходных данных, дающих спуск с оптимальной скоростью. Все стахостические алгоритмы, типа минибатча всегда перескакивают через локальные минимумы и ваш результат критически зависит от того, на сколько вы ловко и к месту это делаете. А дистанция «перескока» как раз и зависит от размеров пачки mini-batch. Ближайший локальный мнимум достич можно и легко, но никому не нужно.
В-третьих, «добавляют элементы стохастики. Это известный аспект, актуальный для всей теории численной оптимизации.» Стохастику можно добавлять очень по разному. Если вы добавите стохастику в виде слчайного колебаний, например, у вас получится хуже, чем если бы вы этого не делали, а между тем в численной теории оптимизации чаще всего делают именно так. Потому что методы придуманы давно и специфики сетей не учитывают.
2) См. выше.
3) «Увеличивая количество синаптических связей Вы вполне очевидным образом увеличиваете возможности структуры к обучению» — ещё одно неверное предположение. Вернее не всегда верное, если покопаться внимательнее. Если у сети достаточно много связей она очень-очень часто вместо того чтобы найти одно хорошее обобщение предметной области находит сумму нескольких плохих. При этом, как доказали ещё в 1991-ом году замена одного хорошего глубокого обобщения на несколько попроще с меньшим количеством слоёв ведёт к экспоненциальному росту количества необходимых ресурсов.
3) Или вот вы говорите про проблему переобучения. Но если повнимательнее покопаться в вопросе можно обнаружить что есть две разные проблемы, одна — переобучения, а вторая — суммы плохих обобщений. Первую обычно можно увидеть потому что ошибка хорошая на учебной выборке, но может быть плохой на другой, а вторую проблему можно заметить потому что ошибка хорошая на учебной выборке но может быть плохой на другой. Решаются проблемы по разному при этом. Вместо того чтобы молча принимать этот факт потому что предками данная мудрость завещала я задумался, а можно ли придумать визуализацию, на которой эти проблемы будут хорошо отличаться. И оказывается есть такая визуализация.

В общем, мои алгоритмы вы наверняка ещё увидите, но статья не об этом, а о том, чтобы искать.
Чтож, хотелось бы, чтобы Вы привели фамилии тех, к кому Вы обращались. Вообще то, что при пакетном обучении содержание пакета должно удовлетворять критериям статистической выборки, то есть сохранять статистические свойства генеральной совокупности, есть база.
Порядок метода определяется порядком входящих в него производных. Параметр скорости, входящий в метод градиентного спуска, всего лишь определяет его дискретную природу — и тем не менее метод имеет первый порядок. При стремлении скорости обучения к нулю оптимизирующий процесс вырождается в непрерывный, который гарантированно приводит в точку локального минимума, но не реализуем алгоритмически, при конечном значении параметра, меньшем некоторого критического — в окрестность локального минимума, при большем — к расходимости оптимизирующего процесса.
Минибач не перескакивает гарантированно локальные минимумы. Данный метод фактически меняет исходную постановку задачи — производится оптимизация не в смысле исходной среднеквадратической ошибки, а в смысле «усредненной по пакетам» среднеквадратической ошибки. Градиент, вычисляемый по пакету, есть градиент по другой, новой поверхности ошибки — не той, которую Вы изначально описывали. В теории она оказывается более гладкой по сравнению с исходной, что и позволяет «пробегать» локальные минимумы с низкими стенками. Однако чтобы такое сглаживание не нарушало требования близости получаемого функционала качества к исходному, пакеты (минибачи) должны, во-первых, сохранять статистические свойства пространства признаков, и во-вторых, иметь размер, достаточный для достижения требуемого уровня гладкости, но при этом не разрушающий важные топологические свойства исходной поверхности. Это напрямую следует из анализа метода. Если те, к кому Вы обращались, этого не понимают — меняйте консультантов.

> методы придуманы давно и специфики сетей не учитывают

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

3) А я не говорил, что просто увеличением количества свободных параметров Вы гарантированно добьетесь большей потенциальной точности обучения — это зависит от VC-измерения результирующей машины. Как раз получение плохого обобщения может быть связано с тем, что реализуемое множество аппроксимаций не достаточно богато и не позволяет с достаточной точностью спроецировать на него аппроксимируемую функцию. В этом-то и проблема: меняя топологию сети произвольным образом, Вы тем самым меняете множество реализуемых обучаемой машиной аппроксимаций, притом совершенно неизвестным образом — Вы же не уточняете причин изменения топологии, не делаете анализа последствий и не говорите, как и почему меняете алгоритм обучения. В связи с этим совершенно непонятно, для какого класса задач такое изменение адекватно, а для какого приведет к сложно обнаружимым ошибкам. А в таких вопросах худшее, что может быть — это плавание в вопросах интерпретации результатов.
3.2) Это принципиально разные проблемы. Корень проблемы переобучения заключается в том, что используемые для обучения данные имеют шум, а выборочные статистические характеристики лишь приблизительно соответствуют характеристикам генеральной совокупности. В результате оказывается, что Вам на самом деле нужно решать оптимизационную задачу, закладывая в нее наличие этих погрешностей, что и отличает регрессионную задачу от обычной оптимизационной. Получается, что нужно либо менять формулировку задачи, форму целевого функционала, очень сильно усложняя тем самым задачу, либо закладывать в оптимизирующий процесс некоторые априорные сведения о свойствах подходящих Вам окрестностей минимума исходного, простого функционала. Это зачастую делается эмпирически и иногда — включая в алгоритм оптимизации некоторые стохастические элементы.
Вторая (суммы плохих обобщений) связана с тем, что взятаю обучаемая машина в принципе не может достаточно точно восстановить Вашу функцию — обучаемая машина просто не реализует достаточно точное приближение. Здесь максимум, что Вы можете сделать — найти лучшее из худших, что чаще всего чрезвычайно трудоёмко, либо выбрать другой класс обучаемых машин. Это не «предками данная мудрость», а вполне четко описанная и исследованная еще в ранних работах проблема, и причина пробуксовки в этом вопросе отнюдь не в недостатке теории, а в том, что инженеру, не владеющему в полной мере теоретическими тонкостями, действительно довольно сложно отличить эти два случая. Если Ваш метод визуализации позволит это сделать — будет очень круто, но из Ваших публикаций это не очевидно.

Повторюсь, я согласен с Вашим посылом, в любой области есть принципы и методы, которые приняты не потому, что у них есть достаточное основание, а просто «потому, что». Типа, «работает же». Но не надо думать, что исследователи не понимали, что делали, отдавая предпочтение тем или иным подходам и гипотезам. Думаю, не бесполезно для Вас было бы попытаться также понять их мотивы и только тогда судить о том, были ли их выводы ошибочны.
Например, ГОЛОВКО В. А. Брестский государственный технический университет, который на нейроинформатике школе-семинаре показывал как он учит глубокие сети.

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

Это есть Стереотип. Он появился потому, что хотелось учить на подвыборке так, как будто учите на полной выборке. В этом был мотив тех, кто вписал это в базу, я его понимаю. Второй мотив, касательно сглаживания я разберу в следующем абзаце. А теперь давайте подумаем: Возьмём стохастический градиентный спуск, когда изменение весов делается после каждого шага. Этот метод работает? Да, работает, это экспериментальный факт. Только скорость нужно сильно меньше взять. Но это по сути своей то же самое, что учить пачками по 1 примеру. Теперь давайте возьмём пачки по 2 примера? Будет работать? Будет. Возьмём пачки по три. Будет? Будет. На самом деле успешным алгоритмом является алгоритм обучения при любом размере пачки между 0 и максимумом, если решить вопрос подбора скорости. Получается, что есть целое семейство алгоритмов, в которых положительные и отрицательные качества стохастических и положительные и отрицательные качества алгоритмов на полных данных постепенно меняются от одного края к другому. А если ещё поизучать их и понять, что на разных этапах роль этих положительных и отрицательных качеств сильно разная, то вообще можно догадаться как я рисую такие красивые картинки. :)
Судя по тому, как упорно вы придерживаетесь представлений о том, что может быть или так или по другому, вам такие полустахостические алгоритмы могут показать много нового и интересного. А если такой стереотип является широко распространённым, то я теперь знаю какой доклад надо сделать для следующей конференции. Только на разных типовых задачках демок наделать. :)

Хотя конечно встречаются задачи и/или способы представления входных данных, на которых стохастический градиентный спуск не работает вообще, там и эта логика может работать плохо. Но что-то мне подсказывает, что ещё Розенблатт доказал, что если у вас есть достаточно времени, то таких задач не бывает.

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

Вполне возможно, например, что фича не в сглаживании пространства, а в том, что препятствия в пространстве очень часто носят не характер пиков и ям, а характер гребней и оврагов. Это, кстати, ещё в 2010-ом году показывали ребята, придумавшие совмещать метод сопряжённых градиентов с алгоритмами второго порядка: www.icml2010.org/papers/458.pdf, они это называли pathological
curvature.
А если так, то фича минибатча, весьма вероятно, в том, что на любой подвыборке эти гребни и овраги располагаются под другими углами, чем на полной выборке, и тогда прохождение по подвыборке позволяет преодолевать гребни полной выборки. Как это проверить? Например визуализировать движение сети из одной и той же сети на полных данных и на паре разных подвыборок. Если сеть пойдёт по дну оврага, и дно это будет распологаться под разными углами мы выиграли ещё один доклад на конференцию. :) Попробую ка я, пожалуй, накропать вечером демок на этот счёт.

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

Я могу точно также подвергать сомнению некоторые другие тезисы в вашем тексте, потому что я вижу как минимум ещё парочку стереотипов, которые не выдержали столкновения с экспериментом. Но гораздо интереснее будет если Вы возьмёте какой-нибудь абзац своего текста и попытаетесь предпринять то же самое что я: Усомниться в ограничении, и попытаться понять, что получится если считать его не строгим. Например вот этот ваш абзац, про который котором я точно знаю, что в нём содержится стереотип. А если вы попытаетесь его самостоятельно искать, то возможно найдёте не тот, который нашёл я и это будет на много круче. Напишем совместную статью на конференцию:
«Как раз получение плохого обобщения может быть связано с тем, что реализуемое множество аппроксимаций не достаточно богато и не позволяет с достаточной точностью спроецировать на него аппроксимируемую функцию.»
Этот, как Вы говорите, стереотип базируется на теории статистического обучения. Я вовсе не пытаюсь лишить Вас права подобные положения оспаривать — но Вы ведь пытаетесь опровергнуть аналитические рассуждения, показывая примеры, которые, строго говоря, их вовсе не опровергают, и делаете общие заключения из конкретных примеров, рассуждая по типу «здесь мы видим, что стало лучше, а здесь — что хуже». Зависит ли результат минибача от выбора разбиения обучающей выборки? Разумеется, это известно — и Вы это демонстрируете. Есть ли явная зависимость качества обучения от размера подвыборок и от искажения их выборочных статистик, характерная для некоторого класса задач, а не для конкретного примера? Не очевидно. Но Вы пытаетесь, тем не менее, исследуя пример, а не задачу, дать вменяемый ответ на этот вопрос. При этом по какой-то причине считаете, что улучшение или ухудшение результата обучения есть особенность алгоритма, полностью игнорируя особенности самой задачи, а посему расширение этого вывода на всё исследуемую область совершенно не обосновано.
Зато если допустить выполнение некоторых дополнительных требований, типа статистической корректности подвыборки, тогда задача поддается аналитическому исследованию, устанавливаются свойства алгоритма обучения и условия его работы. И это вовсе не стереотип, а допущения, при которых выводы остаются справедливыми для широкого класса типовых задач. Да, эти допущения могут быть избыточными и сделанные в их рамках выводы могут быть неверны при более широкой постановке задачи, а результаты могу быть улучшены. Но если слепо использовать декларируемый Вами подход — сделаем, визуализируем и посмотрим на результат, то есть эксперимент без аналитики, то максимум, что из этого можно получить — слабоформализованные эмпирические рекомендации, которые работают 50/50, что в истории науки уже неоднократно доказывалось.
Вы наврядли «увидите» сглаженную поверхность такой, как она есть, какую хитрость не используйте. В этом-то и фишка аналитического подхода — не нужно иметь геометрическую интерпретацию абстрактного объекта, чтобы его себе представить. И верность этих представлений контролируется необходимостью доказательства утверждений о наличии или отсутствии у исследуемого объекта некоторых свойств. Это защищает от таких упреков, как «понимаете, совершенно не факт, что это так на самом деле». Доказано = факт. Да, при ряде допущений, да, только в «узком смысле», но это — реальное, а не кажущееся свойство объекта. С другой стороны, то, что Ваша картинка что-то показывает — это еще не научный факт, который может претендовать на какую-либо общность, и это никак не защищает Вас от ошибок трактования результатов.

Выравнивание оврагов как раз и есть элемент сглаживания. Вы здесь только подтверждаете мои слова, и новизны в этом нет, поскольку, повторюсь — это следует из формулировки метода.

Эксперименты на тестовых задачах — это, конечно, всегда интересно, но попытайтесь подвести под них какую-нибудь аналитику. Только тогда Вы можете говорить о том, что получили какие-либо качественно новые результаты. Вот я Вам сейчас указал, что сделанный Вами вывод вполне вписывается в известные положения, хотя они, возможно, кем-то со временем забылись — и Вы это не смогли опровергнуть, только назвать это стереотипом.
И, если позволите, небольшое отсебятинское пожелание. Добавьте немного самокритики. С Вашей стороны будет ошибкой считать, что вступающие с Вами в критическую дискуссию люди — законченные консерваторы, запертые в своих стереотипах и не способные воспринять модерновые идеи. Обычно всё проще — идеи и результаты, кажущиеся Вам модерновыми и ломающими стандартные представления на поверку зачастую оказываются вполне себе вписывающимися в известные концепции. Хотите спорить с аналитиками — предоставьте им свою аналитику помимо экспериментальных данных.
Дело в том, что в науке очень часто встречаются случаи, когда способы доказательства предыдущих эпох когда задача была проще, оказываются бессильны при столкновении с задачами нового класса сложности и требования строго доказательства ничего кроме торможения изучения не дают. Самый подходящий пример — термодинамика или газодинамика в целом. В строгом механическом смысле из всей термодинамики доказать можно только несколько самых простых утверждений типа распределения Больцмана, да и то предпочтительно для идеального газа. Из-за этого даже некоторые законы термодинамики называются принципами.

Думаю здесь мы сталкиваемся с той же ситуацией — В результате строго доказать что-то удаётся только для самых вырожденных случаев. Например никто не может строго доказать, что предобучение глубоких сетей на автоэнкодерах или RMB улучшает результат, это можно только увидеть. Хотя половина прогресса последних полутора десятилетий основана именно на таких методах.

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

Я понимаю, что чтобы другие увидели то же самое, что вижу я, придётся показывать им это на множестве примеров, причём желательно тех, которые они раньше пытались решать своими способами. Но в этой статье я ставил перед собой немного другую задачу.
То, что в силу сложности возникающих математических задач решить их не прибегая к допущениям оказывается чрезвычайно сложно, если вообще возможно, не делает такие изыскания бессмысленными, и даже в машинном обучении, которое во многом является экспериментальной наукой, в отсутствии строгих доказательств прибегают к формулировкам принципов и гипотез. Без этого полученный результат просто нельзя распространить на хоть сколь-нибудь широкий класс задач. Если Вы заявите, что «это так», даже не попытавшись дать вменяемое, пусть не идеальное, но рациональное объяснение того, «почему это так», то веры Вашим словам будет не много. Ведь интерпретировать экспериментальные данные нужно не только с позиции «а мне кажется, что здесь очевидно просматривается...», как это делает, в частности, ряд финансовых аналитиков — и регулярно ошибаются, но и сточки зрения того, как эти данные согласуются с той или иной теорией. Если они находятся в противоречии с ней — великолепно, Вы, вероятно, нашли что-то новое. Если они не противоречат выводам теории, но не удовлетворяют допущениям теории — ещё лучше, у Вас есть шанс расширить ее границы. Если и то, и другое — вероятно, формулируя эксперимент, Вы недостаточно хорошо разбирались в предмете — и это тоже важный в первую очередь для Вас результат.
Дело в конечном счете не в количестве примеров и не в том, чтобы убедить ими ученую общественность. Скептики останутся, даже если Вы предъявите множество примеров — и я, вероятно, буду в их числе, пока кто-нибудь не приведет удовлетворительное объяснение. В конечном счете важно, чтобы инженер, который решает задачу огромной размерности за малое время был уверен, что не обладая Вашим опытом, не имея возможности сколь угодно долго экспериментировать с параметрами, отслеживать метание сети в фазовом пространстве — и желания смотреть на хитросплетения миллиардов миллиардов свободных параметров, он тем не менее мог быть уверен в том, что получит приемлемый результат за приемлемое время. Поэтому увидеть мало, нужно понять причины, иметь возможность интерпретировать и предсказывать результат — какой бы сложной ни была задача. Вы получили результат, который считаете лучше, чем получаемый стандартными инструментами, но не ответили на вопрос — а насколько этот результат переносим на другие задачи, интересные не только Вам? Будет ли результат столь же хорош на других задачах? И когда алгоритм провалится? Именно для ответа на эти вопросы прибегают к аналитическим исследованиям, поскольку для ответа на них экспериментальных данных уже недостаточно.
Пока что обучение глубоких сетей не является технологией с гарантированным результатом. Никто вам не скажет примините RBM к данным безо всякой подготовки и получите безусловно хороший результат. Странно ожидать что я вам тут сейчас в комментах открою тайну философского камня, с которой пока не справилось всё человечество. Если появятся алгоритмы такого уровня потебность в нас с вами отпадёт как в биологическом виде вообще. Но я уверен, что не так всё просто, сама постановка задачи неправильная и ограничивает ваши возможности извлечь из технологии пользу. Пока сильные ИИ не образуют собственную культуру и свои университеты любой алгоритм, гарантировано дающий результат не хуже определённого будет с разгромным счётом проигрывать алгоритму с которым повозился человек новой профессии — тренер искуственных интеллектов. Причём эта моя убеждённость основана на моих гипотезах. Но пока это нельзя ни подтвердить ни опровергнуть.

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

И лишь надеюсь, что мои картинки помогут людям искать свои собственные гипотезы и мысли.

Я грязью из-под шин плюю
В чужую эту колею.
Эй, вы, задние! Делай, как я.
Это значит — не надо за мной.
Колея эта — только моя!
Выбирайтесь своей колеей.
© Высоцкий
Ваш подход к визуализации действительно любопытен — в противном случае я бы не тратил время, вступая с Вами в дискуссию. Никто не требует от Вас вскрыть тайны искусственного интеллекта. Но давайте призывая к творческому подходу не плодить кустарщину и ответственно подходить к собственным экспериментам. В технических науках к измерениям, проведению и трактовке результатов эксперимента нужно подходить с большой ответственностью — иначе выводы, может быть правильные в частном случае для конкретного эксперимента, окажутся совершенно ошибочными в целом и ценность самого исследования будет помножена на ноль. Мы с Вами находимся в еще более опасном положении, поскольку у нас нет естественного ограничителя в виде законов физики, а значит больше пространство для маневра — но и пространство для ошибки. Вы можете думать, что такая «широта мышления» позволит Вам избавиться от стереотипов, что частично может быть и верно, но Вы таким образом просто наплодите и будите нести в массы свои собственные стереотипы. Вы, например, уже для себя разделили «достаточное» и «недостаточное» обобщение и рассуждаете в этих терминах — что я могу с полным основанием назвать Вашим персональным стереотипом, поскольку статистическое обучение как раз начинается с того, что ищется формальное определение понятий «хорошего» обобщения — без этого просто математику применить нельзя и все рассуждения оказываются просто вождением вилами по воде, а алгоритмами — чем то, что иногда работает, но как — остается только гадать. Я призываю к тому, чтобы выдвижение своих оригинальных идей базировалось на твердом знании фундамента. Не стереотипов, не утилитарных решений, но тех фундаментальных достижений в данной области, которые, безусловно не являясь полной истиной в конечной инстанции, позволяют понять те сущности, с которыми Вы имеете дело. И опираясь на этот фундамент давать не только результаты эксперимента с их субъективной трактовкой, но и анализ, который можно объективно оценить сделать какие-то общие выводы.

Что-то дернуло меня перечитать комментарии к своей допотопной статье, и это было прикольно. :)))
Во-первых могу посоветовать посмотреть мой доклад на последнем ODSфесте: https://www.youtube.com/watch?v=Npm-awHtfeM, почти всё, о чём я говорил тогда в 2015-ом году прекрасно подтверждается и на типовой задаче кормпьютервижена, в котором, казалось бы, всё изучено вдоль и поперёк. Тут в докладе, я кстати, привожу и строгую математику, описывающую связь размеров батча и стохастики с другими параметрами обучения. Подавляющее большинство людей как не понимали всего вот этого, так и продолжают не понимать. Восемь лет прошло, а мои велосипеды все ещё едут лучше общепринятых. :)))
Во-вторых, вы тут упоминали, что вам не нравятся мои определения "обобщений", вернее то что я вам их не раскрыл тогда в дискуссии. Если вам интересно, то посмотрите свежие статьи про такое явление как гроккинг в нейросетях, обнаруженное совсем недавно. Вот мои обобщения, как я убеждён, это и есть то, что ведёт к гроккингу. Строго я это ещё не доказал, но очень похоже по всем признакам. Если бы тогда в 2015-ом встретил больше заинтересованности от людей, которые занимались уже тогда нейросетями возможно гроккинг был бы открыт в 2016-ом, а не в 2023-ем, и в России, а не за её пределами.

> «Как раз получение плохого обобщения может быть связано с тем, что реализуемое множество аппроксимаций не достаточно богато и не позволяет с достаточной точностью спроецировать на него аппроксимируемую функцию.»
Какой сюда, позвольте узнать, стереотип закрался?
Ну, как говорится, не хотите как хотите. :)

Если сеть обладает достаточной глубиной один к куче миллиардов, что нужное обобщение ей доступно, но вы не можете его найти. Хотя бы потому что не ищите. Вы ищите уменьшения ошибки, а уменьшение ошибки порой быстрее достигается двумя плохими обобщениями, чем одним хорошим. Хорошее обобщение отличается тем, что позволяет достигнуть гораздо лучшей предельной ошибки при тех же размерах, но алгоритм минимизирующий ошибку вас толкает в противоположную сторону.
Позвольте, а как Вы формулируете понятие «нужно обобщение»? Как отделяете «хорошее» обобщение от «плохого»? И главное, как формализуете это понятие и зашиваете в алгоритм обучения? Само понятие «среднеквадратичная ошибка» в алгоритме обучения и является формальным критерием «хорошего» аппроксиматора: хороший аппроксиматор минимизирует функционал среднеквадратичной ошибки. Не нравится — используйте другой функционал, более «умный». Либо модифицируйте алгоритм таким образом, чтобы вычислительный процесс отделял «хорошие» минимумы от «плохих», меняя постановку регрессионной задачи неявно. То есть выбирайте один из путей, о которых я писал ранее.
Либо поясните, что Вы имеете ввиду.
Скажи, пожалуйста, чем вы занимаетесь? Ну то есть, мне лично не очень понятно, как именно вы изобретаете велосипеды? Пишете по-новой либы с сетями, реализуете алгоритмы ручками, а не используете готовые пакеты? Поясните, плиз :)
Просто переписывать под уже существующий алгоритм, конечно, не слишком продуктивно.
1) Беру описание математики алгоритма, и повторяю самостоятельно всё решение, используя описание алгоритма как подсказку. Это нужно чтобы понимать скрытые условия и необязательные условности алгоритма.
2) Визуализирую в работе алгоритма всё то, что в стандартных либах или стандартных задачах не визуализировано, даже если это самоочевидно. Например то что я сформулировал обратную задачу позволило мне понять больше чем все учебники и половна статей. Но я кроме этого визуализирую ещё очень много что. Спектр производных по синапсам в логарифмическом масштабе, например, интереснейшая картинка. Или Например вести курсором над картинкой с павлином, а на картинке, на которой нарисована сеть цветом отмечены потенциалы нейронов, и смотришь что происходит с сетью когда ты проводишь курсором над цветовой границей. 2/3 придуманных мню визуализаций были бесполезны, но оставшаяся треть открывает мне глаза на вещи, о которых люди в статьях 2010-ого года спорят и догадываются по косвенным данным.
3) Рассматриваю тот же инструмент, но при решении иной задачи. Например, у меня есть управляемая нейросетью конечность. Понятно, что входные параметры на сеть в этом случае меняются в каждый момент времени не на много. Что можно изменить в сети с учётом этого условия.
4) Пытаюсь отбросить какие-то ограничения, которые общепризнаны, и пытаться понять как при этом изменится алгоритм. Важно ли было это ограничение для алгоритма или просто так сложилось.

В общем экспериментирую точно так же как как учёный изучал бы какое-нибудь физическое явление в своей лаборатории.
Круто звучит. Чтобы так же начать, надо просто взять какой-нибудь алгоритм и попытаться проделать описанные вами шаги? И, кстати, какой инструментарий используете?
Ручками на C#. Заодно С# выучил. Сначала делал в WindowsForms и заодно WF подизучал маленько. Сейчас планирую переходить на WPF в интерфейсной части, заодно WPF выучу.

На самом деле в этом нет ничего принципиально нового. Я сам не занимался ТРИЗ, но на сколько я понимаю именно так положено действовать по ТРИЗ-у.
Достойно уважения :) Спасибо.
Есть какие-то практические задачи, решения для конкретных систем, находящиеся в эксплуатации?
Пока что нет. Мне вчера скинули одну практическую задачу из области ретейла, Но даже если я смогу переплюнуть в этой части десижнТри, то это не такой уж важный результат. Хорошие готовые задачи именно потому и существуют, что уже существуют решения, которые их не так уж плохо решают. Гораздо интереснее ставить опыты с такими задачами, которые раньше не решались, и соответственно не находились в эксплуатации. Но это, увы, не в ближайшие месяцы.
Практические задачи хорошо дисциплинируют и помогают отсеять всяческую декоративную шелуху, «понты». Доклады на конференциях, чья цель показать собственную ученость и с нулевым практическим выходом вызывают зевоту.
Тогда задача не обязательно должна быть эксплуатирующейся достаточно чтобы она была конкретной и экспериментатор был честен с собой в процессе её решения. Открываешь безразмерный репозиторий начиная вот отсюда: archive.ics.uci.edu/ml/datasets/Iris и решаешь всё подряд. Тут даже лучше, потому что есть ещё семь десятков деятелей решавших ту же задачку и можно сравнить результаты.
Практическая, но не эксплуатирующаяся задача лучше безосновного фантазирования, но все равно не то — велика вероятность получения решений «для сферического коня в вакууме» из-за исключения из задаваемых условий обстоятельств, влияющих на решение.
Sign up to leave a comment.

Articles