Этого треда уже нет.
Это копия, сохраненная 10 октября 2015 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
128 Кб, 869x623
Распознаватель капчи вакабы #437727 В конец треда | Веб
Сап, /пр. Я тут случайно капчу вакабы.
Код: https://github.com/sorrge/wakabaYes

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

Делал примерно неделю, для изучения тонкостей работы сверточных нейронных сетей. Получилось в принципе неплохо, на уныле точность близка к 100%. Пришел к выводу, что изначально выбрал не очень удачную стратегию с отдельными этапами сегментации и распознавания. Чтобы значительно повысить точность на более сложных примерах, где буквы сливаются, нужно как-то одновременно сегментировать и распознавать. Текущий метод для этого не годится. Тем не менее я добился цели, которую изначально ставил.

Отвечу на вопросы, да и просто можно обсудить нейронные сети, распознавание и близкие темы.
#2 #437732
>>437727
теперь пэйпер напиши
#3 #437736
>>437732
Там писать не о чем, я применил давно известные технологии. Только в целях обучения интересно. Такой тип НС (LeNet-5) использовался для распознавания рукописных цифр с 90-х годов.

Но если в 90-х для тренировки сети нужен был суперкомпьютер, то сейчас это занимает у меня полчаса на ноуте, лол.
#4 #437745
>>437727
Что мне почитать, чтобы стать таким же крутым?
t. ньюфаг, учу Си
#5 #437751
Теперь напиши вайп-машину и примени распознаватель в ней.
#6 #437752
>>437736
Ну какие технологии, мы все тут тёмные ты напиши в 20 предложениях что сделал, чтобы все охуели какой ты крутой.
#7 #437761
>>437745
Рекомендую очень хороший курс машинного обучения на курсере: https://www.coursera.org/course/ml
Понадобятся базовые знания матана и линейной алгебры. Там объясняются основные алгоритмы, идеи, даются рекомендации по практическому применению. 10/10.

Для выработки практических навыков можно попробовать поучаствовать в соревнованиях на http://www.kaggle.com/ . Чтобы что-то выиграть там надо быть очень, очень крутым, но для тренировки он тоже хорош. Заодно и видишь, куда тебе стремиться, лал.

Ну а конкретно за глубоким обучением - на http://deeplearning.net/ . Это продвинутый уровень уже. Этот проект сделан на модифицированном туториале оттуда.
2 Кб, 90x19
#8 #437770
>>437752
Схема такая.

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

Каждая отдельная буква центрируется и подается на вход сверточной НС (https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D1%91%D1%80%D1%82%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C ). Сеть натренирована на ~260000 примеров отдельных букв, сгенерированных скриптом вакабы. На выходе получается вектор вероятностей букв для входного изображения.

Дальше работает алгоритм, который идет по грамматике капчи вакабы и выбирает наиболее вероятный путь при данных вероятностях отдельных символов. Это не очень просто, т.к. может быть несколько путей генерации одного и того же слова. Приходится запоминать несколько наиболее вероятных путей. Сложно так на словах объяснить алгоритм, легче посмотреть в коде. Ну и на выходе выбирается самый вероятный путь.

Это все повторяется несколько раз с использованием разных параметров разбиения склеившихся букв и выбирается самый вероятный результат.
#9 #437775
>>437770
ну я так и подумал, молодец чо.
#10 #437878
Просто бампану. На фоне тредов школьников и быдлосьудентов будем смотреться как марципанчик в куче говна.
#11 #437884
>>437727
На самом деле всё проще. Нужно делать как Яндекс - создать сервис, где люди будут сами определять каптчу.

Скажем сделай страницу со скачкой желанного контента и переноси туда каптчу, получай ответ и вводи в реальное поле.
#12 #437893
>>437878
Утешай, утешай себя няша, что никто не догадался залезть на твой гитхаб и увидеть кучи пиздец-говна.

> inb0 зато работаит!!11

#13 #437897
>>437893
Странный язык Питон, чтобы не делал на нем получается кусок говна из кусков говна(
#14 #437931
>>437884
Таких сервисов есть несколько, где людям деньги платят за вбивание капчи. Мне кажется, дела у них плохи - экономически невыгодно. Вбивание капчи не приносит достаточно профита, чтобы оплатить человеку услугу ее распознавания.
#15 #437993
Для хуяндекс капчи хотя бы 50% реально получить? Даже на циферки не представляю как нарезать.
#16 #437996
>>437993
Вот у этого чувака 1% вроде: http://geektimes.ru/post/64535/
Правда, там сплошной discover imageshack, и непонятно, точно такая же это капча или что-то поменялось уже.

У него простой подход, так что можно попытаться улучшить с использованием "новых" технологий, которые я применил для вакабы. Удастся ли дожать до 50% можно узнать только проделав всю работу.
#17 #438029
>>437727
На полгода опоздал, никакой макабы уже и в помине нет.
#18 #438062
>>437727
ДОПУСТИМ Я ПЕРЕПИШУ ТВОЙ КОД ЧТО ОН БУДЕТ РАБОТАТЬ В 500 РАЗ БЫСТРЕЕ
КАК МНЕ ПОВЫСИТЬ РАЗРЕШАЮЩУЮ СПОСОБНОСТЬ И СПОСОБНОСТЬ К РАСПОЗНОВАНИЮ?
47 Кб, 728x451
#19 #438092
>>438029

>макабы


>вакабы



>>438062
Да, сделать гораздо быстрее его можно. Но сейчас распознавание занимает 0.05с, это быстрее, чем капча генерируется и передается, так что я не стал морочиться.

>КАК МНЕ ПОВЫСИТЬ РАЗРЕШАЮЩУЮ СПОСОБНОСТЬ И СПОСОБНОСТЬ К РАСПОЗНОВАНИЮ?


Ну разрешение повысить элементарно, надо просто сеть побольше сделать. Естественно, пропорционально возрастет и количество весов и время/сложность тренировки.

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

Если рассматривать более сложные капчи, как яндексовскую, то там LeNet5, боюсь, может уже не справиться. Нужно будет пробовать более хардкорные штуки с пре-тренировкой из асенала глубокого обучения. Опять же рекомендую на эту тему посмотреть туториал с http://deeplearning.net/ , там расписаны многие алгоритмы.

Если тебя интересует прям совсем передний край науки, посмотри http://arxiv.org/abs/1502.01852 и то, на что они ссылаются. Эти сети распознают картинки лучше людей.

Пикча: активации на двух сверточных слоях на нескольких примерах.
#20 #438302
>>438092

>Да, сделать гораздо быстрее его можно. Но сейчас распознавание занимает 0.05с, это быстрее, чем капча генерируется и передается, так что я не стал морочиться.


НО КРОМЕ ЕТОЙ КАПЧИ ЕСТЬ МНОГО РАЗНЫХ ПОСЛОЖНЕЕ
НЕ ДУМАЮ ЧТО ХВАТИТ РАЗРЕШАЮЩЕЙ СПОСОБНОСТИ 1ГО СЛОЯ ДЛЯ ИХ РАСПОЗНАНИЯ
#21 #438303
>>438092

>Нужно сделать сегментацию тоже на НС. Т.е. одна НС тренируется, чтобы определять границы между символами, а вторая распознает сами символы. Потенциально это может быть точнее, но работы много.


А НАСЧЕТ СЕГМЕНТАЦИИ У МЕНЯ ЕСТЬ ХОРОШИЕ ИДЕИ
#22 #438308
А хуле толку? На хабре уже кто-то статью писал о том же, там всё пошагово. Ты вот тоже прошёл туториал, молодец. Но хуле с этого толку? Кому это нужно?
#23 #438310
>>438308
МНЕ НУЖНА
А НА ХАБРЕ ГОТОВУЮ ПРОГРАММУ ДАВАЛИ?
#24 #438312
>>437727
The classifier is pre-trained; I do not provide the code and the data to train it.
ПОЛНОСТЬЮ БУДЕШ ПУБЛИКОВАТЬ?
#25 #438356
>>438312
Только заинтересованным лицам и только за оговоренную сумму, или приём на работу в государственную структуру
#26 #438388
>>438302
Разрешение входной картинки не так уж принципиально на самом деле. Примерно 25x25 должно быть достаточно. Цифры капчи яндекса, например, если уменьшить их до такого размера, вполне читаемы. Может, какой-то супер метод и может дополнительную информацию извлечь из большего разрешения, но мне пока до этого далеко.

>>438303
Расскажи, можем обсудить это, если интересно.

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

Могу помочь, если что-то будет непонятно.
#27 #438391
>>438308
Лично мне было бы интересно. На Хабре дремучий примитив, преданья старины глубокой.
#28 #438501
>>437878
Кодачую
#29 #438509
>>438501
Это что стёб такой?
Прогресс конечно очевиден по сравнению с 1999 года, но всё-таки
#30 #438520
>>438388

>Расскажи, можем обсудить это, если интересно.


НЕ БУДУ Я С ТОБОЙ НИЧЕ ОБСУЖДАТЬ РАЗ ТЫ ПОЛНОСТЬЮ НЕ ХОЧЕШ ОПУБЛИКОВАТЬ
#31 #438522
>>437727
У ТЕБЯ ТАМ ВСЮДУ КЛАСТЕРИЗАЦИЯ ЧТОЛЬ КРОМЕ ПОСЛЕДНИХ СЛОЕВ КОТОРЫЕ ОБУЧАЮТСЯ?
#32 #438523
>>437727
Круто, реально круто, чувак
60 Кб, 596x447
#33 #438529
#34 #438530
ОП, а ты работаешь джава-богом, стало быть?
#35 #438563
>>438530
Мы на дельфях ком-порт программируем, с шифрованием работаем, код Цезаря юзаем.
Нейроные сети это для души)
#36 #438568
>>438563

>дельфях


Чуть не сблеванул.
#37 #438584
>>438530
Пишу на многих языках. На работе сейчас по большей части R и матлаб. Биоинформатик я.
На джаве это ради кроссплатформенности.

>>438520
Мне это подходит.
#38 #438595
>>438584
У ТЕБЯ ТАМ ВСЮДУ КЛАСТЕРИЗАЦИЯ ЧТОЛЬ КРОМЕ ПОСЛЕДНИХ СЛОЕВ КОТОРЫЕ ОБУЧАЮТСЯ?
НЕ БУДЕШ ОБСУЖДАТЬ ТЕБЯ ЗАБАНЯТ ЗА ПИАР СВОЕЙ ЗАДНИЦЫ
sage #39 #438610

>2015


>перцептрон

#40 #438678
>>438509
Никакой не стеб.
Хоть что-то интереснее поиска максимального элемента в массиве и физбаза
#41 #438697
Полон тред бомбанувших питушков, у кого не хватает силы воли, чтоб углубиться в какую-то такую область. ОПу сладкую лису.
328 Кб, 640x480
#42 #438698
#43 #438711
>>438697
Углубился в область ануса твоей мамаши.
sage ЕБА ТРИПКОД ЗАБАНИЛИ! #44 #438782
54 Кб, 240x238
#45 #439534
Вот еще нашел образовательный сайт, где можно запусткать демки алгоритмов глубокого обучения прямо в браузере: http://cs.stanford.edu/people/karpathy/convnetjs/
#46 #439536
>>437727
А ГОВОРЯТ ЧТО БОТЫ КАРТИНКИ РАСПОЗНАВАТЬ НЕ МОГУТ.
#47 #439559
оп, а на PHP умеешь ?
#48 #439562
>>437727

>HashMap<CharSequence,


не делай так больше
#49 #439564
>>439559
Умею немного, даже когда-то браузерку простую делал.

>>439562
Там такого нет, тебе показалось. В любом случае не вижу проблемы.
#50 #439571
Вот ещё одна интересная история успеха
http://habrahabr.ru/post/126373
#51 #439573
>>439564
Ну епт, CharSequence и Character перепутал .

>В любом случае не вижу проблемы.


Подумай ещё раз в чем может быть проблема, особенно если такая конструкция появляется в каком-нибудь публичном API.
#52 #439574
>>439573
Про CharSequence прочитал, что сравнение у него не определено. Не знал, спасибо.

С Character такой проблемы нет.
#53 #439580
Не понимаю пользы этого говна, если честно.
Все что могут подобные поделки - научить некую сущность написанную на чистом говнокоде распознавать однотипные картинки.

То есть ты им подсовываешь картинки с заранее известным результатом и модерируешь через обратную связь весовые коэфициенты.

В чем польза? Твоя прога сможет распознать баннер тематической доски двача? Нет? Тогда нахуй не надо. Это все говнокодерство и поделки уровня Алексея Бабушкина.
#54 #439584
>>439580
что тебе нужно, там вполне нормальный/читаемый код, кстати, лучше чем у 70% быдло-джава энтерпрайз погроммистов. Разве что именования иногда говнистые и не джавовский naming convention

Ну и человек самостоятельно реализовал сверточную нейронную сеть, поделился кодом с общественностью, а не взял готовое говно из какой-нибудь Weka, даже не понимая как оно устроено.

Теперь осталось освоить OpenCV, для быстрого прототипирования перейти на Scientific Python (numpy scipy, scikit-learn, ipython notebook), немного поиграться на kaggle и можно начинать работать не быдло-макакой, а белым человеком.
#55 #439591
>>439584
Во что на кэггле посоветуешь поиграть?
sage #56 #439627
>>439584
НИХУЙЯ ОН НЕ ДЕЛАЛ, ВЗЯЛ ГОТОВЫЙ ПРОДУКТ И РЕЗУЛЬТАТ ЕГО РАБОТЫ ПЕРЕПИСАЛ НА ДЖАВЕ
#57 #439738
>>438308
а про "грамматику" и пути где на хабре сказано? Как-то не понял эту часть распознавания.
#58 #439749
>>437727
Зачем ява? Есть же божественные Theano, Torch, которые и градиенты сами за тебя возьмут, и всё-всё-всё.
#59 #439750
>>439627
Ты не прав. Там готовый продукт написан на высокоуровневом фреймворке. Попробуй так же ПРОСТО ПЕРЕПИСАТЬ, охуеешь.
#60 #439826
>>439738
Попробую объяснить это немного подробнее.

Слово для капчи в вакабе генерируется с помощью грамматики. На каждом разветвлении при раскрытии нетерминала выбирается случайная ветка, с равной вероятностью. Таким образом мы имеем априорное распределение вероятностей на множестве всех слов, причем подавляющее большинство последовательностей букв имеют нулевую вероятность, т.к. не допускаются грамматикой. Это можно использовать для коррекции побуквенного распознавания. Простой пример: пусть классификатор назначил такие вероятности для первых двух букв: q=0.9, o=0.1 для первой и v=0.99, u=0.01 для второй. Наивный побуквенный алгоритм выбрал бы самые вероятные буквы, получив qv. Но это недопустимая последовательность по грамматике. Алгоритм, который это учитывает, выберет ov, вероятность которого выше.

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

Надеюсь, стало понятнее.

>>439749
Классификатор натренирован именно на теано. Но тянуть его в конечный продукт не имеет смысла: у него сотни мегабайт зависимостей, в т.ч. gcc, питон, многочисленные пакеты для него. Это никто не будет устанавливать, кроме энтузиастов машинного обучения. В то же время в рантайме нужно всего лишь пару простейших операций определить.
#61 #439884
>>439826
УЗКОСПЕЦИАЛИЗИРОВАННОЕ ГАВНИЩЕ КОРОЧЕ
#62 #439886
>>439826
ДАВАЙ ПУБЛИКУЙ СКРИПТЫ ТЕАНО ИЛИ ЧЕ ТАМ ЕСТЬ
ПРИМЕРЫ ДЛЯ ОБУЧЕНИЯ САМ ГЕНЕРИРОВАЛ ИЛИ СКАЧИВАЛ И ВРУЧНУЮ РАСПОЗНОВАЛ?
sage #63 #439889
>>439886
как дила
девки дают
#64 #440083
Оп, где биоинфоматиком работаешь? Какие задачи выполняешь? Как к ней пришел? Какая ЗП?
#65 #440850
>>440083
В одной норвежской конторе. Занимаюсь анализом данных. Шел к этому очень долго. Суть можно описать как "постепенное углубление специализации".
ЗП для Норвегии так себе, элитные кодеры гребут в разы больше. Мне хватает.
#66 #440925
Оп, я так понимаю, выбор именно сверточной сети для того, чтобы распознавать буквы независимо от их поворота и т.п.? Для этой задачи разве не лучше подойдет растущий нейронный газ http://www.sciencedirect.com/science/article/pii/S0925231213009259 или карты Кохонена?
#67 #440940
>>440925
Я не очень понял, как карты Кохонена могут помочь с распознаванием независимо от трансформаций. Не видел статей на эту тему. Можешь пояснить?

Про растущий нейронный газ я почти ничего не знаю.

А сверточные сети давно себя зарекомендовали на этом поприще. К тому же в данном случае мне было интересно попробовать новомодное глубокое обучение в деле, поэтому такой выбор.
6 Кб, 440x80
#68 #441308
Что скажете об этой капче? Все совсем плохо?
sage #69 #441309
>>441308
скример
#70 #441326
>>441308
Сегментировать по цветам, потом в НС.
#71 #441361
>>438092

> http://arxiv.org/abs/1502.01852



ох ебать.

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

мимо-нейробиолох
#72 #441407
>>441361
Есть такая старая база слов, называется WordNet. В ней слова организованы в иерархию, например животное -> птица -> петух. В ImageNet каждому существительному из этой базы сопоставлены картинки:
http://www.image-net.org/search?q=animal
http://www.image-net.org/search?q=bird
http://www.image-net.org/search?q=rooster

Задача НС - угадать слово, сопоставленное с картинкой. Маленьким детям такую задачу тоже ставят часто. В работе, о которой идет речь, выбрана 1000 категорий. НС принимает на вход картинку, на выходе - вероятность каждой из 1000 категорий для этой картинки.
#73 #441613
>>437727
Еще бы кто-то объяснил как в сверточных сетях делать настройку весов. И вообще, что лучше использовать массивы или списки для хранения нейронов. А вообще было бы неплохо блок-схему, чтобы окончательно всем стало все понятно.
#74 #441617
>>437727
А вообще лучше даже словами описать. Типа
1. Есть двумерный массив - входная бинарная картинка.
2.Берем кусок картинки 4x4(например) умножаем на набор весов(тоже 4x4(кстати как их инициализировать лучше всего?)) и суммируем, прогоняем через функцию активации, получаем пиксел новой картинки. Так со смещением в 1 пиксел прогоняем по всему массиву. Получаем двумерный массив прогнанный через первый набор весов(4x4). Таких наборов весов у нас 5, например, поэтому и выходных массивов будет 5(самое интересное как их потом настраивать?).
Вот как бы в таком духе получить описание или картинкой, что с чем суммировать и в какую ячейку заносить результат.
#75 #441649
>>437770
Про саму сеть напиши. Я пытался 5 лет назад обмазаться, сегментацию и предобработку написал, а вот сеть не осилил.
#76 #441821
>>441617
Ну ты почти все и расписал. Тренируется сеть по тому же принципу, что и обычная многослойная НС. Сеть вычисляет функцию y = f(W, x), где х - вход, у - выход, W - веса. Далее у тебя есть функция ошибки C(y, y'), которая возвращает одно число - подходящую тебе меру расстояния между истинным ответом и предсказанным. У меня используется negative log likelihood: C = -y' log(softmax(y)), где у' - индикатор истинной буквы. Вычисляешь градиент для весов для тренировочного примера (x, y'): grad = dC(f(W, x), y') / dW. Обновляешь веса, например, простейшим градиентным спуском: W += k grad, где k - скорость обучения.

Градиенты можешь руками посчитать для своей архитектуры, либо найти формулы в книгах, либо воспользоваться символьным вычислением, как сделал я с помощью Theano. Формулы очень громоздкие, расписывать их тут нет смысла.
#77 #441826
>>441649
Это сверточная сеть с двумя слоями свертки 3х3, первый с 5 признаками, второй с 10. Потом идет один скрытый слой с 250 нейронами и выходной слой с 26 выходами, по одному на букву. Это одна из разновидностей архитектуры LeNet-5, я выше давал ссылки. В отличие от него я не использую субсэмплинг, с ним хуже получалось.
#78 #442110
>>441821
Да, но в простой многослойной было 1вес - 1 связь, а в сверточной получается 1вес - много связей. Как тут быть?
#79 #442122
>>442110
Или я туплю и веса для каждого смещения разные?
#80 #442154
>>438584

>R и matlab


Хм, а зачем для твоих задач нужен matlab, если есть R? Какие-то специфичные биологические расчеты?
#81 #442166
>>442122
Одинаковые. Я тебе выше расписал полный алгоритм. Попробуй на маленьком примере, допустим картинка 3х1 и свертка 2х1 вручную посчитать, может понятнее станет.

>>442154
В матлабе многие вещи сделаны удобнее и работают быстрее. Возможно, еще дело привычки. Графики, например, я в матлабе люблю делать.
#82 #442169
>>442166
Эмм. ggplot2. Я вообще переехал на ipython notebook + расширение на баз rpy2 для доступа к нужным пакетам из R прямо оттуда.

Хотя у меня задачи другие, NLP всякое и использование языка общего назначения гораздо удобнее.
#83 #442208
Возможно ли нейросеть научить распознавать слово из искажённой транскрипции? Если да, то какая НС для этого применима и что по этой теме почитать желательно на русском, инглиш хуже усваивается?
ЕБА ТРИПКОД ЗАБАНИЛИ! #84 #442289
ЧЕ ВЫ ЕГО СПРАШИВАЕТЕ? НЕ ЗНАЕТ ОН НИЧЕГО ВАЩЕ
ОН ВЗЯЛ ГОТОВУЮ РЕАЛИЗАЦИЮ И В НЕЙ ВСЕ ОБУЧИЛ ПО ЕДИНСТВЕННОМУ ГАЙДУ ИЗ НИТЕРНЕТА
#85 #442415
>>442208
Не у тебя спрашивают, вот ты и бесишься.
#86 #442416
Промах.
>>442415
>>442289
#87 #442459
>>442169
В R вообще миллион пакетов для визуализации. Но все это разнообразие бестолковое по большому счету, не будешь же каждый из них изучать. И какой выбрать - тоже непонятно. ггплот2 этот монстрообразный. Изучать тонкости его дизайна чтобы понять, как какой-нибудь лейбл налепить куда надо, мне совершенно не интересно. По-моему это эталонный пример жутко over-engineered технологии-однодневки.
А Матлаб - это на века, лол. Как код на нем работал 15 лет назад, так и будет работать еще через 15 лет. А главное, я уже знаю, как там все что нужно сделать.

А чем вообще занимаются люди в области NLP, расскажи. Распознавание речи? Автоматический перевод? Перевод как мне кажется застрал на месте уже много лет.

>>442208
А что такое искаженная транскрипция? Пример приведи, чтобы понятнее было. Это из области распознавания речи?
#88 #443570
>>442166
Т.е. если я подаю на вход (1,1) а на выходе мне надо получить (1,0), то вес будет 0.5 и на выходе мы никогда не получим (1,1) а будет всегда (0.5,0.5) ?
#89 #443618
>>443570
Я ничего не понял из того, что ты сказал.
Пусть у тебя картинка 3х1: [x0, x1, x2] и свертка 2х1. Свертка будет иметь три параметра: веса свертки [w0, w1] и смещение b. Применив эту свертку к картинке, ты получишь картинку 2х1: [x0w0+x1w1+b, x1w0+x2w1+b]. Это и есть твоя функция f, о которой я говорил выше. Дальше применяешь к ней остальные шаги.
#90 #443625
>>443618
Ну я взял вообще самый простой пример, совсем без свертки, т.к. вес всего 1. [x0,x1], w0, [x0w0, x1w0]. Т.е. свертка дает вот такое усреднение [0.5,0.5] ?
#91 #443628
>>443625
Если у тебя свертка 1х1, то будет [x0w0+b, x1w0+b]. Не усреднение, а перемасштабирование скорее. Поэтому такое не имеет смысла.
#92 #443630
>>443570

>на выходе мы никогда не получим (1,1)


опечатался, на выходе мы никогда не получим (1,0) , конечно же.
>>443628
Понятно, я просто смотрю, что вес 2 раза перенастраивается и получается, что-то среднее, зависящее от ошибок для веса со свертки. В чем и отличие от полносвязной сети.
#93 #443631
>>443630
>>443630

>что вес 2 раза перенастраивается


за итерацию.
#94 #443637
>>443630
Не правильно написал
что-то среднее, для данного веса зависящее от ошибок со свернутой картинки.
#95 #443644
>>443628
А вообще да, если свертка происходит, то мы можем подобрать веса чтобы получить любой сигнал на выходе. Так что мой пример не совсем корректен.
#96 #443647
>>443630
Ну да. Все, что делает свертка 1х1 - это умножает всю картинку на число и прибавляет другое число. После настройки эти числа станут такими, что ошибка в среднем будет наименьшей. В том случае будет усреднение.

Полезность сверток в том, что они применяют один и тот же фильтр к разным частям картинки. За счет этого получается устойчивость к преобразованиям. Для полносвязной сети, например, цифра 1 посреди картинки и та же цифра, смещенная на один пиксель вбок - два совершенно разных изображения. Чтобы понять, что это одно и то же, сеть нужно долго тренировать, и она должна быть достаточно большой. Для сверточной сети взаимосвязь этих изображений более очевидна.
#97 #443651
>>443647
Т.е. чтобы сеть начала обобщать ей нужно меньше перекрестных связей, получается.
#98 #443652
>>443651
Да, суть именно в этом. Это работает только на картинках, но работает очень хорошо.
#99 #443656
>>443652
Разве? А если как-то описать машине признаки и связи между ними(формализовать), не начнет ли она находить схожести и не начнет ли она также обобщать? Знаю, точно что эти же сети применяли для распознавания речи. В сети есть статья.
#100 #443688
>>443656
Ок, наверное можно и в других задачах применять. Просто самые известные достижения у этого метода в распознавании изображений.
Нужно чтобы входные данные были структурированы. В картинках используется 2д пространство, в речи, наверное, по времени свертку делают.
#101 #444348
Оп, расскажи о задачах на работе, интересно. Что на собеседованиях спрашивали? Сколько лет к этому шел?
#102 #444449
>>444348
В подробности вдаваться не буду, извини. Работаю с данными, полученными секвенированием нового поколения. Разрабатываю методы работы, алгоритмы, применяю их.
Собеседование происходило в виде презентации с рассказом о моей предыдущей работе. Ну и плюс стандартные вопросы: почему выбрал это место, какими темами я хочу заниматься.
Шел к этому, пожалуй, лет восемь целенаправленно. На уровне хобби машинным обучением занимался очень давно, года с 2002 примерно.
#103 #444656
Оп, я тоже увлекаюсь машинным обучением, но на уровне хобби. Вот у меня задача есть, распознавание математических формул (С изображений разумеется). Ну пусть для начала не рукописных а печатных. И если как распознать определённый символ на изображении я знаю, то как разделить изображение на структурные единицы и распознать структуру - не знаю. Ведь нам важно не только узнать что в выражении есть синус или знак интеграла, а ещё и положение его в выражении, может он в числителе дроби, может в знаменателе, может в скобках. Не натолкнёшь на мысль как мне структуру выражения по-простому распарсить?

Тоже проходил на корсерке курс, а потом кучу других на edX и корсерке, а потом ещё в универе 3 семестра.
#104 #444669
>>444449
А вообще, по машинному обучению в первый раз устраивался в пахомии? Вузик в РФ оканчивал?
Откуда вкатился?
56 Кб, 671x289
#105 #444910
>>444656
Сложно. Я бы сначала сделал распознавание линейной записи, без дробей, степеней, индексов. Просто символы одной строкой. Тут все более-менее понятно. У формул тоже есть грамматика, примерно как в капче вакабы, которую можно использовать для уточнения распознавания. Скажем, "С" и "(" можно лучше отличить таким образом. Также это поможет выбрать более вероятный парсинг формул вроде "sinx", которые могут быть произведением s, i, n и х, но более вероятно, что это sin(x).

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

Степени/индексы можно отличать по вертикальному смещению, опять-таки выделять их в отдельные картинки и распознавать.
#106 #444916
>>444669
Да, как ни странно повезло получить некоторый опыт работы в Россиюшке по машинному обучению. И это было не в Яндексе, лол. Специалиста получил в Москве, потом ПхД в Европе уже по биоинформатике.

До специализации по машинному обучению был просто кодером средней руки. Поработал в геймдеве, пофрилансил. Ничего особенного.
#107 #444926
>>444916
А поясни нужно ли знать функан или там какую-нибудь хардкорную математику чтоб быть как ты? Ну про теорвер матстат и методы оптимизации я понимаю что их нужно знать хорошо
#108 #445046
>>444916
Как в Европку на ПхД вкатился?
#109 #445085
>>444926
Я хардкорной математики не знаю. Могу сформулировать и доказать простую теорему, но не более. Функан вроде бы ни разу в жизни не применял. Основы матана нужны часто, а также базовые дифуры (и то больше численные методы, а не аналитическое решение).

>>445046
Нашел объявление, подался, поговорил с научником. К тому времени у меня был какой-то опыт уже в смежной области (машинное обучение). Прочитал пару их статей перед собеседованием, попытался вникнуть, задал пару вопросов по ним. Этим и отличился от большинства других кандидатов, лол.
#110 #445107
>>445085

>Функан вроде бы ни разу в жизни не применял


А как же ядра, метрики, все такое?

А какие требования на ПхД были? Допустим, у меня диплом мага по теорверу и матстату, то есть никаких курсов по машинному обучению я в универе не слушал, все по теме изучал самостоятельно, таких берут?
Алсо, как серьезно они рассматривают средний балл?

И вообще, пили кулстори. Как долго получал степень? Как это все происходило? Сейчас исследованиями не занимаешься? Какие подводные камни? Какие советы дашь?
#111 #445271
>>445107

>А как же ядра, метрики, все такое?


Очень поверхностно знаком. Сейчас пролистал статью по функану в вики - все какие-то абстрактные штуки. В жизни этим не пользуются.

Про ПхД нельзя так в общем сказать, все от людей же зависит. Кто-то упрется рогом в средний балл, кому-то подай статьи, другим - рекомендации от видных ученых, третьим - диплом известного вуза. Средний балл всегда спрашивают, конечно. В моем случае это не было решающим критерием. Если у тебя там одни тройки, проблемы будут 100%. Иначе - как повезет. Сходи еще в научный тред на эмиграче, там много инфы про это дело. То, что ты самостоятельно изучал - это ок. Лучше, если есть какие-то проекты свои, чтобы показать, или статьи для сиви.

Получил за три года. Тут так - тебе деньги дают на три года, не защитился за это время - крутись как хочешь. Не найдешь работу - еще и ВНЖ лишишься, это вообще жопа. Поэтому нужно ориентироваться на жесткий срок с самого начала.
Происходит это примерно как обычная работа, делаешь свой проект/проекты, пишешь статьи. Нужно иметь свои идеи, свое видение проекта, для некоторых людей это сложно. Подводных камней много. Целая гора. Самые большие риски на мой взгляд: не пойдет исследование/будет плохо получаться, поссоришься с научником, не сможешь опубликоваться, не осилишь написание диссера. Это довольно рискованное вложение времени, вполне можешь прокопаться три года или больше и уйти ни с чем в результате. Однако по моим наблюдениям (около 15 случаев всего) в Рассее шанс успешно защититься гораздо меньше. Из моих европейских знакомых почти все защитились.
Исследованиями сейчас занимаюсь. Биоинформатиков теперь много стало, конкуренция сильная, но и область сама постоянно расширяется. Надеюсь, на мой век хватит.
#112 #445275
>>445271

>В жизни этим не пользуются


>Я хардкорной математики не знаю. Могу сформулировать и доказать простую теорему, но не более



Детектирую быдло-математика-нинужниста.

http://nbspace.ru/math/
9 Кб, 622x306
#113 #446816
Отлаживал недавно код НС на XOR в качестве тестовой задачи. И НС с двумя скрытыми нейронами не всегда сходилась к идеальному решению. Думал баг где-то, проверял долго.
Оказалось, что такая НС далеко не всегда сходится к решению, несмотря на то, что неоптимальных локальных минимумов там нет. Происходит это из-за очень пологих областей в оптимизируемой функции. Если неправильно задать диапазон весов при инициализации, то попадание в такую область почти гарантировано, и сеть никогда не будет сходиться.
Вот целый трактат на эту тему: http://www.cs.stir.ac.uk/research/publications/techreps/pdf/TR148.pdf
#114 #448493
бамп
53 Кб, 576x450
#115 #448583
В чем суть говнософта типа Theano, в котором простейшие примеры компилятся часами (ибо пистонопараша)? Расскажите, что там есть такого, чего нет или нельзя реализовать в пикрелейтед, древнем как говно мамонта, штутгартском нейросетевом симуляторе? Дохуя любых видов активации, методов обучения, для "нейронов" можно задавать вообще что угодно и т.д.
#116 #448595
>>448583

> штутгартском


прочитал как штульманском
#117 #448758
>>448583
1. Он на питоне.
А там кроме нейросетей есть библиотечки для статметодов, sci-kit, удобное дерьмо для подготовки данных и итд итп

2. Он не для нейросетей. Это просто либа для простого ускорения вычилений, используя GPU.
#118 #448814
>>448583
Для начала попробуй сделать на своем симуляторе сверточную НС. Если получилось, попробуй ее натренировать. О результатах доложи.
#119 #449127
>>448814

>попробуй сделать на своем симуляторе сверточную НС


Посоветуй, что почитать по ним годного. Я бы попробовал запилить, но почти нихуя за них не знаю.
#120 #449150
#121 #449290
Шел 2015 год. В рунете до сих пор нет нормального описания работы со сверточной нейронной сетью, на подобии как описано тут.
http://www.aiportal.ru/articles/neural-networks/back-propagation.html
#122 #449395
>>449290

> В рунете



Если честно, мне даже в голову не приходит, зачем, к примеру, нужно брать и переводить тот же туториал на deeplearning.
#123 #449397
>>449290
Ничего не поделаешь, в России нет передовых исследований на эту тему. Поэтому нет и публикаций, туториалов и прочего.
#124 #449401
>>449397

Дофига русскоговорящих в зарубежных исследовательских группах. Но непонятно, на кой черт переписывать хороший годный туториал. Там же всё есть. Это никому не нужно.
#125 #449403
>>449401
Для популяризации и просвещения.
#126 #449405
>>449403

Не понимать. Можно же просто дать ссылку на хороший, расширяемый и поддерживаемый в акутальном состоянии туториал.
#127 #449407
http://synthesis.ipi.ac.ru/sigmod/seminar/s20150129
Вот еще хороший новый относительно материал, но незнающим диких математических операторов и как и где искать для своего любимого языка их решение с помощью численных методов, путь в такие нейросети закрыт.
#128 #449408
Вот чет нашел интересное.
https://www.youtube.com/watch?v=eSPgqo4XzrI&feature=youtu.be
#129 #449413
>>449407

Ты не поверишь, на на том же deeplearning.net есть туториал с RBM и Deep Belief сетями.

Где ты нашёл там дикие математические операторы, кстати говоря?
#130 #449415
>>449408
>>449407

Презенташка кстати хороша.
Но я откровенно не понимаю агрессивное нежелание использовать англоязычные источники.
#131 #449445
>>439826
Стало яснее, нужно теперь совместить понимание и твой код. Бюро, а не подскажешь, где ещё есть инфа на эту тему?
#132 #449467
Оп, ты спрашивал про NLP?
В машинном переводе используют deep learning.
Еще ты можешь зайти на тот же kaggle и посмотреть конкурс по sentiment analysis. В NLP вообще полно задач: извлечение фактов, мнений, семантика, снятие неоднозначности многозначных слов и тд и тп.

Для задач высокого уровня нужно еще подготовить текст: морфология, части речи, etc.

магистр nlp из вшэ
#133 #449532
Мне кажется что, если перевести общение, например, в зк на английский, то куча быдла отсеется. Студенты с лабами не смогут создавать триды. Вопросы какой язык учить отпадут.
Нужно обдумать какую-нибудь капчу грамматическую.
#134 #449544
>>449532
Анус свой обдумай, небыдло.
#135 #449547
>>449544

> небыдло


> сосач

#136 #449818
>>437727
И еще вопрос. Для настройки использовался только метод обратного распространения ошибки или в начале использовали метод ограниченной машины Больцмана?
#137 #449825
А мы вот в шараге писали что-то типа простенького поисковика по текстам. Ну там TF-IDF, LSA.

Подскажите тему для курсача, что бы структурно пораспознавать и написать реализацию более-менее рабочую. Ну всмысле что-то типа химических формул (http://habrahabr.ru/post/172651/), таблиц или мат.формул (Почитал публикации по мат. формулам и оказалось что там слишком хардкорно, за пару месяцев не успею). Вот с таблицами можно заморочиться, ну типа распознать структуру, тексты в ячейках, но мне кажется простовато, хотя я на данный момент знаю только как сделать двухцветное изображение из фотки и как линии найти, лол.
#138 #449827
>>449825
https://github.com/olologin/LSA
Вот кстати LSA, с парсером выборки из википедии.
#139 #449838
>>449467
Спасибо.

>>449818
Я использовал градиентный спуск, т.е. обратное распространение ошибки. Не все методы работают одинаково хорошо, но различия там уже в последних долях процентов точности.

>>449825
По-моему для курсача распознавание таблицы будет очень даже хорошо. Это совсем непросто, и есть серьезный шанс что ты и это за пару месяцев не успеешь, но это хотя бы реалистичный проект.
#140 #449946
>>449827
прикольно, сейчас эксперементирую с skikit, делаю tfidf на лемматизированных документах(mystem), следом будет lsa на tfidf матрицу.

nlp студент
#141 #449974
>>437727
1. Не вижу в проекте файл с весами.
2. Сколько и какие слои делал?
3. Как подбирал начальные значения весов?
4.Функция активации гиперболический тангенс?
#142 #450059
>>449974
1. bin/classifier.b
2. 1) 5 сверток 3х3;
2) 10 сверток 3х3;
3) полносвязный слой с 250 нейронами;
4) выходной слой с 10 нейронами.
3. По заветам LeCun'а из "Efficient BackProp".
4. Да.
#143 #450356
>>450059
Чет не хочет у меня обучаться нормально. Постоянно прыгает и меняет ответ(бывает с правильного на неправильный и т.д.). На 50к вариантах 10 цифр пытаюсь научить.
#144 #450366
>>450356
Я не понял, что у тебя не так. Что прыгает, какой ответ меняет? Это нормально, что во время тренировки ответы меняются. Нужно смотреть на общую ошибку на отдельной выборке.

Общие рекомендации:
Начни с простого. Попробуй для начала перцептрон, без скрытых слоев. Когда он заработает, добавь один скрытый слой с небольшим количеством нейронов. Отладь код на простых задачах: перцептрон, например, должен уметь решать OR, сеть со скрытым слоем - XOR.

Обучающая выборка может быть слишком сложной, с сильным шумом и искажениями.
#145 #450371
>>450366
Это я уже делал и все получалось. Лучше скажи сколько нужно приблизительно итераций, чтобы обучить 10 цифрам разных шрифтов(20 штук) с небольшими искажениями. Иногда у меня цифры немного вылетают за границы при генерации, это допустимо при обучении?
#146 #450379
>>450371
Зависит от того, какие у тебя итерации. Я делал стохастический градиентный спуск с минибатчами по 20 примеров. За одну эпоху (проход по тренировочному множеству, около 150000 примеров) сеть давала очень хорошее решение, с ошибкой меньше 0.1%. Это если правильно выбрана скорость обучения. Окончательно сходилась сеть примерно за десять эпох. Получается 75000 итераций (обновлений весов).

>цифры немного вылетают за границы при генерации, это допустимо при обучении?


Если цифра хорошо видна и отличима от других, должно быть ок.

>Это я уже делал и все получалось.


Что именно получалось? Например, какую ошибку дает твой перцептрон, обученный на тех же данных? А сеть с одним скрытым слоем? Какое количество скрытых нейронов оптимально? Какую ошибку дает сверточная сеть? Ты уверен, что возможно распознать лучше?
Когда получишь ответы на все вопросы, будет понятнее, куда двигаться дальше.
#147 #450384
>>450379

>скорость обучения


Не совсем понятно как ее подобрать. Я для слоя брал 1/корень квадратный(количество весов входящие в нейрон в слое). Можно еще скорость корректировать по мере обучения.
#148 #450391
>>450384
Вручную перебирай и смотри график сходимости ошибки. Установить какое-то число заранее, не проверив другие - не годится.

Можешь использовать автоматический метод, например adaDelta, но это уже продвинутый уровень.
#149 #450395
>>450391
Ясно, спасибо, буду разбираться.
#150 #451233
Давайте подумаем как круто сегментировать текст. Допустим нам нужны Bounding Box'ы вокруг каждого символа, что можно придумать? Ну тривиальный случай когда все символы на бинарном изображении разрывны, просто закрашиваем Connected Components и метим каждую компоненту. А что в случае если разные символы плавают и соединены? Чёт гуглю и вообще ничего найти не могу по этой теме. Вот думаю может какой-нибудь генетический алгоритм сделать, с делением и обьединением Bounding Box'ов пока не достигнем максимальной суммы вероятностей каким-нибудь классификатором который выдаёт некую вероятность (логистическую регрессию например) того что в Bounding Box'е какой-то определённый символ.

Из условий дополнительных например - как можно меньшая площадь пересечения между Bounding Box'ами, чтоб мы не отрицали возможность их пересечения (Когда символы наезжают друг на друга) но и старались избегать такого случая, т.к это редко.

Ну и ваши идеи погенерируйте.
#151 #451234
>>451233
ТЕБЕ НЕ СКАЖУ
#152 #451240
>>451234
ДА У НАС ТУТ БУДУЩИЙ ЦУКЕРБЕРГ И ЭЙЛЕР НЕ ЖЕЛАЮЩИЙ ДЕЛИТЬСЯ СВОИМИ МИЛЛИОННЫМИ ИДЕЯМИ.
#153 #451245
>>451240
НУ А ХУЙЛИ ТЫ ИСХОДНИКИ ВСЕ НЕ ОПУБЛИКОВАЛ?
#154 #451293
>>451233
Нет, идея фигня.
Создатель идеи
#155 #451326
>>451233
Andrew Ng в своем курсе предлагал делать отдельный классификатор, который определяет границы между символами. Не знаю, насколько это удачная идея. Можно попробовать.
#156 #453105
>>450395
В общем поковырялся я с весами. Настраивается очень херово при включении искажений, хотя как видно из примеров, должно хорошо обучаться даже на рукописных символах. Такое впечатление что сеть не сверточная, а обычная полносвязная с 2-мя слоями, т.к. совсем не обобщает. Ведь не должны же сеть смущать небольшие искажения и сдвиги? Без искажений добился вероятности 0.004, с искажениями 0.15. Хотя эти искажения почти не заметны. В чем подвох - хз. Может как-то хитро надо подстраивать скорость обучения?
#157 #453123
>>453105
Любые искажения сильно затрудняют распознавание. Вообще без искажений задача тривиальна. Если у тебя 10 цифр, т.е. всего 10 возможных входных примеров, то там по одному пикселю обычно можно отличить каждую.

>Может как-то хитро надо подстраивать скорость обучения?


У меня работало на константной. Я подбирал ее вручную. Обычно это в диапазоне 0.05 - 0.0001, хотя все зависит от деталей реализации.

Если хочешь подробной диагностики, то предоставь дополнительные данные, как то: кривые ошибки на тренировочном и тестовом множествах в зависимости от номера итерации. Лучше если ты к тому же сделаешь эти графики для полносвязной сети. Также приведи несколько примеров входных картинок, на которых натренированная сеть ошибается. По этим данным я попробую погадать, что не так.
#158 #453826
>>453123
Спасибо, вроде разобрался. Скорость уменьшил и пошло более менее. Поиграюсь с скоростью, может получше еще настрою.
#159 #453998
>>453105

>Ведь не должны же сеть смущать небольшие искажения и сдвиги?


Ты синтетические данные используешь?
#160 #454065
>>437761
Блядь прошёл этот курс, сделал все задания, получил 100%. Вроде по ходу дела всё понимал.
Так и не понял что делать когда закончил. Какие-то блядь обрывочные знания всего есть, а куда с этим идти, какие проекты пробовать делать не понял.
Нейронные сети вообще хуёво объяснили, как закодить примерно понятно, а как продумать всю архитектуру нет.
В итоге я просто покатился себе дальше. Делал курс осенью 2013, сейчас вообще нихуя не могу вспомнить. Хотя наверное освежить можно быстро (кроме нейронных сетей и ёбаных SVM).
Не рекомендую так проходить курсы.
#161 #454092
>>453998
Генерирую исходя из готовых шрифтов.
#162 #454111
>>454065
Он рассказывает и про типичные случаи использования, приводит примеры. Сейчас эти технологии используются повсеместно. Распознавание, датамайнинг, рекомендательные системы очень распространены.
#163 #454119
>>454092
Если хочешь устойчивость к небольшим искажениям, берёшь каждый пример в трейнинг сете и делаешь из него десяток других, применяя небольшие искажения.
#165 #454318
>>453105
Добился с искажениями вероятности где-то 0.02, дальше чет не хочет(хотелось бы как и без искажений - 0.004). Шаг сделал самый маленький - 0.0001. Щас пробую с 0.00001 может чет обучится, хотя я уже стал сомневаться. Очень странно, что иногда путает очевидную 6 с 0 и еще некоторые цифры.
#166 #454478
>>454318
Точность с искажениями всегда будет меньше. Попробуй натренировать с более сильными искажениями, а потом протестировать со слабыми. Может получиться точнее.
#167 #456115
>>454478
Там из-за искажений цифры иногда неплохо так вылезали за границы картинки, потому вся сеть сильно перестраивалась и постоянно не могла нормально настроиться.
#168 #456209
>>456115
Тогда не удивительно, что трудно натренировать. Зато такая сеть будет более устойчива к ошибкам сегментации.
На вакабе я тренировал на идеально отцентрированных символах, которые на 100% помещались во входную картинку. В результате при малейших ошибках сегментации точность сильно падает. Приходится перебирать разные возможные варианты сегментации.
#169 #456558
А что скажете за такой софт, как МОЧА https://github.com/pluskid/Mocha.jl документация - http://mochajl.readthedocs.org/en/latest/ Может в сверточные сети, аутоенкодеры. Пробовал кто?
#170 #456572
>>456558
Посмотрел вебсайт. Пока что непонятно, что из этого выйдет, время покажет. Хорошо бы сравнить производительность с теано, например.
#171 #456652
А что стало с твоей распределенной доской? Чому больше не пилится?
#172 #456655
>>456652
Забросил пока что, увы. Однажды снова придет вдохновение, и я ее допилю. Там почти все работает внутри, но нужно сделать интерфейс. Это довольно трудоемкая задача.
#173 #456665
>>456652
>>456655
А в каком смысле она «распредёлнная»?
любопытный мимокрокодил
#174 #456672
>>456665
В двух словах: работает по принципу bitmessage.
#175 #464676
>>456115
Поэкспериментировал я с искажениями и что-то лучше 3.5 процента не удалось настроить, на глаз генерируемые капчи легко распознаются. Не понимаю в чем причина.
#176 #464741
>>464676
О, как раз собирался на днях бампнуть свой тред.

Если на глаз легко распознается, то НС должна сработать. 3.5% - довольно большая ошибка на одной букве (речь ведь об этом?).
Причин может быть очень много, как ты уже и сам видел. Может, сеть нужна большего размера, или инициализация не в том диапазоне. Я там повыше писал, какую я отладочную информацию использую - выложи эти графики сюда, посмотрим.
#177 #464744
>>464741
Ок, тогда завтра уже выложу, т.к. сеть будет до завтра обучаться. Обучение будет на 100 эпох стартовый коэф обучения сделаю 0.001 и на каждой эпохе буду уменьшать в 0.9 раза. Обучение - 10000 циклов, проверка обучения - 1000 циклов.
#178 #464746
>>464741
обучать с самого начала или взять то что я пытался обучить и пробнуть продолжить обучать, надеясь на чудо?
#179 #464747
>>464746
Для диагностики лучше сначала начать. Там будет видно, имеет ли смысл продолжать.
Нужно определить такие вещи:
1) overfitting vs. underfitting. Это можно понять по графику ошибки на тренировочном и тестовом множествах.
2) сошлелся ли градиентный спуск, или нужно продолжать обучение. Просто видно из графика.
3) достаточно ли тренировочных данных. Можно понять, варьируя размер тренировочного множества.
0 Кб, 16x16
#180 #464751
>>437727
ДАВАЙ НА КИКСТАРТЕРЕ СОЗДАВАЙ, ПРОДАВАЙ СВОИ ИСХОДНИКИ НА КИКСТАРТЕРЕ, РАЗ БЕСПЛАТНА НЕ ХОЧЕШ ДАВАТЬ
14 Кб, 396x247
#181 #465474
>>464747

Вот че получается, но это еще не конец обучения. Там модно до 3.5 доучить.
157 Кб, 960x750
#182 #465545

>http://arxiv.org/abs/1502.01852


>we propose a Parametric Rectified Linear Unit (PReLU) that generalizes the traditional rectified unit.


>Training A/B on four K20 GPUs, or training C on eight K40 GPUs, takes about 3-4 weeks.


Не, вы это серьезно?! Алгоритм сходится месяц на кластере из 4 или 8 теслав?
#183 #465554
>>465545
Но сходится же!
17 Кб, 564x471
#184 #465691
>>465474
Теперь расскажи, что это такое. Какие единицы по осям, мне непонятно.
Предполагаю, что это ошибка в зависимости от эпохи обучения.

График очень хаотичный. Нужно уменьшить скорость обучения. Ты для вычисления одного шага по градиенту все тренировочное множество используешь?
Если самая первая точка (200) это ошибка до обучения, на случайных весах, то обучение не очень эффективно.

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

>>465545
А ты как думал? Там тренировочное множество огромное вроде бы, ну и глубокие сети всегда были адски медленными. Бесплатно ничего не бывает.
Я тебе больше скажу, если десяток таких сетей натренировать и потом усреднять их показания, почти наверное ошибка будет еще меньше. Возможно, даже гораздо меньше.
#185 #465695
>>465691

>Ты для вычисления одного шага по градиенту все тренировочное множество используешь?


Ну, я как бы не уверен что равномерно берется множество, т.к. случайно(рандом), ну а из 1000 - думаю более менее берутся все(0-102 раза, 1-96 раз, например). Я так понял это неправильно?
#186 #465761
>>465695
Случайная выборка это нормально. Я спрашивал про количество примеров, которое ты используешь для вычисления одного обновления весов.
Если ты используешь для этого все или почти все примеры, это называется batch training. Это не самый эффективный способ.
Я для одного обновления беру 20 примеров. Такая тренировка называется mini batch. Преимущество - гораздо большая скорость сходимости, к тому же это позволяет не застревать в мелких локальных минимумах (хотя, судя по твоему графику, у тебя проблема не в этом).
#187 #465834
>>465761
Странно, всегда считал, что обновления весов надо делать сразу после 1 примера.
#188 #465837
>>465834
Это называется стохастический градиентный спуск. Батчи лучше работают.
#189 #465869
>>465837
Значит похоже я еще и веса неправильно настраивал, т.к. обновлял сразу по проходу, а надо видимо уже после пересчета всех дельт во всех слоях обновлять веса.
#190 #465879
>>465869
Кстати, Andrew Ng это всё рассказывает в своем курсе.(https://www.coursera.org/learn/machine-learning)

Помимо начальных лекций про batch GD там ближе к концу рассмотрены еще несколько вариаций спуска
#191 #468648
А вот поясните за MNIST, например. Там вообще как-то можно сортировать выдачу? Допустим, мне надо по сотне разных изображений единичек, двоек и т.д., это можно как-то отфильтровать? В R делаю вот так:
to.read = file("c:/mnist/t10k-images.idx3-ubyte", "rb")
readBin(to.read, integer(), n=4, endian="big")
m = matrix(readBin(to.read,integer(), size=1, n=28*28, endian="big"),28,28)
image(m)
При этом выбирается рандомная цифра. integer() можно задать конкретно, тогда выбирается определенная цифра, ес-но. Но нигде не нашел в каком они там вообще порядке. Как быть-то?
#192 #468651
Не погромист, данную поебень можно использовать что бы написать вайпалку для сосача?
#193 #468667
>>468651
Только если яндекс капчу объебешь. Что вряд ли, ее не дурачки делали.
#194 #468669
>>468667
По распознаванию она будет одна из простейших как по мне.
#195 #468671
>>468669
Ну-ну.
#196 #468675
>>468669
Даже я, человек, не всегда правильно набираю ее. У яндекса 1 и 7 очень похожи.
3 Кб, 200x60
#197 #468676
>>468675

>Даже я, человек, не всегда правильно набираю ее


Ну если ты даун только. Не набрать настолько простейшую капчу это надо постараться еще. Видел бы ты что на некоторых сайтах творилось раньше(да и сейчас еще где то осталось)
#198 #468679
>>468676
Оче сложная капча для распознавания. Там на первом же шаге заполнение охуительных рваных контуров будет фейл.
#199 #468682
>>468669>>468676
На самом деле для машинного распознавания капча пиздецки сложная.
1) вместо цифр - только контуры.
2) контуры рваные.
3) цифры деформированные и наляпаны одна на одну.
4) левые полосочки, искажающие контуры.
Итого, даже главные компоненты для одинаковых цифр будут совсем разные. Глубокие же сети глубоко соснут из-за отсутствия устойчивых характеристик одинаковых цифр на таких разных изображениях.
25 Кб, 367x71
#200 #468685
>>468676
Ну вот на пике 7 и 1
#201 #470714
>>465879
И еще вопрос, если ответ от сети правильный, то в стохастическом градиентном спуске все равно надо суммировать дельты или нет?
#202 #470733
>>470714
Обязательно нужно суммировать. Иначе она никогда не сойдется, наверное.
#203 #472974
>>470733
а как же так?
http://habrahabr.ru/post/144881/

>Если сеть выдает правильный ответ — радуемся и ничего не делаем.

#204 #473793
>>472974
Бамп вопросу.
#205 #473811
>>473793
Там приведен известный алгоритм обучения перцептрона. Он работает только если а) сеть является перцептроном, т.е. не содержит скрытых слоев; б) тренировочное множество линейно сепарабельно. В твоей задаче не соблюдаются оба условия.
Ng и об этом тоже рассказывал в своем курсе.
44 Кб, 480x360
#206 #473935
Хабраподмывальню и вики надо в последний момент читать. Metacademy, ufldl wiki, cs229 - ваш выбор, обучатели диванные.
#207 #474263
>>473811
Как ни странно, но сеть у меня обучалась именно так, а наоборот не хотела почему-то. Нельзя же сеть настраивать если сеть дает правильный ответ или я неправильно понял алгоритм, что ли.
#208 #474355
>>474263

>а наоборот не хотела почему-то


Значит, у тебя ошибка в реализации.
#209 #474981
>>474355
ну фиг его знает, сеть точно со скрытыми слоями, т.е. уже якобы не должна обучаться.
7 Кб, 551x495
10 Кб, 551x495
#210 #475664
>>437727
ОП, у меня как раз вопрос. Никогда с распознаванием не имел дела.
ТЗ у меня в следующем: есть фигура и нужно, чтобы пользователь не отрывая руки нарисовал похожее что-то. После проведения мышью я имею массив точек. Я думал его распознавать через определение где какая прямая и относительность длинны к другим отрезкам. Но я не могу понять как мне определить новую грань фигуры правильно, чтобы неровности в ведении мышью не были помехой. Подскажи что делать, может уже готовые алгоритмы есть... В общем хоть что-то
#211 #475701
>>475664
Почему нельзя каждой точке квадрата сопоставить точку рисунка и посчитать отклонение?
#212 #475702
>>475664
Ты описал ТЗ для пользователя. Программа что должна делать? Распознать одну из нескольких возможных фигур? Или любой многоугольник?

Если многоугольники, то нужно распознавать прежде всего сегменты. На коленке прямые линии распознаются с помощью Hough transform. Сразу учти, что его утомительно настраивать, но если проявишь должное упорство, как-то распознаваться будет, кроме очень коротких отрезков. Вроде бы готовая реализация была в OpenCV, посмотри.

Если распознать нужно одну из нескольких заранее известных фигур, то я бы просто понизил разрешение и прошелся скользящим окном по картинке, сравнивая с шаблонами. Придется еще перебирать масштабы. В реализации это проще всего, но может быть слишком долго, смотри сам по своему ТЗ.
#213 #475794
>>475701
потому что масштаб неизвестен

>>475702
из заранее заготовленных фигур
в ТЗ по поводу производительности ничего не сказано, так что пофиг.
Попробую поработать с понижением разрешения. Спасибо
#215 #479063
>>479051
Погонял немного - пока так себе, до ИИ (как он в блоге выражается) довольно сильно недотягивает. Широко известные вещи угадывает, чуть в сторону - выдает instrumentation или еще пару общих классов, либо вообще мимо кассы.

Посмотрим, будут ли развивать. Мне интересно, до какого уровня эту технологию можно довести. Вряд ли тут возможно понимание картинки на человеческом уровне.
#216 #479089
>>468682
1) Обрабатываешь фильтром. Можно попоробовать фотошоские, пока. Мне лень такой хуней щас страдать.
Контуры заливаются.
2) Смотришь какие цифры сколько занимают по площади. Смазываешь по среднему и сравниваешь контрастность с эталоном.
...
3) Профит. Яндекс пидоры в попу ебуться.
#217 #479090
>>479089
Ах, да. Анонизмус (c). Не для продажи.
5 Кб, 258x248
#218 #479095
Например единичка дает на этом полотне от балды взял 242. А девяточка дает 230. Азаза, оттенков серого. Чем больше полотно по сравнению с цифрами тем выше вероятность ошибки.
#219 #479100
>>479095
Не такие цифры муйня. Надо пожирнее брать как у яндекса.
24 Кб, 450x444
#220 #479103
1 - 219
2 - 198
3 - 199
4 - 197
5 - 198
6 - 189
7 - 209
8 - 181
9 - 188
0 - 189

Как то слабо распознается.
sage #221 #479119
Не тут надо думать. У Яндекса буквы действительно одна на другую залезают и немного искажены (что может быть похуй в зависимости от способа распознавания). А сверху на них черные и белые полоски накладывают и поэтому кажется что рваный контур. Но это белые полоски.
#223 #479199
>>437727
Если не 100% то там все 0%. Я заметил один момент: на некоторых сайтах когда хотя бы одна цифра набирается не правильно ее будут специально ставить в капчу. Благо сделать это не так сложно (сравнить строки и выдать хотя бы одну неправильно распознанную цифру).
sage #224 #479202
Ну и замкнуть контур в Яндекс капче, думаю не так сложно. Сложнее потом все это обработать. И контрастность скорее всего не подходит.
#225 #482742
>>437727
ЕТОТ ПИДОР ПОДЕЛИЛСЯ ИСХОДНИКАМИ ИЛИ ПРОДОЛЖАЕТ ЖОПОЙ ТОРГОВАТЬ?
#226 #483174
>>479120
Вот нахуя ты это сделал?
#227 #484507
Заебался искать тред.
Вопрос к ОПУ.
Как относишься к HTM и NuPIC-у ?
#228 #485178
>>484507
Лет пять назад следил за развитием, даже экспериментировал немного с их СДК. Потом стало ясно, что дальше игрушечных задач они его вывести не могут. Идеи там интересные про интеграцию по времени, разреженные представления. Но для простого распознавния НС и другие стандартные методы гораздо мощнее.
Сейчас они неплохо развернулись с оупенсорсом. Посмотрел гитхаб, а там куча людей участвует, коммиты кипят. Не знаю, что они делают - увидим еще лет через пять. Я настроен скорее скептически.

Если тут кто-то в теме, распишите вкратце последние новости и направление развития. Я был бы очень благодарен.
#229 #485186
>>437727

> да и просто можно обсудить нейронные сети


Посоветуй литературу.
#230 #485195
>>485186
Если тебе прям литература нужна, то классикой считается Neural Networks and Learning Machines Хайкина. Это тысячестраничный учебник, покрывающий все основы на очень глубоком уровне. Про новомодное глубокое обучение там ничего нет.

Экспресс-курс я уже советовал здесь: >>437761
#231 #485453
>>437727
Посоны, взял очень рандомную генерацию цифр со всякими искажениями 2 ляма обучающих циклов уже дал, т.е. 20 циклов по 100к обучал 20 дней, ошибка 0.27 где-то, это нормально?
#232 #485737
>>485453
Трудно сказать, не зная деталей. Я уже пытался диагностировать проблемы с обучением у другого анона, без особого успеха. Здесь вкратце написано, с чего начать: >>453123

Но вообще сильно рекомендую начать с какого-нибудь курса, туториала или примера. Вслепую применять эти алгоритмы бесполезно. Нужно четко представлять, как и почему это работает.
#233 #486363
Тред не читал

По рукам бы надавал ОПу за то, что названия методов начинает с заглавных букв!

Мимоджавист
#234 #486368
>>486363
Поссал тебе на лицо.

мимо-диезер
#235 #486422
>>486363
От шарпа привычка осталась. Я и на питоне так пишу, лал.
#236 #486440
>>486422
ИСХОДНИКИ ДАВАЙ, ШЛЮХА ТЫ НАЕМАНАЯ
#237 #491828
Релевантное соревнование в kaggle: https://www.kaggle.com/c/denoising-dirty-documents
#238 #499546
https://www.youtube.com/watch?v=qv6UVOQ0F44

Сеть играет в марио
#239 #499594
>>499546

>Эволюционный алгоритм


Дерьмо собачье.
И играет он как говно.
Не говоря уже о том, что окружение СТАТИЧЕСКОЕ. Враги всегда совершают одни и те-же действия.
Все "обучение" сводится к поиску оптимального пути.

Алсо, этот хрен ничего не понимает в эволюции.
#240 #499609
>>499594
Этот чувак тебя травил в детстве?
#241 #499631
>>499609

>Этот чувак тебя травил в детстве?


Мамку твою травил.
Тебе бы все на личности перевести.
#242 #499632
>>499631
То, как ты окрысился, это не переход на личности?
#243 #499638
>>499609

>чувак


чувак - кастрированый баран
чухан - кастрированый боров
#244 #499639
>>499638
Пеши исчо.
#245 #499641
>>499632

>То, как ты окрысился


Что это значит вообще?

>это не переход на личности?


Нет.
Я ничего не знаю о личности афтора, и не высказывал никаких мыслей по этому поводу.
Только касательно примитивности и убогости демонстрируемого ИИ. Для которого никакие нейросети ненужны. А он еще и "эволюционный" подход к нему прикрутил. Зачем козе баян? Что-то тут явно лишнее.

>Алсо, этот хрен ничего не понимает в эволюции.


Ну да, я глубоко сомневаюсь в уровне знаний автора относительно эволюции. В свете его высказывания о том, что именно таким, как он изобразил, образом развилась жизнь на земле. Эволюционные алгоритмы имеют очень мало общего с эволюцией живых организмов. И странно, что автор начал заниматься эволюционной нейросетью не разобравшись, хоть примерно, с тем, что это за эволюция такая в природе.
#246 #499642
>>499638
чувак - Человек, Уважающий Высокую Американскую Культуру (у стиляг так расшифровывалось)
#247 #499646
>>499639
Вообще, еще в РИ чуваками называли грязных неопрятных тупых бомжеватых сельских парней.
Странно кстати, что современные источники на это не ссылаются.
Придумывают самые невообразимые происхождения для слова. Когда ему овер 300лет в русской речи.
1391 Кб, Webm
#248 #499652
>>499642
>>499646
Думаю, что над стилягами кто-то хорошо пошутил.
Алсо

>Высокую Американскую Культуру


Случайно не придумаешь такое.
Я как-то вопрос этих стиляг особо не изучал, но вот чисто по этому одному факту видно, как их искусственно создавали, да еще с юморком, с издевкой.
#249 #499653
Это от цыганского слова "чаво" - парень.
#250 #499658
>>499641
Мне показалось, что в твоей поспешной и весьма нелестной оценке его работы проявилась какая-то личная неприязнь.

>Для которого никакие нейросети ненужны.


>А он еще и "эволюционный" подход к нему прикрутил. Зачем козе баян? Что-то тут явно лишнее.


Невероятные откровения. А с каких позиций ты это утверждаешь? Ты уже занимался этой задачей, ознакомился с историей вопроса? Пока что это пустословие.

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


Ну это глупость, ок. Можно списать на популистскую направленность ролика, для широких масс.

>Эволюционные алгоритмы имеют очень мало общего с эволюцией живых организмов.


Общего довольно много. Все-таки придуманы эти алгоритмы были именно как модель эволюции. В данном случае нас не интересует эволюция в природе, а лишь способ решить задачу.
#252 #499683
>>499658

>Мне показалось, что в твоей поспешной и весьма нелестной оценке его работы проявилась какая-то личная неприязнь.


Показалось.
Мне вот кажется что у тебя какое то очень личное отношение к "его" работе. Тебе она оче нравится? Да, забавно, уровня курсовой работы.

>А с каких позиций ты это утверждаешь?


С позиций анонимного комментатора.

>Ты уже занимался этой задачей, ознакомился с историей вопроса?


Вы с какой целью интересуетесь?
Вам важно разобраться в вопросе, или вы хотите меня оскорбить?

>Пока что это пустословие.


Не понимаю что ты этим хочешь сказать.
Нет, это не пустословие. Это мое личное мнение.
Мне не жаль если оно задевает чьи-то чувства, и твои в частности. Я делюсь им бесплатно и безусловно.

>Ну это глупость, ок. Можно списать на популистскую направленность ролика, для широких масс.


Ох. Да нельзя я думаю. Я думаю это типичный ролик уровня статей на хабре, от хипстеров для хипстеров. Заниматься компутер саенс теперь модно, ты забыл?

>Общего довольно много.


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

>Все-таки придуманы эти алгоритмы были именно как модель эволюции.


Как примитивная модель эволюции как ее понимали те кто эти алгоритмы придумывал и тогда когда они это делали.

>способ решить задачу


Через задницу.
Нейросеть там лишняя чуть более чем полностью, как и эволюционный подход.
Сколько оно обучалось? 24 часа?
За то-же время можно было сделать поиск по графу, если не за меньшее.
#252 #499683
>>499658

>Мне показалось, что в твоей поспешной и весьма нелестной оценке его работы проявилась какая-то личная неприязнь.


Показалось.
Мне вот кажется что у тебя какое то очень личное отношение к "его" работе. Тебе она оче нравится? Да, забавно, уровня курсовой работы.

>А с каких позиций ты это утверждаешь?


С позиций анонимного комментатора.

>Ты уже занимался этой задачей, ознакомился с историей вопроса?


Вы с какой целью интересуетесь?
Вам важно разобраться в вопросе, или вы хотите меня оскорбить?

>Пока что это пустословие.


Не понимаю что ты этим хочешь сказать.
Нет, это не пустословие. Это мое личное мнение.
Мне не жаль если оно задевает чьи-то чувства, и твои в частности. Я делюсь им бесплатно и безусловно.

>Ну это глупость, ок. Можно списать на популистскую направленность ролика, для широких масс.


Ох. Да нельзя я думаю. Я думаю это типичный ролик уровня статей на хабре, от хипстеров для хипстеров. Заниматься компутер саенс теперь модно, ты забыл?

>Общего довольно много.


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

>Все-таки придуманы эти алгоритмы были именно как модель эволюции.


Как примитивная модель эволюции как ее понимали те кто эти алгоритмы придумывал и тогда когда они это делали.

>способ решить задачу


Через задницу.
Нейросеть там лишняя чуть более чем полностью, как и эволюционный подход.
Сколько оно обучалось? 24 часа?
За то-же время можно было сделать поиск по графу, если не за меньшее.
#253 #499688
>>499660
Лень искать, в книге видел.
А если слово было в широком употреблении на 1850 год. То и на 1750 скорее всего было.
Алсо, книгопечатание возникло где-то в конце 16 века. Так что...
#254 #499713
>>499683
Да, мне она нравится.
Пустословие - это когда тебе сказать нечего, но ты все равно говоришь.

>За то-же время можно было сделать поиск по графу, если не за меньшее.


О, вот уже более конкретное утверждение. Только по-прежнему необоснованное. Ты хотя бы приблизительно подсчитал, какого размера будет граф? Как ты вообще это себе представляешь, делать один шаг, записывать состояние, потом восстанавливать одно из записанных, как в А*? Это будет чудовищно долго работать, т.к. игра рассчитана на прохождение вперед. Да и состояния большие, у тебя память исчерпается на десятой секунде игрового времени. Но ты, конечно, об этом всем даже не задумывался.

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

>Это мое личное мнение.


Ты просто ляпнул чушь, наивно полагая себя умнее всех. Причем сделал это в агрессивной манере, свойственной невеждам.
4213 Кб, Webm
#255 #499777
>>499713

>Пустословие - это когда тебе сказать нечего, но ты все равно говоришь.


Мне всегда есть что сказать.
А вот зачем ты мне что-то пишешь - непонятно.

>Да, мне она нравится.


Хорошо для тебя.

>О, вот уже более конкретное утверждение. Только по-прежнему необоснованное. Ты хотя бы приблизительно подсчитал


>Ты


>у тебя


>но ты


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

>Это будет чудовищно долго работать, т.к. игра рассчитана на прохождение вперед.


24 часов хватит.

>Его решение линейно зависит от длины уровня


Морозная история.

>Ты просто ляпнул чушь, наивно полагая себя умнее всех. Причем сделал это в агрессивной манере, свойственной невеждам.


Ох анончик, разберись со своими комплексами и проблемами вначале, а потом уже по интернету определяй кто что думает на другом конце интернета.
sage #256 #499867
>>437727
ЕТОТ ПИДОР ПОДЕЛИЛСЯ ИСХОДНИКАМИ ИЛИ ПРОДОЛЖАЕТ ЖОПОЙ ТОРГОВАТЬ?
#257 #500030
>>499594
Интересно было бы посмотреть как разные виды нейросетей будут справляться с этой задачей.
#258 #500033
>>500030
Почитал я про генетический алгоритм и мне показалось, что это какой-то рандомный подбор весов. Или я неправ?
#259 #500084
>>500030

>Интересно было бы посмотреть как разные виды нейросетей будут справляться с этой задачей.


Лучше.
Вообще. В вдогонку всему остальному. Для тех кто в танке.
1) Медленнее генетических алгоритмов уже нет. Потому, их нигде не применяют, разве что в курсовых работах/игрушках и прочей околонаучной деятельности. Ну кто его знает, может где-то и используют серьезно конечтно, но очень очень редко.

2) Генетические алгоритмы и нейросети это оче оче разные вещи. Они несовместимы, ваще. Если кто-то говорит о генетической нейросети - он или дурак/первокурсник или вот вот получит нобелевку.
Конечно можно их как-то использовать вместе, например натренировать кучу нейросетей, а потом скрещивать их гены.

>>500033

>Почитал я про генетический алгоритм и мне показалось, что это какой-то рандомный подбор весов. Или я неправ?


Мне кажется, что гений решил тренировать сеть генетикой. Да, генерировать миллион рандомных наборов весов, а потом выбирать самые успешные и скрещивать их друг с другом.
Ад.
Просто Ад.
#260 #500110
ГА и НС прекрасно сочетаются. Применяется это там, где нет обучающей выборки, как альтернатива обучению с подкреплением. Обучение с подкреплением имеет много проблем на нетривиальных задачах, а НС с ГА, реализующая direct policy search, как-то обычно работает.
Алгоритм, используемый в той работе про марио, называется NEAT. Он был специально разработан для наиболее эффективной нейроэволюции. Материалы по нему приведены в ссылках в описании видео.
#261 #500332
>>500110
какое самое подробное описание ГА в сети есть на русском?
#262 #500340
>>500332
Пролистал это: http://mathmod.aspu.ru/images/File/ebooks/GAfinal.pdf
Вроде неплохо, хотя там только самая классика, и местами излишне детально.
#263 #500393
>>500340
Кароч, вроде понятно стало, что этот алгоритм не просто рандомный выбор чисел(решения), а еще и такой, чтоб почти не повторялись предыдущие числа в других итерациях. Не совсем тогда понятно преимущество от простого инкремента.
804 Кб, 1057x356
350 Кб, 1200x800
370 Кб, 1200x800
174 Кб, 1145x862
#264 #500596
Нейронная сеть в режиме восстановления изображения создает картины в постмодернистском стиле: http://googleresearch.blogspot.no/2015/06/inceptionism-going-deeper-into-neural.html
По-моему шикарно.
#265 #500597
>>500596
Больше похоже на то, что видишь по кислотой. Механизм, скорее всего, тот же самый
#266 #500598
>>500596
Четвёртый пик - лучшее, что я видел в этом году.

ТЕКНОЛОДЖИС

А точно не допиленное кривыми руками хендмейдонаебалово? А то есть тут один спейс телескоп с красявыми картиночками...
#267 #500608
>>500598
Меня тоже пробрало. На уменьшенной картинке ничего особенного, а как присмотришься... ИИСУСЕ!

В гугле давно занимаются распознаванием на глубоких нейронных сетях, и в статье объясняется, как были сгенерированы картинки. Звучит это правдоподобно.
#268 #500700
>>499546
Кто-то объяснит как он сделал входные данные в сеть и "нажатие кнопок"? Это все можно сделать тока допилив тот эмулятор или есть возможность подключаться к нему независимо от языка программирования?
#269 #500725
>>500700
Он использует этот эмулятор: http://tasvideos.org/BizHawk.html
Эмулятор поддерживает скриптинг на луа. Весь его код написан на луа, вот исходник: http://pastebin.com/ZZmSNaHX
48 Кб, 495x100
#270 #507910
Интересный пост с СО, в ответах приводятся неплохие примеры применений НС: http://stackoverflow.com/questions/1559843/what-are-good-examples-of-solutions-to-neural-network-problems?rq=1
Первый ответ - от чела, занимающегося нейроэволюцией, про систему обнаружения препятствий на роботе.
#271 #509204
>>507910
Кто-то может вкратце описать как настраивать эту сеть? Я так понял там появляются нейроны(соответственно и связи) по генетическим законам. И еще нашел исходник в сети реализующий эту сеть с помощью связанных списков. Не проще ли этот алгоритм реализовать с помощью обычных массивов?
#272 #509348
>>509204
Реализовывать можно как угодно. Если тебе проще массивами, делай так.
Настройка описана в многочисленных статьях про NEAT и содержит много деталей и шагов, вкратце описать я не возьмусь. На совсем абстрактном уровне:
ГА инициализируется набором случайных НС без скрытых нейронов, т.е. выходы напрямую соединяются со входами. При мутации сети у нее может измениться какой-нибудь вес, а также может добавиться новое соединение между нейронами, либо добавиться новый нейрон. При этом каждой структурной мутации присваивается номер, и при скрещивании сети проверяются на совместимость с помощью этих номеров. Это позволяет эффективно скрещивать сети, учитывая их совместимость.
Также вся популяция автоматически разделяется на несколько видов, которые не скрещиваются и не соревнуются между собой. Это позволяет не сходиться к локальному минимуму раньше времени.
#273 #517483
>>437727
Бампаю
#274 #521558
>>517483
Как скрещивать сети в ГА? Вообще как скрещивать и мутировать реал тип данных. там же еще мантисса.
#275 #522458
>>440850
Название конторы на М начинается, состоит из двух слов и офис разработки в одном миллионнике? Или я ошибаюсь?

мимоаутист
#276 #523269
Опушку вопрос.
Какие движки нс умеют в обучение на видеокартах?
#277 #523628
>>523269
ОП похоже забил на тред.
#278 #523664
>>523628
ЕМУ ДОСТАТОЧНО ЧТО РЕКЛАММА ЕГО ЖОПЫ НАХОДИТСЯ НА НУЛЕВОЙ А НА ТЕБЯ ЕМУ ГЛУБОКО НАСРАТЬ
ПОСКОКУ ТЫ ДЕБИЛ
А МНЕ ОН НЕ ДАЕТ ИСХОДНИКИ ПОТОМУЧТО ОН ЧМОШНИК
#279 #523889
>>523664
черкани мне в лс
#280 #533653
>>523269
Теано, например.
#281 #533654
>>522458
Ошибаешься.
#282 #533655
>>523628
Нет, я отвечаю на все вопросы. Просто обсуждение вяло идет. Попозже вброшу пару интересных ссылок по теме.
101 Кб, 1219x738
#283 #534969
Недавно наткнулся на такую вещь: Neural Turing Machines. Разработано в 2014 людьми из гугла, все из той же группы что занимается глубоким обучением. Статью можно прочесть здесь: http://arxiv.org/abs/1410.5401

Суть: на основе НС с особой архитектурой построено некое подобие машины Тьюринга. Имеется память относительно небольшого объема, считывающие и записывающие головки, а также программа. Все это вместе представляет из себя рекуррентную НС, и ее можно обучать на примерах с помощью backpropagation.
Таким образом, эта НС может обучаться алгоритмам, выполняющимся пошагово. В статье описывается обучение копированию, многократному копированию, и сортировке объектов. Т.к. система учится не просто интерполировать тренировочные примеры, но самому алгоритму, то она обладает недостижимой ранее способностью к обобщению. Например, ее тренировали копировать строки до 20 символов длиной, а после этого она умеет копировать гораздо более длинные строки. То же самое с сортировкой. Обычные рекуррентные архитектуры никогда не могли так обобщать.

Потенциально эта технология может позволить создавать системы, обучающиеся гораздо более сложным концепциям, чем это возможно сейчас. Нынешние архитектуры делают, грубо говоря, интеллектуальную интерполяцию между тренировочными примерами. Новая архитектура может делать нетривиальную пошаговую многоступенчатую обработку данных, создавать и использовать БД, находить алгоритмические закономерности в тренировочном множестве. Это очень круто.
#284 #535056
>>534969
бля какое же я днище, веб макакинг воревер блять
1501 Кб, 1517x1637
#285 #536401
С помощью сверточной сети фотография преобразуется в стиле знаменитых художников: http://arxiv.org/pdf/1508.06576v1.pdf
#286 #536610
>>523269>>536401
Охуенно, пость еще. Может нам создать единый machine learning тхред?
21 Кб, 432x360
#287 #536826
>>534969

>Neural Turing Machines.


>реализации:


>пистон https://github.com/shawntan/neural-turing-machines


>го https://github.com/fumin/ntm ГО, Карл!


Хотелось бы на R хотя бы. Ну чтобы была возможность стыковать, гибридизировать с чем-то еще. Так нет, сделают непригодное для использования нечто на пестони или вообще на каких-то индусских поделиях, я ебал. инбифо сам возьми да сделай!!111
#288 #536990
>>536826
Чувак, это счастье, когда есть пейпер и код к нему в паблике. Хоть какой. Обычно кода нет, а в пейпере недостает 80% инфы, которая, в лучшем случае, общеизвестна.

Что касается языка, то Theano написан на питоне, максимум тебе Lua встретится с Torch. Theano, такая штука типа CAS, что ты описываешь нейросеть в терминах операций с векторами и матрицами, а он сам тебе символьно рассчитывает градиент твоей нейросети. Потом он тебе эту нейросеть еще и в GPU компильнет.
Остальные языки, включая Go - приведут к ручному вычислению символьного градиента на бумажке, что есть полный отстой и никакого пространства для экспериментов. Если тебе нужен R, делай биндинги или аналог Theano под R (миллиард человеко-часов).
#289 #537037
>>536990
Код не от авторов, увы. Они зажали, и в статье тоже инфы недостает. На гитхабе энтузиасты воссоздали, и они довольно долго мучились с воспроизведением результатов, насколько мне известно. Сейчас вроде работает, хотя я сам еще не проверял.
>>536826
И таки да, теано это одна из стандартных систем для наколенных экспериментов с НС сейчас. Ты разберись сначала, потом критикуй.
#290 #537041
>>536826

>сделают непригодное для использования нечто на пестони


>подразумевает, что R используется кем-то, кроме обезумевших школьников.

#291 #537058
>>537041
R используют дядьки в банках, считая свои простенькие регрессии и получающие за час больше, чем ты зарабатываешь за месяц.
#292 #537090
>>537058
Им платят не за регрессию, а за то, что они знают что с чем регрессировать.
#293 #537092
>>537090
Whatever. R для таких задач довольно удобен. Но не чтобы на нем писать символьный дифференциатор для нейросетей.
Самое интересное, что казалось бы, Хаскель тут бы хорошо подошел, однако хуй там - питон и lua.
#294 #537194
Image Super-Resolution for anime-style-art using Deep Convolutional Neural Networks.

Demo-Application can be found at http://waifu2x.udp.jp/ .

https://github.com/nagadomi/waifu2x

Вот это я понимаю application, не то, что песиков рисовать.
123 Кб, 389x390
312 Кб, 778x780
431 Кб, 778x780
#295 #537265
>>537194
Офигеть, и ведь хорошо работает. Картинки: оригинал, ресайз с помощью ресемплинга (лучшая интерполяция, которую я нашел), результат этой программы.
157 Кб, 450x450
#297 #537314
>>537265
Неплохо.
403 Кб, 778x780
#298 #537321
>>537265
Но лучшие всё-таки кубическая и Ланцош.
#299 #537324
>>537321
На твоем пике - мыло.
#300 #537326
>>537324
Намного меньше мыла, чем на твоей лучшей интерполяции.
#301 #537327
>>537321
Артефакт на артефакте, чем лучше-то?
#302 #537334
>>537326
На твоем пике вокруг любого контрастного перехода довольно заметный звон интерполяционного фильтра.
#303 #537378
>>537037

>теано это одна из стандартных систем для наколенных экспериментов с НС сейчас.


Хуйня это из-под коня. Костыль на костыле костылем погоняет. Причем, основной код все равно на крестах или куде, пистон только в качестве враппера. Самый пиздец в том, что приходится ставить кучи ненужного говна, которое к тому же работает никак. Например, я так и не запустил код примеров с сайта. Здесь где-то спрашивал, никто нихуя не знает почему не работает (весь софт был установлен правильно, тесты проходят и компилятся нормально). И все это только из-за того что вместо враппера пистон. В том же R полно пакетов, в которых R не более чем враппер для кода на крестах, и все прекрасно работает, не считая того что сам R без всяких костылей - 64мб и сам язык изначально сделан для нужд датасайнс. А не простой ЯП общего назначения, которым обрабатывать данные можно только через хуеву тучу костылей.
#304 #537408
>>537378
Мне надо было - я разобрался. Для ленивого ковыряния не подходит, это да. Я уже тут давал ссылку на казуальную систему: http://cs.stanford.edu/people/karpathy/convnetjs/
Кликай, и у тебя все будет тренироваться сразу же прямо в браузере. Ничего не надо ни устанавливать, ни писать. Можно менять топологию сетей и т.д.
#305 #537435
>>537378
Ты просто тупой, смирись с этим. А в R нет ни одного пакета подобного уровня. Просто ты тупой и не понимаешь, чем Theano, который ГЕНЕРИТ КОД на С++, то есть по сути компилятором является", отличается от "враппера".
#306 #537441
>>537435

>тупой


>тупой


Ясно. Какого там пакета нет? Из всего что есть в этих ваших теанах в R нет только сверточных сетей. Только, умный ты наш. Из остальных глубоких сетей есть даже перепиленный из матлабовской версии код Хинтона и Салахутдинова из той самой оригинальной работы 2006 года по глубоким сетям. Перцептронов всяких и подавно навалом.
#307 #537466
>>537441
Нихуя тебе не ясно. У тебя проблемы с локусом контроля. Начнем с того, что Theano вообще никакого отношения к нейросетям не имеет, это просто компилятор символьных математических выражений, умеющий вычислять само выражение и производную. Ничего подобного на R нет. Там есть пакеты с хардкоженными формулами из пейперов, то есть на порядок более низкоуровневый стафф.
То, что ты этого не понял, и уверен, что theano - это какой-то там враппер к С++-функциям типа caffe, это исключительно проблемы твоей непрошибаемой тупизны и обвинение всего остального мира в своей тупости.
#308 #537480
>>537466
Theano vs Sympy - что соснёт?
#309 #537482
>>537480
Совершенно разные системы с непересекающимися наборами фичей. Для НС симпи непригоден.
#310 #537483
>>537482

>Theano вообще никакого отношения к нейросетям не имеет


>вычислять само выражение и производную


Вот в этом контексте. Без нейросетей.
43 Кб, 282x600
198 Кб, 282x600
#311 #537496
>>537194
Ффцелом ахуена.
#312 #537557
>>537483
Это зашитый функционал, и производную ты не можешь увидеть в символьном виде в теано. Зато это компилируется в С или в ядро для куды, и работает очень быстро, ради чего это все и делалось. В симпи этого нет.
Симпи предназначен для манипуляции самими выражениями, и по этой части у него очень большие возможности. В теано ничего подобного нет, там только градиенты можно вычислять, и то далеко не для всех функций.
#313 #537605
>>537557
Вона как. Спасибо.
Наверное и считаются эти производные соседними значениями функций.
#314 #537622
>>537605
Если ты про numerical gradient, то нет. В многомерных задачах он считается очень долго и сосет.

Вот как они считаются
http://cs231n.github.io/optimization-2/

Если вкратце пересказать, то "знаменитый" метод backpropagation является старой доброй штукой из матана dx/dy=dx/dq * dq/dx, в которой многослойная функция y=f(g(h(x)) послойно разворачивается от выхода входу.

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

То есть. В simpy ты записываешь аналитический вид твоей функции, говоришь его продифференцировать, он хрустит булками, и получает вид ее производный, трехэтажный, сложный и с кучей частных случаев. К примеру, представь аналитическую производную функции max( max(2, x), max(3, y) ). В ответе у тебя будет куча интервалов - x < 2, x > 2, y < 3, y > 3 и т. п. Сложно и в принципе нам и не нужно, нам бы просто градиент вычислить, без переписывания из simpy в язык программирования этого градиента руками.

В Theano ты записываешь аналитический вид твоей функции, он представляет ее в виде графа. Далее, когда ты просишь его вычислить функцию и градиент в точке x0, он делает forward pass по графу и выдает f(x0), далее делает backward pass по графу и выдает f'(x0), вычисляя производные в каждом узле методом chain rule. Получается очень эффективно, потому что при backward pass используются значения, полученные при forward pass. На самом деле этот граф оптимизируется, упрощается и компилируется в C++ или CUDA.

При этом применимо это для любой целевой функции, которая задается в виде математической формулы. Т.е. на базе Theano ты и SVM для CUDA можешь в три строчки сделать, и любой свой метод. Конкурент у него один - Torch для LuaJIT. Наверное, это возможно написать на R, да хоть на node.js, но написали почему-то на питоне и луа.
#316 #537653
>>537644
Да, отлично. Сейчас идет волна улучшений в глубоком обучении. Взгляды и веяния меняются прямо на глазах. Например, раньше использовали предобучение с помощью автоэнкодеров, а в этой статье это уже не упоминается.
Надеюсь, в скором времени устоится некий набор правил, которые дают наилучший результат.
#317 #537655
>>537653
Я дал выше ссылку на http://cs231n.github.io/, там в принципе все современные методы описаны. Еще пишется книжка по deep learning, в deep learning read list есть ее черновик.
От предобучения избавились с помощью ReLU, dropout и некоторых других техник, которые там описаны.
#318 #537656
>>537655
В этой же статье >>537644 уже и дропаута нет - они говорят, что их метод выполняет его функции.
Книжку ту видел, кажется.
#319 #537658
>>537655
Еще хочу добавить: все это несколько сложнее, чем кажется, когда читаешь эту литературу. Например, я при тренировке НС из оппоста пытался использовать дропаут и регуляризацию, но у меня так ничего и не вышло. Без них работает лучше. А везде пишут, что это полезные вещи. т.е. я явно что-то делал не так, но что именно - непонятно.
#320 #537662
>>537655
Я не гонюсь за передовыми статьями, лучше подождать полгода и посмотреть комментарии сообщества. А то в каждой блин статье экстраординарные результаты, которые потом почему-то не видно Вот в учебниках пишут уже действительно проверенные вещи, которые неплохо идут на практике, причем перечисляют типичные ошибки, которые без этого знания дебажишь по несколько дней.

>>537658
Лучше на training set или validation set? Если на training, то так и должно быть, потому что регуляризация уменьшает overfit.
Если на validation, то, скорее всего, формулы кривые. Типа, в dropout забыл делить на p, градиент криво посчитал и т. п. (https://twitter.com/karpathy/status/626429221414563841)
Если по поводу я dropout не уверен (руки не дошли), то регуляризация обязательна для избежания overfit'a.

Кстати, тем временем https://github.com/kaishengtai/neuralart
#321 #537665
Кстати, смотря я этот neuralart и, по-моему, torch выглядит приятнее theano.
#322 #537698
>>537662
Градиенты у меня в теано же считаются, разве что там набажили, но это вряд ли. Я экзотики не использую.

>регуляризация обязательна для избежания overfit'a


Ну это, очевидно, неверно. Ты XOR тренировал когда-нибудь? Какой там может быть оверфит на одном нейроне? Оверфит далеко не всегда проявляется. У меня он был совем небольшой, и ошибки на тренировочном и валидационном множестве были почти одинаковые. Без регуляризации.

Вот о таких вещах я и говорю. В книжке написано, мол, "регуляризация обязательна для избежания overfit'a". А на самом деле там масса нюансов. Например, не сказано, что сеть должна быть достаточно большой для оверфита. От скорости обучения это тоже зависит. И т.д. Нужно все самому на своем опыте переоткрывать.
#323 #537704
>>537698
Блин, ты вообще не о том пишешь. Не надо вручную подбирать гиперпараметры.

По уму у тебя должен быть реализован параметр лямбда, должен быть реализован параметр p. Далее твой алгоритм должен быть протестен на toy set с известным перформансом. Можно посмотреть на вид полученных фильтров - достаточно ли они ортогонально выглядят.

А потом ты уже уже не дрючишься с каждым гиперпараметром, а включаешь мета-оптимизацию по lambda и p из интервала и идешь читать двачи в поисках лучшей конфигурации. И если оно тебе подберет, что лучший результат с lambda = 0, p = 0, ну молодец. Бывает. Но это - просто частный случай.

Обратная ситуация, это через жопу: сделал алгоритм, не отладил, потом подумал, а не заебенить ли регуляризацию, заебенил, проверил с лямбдой 0.01 и 0.1 и увидел, что перформанс стал хуже, забил на это. И так с каждой новой задачей. Вместо того, чтобы машина сама этим занималась.
#324 #537802
>>537704
Ты прямо какой-то сферический теоретик. Там гиперпараметров десятки: количество слоев, их формы, например. Если это все перебирать, ты помрешь раньше, чем оно найдет идеальную конфигурацию. Тут нужно своим умом понимать, как надо делать. А это только с опытом приходит.

Ты тут описываешь какую-то волшебную коробочку с кнопкой "сделать хорошо". Такого и близко нет. Попробуй сам что-нибудь нетривиальное сделать, поймешь.
#325 #538025
>>537802

>Ты прямо какой-то сферический теоретик.


>Попробуй сам что-нибудь нетривиальное сделать, поймешь.


Ба-бах.
http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf
313 Кб, 2564x1710
447 Кб, 3456x2304
638 Кб, 3193x2128
#326 #538194
На кагле началось новое соревнование по картинкам: https://www.kaggle.com/c/noaa-right-whale-recognition
Нужно сделать систему распознавания китов. Т.е. отличать одного кита от другого.

Кто-нибудь хочет поучаствовать?
30 Кб, 400x400
#327 #539098
Контора Teradeep заоупенсорсила свою сеть, которая может в реальном времени распознавать объекты на видео (на основе ImageNet): https://github.com/teradeep/demo-apps
Видео демонстрация работы: https://www.youtube.com/watch?v=_wXHR-lad-Q
17 ФПС на макбуке про.
44 Кб, 256x155
#328 #539280
Вот такую фигню как хорошо можно распознать? Обучил до 10-ух ошибок из 100, норм?
#329 #539296
>>539098
круто. еще бы оно их обводить по контуру научилось.
#330 #539354
>>539280
Сам попробуй пораспознавать, проверь какая у тебя ошибка. Этот уровень и будет примерным пределом.
#331 #539795
>>539098
Почему в луа пишут нейросети и работают с ними? Что за мода такая? Дайте, кто может пошаговое описание глубокого обучения. Имеется ввиду грубую настройку Restricted Boltzmann machine. По типу считаешь матрицу по такой формуле и т.д. П.С. Смещение в моей сверточной нейросети отсутствует.
#332 #539825
>>539795
Почему нет?
Про РБМ тут: http://deeplearning.net/tutorial/rbm.html
#333 #540000
>>539795
LuaJIT обгоняет по производительности D. А так есть 2 тулзы такого рода, theano на питоне и torch7 на lua. И вот кто-то ИТТ бугуртит на питон, а кто-то на lua.
Если вместо rbm взять автоэнкодер, то вот тут неплохой туториал http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial
RBM я так и не понял, как работает, кстати.
580 Кб, 1920x1200
98 Кб, 488x491
282 Кб, 483x302
#334 #540097
>>536401
Руки дошли потестировать.
#337 #540123
>>540097 это офигенно
>>540100 превью норм но в полном размере так себе
>>540106 ничотак
#338 #540500
>>540100
Тут походу дом с небом напутала сеть.
#339 #541856
http://habrahabr.ru/post/159909/

Здесь кто-то смотрел код?

Там веса инициализируются случайно? Или в начале при сэмплированию по Гибсу их нулями сделать?
#340 #542808
http://gitxiv.com/ какая классная штука. Пейперы только с готовым кодом.
#341 #542902
>>542808
Вот это полезно.
3 Кб, 200x60
#342 #543393
RIP Яндекс-капча, кстати. Как видите, ломать ее не было никакого смысла.
#343 #543576
>>543393
Охуеть, по этой линии ведь можно убрать деформацию изображений. Разбить на отдельные символы бы потом не сильно тяжело, потому что цифры примерно равны по ширине, ну и там разные еще полезные мелкие хинты есть. Если бы они всегда такую капчу генерировали, то проблем бы не было.

мимопроходил
#344 #545464
Это же две одинаковых функции
fun=(exp(x)-exp(-x))/(exp(x)+exp(-x));
fun=(2/(1+exp(-2*x)))-1;

первая - гиперболический тангенс, вторая - сигма, но с примесями и с ними у меня все нормально настраивается. Не могу понять, почему не настраивается с чистой сигмой типа
fun=1/(1+exp(-x)); Т.е. не получается у меня настроить, то что не симметрично точке (0;0)
#345 #545516
>>545464
Ботай Efficient backprop LeCun'а, он расписал про это.
#346 #545543
>>545464
Распределение начальных значений у нейронов какое? Если они уходят в насыщение, обучение будет неэффективным.
Тред утонул или удален.
Это копия, сохраненная 10 октября 2015 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски