Это копия, сохраненная 10 октября 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Код: https://github.com/sorrge/wakabaYes
Распознает стандартную капчу вакабы с довольно сильными искажениями. Работает только если большинство букв не пересекаются на картинке.
Делал примерно неделю, для изучения тонкостей работы сверточных нейронных сетей. Получилось в принципе неплохо, на уныле точность близка к 100%. Пришел к выводу, что изначально выбрал не очень удачную стратегию с отдельными этапами сегментации и распознавания. Чтобы значительно повысить точность на более сложных примерах, где буквы сливаются, нужно как-то одновременно сегментировать и распознавать. Текущий метод для этого не годится. Тем не менее я добился цели, которую изначально ставил.
Отвечу на вопросы, да и просто можно обсудить нейронные сети, распознавание и близкие темы.
Там писать не о чем, я применил давно известные технологии. Только в целях обучения интересно. Такой тип НС (LeNet-5) использовался для распознавания рукописных цифр с 90-х годов.
Но если в 90-х для тренировки сети нужен был суперкомпьютер, то сейчас это занимает у меня полчаса на ноуте, лол.
Ну какие технологии, мы все тут тёмные ты напиши в 20 предложениях что сделал, чтобы все охуели какой ты крутой.
Рекомендую очень хороший курс машинного обучения на курсере: https://www.coursera.org/course/ml
Понадобятся базовые знания матана и линейной алгебры. Там объясняются основные алгоритмы, идеи, даются рекомендации по практическому применению. 10/10.
Для выработки практических навыков можно попробовать поучаствовать в соревнованиях на http://www.kaggle.com/ . Чтобы что-то выиграть там надо быть очень, очень крутым, но для тренировки он тоже хорош. Заодно и видишь, куда тебе стремиться, лал.
Ну а конкретно за глубоким обучением - на http://deeplearning.net/ . Это продвинутый уровень уже. Этот проект сделан на модифицированном туториале оттуда.
Схема такая.
Сначала буквы отделяются друг от друга простым анализом связных компонент. При этом если буква получается очень широкой, я также пробую разбить ее на две, помогает от склеившихся букв как на пике.
Каждая отдельная буква центрируется и подается на вход сверточной НС (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 примеров отдельных букв, сгенерированных скриптом вакабы. На выходе получается вектор вероятностей букв для входного изображения.
Дальше работает алгоритм, который идет по грамматике капчи вакабы и выбирает наиболее вероятный путь при данных вероятностях отдельных символов. Это не очень просто, т.к. может быть несколько путей генерации одного и того же слова. Приходится запоминать несколько наиболее вероятных путей. Сложно так на словах объяснить алгоритм, легче посмотреть в коде. Ну и на выходе выбирается самый вероятный путь.
Это все повторяется несколько раз с использованием разных параметров разбиения склеившихся букв и выбирается самый вероятный результат.
ну я так и подумал, молодец чо.
На самом деле всё проще. Нужно делать как Яндекс - создать сервис, где люди будут сами определять каптчу.
Скажем сделай страницу со скачкой желанного контента и переноси туда каптчу, получай ответ и вводи в реальное поле.
Утешай, утешай себя няша, что никто не догадался залезть на твой гитхаб и увидеть кучи пиздец-говна.
> inb0 зато работаит!!11
Странный язык Питон, чтобы не делал на нем получается кусок говна из кусков говна(
Таких сервисов есть несколько, где людям деньги платят за вбивание капчи. Мне кажется, дела у них плохи - экономически невыгодно. Вбивание капчи не приносит достаточно профита, чтобы оплатить человеку услугу ее распознавания.
Вот у этого чувака 1% вроде: http://geektimes.ru/post/64535/
Правда, там сплошной discover imageshack, и непонятно, точно такая же это капча или что-то поменялось уже.
У него простой подход, так что можно попытаться улучшить с использованием "новых" технологий, которые я применил для вакабы. Удастся ли дожать до 50% можно узнать только проделав всю работу.
ДОПУСТИМ Я ПЕРЕПИШУ ТВОЙ КОД ЧТО ОН БУДЕТ РАБОТАТЬ В 500 РАЗ БЫСТРЕЕ
КАК МНЕ ПОВЫСИТЬ РАЗРЕШАЮЩУЮ СПОСОБНОСТЬ И СПОСОБНОСТЬ К РАСПОЗНОВАНИЮ?
>макабы
>вакабы
>>438062
Да, сделать гораздо быстрее его можно. Но сейчас распознавание занимает 0.05с, это быстрее, чем капча генерируется и передается, так что я не стал морочиться.
>КАК МНЕ ПОВЫСИТЬ РАЗРЕШАЮЩУЮ СПОСОБНОСТЬ И СПОСОБНОСТЬ К РАСПОЗНОВАНИЮ?
Ну разрешение повысить элементарно, надо просто сеть побольше сделать. Естественно, пропорционально возрастет и количество весов и время/сложность тренировки.
Вот способность к распознаванию повышать нетривиально. Именно в этой капче я бы начал с сегментации. Сейчас там дубово сделано, это часто фейлится. Нужно сделать сегментацию тоже на НС. Т.е. одна НС тренируется, чтобы определять границы между символами, а вторая распознает сами символы. Потенциально это может быть точнее, но работы много.
Если рассматривать более сложные капчи, как яндексовскую, то там LeNet5, боюсь, может уже не справиться. Нужно будет пробовать более хардкорные штуки с пре-тренировкой из асенала глубокого обучения. Опять же рекомендую на эту тему посмотреть туториал с http://deeplearning.net/ , там расписаны многие алгоритмы.
Если тебя интересует прям совсем передний край науки, посмотри http://arxiv.org/abs/1502.01852 и то, на что они ссылаются. Эти сети распознают картинки лучше людей.
Пикча: активации на двух сверточных слоях на нескольких примерах.
>Да, сделать гораздо быстрее его можно. Но сейчас распознавание занимает 0.05с, это быстрее, чем капча генерируется и передается, так что я не стал морочиться.
НО КРОМЕ ЕТОЙ КАПЧИ ЕСТЬ МНОГО РАЗНЫХ ПОСЛОЖНЕЕ
НЕ ДУМАЮ ЧТО ХВАТИТ РАЗРЕШАЮЩЕЙ СПОСОБНОСТИ 1ГО СЛОЯ ДЛЯ ИХ РАСПОЗНАНИЯ
>Нужно сделать сегментацию тоже на НС. Т.е. одна НС тренируется, чтобы определять границы между символами, а вторая распознает сами символы. Потенциально это может быть точнее, но работы много.
А НАСЧЕТ СЕГМЕНТАЦИИ У МЕНЯ ЕСТЬ ХОРОШИЕ ИДЕИ
The classifier is pre-trained; I do not provide the code and the data to train it.
ПОЛНОСТЬЮ БУДЕШ ПУБЛИКОВАТЬ?
Только заинтересованным лицам и только за оговоренную сумму, или приём на работу в государственную структуру
Разрешение входной картинки не так уж принципиально на самом деле. Примерно 25x25 должно быть достаточно. Цифры капчи яндекса, например, если уменьшить их до такого размера, вполне читаемы. Может, какой-то супер метод и может дополнительную информацию извлечь из большего разрешения, но мне пока до этого далеко.
>>438303
Расскажи, можем обсудить это, если интересно.
>>438312
Код тренировщика публиковать не собираюсь. Там все слишком сумбурно и не реюзабельно. Если ты хочешь натренировать другой классификатор, лучше пиши сам - это очень полезно для обучения. Там много тонкостей. Я этим как раз занялся, чтобы лучше понять, как это все работает.
Могу помочь, если что-то будет непонятно.
Лично мне было бы интересно. На Хабре дремучий примитив, преданья старины глубокой.
>Расскажи, можем обсудить это, если интересно.
НЕ БУДУ Я С ТОБОЙ НИЧЕ ОБСУЖДАТЬ РАЗ ТЫ ПОЛНОСТЬЮ НЕ ХОЧЕШ ОПУБЛИКОВАТЬ
У ТЕБЯ ТАМ ВСЮДУ КЛАСТЕРИЗАЦИЯ ЧТОЛЬ КРОМЕ ПОСЛЕДНИХ СЛОЕВ КОТОРЫЕ ОБУЧАЮТСЯ?
Мы на дельфях ком-порт программируем, с шифрованием работаем, код Цезаря юзаем.
Нейроные сети это для души)
У ТЕБЯ ТАМ ВСЮДУ КЛАСТЕРИЗАЦИЯ ЧТОЛЬ КРОМЕ ПОСЛЕДНИХ СЛОЕВ КОТОРЫЕ ОБУЧАЮТСЯ?
НЕ БУДЕШ ОБСУЖДАТЬ ТЕБЯ ЗАБАНЯТ ЗА ПИАР СВОЕЙ ЗАДНИЦЫ
>2015
>перцептрон
Углубился в область ануса твоей мамаши.
А ГОВОРЯТ ЧТО БОТЫ КАРТИНКИ РАСПОЗНАВАТЬ НЕ МОГУТ.
http://habrahabr.ru/post/126373
Ну епт, CharSequence и Character перепутал .
>В любом случае не вижу проблемы.
Подумай ещё раз в чем может быть проблема, особенно если такая конструкция появляется в каком-нибудь публичном API.
Про CharSequence прочитал, что сравнение у него не определено. Не знал, спасибо.
С Character такой проблемы нет.
Все что могут подобные поделки - научить некую сущность написанную на чистом говнокоде распознавать однотипные картинки.
То есть ты им подсовываешь картинки с заранее известным результатом и модерируешь через обратную связь весовые коэфициенты.
В чем польза? Твоя прога сможет распознать баннер тематической доски двача? Нет? Тогда нахуй не надо. Это все говнокодерство и поделки уровня Алексея Бабушкина.
что тебе нужно, там вполне нормальный/читаемый код, кстати, лучше чем у 70% быдло-джава энтерпрайз погроммистов. Разве что именования иногда говнистые и не джавовский naming convention
Ну и человек самостоятельно реализовал сверточную нейронную сеть, поделился кодом с общественностью, а не взял готовое говно из какой-нибудь Weka, даже не понимая как оно устроено.
Теперь осталось освоить OpenCV, для быстрого прототипирования перейти на Scientific Python (numpy scipy, scikit-learn, ipython notebook), немного поиграться на kaggle и можно начинать работать не быдло-макакой, а белым человеком.
Во что на кэггле посоветуешь поиграть?
НИХУЙЯ ОН НЕ ДЕЛАЛ, ВЗЯЛ ГОТОВЫЙ ПРОДУКТ И РЕЗУЛЬТАТ ЕГО РАБОТЫ ПЕРЕПИСАЛ НА ДЖАВЕ
а про "грамматику" и пути где на хабре сказано? Как-то не понял эту часть распознавания.
Зачем ява? Есть же божественные Theano, Torch, которые и градиенты сами за тебя возьмут, и всё-всё-всё.
Ты не прав. Там готовый продукт написан на высокоуровневом фреймворке. Попробуй так же ПРОСТО ПЕРЕПИСАТЬ, охуеешь.
Попробую объяснить это немного подробнее.
Слово для капчи в вакабе генерируется с помощью грамматики. На каждом разветвлении при раскрытии нетерминала выбирается случайная ветка, с равной вероятностью. Таким образом мы имеем априорное распределение вероятностей на множестве всех слов, причем подавляющее большинство последовательностей букв имеют нулевую вероятность, т.к. не допускаются грамматикой. Это можно использовать для коррекции побуквенного распознавания. Простой пример: пусть классификатор назначил такие вероятности для первых двух букв: q=0.9, o=0.1 для первой и v=0.99, u=0.01 для второй. Наивный побуквенный алгоритм выбрал бы самые вероятные буквы, получив qv. Но это недопустимая последовательность по грамматике. Алгоритм, который это учитывает, выберет ov, вероятность которого выше.
Чтобы абсолютно точно расчитать апостериорную вероятность, нужно перебрать все возможные цепочки, допустимые в грамматике, и оценить вероятность каждой. Но их огромное количество, поэтому я обрезаю перебор, когда вероятности становятся слишком маленькими. Т.к. путей для генерации одной и той же цепочки может быть несколько, приходится запоминать вероятности уже пройденных цепочек, и обновлять их при повторном их прохождении. Для этого у меня строится дерево возможных цепочек с их вероятностями. Оно тоже обрезается, чтобы не сильно разросталось.
Надеюсь, стало понятнее.
>>439749
Классификатор натренирован именно на теано. Но тянуть его в конечный продукт не имеет смысла: у него сотни мегабайт зависимостей, в т.ч. gcc, питон, многочисленные пакеты для него. Это никто не будет устанавливать, кроме энтузиастов машинного обучения. В то же время в рантайме нужно всего лишь пару простейших операций определить.
УЗКОСПЕЦИАЛИЗИРОВАННОЕ ГАВНИЩЕ КОРОЧЕ
ДАВАЙ ПУБЛИКУЙ СКРИПТЫ ТЕАНО ИЛИ ЧЕ ТАМ ЕСТЬ
ПРИМЕРЫ ДЛЯ ОБУЧЕНИЯ САМ ГЕНЕРИРОВАЛ ИЛИ СКАЧИВАЛ И ВРУЧНУЮ РАСПОЗНОВАЛ?
В одной норвежской конторе. Занимаюсь анализом данных. Шел к этому очень долго. Суть можно описать как "постепенное углубление специализации".
ЗП для Норвегии так себе, элитные кодеры гребут в разы больше. Мне хватает.
Я не очень понял, как карты Кохонена могут помочь с распознаванием независимо от трансформаций. Не видел статей на эту тему. Можешь пояснить?
Про растущий нейронный газ я почти ничего не знаю.
А сверточные сети давно себя зарекомендовали на этом поприще. К тому же в данном случае мне было интересно попробовать новомодное глубокое обучение в деле, поэтому такой выбор.
скример
Сегментировать по цветам, потом в НС.
ох ебать.
поясните что из себя представляет этот набор ImageNet? Есть изображение которое нужно распознать, так? Для его распознавания сеть дрессируют на неком материале - это тоже картинки. К тренировочным картинкам добавлены какие-то смысловые тэги? Которые потом вероятностно назначаются при рассмотрении главной картинки? На каком этапе происходит увязка содержимого изображения с текстовым стрингом?
мимо-нейробиолох
Есть такая старая база слов, называется 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 категорий для этой картинки.
Еще бы кто-то объяснил как в сверточных сетях делать настройку весов. И вообще, что лучше использовать массивы или списки для хранения нейронов. А вообще было бы неплохо блок-схему, чтобы окончательно всем стало все понятно.
А вообще лучше даже словами описать. Типа
1. Есть двумерный массив - входная бинарная картинка.
2.Берем кусок картинки 4x4(например) умножаем на набор весов(тоже 4x4(кстати как их инициализировать лучше всего?)) и суммируем, прогоняем через функцию активации, получаем пиксел новой картинки. Так со смещением в 1 пиксел прогоняем по всему массиву. Получаем двумерный массив прогнанный через первый набор весов(4x4). Таких наборов весов у нас 5, например, поэтому и выходных массивов будет 5(самое интересное как их потом настраивать?).
Вот как бы в таком духе получить описание или картинкой, что с чем суммировать и в какую ячейку заносить результат.
Про саму сеть напиши. Я пытался 5 лет назад обмазаться, сегментацию и предобработку написал, а вот сеть не осилил.
Ну ты почти все и расписал. Тренируется сеть по тому же принципу, что и обычная многослойная НС. Сеть вычисляет функцию 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. Формулы очень громоздкие, расписывать их тут нет смысла.
Это сверточная сеть с двумя слоями свертки 3х3, первый с 5 признаками, второй с 10. Потом идет один скрытый слой с 250 нейронами и выходной слой с 26 выходами, по одному на букву. Это одна из разновидностей архитектуры LeNet-5, я выше давал ссылки. В отличие от него я не использую субсэмплинг, с ним хуже получалось.
Да, но в простой многослойной было 1вес - 1 связь, а в сверточной получается 1вес - много связей. Как тут быть?
>R и matlab
Хм, а зачем для твоих задач нужен matlab, если есть R? Какие-то специфичные биологические расчеты?
Одинаковые. Я тебе выше расписал полный алгоритм. Попробуй на маленьком примере, допустим картинка 3х1 и свертка 2х1 вручную посчитать, может понятнее станет.
>>442154
В матлабе многие вещи сделаны удобнее и работают быстрее. Возможно, еще дело привычки. Графики, например, я в матлабе люблю делать.
Эмм. ggplot2. Я вообще переехал на ipython notebook + расширение на баз rpy2 для доступа к нужным пакетам из R прямо оттуда.
Хотя у меня задачи другие, NLP всякое и использование языка общего назначения гораздо удобнее.
ОН ВЗЯЛ ГОТОВУЮ РЕАЛИЗАЦИЮ И В НЕЙ ВСЕ ОБУЧИЛ ПО ЕДИНСТВЕННОМУ ГАЙДУ ИЗ НИТЕРНЕТА
В R вообще миллион пакетов для визуализации. Но все это разнообразие бестолковое по большому счету, не будешь же каждый из них изучать. И какой выбрать - тоже непонятно. ггплот2 этот монстрообразный. Изучать тонкости его дизайна чтобы понять, как какой-нибудь лейбл налепить куда надо, мне совершенно не интересно. По-моему это эталонный пример жутко over-engineered технологии-однодневки.
А Матлаб - это на века, лол. Как код на нем работал 15 лет назад, так и будет работать еще через 15 лет. А главное, я уже знаю, как там все что нужно сделать.
А чем вообще занимаются люди в области NLP, расскажи. Распознавание речи? Автоматический перевод? Перевод как мне кажется застрал на месте уже много лет.
>>442208
А что такое искаженная транскрипция? Пример приведи, чтобы понятнее было. Это из области распознавания речи?
Т.е. если я подаю на вход (1,1) а на выходе мне надо получить (1,0), то вес будет 0.5 и на выходе мы никогда не получим (1,1) а будет всегда (0.5,0.5) ?
Я ничего не понял из того, что ты сказал.
Пусть у тебя картинка 3х1: [x0, x1, x2] и свертка 2х1. Свертка будет иметь три параметра: веса свертки [w0, w1] и смещение b. Применив эту свертку к картинке, ты получишь картинку 2х1: [x0w0+x1w1+b, x1w0+x2w1+b]. Это и есть твоя функция f, о которой я говорил выше. Дальше применяешь к ней остальные шаги.
Ну я взял вообще самый простой пример, совсем без свертки, т.к. вес всего 1. [x0,x1], w0, [x0w0, x1w0]. Т.е. свертка дает вот такое усреднение [0.5,0.5] ?
Если у тебя свертка 1х1, то будет [x0w0+b, x1w0+b]. Не усреднение, а перемасштабирование скорее. Поэтому такое не имеет смысла.
Не правильно написал
что-то среднее, для данного веса зависящее от ошибок со свернутой картинки.
А вообще да, если свертка происходит, то мы можем подобрать веса чтобы получить любой сигнал на выходе. Так что мой пример не совсем корректен.
Ну да. Все, что делает свертка 1х1 - это умножает всю картинку на число и прибавляет другое число. После настройки эти числа станут такими, что ошибка в среднем будет наименьшей. В том случае будет усреднение.
Полезность сверток в том, что они применяют один и тот же фильтр к разным частям картинки. За счет этого получается устойчивость к преобразованиям. Для полносвязной сети, например, цифра 1 посреди картинки и та же цифра, смещенная на один пиксель вбок - два совершенно разных изображения. Чтобы понять, что это одно и то же, сеть нужно долго тренировать, и она должна быть достаточно большой. Для сверточной сети взаимосвязь этих изображений более очевидна.
Т.е. чтобы сеть начала обобщать ей нужно меньше перекрестных связей, получается.
Да, суть именно в этом. Это работает только на картинках, но работает очень хорошо.
Разве? А если как-то описать машине признаки и связи между ними(формализовать), не начнет ли она находить схожести и не начнет ли она также обобщать? Знаю, точно что эти же сети применяли для распознавания речи. В сети есть статья.
Ок, наверное можно и в других задачах применять. Просто самые известные достижения у этого метода в распознавании изображений.
Нужно чтобы входные данные были структурированы. В картинках используется 2д пространство, в речи, наверное, по времени свертку делают.
В подробности вдаваться не буду, извини. Работаю с данными, полученными секвенированием нового поколения. Разрабатываю методы работы, алгоритмы, применяю их.
Собеседование происходило в виде презентации с рассказом о моей предыдущей работе. Ну и плюс стандартные вопросы: почему выбрал это место, какими темами я хочу заниматься.
Шел к этому, пожалуй, лет восемь целенаправленно. На уровне хобби машинным обучением занимался очень давно, года с 2002 примерно.
Тоже проходил на корсерке курс, а потом кучу других на edX и корсерке, а потом ещё в универе 3 семестра.
А вообще, по машинному обучению в первый раз устраивался в пахомии? Вузик в РФ оканчивал?
Откуда вкатился?
Сложно. Я бы сначала сделал распознавание линейной записи, без дробей, степеней, индексов. Просто символы одной строкой. Тут все более-менее понятно. У формул тоже есть грамматика, примерно как в капче вакабы, которую можно использовать для уточнения распознавания. Скажем, "С" и "(" можно лучше отличить таким образом. Также это поможет выбрать более вероятный парсинг формул вроде "sinx", которые могут быть произведением s, i, n и х, но более вероятно, что это sin(x).
Когда это будет хорошо работать, можно перейти к дробям. Дроби я бы распознавал специализированным алгоритмом, как горизонтальную линию с текстом вверху и внизу. После этого вырезаешь прямоугольники сверху и снизу в отдельные картинки и рекурсивно запускаешь распознавание на них.
Степени/индексы можно отличать по вертикальному смещению, опять-таки выделять их в отдельные картинки и распознавать.
Да, как ни странно повезло получить некоторый опыт работы в Россиюшке по машинному обучению. И это было не в Яндексе, лол. Специалиста получил в Москве, потом ПхД в Европе уже по биоинформатике.
До специализации по машинному обучению был просто кодером средней руки. Поработал в геймдеве, пофрилансил. Ничего особенного.
А поясни нужно ли знать функан или там какую-нибудь хардкорную математику чтоб быть как ты? Ну про теорвер матстат и методы оптимизации я понимаю что их нужно знать хорошо
Я хардкорной математики не знаю. Могу сформулировать и доказать простую теорему, но не более. Функан вроде бы ни разу в жизни не применял. Основы матана нужны часто, а также базовые дифуры (и то больше численные методы, а не аналитическое решение).
>>445046
Нашел объявление, подался, поговорил с научником. К тому времени у меня был какой-то опыт уже в смежной области (машинное обучение). Прочитал пару их статей перед собеседованием, попытался вникнуть, задал пару вопросов по ним. Этим и отличился от большинства других кандидатов, лол.
>Функан вроде бы ни разу в жизни не применял
А как же ядра, метрики, все такое?
А какие требования на ПхД были? Допустим, у меня диплом мага по теорверу и матстату, то есть никаких курсов по машинному обучению я в универе не слушал, все по теме изучал самостоятельно, таких берут?
Алсо, как серьезно они рассматривают средний балл?
И вообще, пили кулстори. Как долго получал степень? Как это все происходило? Сейчас исследованиями не занимаешься? Какие подводные камни? Какие советы дашь?
>А как же ядра, метрики, все такое?
Очень поверхностно знаком. Сейчас пролистал статью по функану в вики - все какие-то абстрактные штуки. В жизни этим не пользуются.
Про ПхД нельзя так в общем сказать, все от людей же зависит. Кто-то упрется рогом в средний балл, кому-то подай статьи, другим - рекомендации от видных ученых, третьим - диплом известного вуза. Средний балл всегда спрашивают, конечно. В моем случае это не было решающим критерием. Если у тебя там одни тройки, проблемы будут 100%. Иначе - как повезет. Сходи еще в научный тред на эмиграче, там много инфы про это дело. То, что ты самостоятельно изучал - это ок. Лучше, если есть какие-то проекты свои, чтобы показать, или статьи для сиви.
Получил за три года. Тут так - тебе деньги дают на три года, не защитился за это время - крутись как хочешь. Не найдешь работу - еще и ВНЖ лишишься, это вообще жопа. Поэтому нужно ориентироваться на жесткий срок с самого начала.
Происходит это примерно как обычная работа, делаешь свой проект/проекты, пишешь статьи. Нужно иметь свои идеи, свое видение проекта, для некоторых людей это сложно. Подводных камней много. Целая гора. Самые большие риски на мой взгляд: не пойдет исследование/будет плохо получаться, поссоришься с научником, не сможешь опубликоваться, не осилишь написание диссера. Это довольно рискованное вложение времени, вполне можешь прокопаться три года или больше и уйти ни с чем в результате. Однако по моим наблюдениям (около 15 случаев всего) в Рассее шанс успешно защититься гораздо меньше. Из моих европейских знакомых почти все защитились.
Исследованиями сейчас занимаюсь. Биоинформатиков теперь много стало, конкуренция сильная, но и область сама постоянно расширяется. Надеюсь, на мой век хватит.
>В жизни этим не пользуются
>Я хардкорной математики не знаю. Могу сформулировать и доказать простую теорему, но не более
Детектирую быдло-математика-нинужниста.
http://nbspace.ru/math/
Оказалось, что такая НС далеко не всегда сходится к решению, несмотря на то, что неоптимальных локальных минимумов там нет. Происходит это из-за очень пологих областей в оптимизируемой функции. Если неправильно задать диапазон весов при инициализации, то попадание в такую область почти гарантировано, и сеть никогда не будет сходиться.
Вот целый трактат на эту тему: http://www.cs.stir.ac.uk/research/publications/techreps/pdf/TR148.pdf
1. Он на питоне.
А там кроме нейросетей есть библиотечки для статметодов, sci-kit, удобное дерьмо для подготовки данных и итд итп
2. Он не для нейросетей. Это просто либа для простого ускорения вычилений, используя GPU.
Для начала попробуй сделать на своем симуляторе сверточную НС. Если получилось, попробуй ее натренировать. О результатах доложи.
>попробуй сделать на своем симуляторе сверточную НС
Посоветуй, что почитать по ним годного. Я бы попробовал запилить, но почти нихуя за них не знаю.
http://www.aiportal.ru/articles/neural-networks/back-propagation.html
> В рунете
Если честно, мне даже в голову не приходит, зачем, к примеру, нужно брать и переводить тот же туториал на deeplearning.
Ничего не поделаешь, в России нет передовых исследований на эту тему. Поэтому нет и публикаций, туториалов и прочего.
Дофига русскоговорящих в зарубежных исследовательских группах. Но непонятно, на кой черт переписывать хороший годный туториал. Там же всё есть. Это никому не нужно.
Не понимать. Можно же просто дать ссылку на хороший, расширяемый и поддерживаемый в акутальном состоянии туториал.
Вот еще хороший новый относительно материал, но незнающим диких математических операторов и как и где искать для своего любимого языка их решение с помощью численных методов, путь в такие нейросети закрыт.
https://www.youtube.com/watch?v=eSPgqo4XzrI&feature=youtu.be
Ты не поверишь, на на том же deeplearning.net есть туториал с RBM и Deep Belief сетями.
Где ты нашёл там дикие математические операторы, кстати говоря?
Стало яснее, нужно теперь совместить понимание и твой код. Бюро, а не подскажешь, где ещё есть инфа на эту тему?
В машинном переводе используют deep learning.
Еще ты можешь зайти на тот же kaggle и посмотреть конкурс по sentiment analysis. В NLP вообще полно задач: извлечение фактов, мнений, семантика, снятие неоднозначности многозначных слов и тд и тп.
Для задач высокого уровня нужно еще подготовить текст: морфология, части речи, etc.
магистр nlp из вшэ
Нужно обдумать какую-нибудь капчу грамматическую.
И еще вопрос. Для настройки использовался только метод обратного распространения ошибки или в начале использовали метод ограниченной машины Больцмана?
Подскажите тему для курсача, что бы структурно пораспознавать и написать реализацию более-менее рабочую. Ну всмысле что-то типа химических формул (http://habrahabr.ru/post/172651/), таблиц или мат.формул (Почитал публикации по мат. формулам и оказалось что там слишком хардкорно, за пару месяцев не успею). Вот с таблицами можно заморочиться, ну типа распознать структуру, тексты в ячейках, но мне кажется простовато, хотя я на данный момент знаю только как сделать двухцветное изображение из фотки и как линии найти, лол.
Спасибо.
>>449818
Я использовал градиентный спуск, т.е. обратное распространение ошибки. Не все методы работают одинаково хорошо, но различия там уже в последних долях процентов точности.
>>449825
По-моему для курсача распознавание таблицы будет очень даже хорошо. Это совсем непросто, и есть серьезный шанс что ты и это за пару месяцев не успеешь, но это хотя бы реалистичный проект.
прикольно, сейчас эксперементирую с skikit, делаю tfidf на лемматизированных документах(mystem), следом будет lsa на tfidf матрицу.
nlp студент
1. Не вижу в проекте файл с весами.
2. Сколько и какие слои делал?
3. Как подбирал начальные значения весов?
4.Функция активации гиперболический тангенс?
1. bin/classifier.b
2. 1) 5 сверток 3х3;
2) 10 сверток 3х3;
3) полносвязный слой с 250 нейронами;
4) выходной слой с 10 нейронами.
3. По заветам LeCun'а из "Efficient BackProp".
4. Да.
Чет не хочет у меня обучаться нормально. Постоянно прыгает и меняет ответ(бывает с правильного на неправильный и т.д.). На 50к вариантах 10 цифр пытаюсь научить.
Я не понял, что у тебя не так. Что прыгает, какой ответ меняет? Это нормально, что во время тренировки ответы меняются. Нужно смотреть на общую ошибку на отдельной выборке.
Общие рекомендации:
Начни с простого. Попробуй для начала перцептрон, без скрытых слоев. Когда он заработает, добавь один скрытый слой с небольшим количеством нейронов. Отладь код на простых задачах: перцептрон, например, должен уметь решать OR, сеть со скрытым слоем - XOR.
Обучающая выборка может быть слишком сложной, с сильным шумом и искажениями.
Это я уже делал и все получалось. Лучше скажи сколько нужно приблизительно итераций, чтобы обучить 10 цифрам разных шрифтов(20 штук) с небольшими искажениями. Иногда у меня цифры немного вылетают за границы при генерации, это допустимо при обучении?
Зависит от того, какие у тебя итерации. Я делал стохастический градиентный спуск с минибатчами по 20 примеров. За одну эпоху (проход по тренировочному множеству, около 150000 примеров) сеть давала очень хорошее решение, с ошибкой меньше 0.1%. Это если правильно выбрана скорость обучения. Окончательно сходилась сеть примерно за десять эпох. Получается 75000 итераций (обновлений весов).
>цифры немного вылетают за границы при генерации, это допустимо при обучении?
Если цифра хорошо видна и отличима от других, должно быть ок.
>Это я уже делал и все получалось.
Что именно получалось? Например, какую ошибку дает твой перцептрон, обученный на тех же данных? А сеть с одним скрытым слоем? Какое количество скрытых нейронов оптимально? Какую ошибку дает сверточная сеть? Ты уверен, что возможно распознать лучше?
Когда получишь ответы на все вопросы, будет понятнее, куда двигаться дальше.
>скорость обучения
Не совсем понятно как ее подобрать. Я для слоя брал 1/корень квадратный(количество весов входящие в нейрон в слое). Можно еще скорость корректировать по мере обучения.
Вручную перебирай и смотри график сходимости ошибки. Установить какое-то число заранее, не проверив другие - не годится.
Можешь использовать автоматический метод, например adaDelta, но это уже продвинутый уровень.
Из условий дополнительных например - как можно меньшая площадь пересечения между Bounding Box'ами, чтоб мы не отрицали возможность их пересечения (Когда символы наезжают друг на друга) но и старались избегать такого случая, т.к это редко.
Ну и ваши идеи погенерируйте.
ДА У НАС ТУТ БУДУЩИЙ ЦУКЕРБЕРГ И ЭЙЛЕР НЕ ЖЕЛАЮЩИЙ ДЕЛИТЬСЯ СВОИМИ МИЛЛИОННЫМИ ИДЕЯМИ.
НУ А ХУЙЛИ ТЫ ИСХОДНИКИ ВСЕ НЕ ОПУБЛИКОВАЛ?
Andrew Ng в своем курсе предлагал делать отдельный классификатор, который определяет границы между символами. Не знаю, насколько это удачная идея. Можно попробовать.
В общем поковырялся я с весами. Настраивается очень херово при включении искажений, хотя как видно из примеров, должно хорошо обучаться даже на рукописных символах. Такое впечатление что сеть не сверточная, а обычная полносвязная с 2-мя слоями, т.к. совсем не обобщает. Ведь не должны же сеть смущать небольшие искажения и сдвиги? Без искажений добился вероятности 0.004, с искажениями 0.15. Хотя эти искажения почти не заметны. В чем подвох - хз. Может как-то хитро надо подстраивать скорость обучения?
Любые искажения сильно затрудняют распознавание. Вообще без искажений задача тривиальна. Если у тебя 10 цифр, т.е. всего 10 возможных входных примеров, то там по одному пикселю обычно можно отличить каждую.
>Может как-то хитро надо подстраивать скорость обучения?
У меня работало на константной. Я подбирал ее вручную. Обычно это в диапазоне 0.05 - 0.0001, хотя все зависит от деталей реализации.
Если хочешь подробной диагностики, то предоставь дополнительные данные, как то: кривые ошибки на тренировочном и тестовом множествах в зависимости от номера итерации. Лучше если ты к тому же сделаешь эти графики для полносвязной сети. Также приведи несколько примеров входных картинок, на которых натренированная сеть ошибается. По этим данным я попробую погадать, что не так.
Спасибо, вроде разобрался. Скорость уменьшил и пошло более менее. Поиграюсь с скоростью, может получше еще настрою.
>Ведь не должны же сеть смущать небольшие искажения и сдвиги?
Ты синтетические данные используешь?
Блядь прошёл этот курс, сделал все задания, получил 100%. Вроде по ходу дела всё понимал.
Так и не понял что делать когда закончил. Какие-то блядь обрывочные знания всего есть, а куда с этим идти, какие проекты пробовать делать не понял.
Нейронные сети вообще хуёво объяснили, как закодить примерно понятно, а как продумать всю архитектуру нет.
В итоге я просто покатился себе дальше. Делал курс осенью 2013, сейчас вообще нихуя не могу вспомнить. Хотя наверное освежить можно быстро (кроме нейронных сетей и ёбаных SVM).
Не рекомендую так проходить курсы.
Он рассказывает и про типичные случаи использования, приводит примеры. Сейчас эти технологии используются повсеместно. Распознавание, датамайнинг, рекомендательные системы очень распространены.
Если хочешь устойчивость к небольшим искажениям, берёшь каждый пример в трейнинг сете и делаешь из него десяток других, применяя небольшие искажения.
Добился с искажениями вероятности где-то 0.02, дальше чет не хочет(хотелось бы как и без искажений - 0.004). Шаг сделал самый маленький - 0.0001. Щас пробую с 0.00001 может чет обучится, хотя я уже стал сомневаться. Очень странно, что иногда путает очевидную 6 с 0 и еще некоторые цифры.
Точность с искажениями всегда будет меньше. Попробуй натренировать с более сильными искажениями, а потом протестировать со слабыми. Может получиться точнее.
Там из-за искажений цифры иногда неплохо так вылезали за границы картинки, потому вся сеть сильно перестраивалась и постоянно не могла нормально настроиться.
Тогда не удивительно, что трудно натренировать. Зато такая сеть будет более устойчива к ошибкам сегментации.
На вакабе я тренировал на идеально отцентрированных символах, которые на 100% помещались во входную картинку. В результате при малейших ошибках сегментации точность сильно падает. Приходится перебирать разные возможные варианты сегментации.
Посмотрел вебсайт. Пока что непонятно, что из этого выйдет, время покажет. Хорошо бы сравнить производительность с теано, например.
Забросил пока что, увы. Однажды снова придет вдохновение, и я ее допилю. Там почти все работает внутри, но нужно сделать интерфейс. Это довольно трудоемкая задача.
В двух словах: работает по принципу bitmessage.
Поэкспериментировал я с искажениями и что-то лучше 3.5 процента не удалось настроить, на глаз генерируемые капчи легко распознаются. Не понимаю в чем причина.
О, как раз собирался на днях бампнуть свой тред.
Если на глаз легко распознается, то НС должна сработать. 3.5% - довольно большая ошибка на одной букве (речь ведь об этом?).
Причин может быть очень много, как ты уже и сам видел. Может, сеть нужна большего размера, или инициализация не в том диапазоне. Я там повыше писал, какую я отладочную информацию использую - выложи эти графики сюда, посмотрим.
Ок, тогда завтра уже выложу, т.к. сеть будет до завтра обучаться. Обучение будет на 100 эпох стартовый коэф обучения сделаю 0.001 и на каждой эпохе буду уменьшать в 0.9 раза. Обучение - 10000 циклов, проверка обучения - 1000 циклов.
обучать с самого начала или взять то что я пытался обучить и пробнуть продолжить обучать, надеясь на чудо?
Для диагностики лучше сначала начать. Там будет видно, имеет ли смысл продолжать.
Нужно определить такие вещи:
1) overfitting vs. underfitting. Это можно понять по графику ошибки на тренировочном и тестовом множествах.
2) сошлелся ли градиентный спуск, или нужно продолжать обучение. Просто видно из графика.
3) достаточно ли тренировочных данных. Можно понять, варьируя размер тренировочного множества.
ДАВАЙ НА КИКСТАРТЕРЕ СОЗДАВАЙ, ПРОДАВАЙ СВОИ ИСХОДНИКИ НА КИКСТАРТЕРЕ, РАЗ БЕСПЛАТНА НЕ ХОЧЕШ ДАВАТЬ
>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 теслав?
Но сходится же!
Теперь расскажи, что это такое. Какие единицы по осям, мне непонятно.
Предполагаю, что это ошибка в зависимости от эпохи обучения.
График очень хаотичный. Нужно уменьшить скорость обучения. Ты для вычисления одного шага по градиенту все тренировочное множество используешь?
Если самая первая точка (200) это ошибка до обучения, на случайных весах, то обучение не очень эффективно.
И еще нужно на этом же графике отобразить ошибку на тренировочном и на тестовом множестве одновременно. График должен выглядеть подобно пикрелейтеду. Важно, чтобы он был более-менее плавным и почти монотонным, особенно для тренировочного множества.
>>465545
А ты как думал? Там тренировочное множество огромное вроде бы, ну и глубокие сети всегда были адски медленными. Бесплатно ничего не бывает.
Я тебе больше скажу, если десяток таких сетей натренировать и потом усреднять их показания, почти наверное ошибка будет еще меньше. Возможно, даже гораздо меньше.
>Ты для вычисления одного шага по градиенту все тренировочное множество используешь?
Ну, я как бы не уверен что равномерно берется множество, т.к. случайно(рандом), ну а из 1000 - думаю более менее берутся все(0-102 раза, 1-96 раз, например). Я так понял это неправильно?
Случайная выборка это нормально. Я спрашивал про количество примеров, которое ты используешь для вычисления одного обновления весов.
Если ты используешь для этого все или почти все примеры, это называется batch training. Это не самый эффективный способ.
Я для одного обновления беру 20 примеров. Такая тренировка называется mini batch. Преимущество - гораздо большая скорость сходимости, к тому же это позволяет не застревать в мелких локальных минимумах (хотя, судя по твоему графику, у тебя проблема не в этом).
Странно, всегда считал, что обновления весов надо делать сразу после 1 примера.
Значит похоже я еще и веса неправильно настраивал, т.к. обновлял сразу по проходу, а надо видимо уже после пересчета всех дельт во всех слоях обновлять веса.
Кстати, Andrew Ng это всё рассказывает в своем курсе.(https://www.coursera.org/learn/machine-learning)
Помимо начальных лекций про batch GD там ближе к концу рассмотрены еще несколько вариаций спуска
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() можно задать конкретно, тогда выбирается определенная цифра, ес-но. Но нигде не нашел в каком они там вообще порядке. Как быть-то?
Ну-ну.
Даже я, человек, не всегда правильно набираю ее. У яндекса 1 и 7 очень похожи.
>Даже я, человек, не всегда правильно набираю ее
Ну если ты даун только. Не набрать настолько простейшую капчу это надо постараться еще. Видел бы ты что на некоторых сайтах творилось раньше(да и сейчас еще где то осталось)
Оче сложная капча для распознавания. Там на первом же шаге заполнение охуительных рваных контуров будет фейл.
На самом деле для машинного распознавания капча пиздецки сложная.
1) вместо цифр - только контуры.
2) контуры рваные.
3) цифры деформированные и наляпаны одна на одну.
4) левые полосочки, искажающие контуры.
Итого, даже главные компоненты для одинаковых цифр будут совсем разные. Глубокие же сети глубоко соснут из-за отсутствия устойчивых характеристик одинаковых цифр на таких разных изображениях.
Ну вот на пике 7 и 1
И еще вопрос, если ответ от сети правильный, то в стохастическом градиентном спуске все равно надо суммировать дельты или нет?
а как же так?
http://habrahabr.ru/post/144881/
>Если сеть выдает правильный ответ — радуемся и ничего не делаем.
Там приведен известный алгоритм обучения перцептрона. Он работает только если а) сеть является перцептроном, т.е. не содержит скрытых слоев; б) тренировочное множество линейно сепарабельно. В твоей задаче не соблюдаются оба условия.
Ng и об этом тоже рассказывал в своем курсе.
Как ни странно, но сеть у меня обучалась именно так, а наоборот не хотела почему-то. Нельзя же сеть настраивать если сеть дает правильный ответ или я неправильно понял алгоритм, что ли.
ну фиг его знает, сеть точно со скрытыми слоями, т.е. уже якобы не должна обучаться.
ОП, у меня как раз вопрос. Никогда с распознаванием не имел дела.
ТЗ у меня в следующем: есть фигура и нужно, чтобы пользователь не отрывая руки нарисовал похожее что-то. После проведения мышью я имею массив точек. Я думал его распознавать через определение где какая прямая и относительность длинны к другим отрезкам. Но я не могу понять как мне определить новую грань фигуры правильно, чтобы неровности в ведении мышью не были помехой. Подскажи что делать, может уже готовые алгоритмы есть... В общем хоть что-то
Почему нельзя каждой точке квадрата сопоставить точку рисунка и посчитать отклонение?
Ты описал ТЗ для пользователя. Программа что должна делать? Распознать одну из нескольких возможных фигур? Или любой многоугольник?
Если многоугольники, то нужно распознавать прежде всего сегменты. На коленке прямые линии распознаются с помощью Hough transform. Сразу учти, что его утомительно настраивать, но если проявишь должное упорство, как-то распознаваться будет, кроме очень коротких отрезков. Вроде бы готовая реализация была в OpenCV, посмотри.
Если распознать нужно одну из нескольких заранее известных фигур, то я бы просто понизил разрешение и прошелся скользящим окном по картинке, сравнивая с шаблонами. Придется еще перебирать масштабы. В реализации это проще всего, но может быть слишком долго, смотри сам по своему ТЗ.
Погонял немного - пока так себе, до ИИ (как он в блоге выражается) довольно сильно недотягивает. Широко известные вещи угадывает, чуть в сторону - выдает instrumentation или еще пару общих классов, либо вообще мимо кассы.
Посмотрим, будут ли развивать. Мне интересно, до какого уровня эту технологию можно довести. Вряд ли тут возможно понимание картинки на человеческом уровне.
1) Обрабатываешь фильтром. Можно попоробовать фотошоские, пока. Мне лень такой хуней щас страдать.
Контуры заливаются.
2) Смотришь какие цифры сколько занимают по площади. Смазываешь по среднему и сравниваешь контрастность с эталоном.
...
3) Профит. Яндекс пидоры в попу ебуться.
Ах, да. Анонизмус (c). Не для продажи.
Не такие цифры муйня. Надо пожирнее брать как у яндекса.
2 - 198
3 - 199
4 - 197
5 - 198
6 - 189
7 - 209
8 - 181
9 - 188
0 - 189
Как то слабо распознается.
Если не 100% то там все 0%. Я заметил один момент: на некоторых сайтах когда хотя бы одна цифра набирается не правильно ее будут специально ставить в капчу. Благо сделать это не так сложно (сравнить строки и выдать хотя бы одну неправильно распознанную цифру).
ЕТОТ ПИДОР ПОДЕЛИЛСЯ ИСХОДНИКАМИ ИЛИ ПРОДОЛЖАЕТ ЖОПОЙ ТОРГОВАТЬ?
Вот нахуя ты это сделал?
Лет пять назад следил за развитием, даже экспериментировал немного с их СДК. Потом стало ясно, что дальше игрушечных задач они его вывести не могут. Идеи там интересные про интеграцию по времени, разреженные представления. Но для простого распознавния НС и другие стандартные методы гораздо мощнее.
Сейчас они неплохо развернулись с оупенсорсом. Посмотрел гитхаб, а там куча людей участвует, коммиты кипят. Не знаю, что они делают - увидим еще лет через пять. Я настроен скорее скептически.
Если тут кто-то в теме, распишите вкратце последние новости и направление развития. Я был бы очень благодарен.
Посоны, взял очень рандомную генерацию цифр со всякими искажениями 2 ляма обучающих циклов уже дал, т.е. 20 циклов по 100к обучал 20 дней, ошибка 0.27 где-то, это нормально?
Трудно сказать, не зная деталей. Я уже пытался диагностировать проблемы с обучением у другого анона, без особого успеха. Здесь вкратце написано, с чего начать: >>453123
Но вообще сильно рекомендую начать с какого-нибудь курса, туториала или примера. Вслепую применять эти алгоритмы бесполезно. Нужно четко представлять, как и почему это работает.
По рукам бы надавал ОПу за то, что названия методов начинает с заглавных букв!
Мимоджавист
ИСХОДНИКИ ДАВАЙ, ШЛЮХА ТЫ НАЕМАНАЯ
>Эволюционный алгоритм
Дерьмо собачье.
И играет он как говно.
Не говоря уже о том, что окружение СТАТИЧЕСКОЕ. Враги всегда совершают одни и те-же действия.
Все "обучение" сводится к поиску оптимального пути.
Алсо, этот хрен ничего не понимает в эволюции.
>То, как ты окрысился
Что это значит вообще?
>это не переход на личности?
Нет.
Я ничего не знаю о личности афтора, и не высказывал никаких мыслей по этому поводу.
Только касательно примитивности и убогости демонстрируемого ИИ. Для которого никакие нейросети ненужны. А он еще и "эволюционный" подход к нему прикрутил. Зачем козе баян? Что-то тут явно лишнее.
>Алсо, этот хрен ничего не понимает в эволюции.
Ну да, я глубоко сомневаюсь в уровне знаний автора относительно эволюции. В свете его высказывания о том, что именно таким, как он изобразил, образом развилась жизнь на земле. Эволюционные алгоритмы имеют очень мало общего с эволюцией живых организмов. И странно, что автор начал заниматься эволюционной нейросетью не разобравшись, хоть примерно, с тем, что это за эволюция такая в природе.
чувак - Человек, Уважающий Высокую Американскую Культуру (у стиляг так расшифровывалось)
Вообще, еще в РИ чуваками называли грязных неопрятных тупых бомжеватых сельских парней.
Странно кстати, что современные источники на это не ссылаются.
Придумывают самые невообразимые происхождения для слова. Когда ему овер 300лет в русской речи.
Мне показалось, что в твоей поспешной и весьма нелестной оценке его работы проявилась какая-то личная неприязнь.
>Для которого никакие нейросети ненужны.
>А он еще и "эволюционный" подход к нему прикрутил. Зачем козе баян? Что-то тут явно лишнее.
Невероятные откровения. А с каких позиций ты это утверждаешь? Ты уже занимался этой задачей, ознакомился с историей вопроса? Пока что это пустословие.
>В свете его высказывания о том, что именно таким, как он изобразил, образом развилась жизнь на земле.
Ну это глупость, ок. Можно списать на популистскую направленность ролика, для широких масс.
>Эволюционные алгоритмы имеют очень мало общего с эволюцией живых организмов.
Общего довольно много. Все-таки придуманы эти алгоритмы были именно как модель эволюции. В данном случае нас не интересует эволюция в природе, а лишь способ решить задачу.
А у тебя про триста лет есть какие-нибудь свидетельства? У меня вот только это: https://books.google.com/ngrams/graph?content=%D1%87%D1%83%D0%B2%D0%B0%D0%BA%2C%D1%87%D1%83%D1%85%D0%B0%D0%BD&year_start=1800&year_end=2000&corpus=12&smoothing=3&share=&direct_url=t1%3B%2C%D1%87%D1%83%D0%B2%D0%B0%D0%BA%3B%2Cc0
>Мне показалось, что в твоей поспешной и весьма нелестной оценке его работы проявилась какая-то личная неприязнь.
Показалось.
Мне вот кажется что у тебя какое то очень личное отношение к "его" работе. Тебе она оче нравится? Да, забавно, уровня курсовой работы.
>А с каких позиций ты это утверждаешь?
С позиций анонимного комментатора.
>Ты уже занимался этой задачей, ознакомился с историей вопроса?
Вы с какой целью интересуетесь?
Вам важно разобраться в вопросе, или вы хотите меня оскорбить?
>Пока что это пустословие.
Не понимаю что ты этим хочешь сказать.
Нет, это не пустословие. Это мое личное мнение.
Мне не жаль если оно задевает чьи-то чувства, и твои в частности. Я делюсь им бесплатно и безусловно.
>Ну это глупость, ок. Можно списать на популистскую направленность ролика, для широких масс.
Ох. Да нельзя я думаю. Я думаю это типичный ролик уровня статей на хабре, от хипстеров для хипстеров. Заниматься компутер саенс теперь модно, ты забыл?
>Общего довольно много.
Ну, не особо. Используется примитивная модель передачи генов, на этом как правило все.
>Все-таки придуманы эти алгоритмы были именно как модель эволюции.
Как примитивная модель эволюции как ее понимали те кто эти алгоритмы придумывал и тогда когда они это делали.
>способ решить задачу
Через задницу.
Нейросеть там лишняя чуть более чем полностью, как и эволюционный подход.
Сколько оно обучалось? 24 часа?
За то-же время можно было сделать поиск по графу, если не за меньшее.
>Мне показалось, что в твоей поспешной и весьма нелестной оценке его работы проявилась какая-то личная неприязнь.
Показалось.
Мне вот кажется что у тебя какое то очень личное отношение к "его" работе. Тебе она оче нравится? Да, забавно, уровня курсовой работы.
>А с каких позиций ты это утверждаешь?
С позиций анонимного комментатора.
>Ты уже занимался этой задачей, ознакомился с историей вопроса?
Вы с какой целью интересуетесь?
Вам важно разобраться в вопросе, или вы хотите меня оскорбить?
>Пока что это пустословие.
Не понимаю что ты этим хочешь сказать.
Нет, это не пустословие. Это мое личное мнение.
Мне не жаль если оно задевает чьи-то чувства, и твои в частности. Я делюсь им бесплатно и безусловно.
>Ну это глупость, ок. Можно списать на популистскую направленность ролика, для широких масс.
Ох. Да нельзя я думаю. Я думаю это типичный ролик уровня статей на хабре, от хипстеров для хипстеров. Заниматься компутер саенс теперь модно, ты забыл?
>Общего довольно много.
Ну, не особо. Используется примитивная модель передачи генов, на этом как правило все.
>Все-таки придуманы эти алгоритмы были именно как модель эволюции.
Как примитивная модель эволюции как ее понимали те кто эти алгоритмы придумывал и тогда когда они это делали.
>способ решить задачу
Через задницу.
Нейросеть там лишняя чуть более чем полностью, как и эволюционный подход.
Сколько оно обучалось? 24 часа?
За то-же время можно было сделать поиск по графу, если не за меньшее.
Лень искать, в книге видел.
А если слово было в широком употреблении на 1850 год. То и на 1750 скорее всего было.
Алсо, книгопечатание возникло где-то в конце 16 века. Так что...
Да, мне она нравится.
Пустословие - это когда тебе сказать нечего, но ты все равно говоришь.
>За то-же время можно было сделать поиск по графу, если не за меньшее.
О, вот уже более конкретное утверждение. Только по-прежнему необоснованное. Ты хотя бы приблизительно подсчитал, какого размера будет граф? Как ты вообще это себе представляешь, делать один шаг, записывать состояние, потом восстанавливать одно из записанных, как в А*? Это будет чудовищно долго работать, т.к. игра рассчитана на прохождение вперед. Да и состояния большие, у тебя память исчерпается на десятой секунде игрового времени. Но ты, конечно, об этом всем даже не задумывался.
Его решение линейно зависит от длины уровня, а поиск в графе - экспоненциально.
И вообще-то его решение будет стремиться к общему при увеличении разнообразия уровней, а поиск в графе всегда только конкретный уровень сможет решить.
>Это мое личное мнение.
Ты просто ляпнул чушь, наивно полагая себя умнее всех. Причем сделал это в агрессивной манере, свойственной невеждам.
>Пустословие - это когда тебе сказать нечего, но ты все равно говоришь.
Мне всегда есть что сказать.
А вот зачем ты мне что-то пишешь - непонятно.
>Да, мне она нравится.
Хорошо для тебя.
>О, вот уже более конкретное утверждение. Только по-прежнему необоснованное. Ты хотя бы приблизительно подсчитал
>Ты
>у тебя
>но ты
Еще раз, ты хочешь разобраться в вопросе, или твоя цель перейти на личности покривляться и оскорбить меня?
Выглядит как последнее.
Я не обязан никому ничего доказывать. И тем более тратить свое время на бесплатное обучение тех кто категорически не желает учится.
>Это будет чудовищно долго работать, т.к. игра рассчитана на прохождение вперед.
24 часов хватит.
>Его решение линейно зависит от длины уровня
Морозная история.
>Ты просто ляпнул чушь, наивно полагая себя умнее всех. Причем сделал это в агрессивной манере, свойственной невеждам.
Ох анончик, разберись со своими комплексами и проблемами вначале, а потом уже по интернету определяй кто что думает на другом конце интернета.
ЕТОТ ПИДОР ПОДЕЛИЛСЯ ИСХОДНИКАМИ ИЛИ ПРОДОЛЖАЕТ ЖОПОЙ ТОРГОВАТЬ?
Интересно было бы посмотреть как разные виды нейросетей будут справляться с этой задачей.
Почитал я про генетический алгоритм и мне показалось, что это какой-то рандомный подбор весов. Или я неправ?
>Интересно было бы посмотреть как разные виды нейросетей будут справляться с этой задачей.
Лучше.
Вообще. В вдогонку всему остальному. Для тех кто в танке.
1) Медленнее генетических алгоритмов уже нет. Потому, их нигде не применяют, разве что в курсовых работах/игрушках и прочей околонаучной деятельности. Ну кто его знает, может где-то и используют серьезно конечтно, но очень очень редко.
2) Генетические алгоритмы и нейросети это оче оче разные вещи. Они несовместимы, ваще. Если кто-то говорит о генетической нейросети - он или дурак/первокурсник или вот вот получит нобелевку.
Конечно можно их как-то использовать вместе, например натренировать кучу нейросетей, а потом скрещивать их гены.
>>500033
>Почитал я про генетический алгоритм и мне показалось, что это какой-то рандомный подбор весов. Или я неправ?
Мне кажется, что гений решил тренировать сеть генетикой. Да, генерировать миллион рандомных наборов весов, а потом выбирать самые успешные и скрещивать их друг с другом.
Ад.
Просто Ад.
Алгоритм, используемый в той работе про марио, называется NEAT. Он был специально разработан для наиболее эффективной нейроэволюции. Материалы по нему приведены в ссылках в описании видео.
Пролистал это: http://mathmod.aspu.ru/images/File/ebooks/GAfinal.pdf
Вроде неплохо, хотя там только самая классика, и местами излишне детально.
Кароч, вроде понятно стало, что этот алгоритм не просто рандомный выбор чисел(решения), а еще и такой, чтоб почти не повторялись предыдущие числа в других итерациях. Не совсем тогда понятно преимущество от простого инкремента.
По-моему шикарно.
Больше похоже на то, что видишь по кислотой. Механизм, скорее всего, тот же самый
Четвёртый пик - лучшее, что я видел в этом году.
ТЕКНОЛОДЖИС
А точно не допиленное кривыми руками хендмейдонаебалово? А то есть тут один спейс телескоп с красявыми картиночками...
Меня тоже пробрало. На уменьшенной картинке ничего особенного, а как присмотришься... ИИСУСЕ!
В гугле давно занимаются распознаванием на глубоких нейронных сетях, и в статье объясняется, как были сгенерированы картинки. Звучит это правдоподобно.
Кто-то объяснит как он сделал входные данные в сеть и "нажатие кнопок"? Это все можно сделать тока допилив тот эмулятор или есть возможность подключаться к нему независимо от языка программирования?
Он использует этот эмулятор: http://tasvideos.org/BizHawk.html
Эмулятор поддерживает скриптинг на луа. Весь его код написан на луа, вот исходник: http://pastebin.com/ZZmSNaHX
Первый ответ - от чела, занимающегося нейроэволюцией, про систему обнаружения препятствий на роботе.
Кто-то может вкратце описать как настраивать эту сеть? Я так понял там появляются нейроны(соответственно и связи) по генетическим законам. И еще нашел исходник в сети реализующий эту сеть с помощью связанных списков. Не проще ли этот алгоритм реализовать с помощью обычных массивов?
Реализовывать можно как угодно. Если тебе проще массивами, делай так.
Настройка описана в многочисленных статьях про NEAT и содержит много деталей и шагов, вкратце описать я не возьмусь. На совсем абстрактном уровне:
ГА инициализируется набором случайных НС без скрытых нейронов, т.е. выходы напрямую соединяются со входами. При мутации сети у нее может измениться какой-нибудь вес, а также может добавиться новое соединение между нейронами, либо добавиться новый нейрон. При этом каждой структурной мутации присваивается номер, и при скрещивании сети проверяются на совместимость с помощью этих номеров. Это позволяет эффективно скрещивать сети, учитывая их совместимость.
Также вся популяция автоматически разделяется на несколько видов, которые не скрещиваются и не соревнуются между собой. Это позволяет не сходиться к локальному минимуму раньше времени.
Как скрещивать сети в ГА? Вообще как скрещивать и мутировать реал тип данных. там же еще мантисса.
Название конторы на М начинается, состоит из двух слов и офис разработки в одном миллионнике? Или я ошибаюсь?
мимоаутист
ЕМУ ДОСТАТОЧНО ЧТО РЕКЛАММА ЕГО ЖОПЫ НАХОДИТСЯ НА НУЛЕВОЙ А НА ТЕБЯ ЕМУ ГЛУБОКО НАСРАТЬ
ПОСКОКУ ТЫ ДЕБИЛ
А МНЕ ОН НЕ ДАЕТ ИСХОДНИКИ ПОТОМУЧТО ОН ЧМОШНИК
черкани мне в лс
Теано, например.
Ошибаешься.
Нет, я отвечаю на все вопросы. Просто обсуждение вяло идет. Попозже вброшу пару интересных ссылок по теме.
Суть: на основе НС с особой архитектурой построено некое подобие машины Тьюринга. Имеется память относительно небольшого объема, считывающие и записывающие головки, а также программа. Все это вместе представляет из себя рекуррентную НС, и ее можно обучать на примерах с помощью backpropagation.
Таким образом, эта НС может обучаться алгоритмам, выполняющимся пошагово. В статье описывается обучение копированию, многократному копированию, и сортировке объектов. Т.к. система учится не просто интерполировать тренировочные примеры, но самому алгоритму, то она обладает недостижимой ранее способностью к обобщению. Например, ее тренировали копировать строки до 20 символов длиной, а после этого она умеет копировать гораздо более длинные строки. То же самое с сортировкой. Обычные рекуррентные архитектуры никогда не могли так обобщать.
Потенциально эта технология может позволить создавать системы, обучающиеся гораздо более сложным концепциям, чем это возможно сейчас. Нынешние архитектуры делают, грубо говоря, интеллектуальную интерполяцию между тренировочными примерами. Новая архитектура может делать нетривиальную пошаговую многоступенчатую обработку данных, создавать и использовать БД, находить алгоритмические закономерности в тренировочном множестве. Это очень круто.
бля какое же я днище, веб макакинг воревер блять
>Neural Turing Machines.
>реализации:
>го https://github.com/fumin/ntm ГО, Карл!
Хотелось бы на R хотя бы. Ну чтобы была возможность стыковать, гибридизировать с чем-то еще. Так нет, сделают непригодное для использования нечто на пестони или вообще на каких-то индусских поделиях, я ебал. инбифо сам возьми да сделай!!111
Чувак, это счастье, когда есть пейпер и код к нему в паблике. Хоть какой. Обычно кода нет, а в пейпере недостает 80% инфы, которая, в лучшем случае, общеизвестна.
Что касается языка, то Theano написан на питоне, максимум тебе Lua встретится с Torch. Theano, такая штука типа CAS, что ты описываешь нейросеть в терминах операций с векторами и матрицами, а он сам тебе символьно рассчитывает градиент твоей нейросети. Потом он тебе эту нейросеть еще и в GPU компильнет.
Остальные языки, включая Go - приведут к ручному вычислению символьного градиента на бумажке, что есть полный отстой и никакого пространства для экспериментов. Если тебе нужен R, делай биндинги или аналог Theano под R (миллиард человеко-часов).
Код не от авторов, увы. Они зажали, и в статье тоже инфы недостает. На гитхабе энтузиасты воссоздали, и они довольно долго мучились с воспроизведением результатов, насколько мне известно. Сейчас вроде работает, хотя я сам еще не проверял.
>>536826
И таки да, теано это одна из стандартных систем для наколенных экспериментов с НС сейчас. Ты разберись сначала, потом критикуй.
>сделают непригодное для использования нечто на пестони
>подразумевает, что R используется кем-то, кроме обезумевших школьников.
R используют дядьки в банках, считая свои простенькие регрессии и получающие за час больше, чем ты зарабатываешь за месяц.
Whatever. R для таких задач довольно удобен. Но не чтобы на нем писать символьный дифференциатор для нейросетей.
Самое интересное, что казалось бы, Хаскель тут бы хорошо подошел, однако хуй там - питон и lua.
Demo-Application can be found at http://waifu2x.udp.jp/ .
https://github.com/nagadomi/waifu2x
Вот это я понимаю application, не то, что песиков рисовать.
Офигеть, и ведь хорошо работает. Картинки: оригинал, ресайз с помощью ресемплинга (лучшая интерполяция, которую я нашел), результат этой программы.
Неплохо.
Артефакт на артефакте, чем лучше-то?
На твоем пике вокруг любого контрастного перехода довольно заметный звон интерполяционного фильтра.
>теано это одна из стандартных систем для наколенных экспериментов с НС сейчас.
Хуйня это из-под коня. Костыль на костыле костылем погоняет. Причем, основной код все равно на крестах или куде, пистон только в качестве враппера. Самый пиздец в том, что приходится ставить кучи ненужного говна, которое к тому же работает никак. Например, я так и не запустил код примеров с сайта. Здесь где-то спрашивал, никто нихуя не знает почему не работает (весь софт был установлен правильно, тесты проходят и компилятся нормально). И все это только из-за того что вместо враппера пистон. В том же R полно пакетов, в которых R не более чем враппер для кода на крестах, и все прекрасно работает, не считая того что сам R без всяких костылей - 64мб и сам язык изначально сделан для нужд датасайнс. А не простой ЯП общего назначения, которым обрабатывать данные можно только через хуеву тучу костылей.
Мне надо было - я разобрался. Для ленивого ковыряния не подходит, это да. Я уже тут давал ссылку на казуальную систему: http://cs.stanford.edu/people/karpathy/convnetjs/
Кликай, и у тебя все будет тренироваться сразу же прямо в браузере. Ничего не надо ни устанавливать, ни писать. Можно менять топологию сетей и т.д.
Ты просто тупой, смирись с этим. А в R нет ни одного пакета подобного уровня. Просто ты тупой и не понимаешь, чем Theano, который ГЕНЕРИТ КОД на С++, то есть по сути компилятором является", отличается от "враппера".
>тупой
>тупой
Ясно. Какого там пакета нет? Из всего что есть в этих ваших теанах в R нет только сверточных сетей. Только, умный ты наш. Из остальных глубоких сетей есть даже перепиленный из матлабовской версии код Хинтона и Салахутдинова из той самой оригинальной работы 2006 года по глубоким сетям. Перцептронов всяких и подавно навалом.
Нихуя тебе не ясно. У тебя проблемы с локусом контроля. Начнем с того, что Theano вообще никакого отношения к нейросетям не имеет, это просто компилятор символьных математических выражений, умеющий вычислять само выражение и производную. Ничего подобного на R нет. Там есть пакеты с хардкоженными формулами из пейперов, то есть на порядок более низкоуровневый стафф.
То, что ты этого не понял, и уверен, что theano - это какой-то там враппер к С++-функциям типа caffe, это исключительно проблемы твоей непрошибаемой тупизны и обвинение всего остального мира в своей тупости.
Совершенно разные системы с непересекающимися наборами фичей. Для НС симпи непригоден.
>Theano вообще никакого отношения к нейросетям не имеет
>вычислять само выражение и производную
Вот в этом контексте. Без нейросетей.
Это зашитый функционал, и производную ты не можешь увидеть в символьном виде в теано. Зато это компилируется в С или в ядро для куды, и работает очень быстро, ради чего это все и делалось. В симпи этого нет.
Симпи предназначен для манипуляции самими выражениями, и по этой части у него очень большие возможности. В теано ничего подобного нет, там только градиенты можно вычислять, и то далеко не для всех функций.
Если ты про 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, но написали почему-то на питоне и луа.
Да, отлично. Сейчас идет волна улучшений в глубоком обучении. Взгляды и веяния меняются прямо на глазах. Например, раньше использовали предобучение с помощью автоэнкодеров, а в этой статье это уже не упоминается.
Надеюсь, в скором времени устоится некий набор правил, которые дают наилучший результат.
Я дал выше ссылку на http://cs231n.github.io/, там в принципе все современные методы описаны. Еще пишется книжка по deep learning, в deep learning read list есть ее черновик.
От предобучения избавились с помощью ReLU, dropout и некоторых других техник, которые там описаны.
Еще хочу добавить: все это несколько сложнее, чем кажется, когда читаешь эту литературу. Например, я при тренировке НС из оппоста пытался использовать дропаут и регуляризацию, но у меня так ничего и не вышло. Без них работает лучше. А везде пишут, что это полезные вещи. т.е. я явно что-то делал не так, но что именно - непонятно.
Я не гонюсь за передовыми статьями, лучше подождать полгода и посмотреть комментарии сообщества. А то в каждой блин статье экстраординарные результаты, которые потом почему-то не видно Вот в учебниках пишут уже действительно проверенные вещи, которые неплохо идут на практике, причем перечисляют типичные ошибки, которые без этого знания дебажишь по несколько дней.
>>537658
Лучше на training set или validation set? Если на training, то так и должно быть, потому что регуляризация уменьшает overfit.
Если на validation, то, скорее всего, формулы кривые. Типа, в dropout забыл делить на p, градиент криво посчитал и т. п. (https://twitter.com/karpathy/status/626429221414563841)
Если по поводу я dropout не уверен (руки не дошли), то регуляризация обязательна для избежания overfit'a.
Кстати, тем временем https://github.com/kaishengtai/neuralart
Градиенты у меня в теано же считаются, разве что там набажили, но это вряд ли. Я экзотики не использую.
>регуляризация обязательна для избежания overfit'a
Ну это, очевидно, неверно. Ты XOR тренировал когда-нибудь? Какой там может быть оверфит на одном нейроне? Оверфит далеко не всегда проявляется. У меня он был совем небольшой, и ошибки на тренировочном и валидационном множестве были почти одинаковые. Без регуляризации.
Вот о таких вещах я и говорю. В книжке написано, мол, "регуляризация обязательна для избежания overfit'a". А на самом деле там масса нюансов. Например, не сказано, что сеть должна быть достаточно большой для оверфита. От скорости обучения это тоже зависит. И т.д. Нужно все самому на своем опыте переоткрывать.
Блин, ты вообще не о том пишешь. Не надо вручную подбирать гиперпараметры.
По уму у тебя должен быть реализован параметр лямбда, должен быть реализован параметр p. Далее твой алгоритм должен быть протестен на toy set с известным перформансом. Можно посмотреть на вид полученных фильтров - достаточно ли они ортогонально выглядят.
А потом ты уже уже не дрючишься с каждым гиперпараметром, а включаешь мета-оптимизацию по lambda и p из интервала и идешь читать двачи в поисках лучшей конфигурации. И если оно тебе подберет, что лучший результат с lambda = 0, p = 0, ну молодец. Бывает. Но это - просто частный случай.
Обратная ситуация, это через жопу: сделал алгоритм, не отладил, потом подумал, а не заебенить ли регуляризацию, заебенил, проверил с лямбдой 0.01 и 0.1 и увидел, что перформанс стал хуже, забил на это. И так с каждой новой задачей. Вместо того, чтобы машина сама этим занималась.
Ты прямо какой-то сферический теоретик. Там гиперпараметров десятки: количество слоев, их формы, например. Если это все перебирать, ты помрешь раньше, чем оно найдет идеальную конфигурацию. Тут нужно своим умом понимать, как надо делать. А это только с опытом приходит.
Ты тут описываешь какую-то волшебную коробочку с кнопкой "сделать хорошо". Такого и близко нет. Попробуй сам что-нибудь нетривиальное сделать, поймешь.
>Ты прямо какой-то сферический теоретик.
>Попробуй сам что-нибудь нетривиальное сделать, поймешь.
Ба-бах.
http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf
Нужно сделать систему распознавания китов. Т.е. отличать одного кита от другого.
Кто-нибудь хочет поучаствовать?
Видео демонстрация работы: https://www.youtube.com/watch?v=_wXHR-lad-Q
17 ФПС на макбуке про.
круто. еще бы оно их обводить по контуру научилось.
Сам попробуй пораспознавать, проверь какая у тебя ошибка. Этот уровень и будет примерным пределом.
Почему в луа пишут нейросети и работают с ними? Что за мода такая? Дайте, кто может пошаговое описание глубокого обучения. Имеется ввиду грубую настройку Restricted Boltzmann machine. По типу считаешь матрицу по такой формуле и т.д. П.С. Смещение в моей сверточной нейросети отсутствует.
LuaJIT обгоняет по производительности D. А так есть 2 тулзы такого рода, theano на питоне и torch7 на lua. И вот кто-то ИТТ бугуртит на питон, а кто-то на lua.
Если вместо rbm взять автоэнкодер, то вот тут неплохой туториал http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial
RBM я так и не понял, как работает, кстати.
Тут походу дом с небом напутала сеть.
Здесь кто-то смотрел код?
Там веса инициализируются случайно? Или в начале при сэмплированию по Гибсу их нулями сделать?
Вот это полезно.
Охуеть, по этой линии ведь можно убрать деформацию изображений. Разбить на отдельные символы бы потом не сильно тяжело, потому что цифры примерно равны по ширине, ну и там разные еще полезные мелкие хинты есть. Если бы они всегда такую капчу генерировали, то проблем бы не было.
мимопроходил
fun=(exp(x)-exp(-x))/(exp(x)+exp(-x));
fun=(2/(1+exp(-2*x)))-1;
первая - гиперболический тангенс, вторая - сигма, но с примесями и с ними у меня все нормально настраивается. Не могу понять, почему не настраивается с чистой сигмой типа
fun=1/(1+exp(-x)); Т.е. не получается у меня настроить, то что не симметрично точке (0;0)
Ботай Efficient backprop LeCun'а, он расписал про это.
Распределение начальных значений у нейронов какое? Если они уходят в насыщение, обучение будет неэффективным.
Это копия, сохраненная 10 октября 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.