Обновить
4
0

Пользователь

Отправить сообщение
Ручками на C#. Заодно С# выучил. Сначала делал в WindowsForms и заодно WF подизучал маленько. Сейчас планирую переходить на WPF в интерфейсной части, заодно WPF выучу.

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

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

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

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

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

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

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

Вероятно вы слишком бегло проглядели статью, что там на правом графике там пояснено и дана ссылка на статью исчерпывающим образом разъясняющую мысль. Хитрые алгоритмы будут публиковаться позже, по мере готовности.
Deleted. Уже написали
К идее автора отношусь с крайне большим скептицизмом. Идея голографического мозга с квантовыми состояниями притягательна хотя бы потому, что человеку вообще как биологическому виду нравится объяснять непознанное как кальку с самого сложного из познанного. Хотелось бы посмотреть на результаты численного моделирования, которые должны ответить сами за себя. Как я понял из вашего комментария, надежды в других статьях автора найти конкретику не очень то перспективны.

Тем не менее критика, которую вы приводите не всегда означает что автор фигня.
а) Очень часто ту же ошибку совершают многие другие люди, самостоятельно что-то придумавшие. Вместо того чтобы показывать результаты они пытаются показать красоту и логичность теории, естественным образом приведшей их к результатам. Люди, которые действительно что-то придумали очень часто делают точно также.
а.2) Вы сильное преувеличиваете непредвзятость научного сообщества. Как известно одним из критериев научной истины (что отличает её от просто истины) это способность научного сообщества эту истину принять без батхёрта, выраженная в публикациях в рецензируемых журналах. Давича один учёный, приводил пример из нейронауки: Основное господствующее мнение на западе сейчас заключается в том, что самое главное это какие нейроны с какими проводами соеденены. Даже говорят «Я это мой коннектом» и дают миллиарды на прочтение этого коннектома. При этом во всех коннектомных, как в прочем и в волновой модели автора, предполагается всего один носитель сигнала, распространяющийся строго по связям. В то время как в реальном мозге 20 лет назад было известно 12 нейротрансмиттеров, а сейчас их известно более 4000 сигнальных веществ, которые, к тому же, передают сигнал в том числе и диффузией прямо через мозговую жидкость там, где контакта нет. Так вот он в табличку выписал ключевые открытия из области гетерохимического мозга, а в соседней колонке открытия, показывающие, что это можно свести к проводной модели или хотя бы попытаться. Справа было 4 нобилевских премии, слева ни одной.
При том, что третье открытие в левой колонке было о том, что явления, предсказанного справа и позволяющего свести всё к проводкам на самом деле не существует.
б) Как раз первые рассчётные модельки как правило очень просты и написаны на чёпопале. Буквально пару недель назад на конференции нейроинформатика-2015, всей из себя такой серьёзной, видел как человек глубокие сети моделировал в Экселе. Успешно, что самое страшное.
в) Автор может попробовать доказать, что это не аналогии, а гомологии, тоесть оба класса явлений подчиняются общей математике. нужно только понять трактовку при которой эта математика идентична.

Ещё раз подчеркну, я не пытаюсь сказать, что автор прав. После просмотра первых получаса его видео у меня желание посмотреть на реальные результаты очень большое. Но именно приведённые вами признаки не всегда надёжны.
Хорошо, что не прочитал вторую статью тогда, когда вы мне на неё ссылку скинули. :) Очень интересно, но если бы я её прочёл тогда, до всех экспериментов, так бы и не понял на чём накололись авторы и думал, что без претренеровки жизни не мила и слои не слоятся, особенно больше 5. :)
Жаль, что вы не паритесь о пользователях других стереосистем и не внедряете эти наработки в основную ветку разработки. А то например в Nvidia 3d vision юзеринтерфейс заставляет глаз выпасть и укатиться под стол.

Очень интересно на сколько у вас актуальна была проблема тошноты у пользователя. Некоторые игры в Окулусе очень это дело провоцируют, а некоторые нет. Если вас не тошнит, а на левых людях вы не проверяли, то советую по тестить и попросить людей дать оценку. Типа «Лучше»-«Хуже». Эта оценка со стороны независимых нетренерованных тестеров может быть важнее чем все пляски вокруг интерфейсов.
Это чисто упрощение для меньших размеров статьи. Я же не говорю, что обобщения найденные сетью совпадают со значимыми для человека. Обобщения для сети это всего лишь преобразования, которые позволяют проще строить своё приближение к целевой функции.

А потому Можно автоматически выделять любое цветовое пятно, которое кажется человеку важным для построения, или даже просто любое большое, автоматически находить его границу, и соразмерять изменение ошибки связанное с изменением положения этой границы с изменением ошибки по всей тестовой выборке. Результат позволит полностью автоматизировать поиск ответственных за пятно синапсов, что само по себе интересно. Но никакой новой информации о способе кодирования внутри сети эта работа не даст. По крайней мере я думаю, что не даст. Если ошибаюсь, то упущу свою нобелевку.
>> Не могу понять, почему сеть, натренированную на одной единственной картинке можно сравнивать с сетью, обученной на многих картинках.
Потому что любое успешное обобщение это всего лишь нелинейное преобразование координат после которого задача классификации выглядит более решаемой. Задача может быть прямой классификацией (много разного на вход, простой выход), может быть классификацией вывернутой наизнанку, очень простые данные на вход, очень сложное ожидание на выходе. Сеть будет работать одинаково — искать такое нелинейное преобразование координат, после которого линейное разделение выглядит более понятным.

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

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

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

Ещё немного подробностей есть в моём ответе предыдущему комментатору: habrahabr.ru/post/249031/#comment_8250053
Ужас, кошмар какой. Не синтаксически, а семантически значимые, конечно же. Десять тысяч человек прочитало статью и вы первый, кто обратил внимание. Семантически значимый, тобишь кажущиеся людям осмысленными, имеющий некоторое знаковое значение для наблюдателя. Тоесть признаки введены наблюдателем по самому постороению.

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

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

Тоесть, с чем сеть справилась я показал, с чем сеть не справилась совершенно обосновано показали вы.
Как минимум мозг сильно сложнее. Одни только 4000 нейротрансмиттеров чего стоят. А вот наблюдаются ли в реальном мозге синаптические ансамбли или нет мы узнаем не скоро, потому что снимать потенциалы с синапсов уже научились, но это на порядок более трудозатратно, чем с нейронов. Да спайковая математика совсем иная нежели у формальных нейронов, но явление является следствием более фундаментальных свойств.

А специалисты гугла не правы и во второй части статьи тоже. Но чтобы объяснить подробно придется накатать ещё одну такого же размера статью. :) На той сети, которая описана в статье их «Лакун» практически нет. Малое изменение данных относительно правильных ведёт к резкому росту ошибки только на границах картинки, где сама учебная выборка очень не гладкая и выходит за рамки возможности сети.
То что они увидели — слабые обобщения. Я уже описывал в комментариях к статье TonyMas-а, но если и оформлю в виде отдельной статьи то не скоро.
Сеть обычная не рекурентная, но на слои строго не разбита, синапс может идти к любому предыдущему нейрону. Накидано 460 синапсов из 630 комбинаторно возможных. Если ещё 170 докидать получится полносвязанная в самом брутальном смысле этого слова.
Написал свою третюю статью про нейронные сети:
habrahabr.ru/post/249031/
Написал свою третюю статью про нейронные сети:
habrahabr.ru/post/249031/
Написал на эту тему свою подробную статью с примерами, картинками и элементами блэкджека: habrahabr.ru/post/249031/

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность