Как стать автором
Обновить

Комментарии 157

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

Слышал звон, не знаю где он. В НС есть проблема затухания градиента, а не «сигнала». И в обычных рекуррентных сетях эта проблема как раз явно выражена, поэтому изобрели всяке LSTM/GRU итд, в которых эта проблема значительно меньше.

Время на обучение сокращается многократно ограничиваясь изменениям нескольких элементов сети.

Сильное утверждение. Обосновывать его вы, конечно же, не будете. Да и вообще объяснять о чем вообще речь.
Слышал звон, не знаю где он. В НС есть проблема затухания градиента, а не «сигнала». И в обычных рекуррентных сетях эта проблема как раз явно выражена, поэтому изобрели всяке LSTM/GRU итд, в которых эта проблема значительно меньше.

Я бы дополнил, что даже если говорить про feed-forward сети, с ней тоже успешно борются всякими резидуал-связями, например.
Есть ещё, имхо, весьма недооценённые SELU активации с правильной иницализацией весов, которые существенно облегчают, если не вообще решают вопрос vanishing/exploding gradients. Ну и другие менее публичные методы :)

Так я так и не понял, а где же, собственно, сам "двоичный алгоритм"?


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

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

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

Позвольте спросить Вы много разработали алгоритмов машинного обучения?

Формулировка «разрабатывать алгоритмы машинного обучения» мне не очень понятна. Но мы, вроде, про вашу статью говорили? Вы утверждаете, что высветили ряд «фатальных недостатков» нейросетей. Разумеется, в статье я их не вижу. Я вижу только размытые утверждения, основанные на биологических аналогиях (кстати, не особо актуальных для современного deep learning), и такие же голословные (потому что не приведены никакие эксперименты на реальных данных) утверждения про ваш подход, который этими «фатальными недостатками» вроде как обделен.

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

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

Щто? Что вы называете «потоковыми задачами»?
1) «алгоритм» — не обучается, обучается модель (с помощью алгоритма).
2) при правильно выбранном Learning Rate нейросеть (модель) не «ломается» по мере обучения.
3) Не увидел в вашей статье и комментариях никаких «фатальных» недостатков, да и вообще недостатков. Сплошная вода без малейшей конкретики.
Предлагаю вам решить хоть одну задачу с помощью нейронных сетей, потом уже критиковать, указывая на конкретные проблемы конкретной сети.
Вот об этом и речь. Что все работает только при «правильно выбранном Learning Rate». Весь разговор о различиях. Есть ситуация чтобы не сломаться нужно очень хорошо подбирать параметры и постоянно следить чтобы небыло недообучения и переобучения. И о том, что не может сломаться в принципе. Вот вам 37 причин а не две почему нейросеть не работает — habr.com/ru/post/334944 Но у большей части сейчас стадия отрицания, пока не хотят или не могут принять что что-то пошло не так. Когда поймут начнут задумываться над тем как это можно исправить. Вот тогда то и начнется полноценный разговор.

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

habrastorage.org/webt/ma/eo/am/maeoamm7d-cgnya6lf4nsubljbg.png
Уверен, что вы не представляете, сколько тысяч научных исследований по нейросетям проводится каждый месяц. Результат наиболее успешных из них — научные работы. В этих научных работах каждый первый пытается что-то менять, чтобы нейросети работали лучше.
В том числе, работ по бинаризации нейросетей — десятки и сотни каждый месяц. По спайковым нейросетям — даже ещё больше работ.
Но, увы, анализируя средний и топовый уровень этих работ и скорость прогресса, а также принимая во внимание уровень знаний, которые демонстрируют эти учёные и сравнивая его с вашим, я скорее поверю в то, что вы искренне заблуждаетесь в возможностях собственных изобретений, нежели в то, что вы сделали что-то намного лучше них. Поэтому вам и предлагается метод экспериментальной проверки ваших результатов, ведь без него всем скорее кажется, что вы очередной шарлатан, который предлагает товары из «магазина на диване», безапелляционно и уверенно увещевающий, что без этой квадратной сковородки, которая сама равномерно распределяет по ней блинчики во время приготовления еды, мы не сможем жить. И приводит в подтверждение эту картинку с квадратными колёсами, а вовсе не формулы, из которых следует, насколько улучшится жизнь обладателя этой сковородки — сколько часов и денег он сэкономит на этой покупке. Вместо того, чтобы давить нас логикой, вы давите на эмоции. Задумайтесь, почему вы так поступаете?
Как раз это и удивляет. Почему она за пятьдесят лет кроме перделок и свистелок ничего более существенного не может сделать. Вам не кажется, что в этом есть какой то сокральный смысл. Если мы мятьдесят лет делаем одно и тоже но ничего не происходит, то нужно менять свои подходы а не продолжать всех убеждать что все просто «не умеют их готовить». Ну если круглые колеса которые ну нужно учиться двадцать лет настраивать по вашему что-то ненужное то я сдаюсь. Я вам сейчас говорю об алгориме который не нужно настраивать. Все работает из коробки. В нем потолка за которым он перестает работать а «просто работает дальше» какой бы большой файл с обучающими данными у вас не был. Научившись передвигать не катаемые колеса можно хоть на лыжах все перетащить летом но на круглых колесах удобнее. Предлагаю выбрать алгоритм и обучить. Пусть победит сильнейший.
Как раз это и удивляет. Почему она за пятьдесят лет кроме перделок и свистелок ничего более существенного не может сделать.

На случай, если вы не заметили мой комментарий ниже, а не специально проигнорировали, повторюсь: современные computer vision, NLP, speech recognition и т.д. работают чуть менее, чем полностью на нейросетях.

Предлагаю выбрать алгоритм и обучить. Пусть победит сильнейший.

Разве это не то, что мы вам как раз предлагаем, советуя пойти со своим алгоритмом на кагл?
Идти куда то без единого шанса победить? Просто в правилах написано, что я победить не смогу. Чет не торкает меня от таких перспектив. Ну реально как то это ненормально. Есть отечественные соревнования. Думаю в них поучаствовать, но опять же внимательно прочитав правила.
В правилах не написано, что вы не можете победить. В правилах написано, что победитель должен открыть свой код организаторам.
Но как я уже сказал, вам это не грозит (как минимум, в ближайшее время).

Впрочем, не понимаю, что вам мешает открыть код? Ну или даже, подумаешь, победите, откажетесь открывать код, и вас дисквалифицируют с лидерборда. Зато всем докажете, что ваши алгоритмы работают.
Об этом и речь. Я не могу открыть код следовательно по правилам я не могу победить. Смысл участвовать в соревнованиях в которых не можешь победить? Думаете будет хорошо звучать «Меня дисквалифицировали на кагле»?
Об этом и речь. Я не могу открыть код следовательно по правилам я не могу победить.

Я же прямо спросил: что вам мешает открыть алгоритм?

Думаете будет хорошо звучать «Меня дисквалифицировали на кагле»?

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

А жаль, я даже надеялся, что вы сами не осознаёте проблемы, и, может, удастся вам действительно помочь.
Ещё раз: шанс победить у вас есть, никто юридически не обязывает вас открывать алгоритм после победы.
Читайте условия внимательно.
Ещё раз: шанс победить у вас есть, никто юридически не обязывает вас открывать алгоритм после победы.

Ну вообще это зависит от конкурса. В большинстве случаев победитель должен предоставить код организаторам под permissive лицензией, если не хочет быть удаленным с лидерборда.
Впрочем, во многих конкурсах это несет в себе только цель отсеять читеров (которые использовали прямо запрещенные лики, ручную разметку и так далее).
Именно: всегда после победы, при нежелании участника показывать код, можно сказать организаторам, чтобы удалили результат с лидерборда. Юридическое обязательство раскрыть код после победы не возникает, есть лишь постмодерация победителей без исходных кодов.
Нет, за счёт этих миллионов попыток в год, есть рост качества на почти всех задачах, и, если усреднить, то где-то порядка 5-10% уменьшения ошибки в год. Поэтому некоторые задачи, которые 50 лет назад или 10 лет назад были не решены, теперь находятся в статусе «решённых» — качества достаточно на практике. Другие же ещё в «нерешённых», но это нормально.
Это не ноль, но и не «решим все задачи влёт».
>Я вам сейчас говорю об алгориме который не нужно настраивать. Все работает из коробки. В
Во-первых, всегда нужно учитывать время работы и затраты ресурсов. Никого не интересует алгоритм, который нельзя потом никак применить. Всегда есть какие-то практические ограничения, например, распознавание речи или видео не может нормально работать на мобильном телефоне из-за слабых процессоров и быстрого жора батарейки. А какие-то задачи — на компьютере без ускоряющей вычисления видюшки, или без кластера на N машин в облаке (как Альфа-Го Старкрафт 2).
Во-вторых, я уверен, что оно у вас так хорошо «работает» лишь на трейн-сете, а не на валидационном сете. Таких фальстартов я как преподаватель видел сколько угодно.
Так что проверьте всё как следует, а потом уже пишите, что нашли на поверхности то, что другие ископали уже вдоль и поперёк. (Работы по последовательному добавлению нейронов и по модификациям метода обратного распространения я тоже читал, да, рекордов они не ставят обычно).
Во-вторых, я уверен, что оно у вас так хорошо «работает» лишь на трейн-сете, а не на валидационном сете. Таких фальстартов я как преподаватель видел сколько угодно.

Я снова боюсь навлечь на себя поток критики но скажу. Я честно боюсь «заразится» этим правильным подходом к решению. И проверку работы сети выборками которую все считают эталонным я считаю в корне не правильной. Обьясню почему. Давайте возьмем две небольших сети. Ну к примеру по сто нейронов и задачу чуть больше ста нейронов та которая решилась бы за двести. И мы обучили обе сети НС и не НС и что мы имеем. Нейронная сетка показывает плохие результаты это логично ведь ее обучающая способность ниже чем необходима для освоения всей выборки. НС переобучилась или «запомнила» к примеру или алгоритм обучения был плохим, может неправильная структура была взяла много причин почему у вас плохо проходит тестовая выбора скажем на 5% хеже чем вы расчитывали (очень много). Что это значит для неНС сети. Вы просто докидываете тестовую выборку и он ее дообучает увеличивая свою сеть до нужных 200 нейровно. Как я уже озвучивал при обучении старые данные не ломаются долько добавляются новые. После дообучения вы имеете ситуацию, что размер сети увеличился, обучающая выборка работает еще лучше чем работала, ведь вы ее в этот момент тоже обучали и тестовая выборка тоже работает, ведь вы ее только что обучили. Выводы: Тестовые выборки необходимы только на алгоритмах которые не смогут дообучить ее при необходимости. Для неНС эти выборки просто бессмысленны, ведь обучение дешевое и все ресурсы затраченные на проверки проще пустить в дообучение. Для неНС такая проверка просто бессмысленна. Если обучающая выборка будет небольшой то и неНС сеть не вырастит оставшись маленькой. Если обучающая выборка большая неНС сеть растет до размеров обучающей способности которая необходима для освоения этого обьема обучающих данных. Для нее есть только данные которые раньше не обучали и их не нужно проверять их нужно дообучать. Представьте человека. Вы учили учили а он сдает тест не на 4 минимальных балла а на 3.7 говоря шаблонами НС этот человек плохо прошел тесты. А в «нормальной» ситуации мы просто ему говорим иди учи дальше. Мы же знаем что обучающая способность твоего мозга ничем не ограничена и чтобы все работало хорошо нужно всего лишь приложить больше усилий к обучению. Я боюсь того момента когда я скажу кому то «проверять на тестовых выборках» это значит я стал мыслить как все эти миллионы «доцентов» читающих одну «вредную» литературу и учившихся у одних и тех же преподавателей, каждый раз в своих эксперимента пробующих одно и то-же. После таких шаблонных преподавателей и приходится доказывать что мир круглый а не квадратный как говорил учитель. Я готов. Заминусуйте меня полностью.

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

*жидкие апплодисменты аудитории*
Вы просто докидываете тестовую выборку и он ее дообучает увеличивая свою сеть до нужных 200 нейровно.

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

Тестовые выборки необходимы только на алгоритмах которые не смогут дообучить ее при необходимости.

Нет, господи, нет, тестовые выборки необходимы для любых алгоритмов, которые мы хотим отправить в прод и ожидаем, что в проде они будут работать так же хорошо, как в наших экспериментах.
Опять же давайте сравним с человеком. Вы ему даете примеры чего то ну к примеру двух инопланетных существ «кошечки» и «собачки» которые он изначально плохо различал и на какой то выборке проверяете научился ли он их различать. А он все еще ошибается. Логично он вас просит скажите мне кто был на фото из тех примеров на которых я ошибся, чтобы я научился их отличать и следующий раз дам правильные ответы. С каких то ракурсов это получается плохо но я могу этому научится. Это и есть скормить недостаточно обученную неизвесную (тестовую) выборку алгоритму. А вы ему в ответ: «Ты должен работать хорошо на тех данных которые тебе не давали» так вот задача сводится дать как можно больше данных, осветить все ракурсы чтобы человек (или что угодно) мог определять предметы с любой стороны. Неопределение с какой то стороны может говорить лишь об одном их не давали человеку в качестве обучающих. Он просто не видел эти существа с того ракурса который есть на тестовой выборке. Если вы хотите чтобы это работало нужно и тестовую выборку дообучить. В человеческом мире это так работает. А в НС нет. В НС все еще обучают десять по разным алгоритмам и берут одного из десяти с самыми лучшими результатами а остальных убивают как давших неправильные ответы на неизвестной ему выборке. А одного последнего замораживают чтобы он не дай бог не поломался при поступлении новых данных.

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

Или это всетаки очередной «фатальный» недостаток НС который так упорно не хотят признавать мои собеседники? Я просто не умею готовить НС говорили мне они, у НС нет «фатальных» недостатков повторяли они.
>Кстати а почему нельзя просто докинуть?
Элементарно: Потому что в реальной обстановке применения нейросети вы просто не знаете правильных ответов.
Утрируем:
Робот-дозатор себя спрашивает — кошечка или собачка перед ним? И он должен правильно ответить, а на основании этого ответа, если кошечка, то из дозатора должен посыпаться кошачий корм, а если собачка — то собачий. И не наоборот. И хозяин не должен ему говорить, кто перед ним в этот раз, иначе нет никакого толку от такого робота.
То же самое в случае Siri, вы не знаете, какую фразу сейчас скажет человек, и он не будет каждый раз эту фразу писать потом текстом после неправильного ответа Siri, повторяя при этом «тупая железка».
Тестовая выборка — это экзамен для такого робота, показывающая, можно ли ему что-то доверить на практике.
А если вы знаете ответы, можете доучиваться, и качество *на новых данных* вас не сильно волнует — то конечно, есть лёгкие методы online-learning, которые можно хоть на чайник поставить.
И вот возьмём ещё раз нейросеть для распознавания речи. Каждый раз человек говорит слова чуть-чуть по разному, и шумы около него каждый раз разные. Будет ли вообще ваша сеть работать в таких условиях?
То же самое с распознаванием изображений.
Конечно будет. Я даже не сомневаюсь. Вот кстати очень удачно вышел пост по проверке разного типа сетей. Предлагаю поиграться с указанными в статье данными. archive.ics.uci.edu/ml/datasets/Wine описание решения на статьи на хабре habr.com/ru/post/475552 статья вышла сегодня в 17:16 так что все четсно. Я уже начал расчитывать сеть биморф.рф/bmf/wine результаты отображу справа буквально через час. Плюс могу лог отобразить прогресс сети. Должно быть интересно.

Самый главный параметр это «Процент полного совпадения %» и пока он равен 2.8% затрачено 635с. и обучена 21 эпоха обучения на моем домашнем компе. Обратите внимание как будет расти этот процент исходя из затраченного времени.

Самый большое результат это 0.976~97% на обучении и 0.990~99% на тесте. Если мне удасться расчитать эту сеть на 100% это будет хорошим результатом? Здесь можно увидеть подробный лог по каждой эпохе обучения с указанием процента и количеством ошибок. Сеть сейчас обучается обновляйте страницу для получения последних данных биморф.рф/bmf:log/wine
Кстати, написано, что только один алгоритм RDA смог достигнуть 100% точности
image

В общем следите, это должно быть интересно биморф.рф/bmf/wine

Блин все закончилось быстрее чем я смог написать этот текст. Все закончилось за 454 секунды это меньше чем за 10 минут. И за 31 эпоху. По примерно 20 секунд на эпоху. Вот полный лог всех обучений биморф.рф/bmf:log/wine ну так себе задачка сетное слово. Все данные можно првоерить в форме. Подставлять свои несуществующие, сеть дожна выдать предсказание даже для данных на которых не училась.
Конечно будет. Я даже не сомневаюсь.

*не
Конечно не будет.

Вот кстати очень удачно вышел пост по проверке разного типа сетей.

Это не влияет на суть, но я уточню, что там сравниваются не сети и не на реальных данных.

Я уже начал расчитывать сеть биморф.рф/bmf/wine результаты отображу справа буквально через час. Плюс могу лог отобразить прогресс сети. Должно быть интересно.

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

Самый большое результат это 0.976~97% на обучении и 0.990~99% на тесте. Если мне удасться расчитать эту сеть на 100% это будет хорошим результатом?

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

Впрочем, повторюсь, это игрушечный датасет. Идите на кагл, заходите в реальный конкурс, показывайте крутость своего алгоритма. Всё остальное с вашей стороны — булщит.

Кстати, написано, что только один алгоритм RDA смог достигнуть 100% точности

Сейчас бы цитировать статьи 92 года. Знаете, почему никто на таких датасетах ничего не тестирует сейчас? Во-первых, потому что бустинг такие датасеты решает с околостопроцентной точностью с полпинка. Во-вторых, потому что разница точности между 99.5% и 100% на датасете в пару тысяч семплов не статистически значима.

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

Это да. Без свистелок и перделок не обходится. Неужели без исходного кода никак? Я надеялся подзаработать на том, чем занимаюсь последние пять лет. А так как то некрасиво получится просто подарю результат своего труда другим. Еще и найдутся те, кто скажет что это их код. Вот зачем нам все это? Видите, и сайт подшаманил, пару ошибок уже исправил метрики выложил. Форму для расчета вживую данных и апи для автоматизированного. Выложить код я пока не готов психологически. Но общаться интересно. Не так много людей с которыми совпадают интересы. Со знакомыми редко удается обсудить проблемы машинного обучения и какой нибудь очередной алгоритм дата майнинга.
Неужели без исходного кода никак?

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

Я уже предложил вам вариант проверки на объективном адекватном холдауте, который может впечатлить широкую аудиторию без выкладывания кода — это конкурсы на кагле.
Но нет, «не хочу на реальных данных тестить, хочу херней страдать».

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

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

Опять же с этим не поспоришь. У меня код очень своеобразный и уверен на 100% любой его сочтет говнокодом. На говнокоде даже есть пару моих перлов. Это еще одна причина не показывать свой код. Это слишком интимно, пишу как мне удобно, очень часто это не совпадает со стилем и синтаксисом среднестатистического кодера.

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


Я тоже могу создать алгоритм, который на любом датасете будет всегда давать 100% точность угадывания. Любой может создать такой алгоритм. Он очень прост: я загружаю датасет, он запоминает все записи и какой ответ надо выдать на каждую запись. А потом я спрашиваю: "какой ответ должен быть у строки такой-то из датасета?" и алгоритм выдаст мне его. Идеальная точность! Стопроцентное попадание! Но алгоритм, согласитесь, идиотский и бессмысленный. Для того, чтоб посмотреть значение какой-то записи мне не нужен для этого никакой алгоритм, я и сам могу взять датасет и глазками посмотреть нужный мне ответ.


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

Свойство запоминания легко проверяется. Вариантов которые можно ввести даже при 10 атрибутах входящих учитывая диапазон в 1000 вариантов это 1000^10 и если просто запомнить все значения алгоритм будет выдавать только запомненные данные и теряться при изменении любого параметра в сторону. Но тут не так. Легко проверяются значения атрибутов отличающихся от выборки. И они должны быть близкими к атрибутам выборке. Изменити любой параметр на 0.1 и он не должен измениться, точнее вероятность изменения небольшая. Попробуйте измените два параметра, а если три. Все эти варианты хороший алгоритм должен учитывать. А если каждый из параметров сместить в разные стороны то каким будет ответ? Способность обобщения это вроде называется могу что нибудь перепутать. И если все запомнить то ни о каком обобщении не может идти речь. Но на любом обученном алгоритме есть вомзожность проверить параметры. В форме на уже обученной сети попробуйте поменять значения и очень быстро поймете, что это не запоминания а именно обучение. Это обобщение будет работать даже при одном значении оно только не будет никогда меняться. При двух все пространство доступное значений примерно поделиться на два. При трех создаться три разных части и так далее. При десяти эти действия происходят в десятимерном пространстве. Опять же есть ошибочные данные которые со временем алгоритм должен забыть. Есть еще фактор неполных данных когда в части примеров отсутствуют параметры. Это тоже простым запоминанием не исправить, как то должна разрулиться ситуация что параметра нет и его пустые значения должны чем то заполниться. Есть коррекция допущенных в начале неточных данных. Любы данные верны не на 100% а со временем могут замеситься другими данными. Звучит вроде просто, но чтобы это реализовать у меня ушло пять лет. И самое главное изменение и самое сложное. Все поступающие данные не должны ломать уже полученные знания. Параметры предсказаний не должны уменьшаться а по возможности должны улучшаться. Вот это свойство сложнее всего сделать. Во всяком случае НС с этим не справляется да как и подавляющее большинство других алгоритмов. Здесь же как написал Ященко «Первые из них дают возможность образовывать смыслы, как объекты и связи между ними по мере построения самой сети, т.е. число объектов, как и связей между ними будет такое именно, какое нужно, будучи ограниченным лишь объемом памяти машины.» и я подписываюсь под его словами. Я вижу этом свойстве как оно работает каждый день.
А еще вас не смущает то, что для обучения требуется 31 эпоха на том же ирисе? Ведь для обычного «запоминания» вполне достаточно одного прохода по всем данным. Зачем потребовались остальные 30 эпох для обучения если на первой эпохе все эти данные уже запомнены? Никаких новых данных в обучающей выборке уже не появится. Может алгоритм как то эмулирует свою работу? Мимикрирует под нейронные сети или другие «взрослые» алгоритмы. Откуда берутся все эти данные кто их придумывает с плавным увеличением процента попадания если все уже запомнено после первой эпохи. http://биморф.рф/bmf:log/iris Это я так, выдумываю пытаюсь понять в чем бы я обвинил собеседника на вашем месте. Уж как то совсем бездарно и плоско если это так как я описал. Так что нет. Здесь что-то хитрее и далеко не «простое запоминание». А то, о чем вы написали делается за один вечер, только на следующий вечер это разоблачается легким движением. Что вы пока не смогли сделать. Не смогли разоблачить, но и я вас не смог убедить что это работает. Нужно больше времени и примеров работы чтобы доказать то или другое.
Меня пока что смущает только одно: не похоже, что ваш алгоритм будет приемлемо работать для большого количества сложных данных (больших картинок, звуков, текстов).
Вы, слава богу, добрались до тестирования на валидационном сете, это большой прогресс, но для валидационного сета из 178 элементов разница качества в 0.6% — это всего *одна ошибка* алгоритма. Несколько ошибок — штук 5 — может быть вполне объяснено случайностями во время обучения.
Нейросети же любят за то, что они лучше всего решают задачи на датасетах из сотен тысяч и миллионов записей, пусть и делая там тысячи ошибок, но зато обобщая информацию из всего миллиона записей.
Вы вышли из области применения DL, вы сейчас в области классического ML, и тут, я уверен, классические алгоритмы будут сравнимы с вашим алгоритмом по качеству, особенно если усреднить результаты хотя бы по нескольким датасетам.
Да, и по этому конкретному датасету wine: расскажите, сколько у вас записей было в train, сколько в val, и эти множества же не пересекались друг с другом, верно?

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

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

А термин «лес» — это термин из природоведения, но недостатки random forest-а на примере древообрабатывающей промышленности никто не показывает. Это, конечно, гипербола, но суть, надеюсь, ясна: биологические аналогии в приложении к современному DL могут нести максимум иллюстративную роль.

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

Я фразу «ряд фатальных недостатков» слышу от вас не в первый раз, а самого ряда почему-то не вижу.

Давайте так. Дайте реальную задачу (конкретный датасет, например), на котором нейросети плохо работают по заявленным вами причинам (сначала их неплохо бы внятно сформулировать, кстати), а потом реализуйте и продемонстрируйте на этой задаче ваш алгоритм хотя бы на уровне proof-of-concept. Тогда можно будет о чем-то говорить. А пока же статья ни о чем.
Давайте для примера такую. Ту которая у меня на серваке уже месяц стоит и расчитывается. Есть два хеша первый случайный (40 бит). Из него получаем хеш (40 бит) алгоритм SHA1 нужно предсказать первый бит из первого хеша из которого получен второй. Второй даем алгоритму в качестве исходных данных. Данные для обучения естественно первый бит первого хеша. Попробуйте решить эту задачу на нейронных сетях. Напишите какой обьем структуры сети вам может потребоваться для решения этой задачи? Берите с запасом это же благоприятно скажется на результате. Озвучте цифру. Это и есть пример потоковой задачи. Данные которой при нашей жизни могут больше не повториться ни разу. И данные обьем которых нам сложно даже вообразить. При этом алгоритм должен каждый раз обучаться а не ломаться и не уходить в максимумы. Чем больше мы скармливаем данных алгоритму, тем более точное предсказание он выдает.
Гм. Знаете, такие задачи, я подозреваю, никто, кроме вас, даже пытаться не станет решать с помощью НС… Вот вообще…
Но если вы придумали как это эффективно делать в парадигме НС — опишите это внятно с конкретным кодом, раз уж у вас это уже работает. Там уже будет видно, какое отношение ваше решение имеет к НС… Может статься, что почти никакого, но если оно эффективно решает (а под эффективно я имею в виду лучше стандартных криптоаналитических методовов) — почему нет? тоже интересно.
Если заметили, то я писал вообще не о НС они только котики на прмиерах фатальных недостатков которых можно обсудить что-то реально работающее. Мое решение действительно имеет мало общего с НС но для того чтобы показать пробелму каую то общую концепцию знакомую большей части аудитории нужно было озвучить. Ну так какого размера структуру сети должна иметь НС чтобы решить такую задачу? Или у вас все ломается если задачи выходят за пределы школьной программы?

Судя по всему даже озвучить решения не получится, уже слили. Это происходит не первый раз подозреваю что хабр окупировали те самые 95% серой массы. Буду рассказывать на семинарах, возле доски с фломастером как в старые добрые времена.
Мое решение действительно имеет мало общего с НС но для того чтобы показать пробелму каую то общую концепцию знакомую большей части аудитории нужно было озвучить.

Судя по описанию вашей задачи, я очень сомневаюсь, что и ваше решение работает.
Впрочем, если работает — прошу. Давайте датасет, давайте код вашего решения и код альтернативного решения на основе deep learning (наверное, оно у вас было, раз вы начали вообще сравнивать ваш гениальный алгоритм с нейросетями? Я вот не особо представляю, как оно могло выглядеть). И тогда будет, о чем говорить.

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

Machine learning algorithms build a mathematical model based on sample data, known as «training data», in order to make predictions or decisions without being explicitly programmed to perform the task.
Зачем вы вообще упоминаете нейросети и рассказываете глупости о каких-то недостатках, если датасета нет?

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

Вот об этой гиблой затее все это делать на НС я и говорил.

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

Как? На вашей задаче не работает?
Да что вы?

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

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

Смешнее другое — вы утверждаете, что ваш «двоичный алгоритм машинного обучения» с этой задачей справляется? Уж простите, но попахивает ошибкой в эксперименте (в том самом, код которого вы не хотите публиковать), потому что если вам удается по выходу хэша эффективно предсказывать биты входа хэша, вы, пожалуй, сделали прорыв в криптографии.
Наверно сложно такие задачи. Давайте попроще. Пусть предсказывает crc32 ну вроде обратимая, значительно легче. Такую задачку смоет решить нейросеть или тоже слишком сложная? Просто выше меня все убеждали что нет проблем и нет нерешаемых задач а тут выясняется что есть которые никто решать не хочет а проблемы на самом деле фишками называются и я их использовать не умею. Обойдемся без прорывов. Итак какой размер структуры мы возьмем для решения этой задачи? Три слоя нам хватит штук по сто? Или брать больше? Или не три?

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

А вот это я забыл упоминуть. Берем десять разных алгоритмов. Обучаем все. И потом просто выкидываем те, которые хуже. Если бы так матиматики к своей работе подходили то бы мы число pi сейчас на генераторах случайных числе вычисляли а потом брали просто который ближе. Нет проблем с расчетами числа пи, просто у тебя недостаточно быстрый генератор случайных чисел.
Пусть предсказывает crc32 ну вроде обратимая, значительно легче.

Пардон, а зачем вам решать детерминированную алгоритмическую задачу нейросетями? Вы вообще понимаете, какой критерий для задачи должен соблюдаться, чтобы она относилась к классу ML-задач?

Или мы говорим о решении вообще произвольных задач? Ну тогда нейросети плохи в разгрузке вагонов с углём. Какой ужас…

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

Просто выше меня все убеждали что нет проблем

Никто не писал, что у нейросетей нет проблем. У нейросетей есть проблемы. Вам пишут, что ничто из перечисленного в вашей статьей не относится к проблемам нейросетей, а работоспособность и качество вашего «альтернативного» алгоритма в статье никак не описываются и не демонстрируются.

нет нерешаемых задач

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

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

Выходите из пещеры в современный мир. У нас тут есть computer vision, NLP, speech recognition и много других областей, где нейросети держат state-of-the-art.

Хотите позиционировать ваш гениальный алгоритм как решение каких-либо недостатков нейросетей?
Возьмите любую реальную задачу из какого-нибудь из этих доменов и решите её с помощью вашей модели. Побьёте топовые результаты — честь вам и хвала.
Именно этим и собираюсь заняться.
Этим стоило заняться до написания статьи. Тогда бы и статью писать не пришлось.
Уже часть датасетов с кагла расчитались. Пока не на 100% процентов только на 70 но достижение 100% это просто вопрос времени. биморф.рф/bmf/concrete пока задача расчитывается можно и пописать.
Просто выше меня все убеждали что нет проблем и нет нерешаемых задач а тут выясняется что есть которые никто решать не хочет

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


Напишите какой обьем структуры сети вам может потребоваться для решения этой задачи?

Я вам могу сразу заявить — порядка 2^40, чтоб "запомнить" все входные хеши.


Данные которой при нашей жизни могут больше не повториться ни разу. И данные обьем которых нам сложно даже вообразить.

2^40 — это не так уж и много.

Ну хоть что-то а то думал из стадии «отрицания» не получится выйти. В сети можно найти информацию о самой большоей неронной сети 1.12^10 www.dailytechinfo.org/infotech/7173-sozdana-samaya-bolshaya-neyronnaya-set-prednaznachennaya-dlya-realizacii-tehnologiy-iskusstvennogo-intellekta.html это значительно меньше 2^40 так что пока это очень большая сеть как и количество которое на наш век хватит не повторяться. Но проблема тут не в том, что она большая. Проблема в том, что ее никто не контролирует. Часть ее либо не используется что довольно части, либо не хватает и из за этого обучение останавливается что тоже часто.

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


Это я к тому, что никто в сознательном состоянии не станет решать задачу предсказания битов хешей, да еще и с помощью НС! Ваша задача решается просто созданием словаря всех 2^40 входов в хеш-функцию. И не надо никакой НС. Не надо пихать сети, где они не нужны.


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

11.2 миллиарда это не 1.12^10.
Это не 1.12^10 Естественно это 1.12*10^10
Разумеется, вы должны прочитать внимательно статью по своей ссылке и увидеть, что 11.2 млрд — это предыдущий рекорд, а текущий — 160 млрд.
И если учесть, что статья 2015 года, сомневаюсь, что он актуален.

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

А если отвечать серьезно, то:
1. Вам уже ответили, что вы не понимаете разницы между обобщением и запоминанием и, соответственно, неправильно выбираете методы.
2. Вы почему-то меряете размеры сетей «нейронами» (впрочем, не почему-то, а потому что вы всё ещё придерживаетесь бесполезной биологической аналогии), тогда как все сейчас меряют размеры моделей числом параметров.
Если поискать повнимательнее и 160 млрд. это не все к чему можно придраться. Можно к ненадежности источника придраться или к другим опечаткам. И с параметрами не совсем понял. Представьте что у вас не нейронная сеть с очень узкой задачей а ну пусть будет реальный мозг мухи. В каких параметрах вы ее измериете? При оценке сети в параметрах можно говорить об очень узкой задаче сети, скорее в контексте задачи для которой ее сделали. Но как только вы с сети получаете не фиксированное количество параметров сама оценка в параметрах становится бесполезной. Опять сейчас навалятся что я не понимаю как работает НС. Ну да ладно. Нейрон это условно. То, в чем можно изменить и НС и ненейронную сеть и человеческий мозг. Ведь есть у человеческого мозга примерное количество нейронов. А вот количество параметров в человеческом мозге не измерить потому что нет такого свойства у реальной сети.
Представьте что у вас не нейронная сеть с очень узкой задачей а ну пусть будет реальный мозг мухи.

Да остановитесь уже, биологическая аналогия не работает в современном deep learning. Сколько раз нужно повторять, чтобы вы услышали?

В каких параметрах вы ее измериете?

Размеры нейросетей меряют в количестве обучаемых весов обычно.

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

Осознание проблемы — первый шаг к её решению.

А вот количество параметров в человеческом мозге не измерить потому что нет такого свойства у реальной сети.

Хорошо, что человеческий мозг — не алгоритм машинного обучения, а искусственные нейросети — не модели человеческого мозга.
Да остановитесь уже, биологическая аналогия не работает в современном deep learning.

Так и я об этом. НС это игрушка к которой многие аналогии реального мира не подходят. А мы живем в реальном мире и задачи у нас реальные. И задача не приблизить реальный мир к НС а НС заставить быль ближе к окружающему миру. Смотрите лучше на реальные сети а не на «ужимки» нейронной сети за рамки которых не можете выйти. Вы похожи на льва в клетке которому открыли дверь в реальный мир а у него сердечный приступ и паника в глазах «как это?». Сломайте систему попробуйте мыслить чуть больше чем вам позволяют нейронные сети. Мы же не о них сейчас хотя пытаемся найти точки соприкосновения на каких то общепринятых понятиях. Как то нужно обьяснить зверю сидевшему всю жизнь в клетке что такое саванна используя понятия стальные пруты, замок, квадратный кусок неба и трехразовое питание.
Размеры нейросетей меряют в количестве обучаемых весов обычно.
Я вас спрашивал не о НС а о мозге мухи. Пример показывает что попытки измерить сеть не обязательно нейронную в параметрах абсурдна. Опять сейчас скажу непонятную для вашего зашоренного мозга вещь — параметры могут добавляться и уходить прямо во время обучения. То, что я сравниваю постоянно с НС именно так и работает.
Осознание проблемы — первый шаг к её решению.
Именно. Осознайте саму проблемы и сможем обсудить пути ее решения. А то стопятьсот отписавшихся до вас говорят что у НС нет проблемы. Просто мы с ними не умеем работать. Но что не возьми выясняется что никто даже не берется решать указанные задачи с помощью НС. Парадокс правда ведь?
Хорошо, что человеческий мозг — не алгоритм машинного обучения
Человеческий мозг это то, к чему нам нужно стремиться. Обсуждать его свойства и думать как их реализовать в некоем подобии НС. Как было уже сказано не раз НС не позволяет пока даже приблизиться к мозгу мухи не говоря уже о человеческом.
Так и я об этом. НС это игрушка к которой многие аналогии реального мира не подходят.

Астанавитесь. Если к алгоритму не подходят аналогии реального мира, это не значит, что алгоритм плохой.

А мы живем в реальном мире и задачи у нас реальные. И задача не приблизить реальный мир к НС а НС заставить быль ближе к окружающему миру. Смотрите лучше на реальные сети а не на «ужимки» нейронной сети за рамки которых не можете выйти.

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

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

Нет, пример показывает, что в чьем-то мозгу не хватает нейронов, чтобы осознать, что у нейросети, которая модель машинного обучения, и нейросети, которая у вас в голове, общее только название. Не надо сравнивать ANN с мозгом, черт возьми.

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

Я не против того, что в вашем алгоритме концепция такая. Я лишь указываю вам на то, что в нейросетях (и когда я пишу «нейросеть», я имею в виду модель глубокого обучения) всё устроено именно так, как я написал.

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

Такой же «парадокс», как и то, что никто не берется решать задачу строительства дома с помощью морфологии китайского языка. Надеюсь, фантасмагоричность аллегории до вас дойдет.

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

Это полнейшее заблуждение, которое основано только на «интуитивности», разумеется.
crc32 обратима?.. новое слово в хэш-функциях, однако. Может быть вы ещё скажете, какие 3 числа я сложил, чтобы получилось 100?
Числа 25+25+50 являются правильным ответом. Это может быть не единственный ответ, но отвечающий всем требованиям. Вопрос то не дать все результаты а получить один правильный. Мы ищем любую из них которая даст нам требуемый результат. Мы не о математике говорим с ее строгими требованиями обратимости а о сходимости функции НС. Хотя строго говоря и в шифровании та же задача. Задача получить ключ подходящий к хешу а не «точно такой же ключ который у был у автора хеша» какой при этом исходный ключ из множества возможных подходящих к хешу уже не особо важно. Поэтому да нестрого говоря crc32 «обратима» как и sha1 тоже «обратима» есть последовательность бит которая будет удовлетворять требованиям функции вопрос только как ее найти. Найти способ не расставить веса на фиксированный размер сети а чтобы сеть могла себя в нужный момент модифицировать и расширить увелича свою обучающую способность. Это свойство сети даст постоянный пусть рост вероятности. Обратите внимание как сеть идет к 100% постоянно но неуклонно увеличива свои показатели. А ведь начала с нуля Лог обучения. Сети потребовалось добавить около 8800 правил чтобы этого добится. Устроит даже неполное попадание скажем в 99.99%. Додумать оставшиеся «непопавшие» биты это вполне решаемая прикладная задача.
Есть скрипт который каждый раз генерирует новые данные. Данные никогда не повторяются. Вот об этой гиблой затее все это делать на НС я и говорил.
Так это все знают, и никто не делает это на НС.

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

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

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

Всё.

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

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

Ещё раз. Вы упомянули задачу инвертирования необратимого хэша. Её невозможно решить обобщением, её возможно решить только запоминанием.
Повторяю: н-е-в-о-з-м-о-ж-н-о. Прием, как слышно?

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

Можно было бы сразу в заголовке написать «НС говно» но это была бы откровенная провокация а мы тут не рубиться все собрались а озвучивать проблемы и находить их решения.

Ваша статья — и есть убогая провокация.
Прежде, чем писать, что «алгоритм А отстой, у меня есть новый крутой алгоритм Б», надо хотя бы изучить state-of-the-art в той области, которую вы собрались переворачивать.
Вы говорите о детерминированной задаче

Давайте немного поменяем условия. Задача описанная мной ранее содержит 40 бит. Пусть это будет рекомендательная ситуация по результатам просмотра 40 видео. Обратите внимание обьем данных остался тем же. Задача тоже теоретически детерминированная каждый новый пользователь будет смотреть разные видео в разном порядке. Обьем данных не меньше, и сеть должна содержать ту же «обучающую способность» он же размер сети что и предыдущая задача. Чем решение этой достаточно простой задачи отличается от предсказания одного бита на основании 40 бит почти «близких к случайным» данных. Можно ли сказать что задача с видео такая же нерешаемая для НС как и предсказание хеша в алгоритме шифрования? Почему все тогда выстаиваются в очередь чтобы решить такие задачи и никто не берется за хеши?
Поучите азы, а потом пишите что-то.

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

Я скорее «безбулочный порубленоколбасный капустоед» ссылка на видео выше^
Прежде, чем писать, что «алгоритм А отстой, у меня есть новый крутой алгоритм Б», надо хотя бы изучить state-of-the-art в той области, которую вы собрались переворачивать.
Как только захочется есть колбаски я должен прочитать еще раз библию. И так до тех пор пока не пойму все величие в написанного в библии. Вы еще не веруете написанному в книжках? Тогда мы идем к вам. Любое сомнение — ересь читайте еще раз. Ну ну.
Ладно, это действительно что-то клиническое. Я не готов продолжать дальше.
Вы упомянули задачу инвертирования необратимого хэша. Её невозможно решить обобщением, её возможно решить только запоминанием

Еще раз спрошу на каком оснвоании вы утверждаете что задачу невозможно решить? Кто вам об этом сказал? Может вы исследования проводили, пробовали уже решать подобные задачи? Или вы это в книжке прочитали? По вашему я должен вам поверить на слово, ведь аргументов подтверждающих ваши слова вы не приводите. А я программист я во всем сомневаюсь. Раньше помню в книжках писали что земля плоская и что ничто тяжелее воздуха не может летать а при езде в поезде люди будут задыхаться от нехватки воздуха. А ведь писали специалисты своего дела. Где сейчас эти аффторы? Опять же не обязательно полное решение. Для успеха самой затеи достаточно вероятность правильного предсказания увеличить на 10% и это уже будет успех. Мы сейчас обсуждаем не процент попадание а возможность применения алгоритма к подобным задачам.
Давайте я сформулирую просто и понятно:
Вы усовершенствовали НС и теперь они умеют хорошо запоминать. Между тем именно с этим борются в нейросетях (гуглить «зачем нужна регуляризация в нейросетях»), по той причине, что генерализация — разница между качеством на запомненных и новых данных — при этом ухудшается. То есть, чем лучше такая сеть запоминает данные при тренировке, тем хуже она работает потом на новых данных.
В результате, в качестве нейросети, вы получили хреновый результат.
Но при этом вашу поделку можно применить к каким-то другим задачам, чтобы их неплохо решить.
Кроме того, ваш алгоритм тоже не универсален («нет серебряной пули» в мире машинного обучения — есть даже такая теорема с доказательством), то есть, для большого количества задач, найдутся более хорошие алгоритмы, чем ваш.
То есть, вы решили ваши задачи неплохо, но есть специализированные, ещё более хорошие алгоритмы, (примеры приводили), и есть другие области, где ваш алгоритм работает очень плохо — как раз там, где и используются «классические» нейросети.
Ваше открытие уже 100500 раз переоткрывали, но вы в этом месяце в области нейросетей первый, который как идиот с пеной у рта утверждает, что он такой уникальный и изобрёл что-то новое, что работает лучше всех, и отказывается признаться, что он 5 лет страдал какой-то хернёй под воздействием мотивирующих видео для подростков про собственную уникальность.
При этом за неделю (или две недели уже прошло?) ни одного примера, демонстрирующего генерализацию вашего решения, никто не увидел. Увидели только запоминание с помощью дополнительных нейронов, которое вы выдаёте за «обучение нейросети».
Про то, как у вас работает backpropagation, вы молчите. (А там есть несколько принципиально разных вариантов реализации). Например, в биологии, у мозга человека и мухи явного backpropagation нету, но есть циклы и какие-то обратные связи, видимо, на уровне групп нейронов, нейронов и биологических элементов вокруг нейрона (в устройстве мозга, как я понимаю, вы тоже не разбираетесь, поэтому подробнее обсуждать не будем). Между тем именно backpropagation помогает современным глубоким нейросетям учиться быстрее и немного лучше человеческого мозга.
Именно поэтому ваша мысль, что ваша модель круче из-за того, что она «биологичнее» — бред дилетанта. Чем ваша модель круче, тем она, наоборот, будет дальше от человеческого мозга. Задача мозга человека — максимизация вычислительной мощности на ватт мощности. А в компьютере вы железки не делаете из органики, не настраиваете эволюцией и не перестраиваете в процессе работы, и наиболее эффективное решение может быть совсем не таким, как в природе.
Но дело даже не только в этом.
У вас отличный алгоритм, но он явно не обладает теми свойствами, который вы ему приписываете.
Он медленный для практических задач, с этим вы слава богу не спорите, и плохо генерализуется — а вот тут вы нас пытаетесь обмануть, потому что одно из двух:
1) или он генерализуется и там классический backpropagation: вы просто наращиваете нейроны в обычной НС, но тогда он не будет работать лучше известных специально подобранных под задачу нейросетей, и также тогда он плохо решает crc32,
2) или он не генерализуется: хорошо запоминает хеши, но плохо решает другие задачи, требующие хорошей генерализации (распознавание и классификация картинок, речи, текста)
А любое комбинированное решение, увы, работает хуже двух отдельных.
Поэтому ваш алгоритм на практике и не используют (а вовсе не потому, что никто о нём не знает):
— Перебирают архитектуру классических нейросетей более быстрыми методами, а не добавлением нейронов. А вместо того, чтобы нейроны добавлять по одному, сразу в нейросеть добавляют нейронов с запасом (Разреженные слои нейронов считаются на типичном железе раз в 10 медленнее, чем плотные матрицы!)
— Для задач, где не требуется хорошая генерализация, тоже используют в тысячи раз более быстрые решения (от хеширования до градиентного бустинга).

Сомневайтесь сколько угодно в нейросетях, в науке, в советских книжках и в мире вообще.
Просто не пытайтесь нас обмануть (именно за это вам карму и слили): на бенчмарках было бы сразу видно, что слова у вас расходятся с делом.
И удачи в своих исследованиях.
разница между качеством на запомненных и новых данных — при этом ухудшается
Не допускаете что это свойство только НС? Почему у людей «запоминание» не приводит к ухудшению уровня анализа. Опять же я вам не расскажу сейчас backpropagation мозга человека, но знаю результаты его работы. О результатах мы можем рассуждать мы сталкиваемся с ними все и постоянно.
то есть, для большого количества задач, найдутся более хорошие алгоритмы, чем ваш.
С этим сто процентов согласен. Если для достижения результата достаточно пару арифметических действий то не стоит усложнять. Но если вам не известен обьем данных и нужно постоянное улучшение так чтобы результат постоянно улучшался то вам простым сложением и делением не обойтись. Для решения первых достаточно привлечь студента и он вам подставит нужные действия в формулу. Для получения самообучающегося алгоритма не зажатого в обьем пары сотни примеров уже и нейронных сетей недостаточно.
не генерализуется: хорошо запоминает хеши, но плохо решает другие задачи, требующие хорошей генерализации (распознавание и классификация картинок, речи, текста)
Опять же тут верно. Действительно картинки получается медленно просчитывать но по другой причине. В алгоритм встроен аналог датамайнинга для получение наиболее оптимальной «новой связи» и 99% уходит не на расчет сети а на насчет наиболее подходящей связи. Это тоже вполне себе решаемая задача но пока не до ее оптимизации. Сейчас весь алгоритм это исполняемый файл в 2.5МБ если сравнивать с самолетом то его уровень это похоже на первый плайнер братьев Райд массу проблем нужно решить и переписать чтобы он превратился в Боинг. Но речь не о готовом продукте а о решении проблемы более оптимальным способом. Возможно еще несколько лет алгоритм не будет пригоден для практического использования нужно создать для него рынок это совершенно другой продукт. Все равно что людям всю жизнь пользующихся кнопочным телефоном предложить водить пальцем по экрану.
Перебирают архитектуру классических нейросетей более быстрыми методами, а не добавлением нейронов.
Ну обучать новые модели со слегка измененными атрибутами а потом выкидывать все которые были чуть хуже конкурентов так себе прирост в скорости.
И удачи в своих исследованиях.
Спасибо.
>Не допускаете что это свойство только НС? Почему у людей «запоминание» не приводит к ухудшению уровня анализа.

Приводит. Как один из ярких примеров: японцы привыкают не различать «р» и «л», и потом не могут их различить в английском языке и тем более воспроизвести сами. Привыкают считать цыганов/негров/ярко накрашенных/пахнущих алкоголем/кого-то ещё плохими людьми, и не сразу признают хорошего человека такой внешности. А двигательные навыки потом вообще очень тяжело переучить.
Но в общем такого гораздо меньше, потому человек обычно не тренируется на классификацию, он тренируется на детекцию полезных признаков и аномалий одновременно, а потом сознанием уже ищет правильную аналогию в случае неуверенной классификации.
Да и вообще, будь у вас в 10^4-10^6 раз больше мощности железа, как у человека, у вас бы наверняка не стояла проблема сложности обучения без забывания — просто ёмкости бы хватало одновременно на генерализацию и на запоминание в большинстве задач.
Посмотрите на прогресс в GLUE/SuperGLUE: чем больше нейросеть для текста + чем дольше она учится на большом количестве данных + правильным способом (важны все три компонента!), тем она показывает лучший результат. Аналогично в играх. Но решение получается уже не массовым: на видюшке такую сеть уже не обучить.

>Ну обучать новые модели со слегка измененными атрибутами а потом выкидывать все которые были чуть хуже конкурентов так себе прирост в скорости.
Согласен. Но если полученные сети вместо этого сохранять — получается кратное замедление скорости полученной сети. Так что это обычно не вариант на практике, вот и приходится оставлять одну лучшую сеть или, на крайний случай, несколько лучших.
Распознавание фото до сих пор не могут на телефон засунуть со скоростью 60 fps, приходится жертвовать качеством. Последние модели для текста приходится резать по качеству. Со звуком тоже та же фигня (там распознавание на устройство кое-как влезает, а вот качественное преобразование в текст так же не влезает, его всё ещё приходится выносить в облако).
Так что если вы за счёт своей модификации бустинга улучшите на 0.1%-0.5% качество блендинга ценой n-кратного снижения скорости работы модели… никому это не будет нужно на практике. И за разумное время сложную сеть (>10 млн параметров) вы не подберёте таким способом.
Придумывают всякие MNAS и другие виды Network Architecture Search (посмотрите, как там обошли полное переучивание сети, кстати). Но успеха пока мало: отсилы получают +1% на задаче, затрачивая тысячи и миллионы времён обучения одной сети.
Да и вообще, будь у вас в 10^4-10^6 раз больше мощности железа, как у человека, у вас бы наверняка не стояла проблема сложности обучения без забывания — просто ёмкости бы хватало
У НС есть особенность о которой я выше написал. Для получения сигнала требуется расчет каждой связи. Каждая связь делает может стремящийся к нулю но вклад в итоговый результат, и нельзя пропустить ни одного нейрона потому что он может быть той бабочкой которая изменит весь результат.

В двоичной структуре все по другому. Есть сиутации в которых мы можем сказать что «огромная» часть сети вообще никак не влияет. Вот этот эффект a&(b|c&d) Есть у вас в формуле a отрицательна то вам можно все остальное вообще не вычислять. Вся правая часть (b|c&d) не влияет на результат результат в любом случае будет false Если a == false и это очень сильно используется в расчетах и обучении сейчас есть цифры по расчетам Для расчета достаточно 3.2% (32 нейрона) при сети в тысячу нейронов, 0.1% (1 тыс) при миллионе «нейронов» в сети и 0.003% (32 тыс) при миллиарде. А обучение происходит еще быстрее потому что расчет уже произошел и часть результатов известна. Формула количества нейровнов влияющих на расчет это «два в степени логарифма двух от количества нейронов деленое на два» но это не точно. Одно это дает огромный плюс такой схеме. Не нужно «вагон железа» для того чтобы создать миллиард нейронов. Представьте если бы для расчета НС в сто слоев по 1000 нейронов требовалось всего сто нейронов. Может не так шустро но сеть в миллиард «нейронов» будет работать даже не домашнем компьютере. Разница в расчетах в этих алгоритмах все равно что сравнивать «классическое железо» и «квантовый компьютер» возможно есть задачи которые на квантовом компьютере не пойдут но я пока не вижу таких задач которые однозначно не подходят для нового алгоритма.
Вы ошибаетесь с оценкой. Потенциально каждый нейрон в слое тоже работает бинарно, то есть слой из 300 нейронов умеет пронумеровать каждый атом во вселенной. Но на практике важна разделимость этого пространства (а она может взяться только из данных), и, значит, важно её натренировать за линейное от количества данных время (скажем, 50 проходов по данным на максимальной скорости). А у вас скорость квадратичная от количества данных (чем больше ваших нейронов — тем ниже скорость), и миллион картинок ваш алгоритм за разумное время не посчитает, да и информации из единицы данных, например, картинки, вытаскивается не так много. В принципе, иерархия из вами изобретённых слоёв работала бы намного лучше, но была бы ещё медленнее. В общем, всё как у градиентного бустинга над решающими деревьями — они хорошо решают простые задачи, но сложные задачи ими хорошо не решить (на современном железе).
Про то, как у вас работает backpropagation, вы молчите.
Я встряну, ладно? В нейроподобных растущих сетях, к которым, — как автор согласился со мной, — относится его алгоритм, нет ни backpropagation ни вообще ничего от классических НС. Это и не сеть вовсе, от слова «совсем». Это, скорее, растущее дерево, механизм памяти. Я давал ссылки на такой тип «алгоритма». Он вряд ли подходит для распознавания кошек или кластеризации, потому что, скорее всего, просто запоминает, сжимая как архиватор.
В нейроподобных растущих сетях, к которым, — как автор согласился со мной, — относится его алгоритм, нет ни backpropagation ни вообще ничего от классических НС.
Действительно в алгоритме мело что осталось от классических НС, просто очень много нужно изменить чтобы обеспечить работу такой сети. Если речь идет об «обратном распространении» то оно есть. Расчеты в подобных структурах проходят в обе стороны и на их основе принимаются решения о создании «новых связей». По поводу сжимает как архиватор вы не правы. Именно обучение хотя как я понял мало кто из собеседников готов ответить чем обучение отличается от запоминания, от этого и путаница в определениях. На странице машинного обучения в википедии я нашел такое определение алгорима
алгоритм, способный для любого возможного входного объекта выдать достаточно точный классифицирующий ответ.
алгоритм всегда дает точный классифицирующий ответ. Убедится можете на форме того же Ириса Фишера никаких дополнительных вычислений кроме прогнозов алгоритма не производится данные не корректируются и не ищутся ближайшие соседи. На любые данные в установленных диапазонах алгоритм выдаст «классифицирующий ответ» так что это именно обучение а не запоминание. И заметьте на весь диапазон а не только данные указанные в обучении это свойство «обобщением» вроде называется оно тоже есть тут.
А обучение и не отличается от запоминания, их можно отличить лишь по тому, что выучивается в результате. Когда мы говорим, что ваша сеть «запоминает», мы имеем в виду именно плохую генерализацию, но хорошее качество запоминания тренировочного множества.
Отличается тем, что запоминание дает возможность выдавать значение только совпадающие значения с обучающей выборкой а обучение позволяет алгоритму прогнозировать любые значения в пределах диапазона обучения.
А обучение и не отличается от запоминания
Если алгоритм «запомнил» значения {1:0, 7:0, 18:1, 42:1} то ничего не будет знать если ему подать в качестве входящих данных неизвестное число из обучающей выборки а если алгоритм «выучил» то вы получите и 3 и 8 и 12 любое другое число главное, чтобы входящие данные не выходили из диапазона от 1 до 64. Именно это свойство и отличает обучение от запоминания.
В процессе запоминания ничего не происходит с анализом данных. Обучение сопровождается расчетом зависимостей между данными и построение модели позволяющей генерировать прогноз даже на неуказанные в обучающей выборке значения.

Более того вы после одного обучения {1:0} уже получите прогнозы, только они будут очень простыми скорее всего всегда равны одному человеку. Алгоритм построит минимальную модель котоаря всегда будет прогнозировать один прогноз из единственного обучающего значения. По мере обучения новым примерам эта модель будет усложняться и подстраиваться под вновь поступающие данные.
Ещё раз: «обучение» и «запоминание» — это качественные понятия, а не математически строгие. Если хотите более точные значния, то главные понятия, которые можно сформулировать точно — «режим обучения нейросети» и «нейросеть запомнила». Второе, как вы понимаете, не исключает анализа, ведь она может одновременно и проанализировать, и запомнить. Поэтому ваша дихотомия ложная, эти понятия не противопоставляются друг другу.
Есть тест который я у себя в моделях использую он позволит четко провести разницу запоминает алгоритм или учится. Берем выходые данные пусть будет 40 бит хотя это не сильно важно главное чтобы значительно больше чем в формуле чтобы они не позволяли легко найти зависимости и исключили запоминания так как в 40 битах вариантов больше, чем любая модель может запомнить. И генерируем случайные данные. В них придумываем формулу генерации обучения к примеру (21бит|15бит|(7бит&8бит)) это условие (двадцать первый бит или пятнадцатый бит или седьмой восьмой вместе).

0100110010 0010100110 001001001110 01100010 => 1 (15 бит)
1001010010 0100001001 001010010011 01100010 => 0
0010111101 0110000010 011010001010 01100010 => 1 (7 и 8 бит)

В формулу можно добавить любое количество бит взять любые из 40 и сгенерировать скриптом обучающую выборку. Самой формулы в выборке не будет и ее можно будет найти только анализируя данные. Сама выборка должна быть огромной ну скажем десятки тысяч. В списке 40 бит найти эту формулу будет для человека сложно достижимо а для алгоритма запредельно сложно. Правильный алгоритм находит подобные зависимости очень быстро и после пары десятков обучений будет выдавать правильные ответы уже не ошибаясь. Именно нахождение подобных логических структур и стояло требованиях к созданию алгоритма и он их очень хорошо находит. Никаким запоминанием и тем более линейной регрессией это не вычислить данные будут очень равномерно распределяться по всем данным. Человек просматривая данные глазами будет искать эту закономерность очень долго отвлекаясь на анализ большого количества случайных данных. Проверить может ли алгоритм правильно предсказываеть неизвестные ему данные можно подавая последовательности которых нет в выборке. Обучившийся алгоритм в том числе и на них должен давать правильные результаты. Вот алгоритм который будет выявлять подобные зависимости в данных действительно обучается а не запоминает, потому что запомнить 2^40 оОочЕнь сложно.
Опять бла-бла-бла. Подаёте нейросети или алгоритму ML на вход цифры побитно, он делает то же самое, что и ваш. Про Local Sensitive Hash не читали? А ведь штука известная.
Нет оценки вашего алгоритма на валидации — нет информации о качестве работы вашего алгоритма.
Тут всё просто. А бла-бла-бла мы уже наслушались.
Ну, вот я разработал не то, что бы много, но вот эту библиотеку, нопремер, из опубликованного. И позвольте вам заметить, что благородные доны в коментах выше правы. Данная статья — ахинея чуть более, чем полностью, увы.
А знаете что обидно? Ведь мы обсуждали реально работающий алгоритм. Получается благородные доны как вы выразились уже не способны отличить работающую идею от ахинеи? Я занимаюсь этим алгоритмом уже пять лет и последние пол года он благополучно работает показывая неплохие результаты. То, что написано выше, каждый пункт это реально работающая идея. Цифры выше именно оттуда. Жаль, а могли бы обсудить работающие идеи а не ахинею которой кормят %ХабраЮзеров% благородные доны.
Новый алгоритм обсудить завсегда интересно, вот только мне не удалось увидеть никакого описания алгоритма в статье, ни нового, ни старого. Вообще никакого. Видел только набор деклараций, и набор необоснованных, а то и в корне неверных утверждений, показывающий только, что автор крайне скверно знаком с темой НС. В этой статье можно брать практически каждое предложение и разбирать где там правда, а где ошибка… По сути же обсуждать нет вообще ничего.

Опишите нормально алгоритм человеческим языком без пассов руками и вот этих вот «вжух! и всё стало гораздо лучше!», дайте пример реализации, раз он у вас уже работает, примеры использования, тогда и будет более содержательная беседа…

Хотите просто поговорить о недостатках обычных НС и как их исправить? Отлично, это тоже интересно. Но напишите о них хотя бы без фактических ошибок, которые адски режут глаза любому, кто хоть немного в тему погружался.
А вы думали я вам исходные коды сразу предоставлю? Мне интересна сама идея. Если люди не способны увидеть в ней смысл то и выкладывание исходных кодов ничего вам не даст. Сейчас народ такой, что ему вылизанный текст подавай. Есть такое можно кинуть камень в мою сторону что я недостаточно маркетинговый текст написал, но я писал как понимаю а не как пипл хавает. Мы тут не в магазине на витрины смотреть я ожидал увидеть инженеров, которым интересно что внутри а не упаковка.
Мда…
Этот сломался, несите следующего.
Так что, неужели никто не предложит решение для задачи выше? Вроде было столько людей понимающих в НС и утверждающих что они никогда не ломаются а тут даже размера структуры и количества слоев нужного для решения задачи сказать не могут.
Нормального решения для этой задачи не может быть.
Конечно, если вы будете проверять качество на валидационной выборке и возьмёте функцию побольше.
Криптостойкость алгоритма как раз и говорит о том, что невозможно найти такие правила, по которым можно инвертировать алгоритм за небольшое время, т.к. в процессе инвертирования у вас будет квинтилион промежуточных решений. Если бы было компактное подмножество промежуточных решений, то существовало бы разложение. Такие разложения нашли для md5 и некоторых других алгоритмов, уменьшив их сложность существенно, но всё равно, сложность осталась больше 2^40.
А то, что вы делаете с нейросетью — вы, видимо, считаете радужные таблицы для вашей функции (rainbow tables).
Этот способ работает при условии наличия памяти, а значит, проще его реализовывать наиболее эффективным по памяти алгоритмом, а это не нейросети.
И этот способ, увы, не позволяет решать другие задачи, в которых, наоборот, нужно находить эффективные правила для данных, которые (правила) пригодятся на валидационной подвыборке.
Я ждал, пока вы сами это сообразите… или пока комментаторы вам об этом скажут… но им похоже на очередной ненаучный вечный двигатель не хочется тратить много времени, они просто видят у вас те же самые проблемы, что и у остальных изобретателей: отсутствие воспроизводимости решения, отсутствие сравнимости с конкурентами, очевидные ошибки в экспериментах.
Мне начиная с того, что на любом примере предлагается дообучаться, и того, что размер сети у ТС никак не ограничен, стало примерно понятно, что оно просто переобучается, запоминая все примеры… по пути оно может ещё что-то такое решать из необучающей выборки, но точность будет не выше, чем у обычных НС.
Ну, вот мы дружно и ждём, когда ТС это осознает :)
То, что написано выше, каждый пункт это реально работающая идея. Цифры выше именно оттуда. Жаль, а могли бы обсудить работающие идеи а не ахинею которой кормят %ХабраЮзеров% благородные доны.


В общем, алгоритм следующий:
1. Берём датасет
2. ???
3. PROFIT

Господа, давайте обсудим работоспособность моего великолепного алгоритма на примере задачи взлома Пентагона в сравнении с нейросетями?
Ну по планам была серия таких статей в каждой описание конкретного решения. Первый должен быть общим описанием. Но судя по слитой карме напсать я долго ничего не смогу, да и както желания нет. Я так понимаю реально обсуждать тут ни у кого желания нет. Всем только повыяснять что правильно «затухание сигнала» или «затухание градиента» ну так себе удовольствие выяснять это. Да и сами нейронные сети никогда не ломаются на школьных задачках. Что тут вообще обсуждать можно? А приведенные задачи могут прийти только мне никому больше в голову решать что-то подобное нет необходимости. Кому это может потребоваться вообще?
Забыли сказать, что Пентагон взломан на 53% и вы продолжаете. А ещё сделать говносайтец, где отображается график взлома Пентагона в реальном времени. И Кнопка «Перевзломать».
> Если позволить сети самостоятельно расти, то она и дорастет до размера, когда количества весов будет достаточно, чтоб просто «запомнить» все обучающие примеры.

Кстати, абстрагируясь от исходной темы, благодаря которой «мы все тут сегодня собрались», именно превышение количества параметров НС над величиной обучающей выборки (aka сверхпараметризованные решения) оказывает (иногда) очень благотворное влияние на качество модели. См. arXiv:1812.11118 “Reconciling modern machine learning practice and the bias-variance trade-off” Mikhail Belkin et.al
Все еще осталось желание проверить? Я добавил форма для добавления файла данных. После вручную запущенного расчета будет возможность подставлять входящие данные. Вот к примеру как выглядит обученная сеть Ирисы Фишера дала (100%) верных тестов на третьей минуте обучения

биморф.рф/bmf/f20b315ba9b683a8891e8a1137c9f53c

У кого есть желание свои данные добавить я готов поставить на расчет. Это можно сделать с главной страницы биморф.рф введя любое ключевое слово в форму поиска сети и уже в сети добавив обучающую выборку.
Для простых данных нейросети обычно не используют, но используют градиентные бустинги. Попробуйте победить ещё и их, к тому же, у меня такое предположение, что вы изобрели свой метод делать то же самое (и вряд ли лучше, но надо сравнивать).
При этом, мне кажется, вы ещё не умеете сравнивать точность методов на десятке разных задач (как насчёт валидационной подвыборки? точность 100% на тренировочном датасете ни о чём не говорит, подобные алгоритмы ценят за их возможность работать на тех данных, что сеть ещё не видела), и оперируете исключительно оценками на пальцах, поэтому берёте лишь удобные для себя примеры (Как насчёт MNIST и CIFAR10 для начала? Или какого-нибудь Sentiment Analysis on IMDB, если вы умеете работать с текстами, или может возьмёте новостной корпус, что я использовал здесь: github.com/buriy/nlp_workshop. А для табличных задач тоже есть много корпусов посложнее на Kaggle, начиная с тренировочного титаника )
Думаю, мы сможем подождать ещё годик-два до момента, когда вы сможете нормально оформить свою работу и потом уже начинать писать более серьёзные статьи на Хабр.
Вот еще одна задача с кагла www.kaggle.com/manvendramall/concrete/kernels
В параметрах два цифры до запятой, и две цифры после запятой. 60% полное совпадение. Обучается уже около месяца на 16 ядрах биморф.рф/bmf/concrete и все еще продолжает расчитываться. В сети уже 749905 нейронов (ну или чего-то отдаленно на них похожих). Хочу до 100% совпадений расчитать. Думаю, что через годик-два ни желания ни времени что-то писать не будет.

Месяц? Вы же понимаете, что это не нормально?
Плюс идея взять рандомный датасет, конечно, очень в вашем духе, но с чем вы собрались сравнивать? Это же не конкурс, к которому есть лидерборд, а просто залитый кем-то из участников набор данных. Я даже не представляю, как вы на него вышли.
Что вы собираетесь показать? 100% точности на ирисах — это, конечно, было смешно, но давайте серьезно. Вон, там сейчас идёт DS Bowl, например. Может, на нем продемонстрируете крутость своего подхода?
Говорю без сарказма: если он позволит зайти хотя бы в зону медалей, это будет лучший пиар, который возможен.

Этот датасет есть не только на кагле. И изначально я его нашел на другом сайте archive.ics.uci.edu/ml/datasets.php и только потом увидел его на кагле.

Прочитал условия учатия, там есть пункт относительно лицензии на код.

Open Source: You hereby license and will license your winning Submission and the source code used to generate the Submission under an Open Source Initiative-approved license (see www.opensource.org) that in no event limits commercial use of such code or model containing or depending on such code. For generally commercially available software that you used to generate your submission that is not owned by you, but that can be procured by the Competition Sponsor without undue expense, you do not need to grant the license in the preceding sentence for that software.

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

Опенсорсная лицензия на код требуется только у победителей. Поверьте, вам это не грозит.
Предлагаете заведомо распрощаться с возможностью победить? Поучаствовать ты можешь, но победить никогда. Ну как то так себе и условия и мотивация. Я уж лучше свои местечковые данные буду расчитывать книги там может для написания текста, капчи, хеши и курсы доллара и биткоина но где мне не будут правила запрещать побеждать. Благо, что в мире еще осталось масса хороших задач. С удовольствием поучаствовал бы в конкурсе где важен результат а не инструмент. Но пока я таких не нашел. Буду признателен если подскажите.
Это была просто насмешка, над вашей манерой уклоняться от сравнений с конкурентами уже насмехаются, но не обращайте внимание.
После окончания *конкурса с призами* обычно можно посылать работы — и тогда лицензия уже не требуется, при этом сравниться с другими людьми вы можете.
Обычно вы отправляете лишь результаты вычислений, а не свой код.
Возьмите конкурс про титаник, он для начинающих на Kaggle как раз подойдёт.
neurohive.io/ru/osnovy-data-science/razbor-resheniya-zadachi-titanik-na-kaggle-dlya-nachinajushhih
Да. я уже смотрел этот датасет. Вы в курсе, что в нем есть имена пассажиров? Сеть просто привяжется к именам пассажиров. Запомнит каждого из пассажиров поименно. Набор данных не совсем корректный и минимум требует доработки (удаления некорректных полей) Я уже кучу данных пересмотрел в том числе и эту задачу. В том виде в котором данные есть сейчас они непригодны для обучения. Это все равно что задать в наборе данных уникальный идентификатор строки. Алгоритм обучившись по нему и будет все ответы выдавать.
1) На практике, до 90% работы с нейросетями — препроцессинг. Убирайте имена пассажиров, настраивайте как угодно. Но… вы же говорили, что ваша версия не переобучается! И то, что настраивать вашу сеть никак не нужно…
2) Польза нейросетей — в их результате на новых данных. Какая разница, что там есть имена, главное, чтобы на тех данных, которые нейросеть не видела, она предсказывала правильные ответы.
И одна из задач хорошей технологии, решающей задачи — убирать данные, которые лишь путают. Но тут важен баланс: уберёте много данных, и сеть ничего не предскажет, уберёте мало данных, и ваша сеть переобучится. Что ж, вам придётся как-то решить и эту задачу, сделать её частью вашей победной технологии, раз уж вы считаете, что это *у нас* колёса квадратные…
Это все равно что задать в наборе данных уникальный идентификатор строки. Алгоритм обучившись по нему и будет все ответы выдавать.

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

Набор данных не совсем корректный и минимум требует доработки (удаления некорректных полей)

Удаляйте, кто ж вам мешает. Это препроцессинг на ваш выбор.
Сразу уточню, почему я раньше предлагал вам глянуть на любой кагловский датасет, а сейчас настаиваю именно на демонстрации мощи вашего алгоритма на актуальном соревновании на кэгле.
Изначально ведь речь шла о том, что вы покажете эксперимент с кодом, который продемонстрирует качество вашей модели. Но вы вместо этого кидаете ссылку на какой-то поломанный сайт на .php, где происходит что-то и выдаются на выходе какие-то числа.
Мы, конечно, тут все джентльмены и поэтому доверяем вам в плане того, что числа берутся не с потолка, но судя по вашим познаниям в области машинного обучения вы запросто можете допустить какую-то очевидную ошибку валидации или условный дата лик. Поэтому для чистоты эксперимента было бы круто сделать честную проверку.
Честная проверка это результат работы сети. Как раз его я на сайте и предоставляю возможность изучить. Поставляйте данные и сеть вам выдаст результаты. Разве не достаточно для проверки? Плюс справа выводится информация о сети. Затраченное время, размер сети, процент совпадений. Для проверки параметров не из обучающей выборки достаточно ввести соответствующие входящие данные. Возможно интересно будет проверить на ваших данных. Создайте сеть и загрузите данные после расчета сможете проверить точность прогнозов.
Разве не достаточно для проверки?

Конечно, этого не достаточно, потому что я не уверен, что вы знаете, что такое train-val-test split, зачем он нужен и как его делать.
Чтобы проверить нейросеть, нужно загрузить туда кучу данных не из набора для обучения — так называемую валидационную выборку (обычно не меньше 2000 строк таблицы), а потом считать на ней среднее качество. Как вы предлагаете другим людям это делать с вашей технологией? В идеале это выглядело бы так: вы просто говорите, сколько у вас получилось на том или ином наборе валидационных данных (при условии одного и того же набора тренировочных и валидационных данных с конкурентами), и если у вас получается хороший результат — то это значит, что ваша технология работает.
Мы надеемся, что вы дорастёте и покажете такие цифры. Вот после этого уже и начнётся серьёзный разговор о том, что не так с нейросетями, и у вас в нём будет взрослое право голоса.
Данные расчитываются через апи используя удобные форматы. При отсылке пост запроса на адрес сети она выдает результат в json формате. Написав небольшой скрипт в 20 строк можно с легкостью проверить данные любого обьема. Все это возможно сделать прямо сейчас, загляните во вкладку сеть консоли браузера. Если набор данных будет вашим, то вам не составит труда проверить все данные.

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

Сочетание слов "двоичный алгоритм" у меня ассоциировалось почему то с бинарными опросниками. Но при чем тут нейросети?

В прошлый раз было больше радости :(
Справедливости ради хочу отметить, что направление спайковых сетей (я именно так интерпретирую описанную «двоичность») вполне себе перспективно. Хотя-бы по энергетике, при правильной реализации в железе конечно.
Да и предоставить возможности структурной адаптации сети к изменениям в среде (сиречь данным) — это тоже очень заманчиво. Все-таки в биологии рост сети (дендритных деревьев) играет фундаментальную роль в обучении и памяти. Работы также ведутся, но мало и они далеки от хоть какого-то продакшена. Уж больно все непонятно.
Судя по проскользнувшим «паттернам» в тексте и комментариях, у меня подозрение, что автор переоткрыл нейроподобные растущие сети (Ященко). Сеть будет расти пока не запомнит все 2^40 варианта. Хеш — это не тот случай, где можно делать обобщения.
Звучит очень не плохо. Только термин «запомнит» применительно к нейронным сетям звучит в отрицательном контексте. Все бояться от запоминания сети так как это приводит к низкой сходимости сети. Если убрать негативный оттенок и допустить что от «запоминания» будет работать лучше то да. Это то что нужно. Только я по нейроподобным растущим сетям Ященко не нашел информации в сети. А из того что нашел понял что это все еще нейроны. Есть общие идеи, но различий больше. Здесь акцент на двоичность данных. Все сигналы это бит а не градиент. Жаль слили карму. Мог бы рассказать разницу в расчетах таких сигналов.
по нейроподобным растущим сетям Ященко не нашел информации в сети. А из того что нашел понял что это все еще нейроны.
Нет, от нейронов там только название. Информации мало, вот есть, что есть:
список
Ященко, Виталий Александрович

Ященко, Виталий Александрович
works.doklad.ru/view/_RMzUcxdlqA.html

ІПММС — Персональна сторінка: Виталий Ященко
www.immsp.kiev.ua/perspages/yaschenko_vo/index.html

Ященко В.А. Рецепторно-эффекторные нейроподобные растущие сети эффективное средство моделирования интеллекта. I, II — // Кибернетика и сист. анализ № 4, 1995. С. 54 – 62, № 5, 1995. С. 94 — 102.

Рабинович З.Л., Ященко В.А. Подход к моделированию мыслительных процессов на основе нейроподобных растущих сетей // Кибернетика и сист. анализ № 5, 1996. С.3-20.

Нейроподобные растущие сети новая технология обработки информации
works.doklad.ru/view/CmYh00YZXbY.html

Вторичные автоматизмы в интеллектуальных системах
iai.dn.ua/public/JournalAI_2005_3/Razdel4/09_Yashchenko.pdf

Mодель естественного интеллекта и пути реализации задач искусственного интеллекта
cyberleninka.ru/article/v/model-estestvennogo-intellekta-i-puti-realizatsii-zadach-iskusstvennogo-intellekta

Размышляющие компьютеры
cyberleninka.ru/article/n/razmyshlyayuschie-kompyutery

Теория искусственного интеллекта (основные положения)
cyberleninka.ru/article/n/teoriya-iskusstvennogo-intellekta-osnovnye-polozheniya

Некоторые положения теории искусственного интеллекта
dspace.nbuv.gov.ua/bitstream/handle/123456789/57710/5-Yashchenko.pdf?sequence=1

Общая теория искусственного интеллекта
www.myshared.ru/slide/924856

Некоторые проблемные вопросы разработки искусственного мозга
www.immsp.kiev.ua/publications/articles/2018/2018_3/03_2018_Yashchenko.pdf

Некоторые аспекты «нервной деятельности» интеллектуальных систем и роботов
dspace.nbuv.gov.ua/bitstream/handle/123456789/8180/67-Yashchenko.pdf?sequence=1

Уничтожат ли человечество умные роботы
www.immsp.kiev.ua/publications/articles/2017/2017_4/04_2017_Yachenko.pdf

То, что Вы называете «двоичными данными» принято называть признаковым описанием (бинарным).

Если есть желание именно рассказать, то всегда это можно сделать через песочницу. Кому интересно прочтут.

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

И вот это что такое?

«Используется обычно до 3-х уровней (слоев). Использование более 3-х слоев не осмысленно.» это из описания «нейроподобные растущие сети». Получается, что Ященко не смог сделать растущую сеть больше трех слоев? Реально в работающих сетях этот параметр уже переваливает за сотни и тысячи, хотя миллионы и миллиарды думаю реальность ближайшего времени ограничивает только производительность машины на которой происходят расчеты а не «осмысление»

Опять же а это? «Появление ложных фантомов (ложных аттракторов) – присутствует» Ничего подобного нет в уже работающей сети. Никаких фантомов. Я так понял человек был в правильном направлении, но не смог доработать свое детище до конца. У меня на это ушло пять лет первый раз сеть сложилась 13 июня 2019 года в 4 утра с тех пор просто идет оптимизация производительности.

И еще. Слово двоичная не зря выведена в заголовок. Двоичная это базовое свойство сети. А это из присутствующих я так понял осмыслить никто не смог. В двоичном представлении нет отрицательных значений, нет списков. Есть только два значения «включено» или «выключено» 1 или 0 только в таком состоянии можно полноценно интерпритировать сигналы в обе стороны и полноценно расширять сет. Любой значение больше двух дает «Появление ложных фантомов» хотя очень много в приведенных статьях сделано правильно. Ященко молодец! Спасибо автору. Теперь можно сказать не зря было все это общение.
«Используется обычно до 3-х уровней (слоев). Использование более 3-х слоев не осмысленно.»
В таблице сравнения из той статьи это относится к «классическим» нейросетям. Сама статья из конца 90-х годов. В то время ни просчитать более 3-х слоёв ни применять их не умели. Высказывание из рода «640КБ хватит всем».

В начале 2000-х институт какое-то ПО разработал, но так как все разработки дотационные, а впоследствии все альтернативные разработки подмял успех глубокого обучение и свёртки, то вся эта тема киснет уже пятый десяток. Поэтому, если есть что-то работающее по этой теме, то, на мой взгляд, важно «не унести это с собой в могилу».
Чет вы рано о могиле заговорили. Я планирую жить вечно. Надеюсь еще массу задач сделать.
Ну это была просто гипербола. Во всём новом каждый обо что-то спотыкается. На затыке может пропасть интерес, и это новое, что появилось в этих растущих сетях за последние 20-30 «голодных» лет будет вычеркнуто. Не забудьте рассказать про алгоритм, если основательно упрётесь в стену.

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

Вместо экзотических датасетов я бы скормил ей «Войну и Мир». Причём второй том уже должен приводить к меньшему росту сети. Новая информация должна встраиваться в предыдущие знания. Если рост нелинейный — сеть работает (обобщение присутствует). Рост линейный — ну не получилось.
Как раз последнее время все очень хорошо. Все, на что расчитывал работает и показывает гарантированный результат. Поэтому и решил начинать потихоньку рассказывать окружающим. Действительно. Рост замедляется. По достижении 99% совпадений большая часть уходит на «перебирание» правильных прогнозов. Будь неправильных больше обучение проходило бы значительно быстрее. У меня в одной из задач 99.9% уже держится эпох десять на каждой эпохе идет расчет 1-2 неправильных примеров и снова эпоху приходится начинать сначала. Десятки раз когда оставался один неправильный прогноз, но окончательно выловить эту ошибку чуть ли не сложнее того чтобы дойти до 99%. Я так понимаю сети нужно найти и поменять какой то из верхних нейронов. Но чтобы дойти до этого изменения нужно перебрать возможные варианты во всех нижестоящих. Ошибка в установке «веса» была допущена на ранней стадии формирования сети. При этом так как это «двоичный алгоритм» весов всего два 0 или 1 Нахождение и изменение верхнего нейроны просто вопрос времени. При этом процент правильных прогнозов не уменьшается как в НС при переобучении (падает в максимумы) а стремиться к оптимальному при любом состоянии.

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

По поводу войны и мира тоже думал :) но я больше склоняюсь к каким то диалоговым задачам. Продажа чего нибудь или скрытый маркетинг. Чтобы алгоритм потренировавшись на диалогах пользователей сам стучался и обсуждал какую нибудь общую тему. Повысив степень «доверия» уже максимально «ненавязчиво» предлагал услугу или событие интересное собеседнику. Восприятие такого рода продвижения должен быть максимально эффективно. Да и человек от него должен получать удовольствие а не раздражение. Общение в наше время вещь востребованная. Я какое то время проработал в фирме с «продажниками» мне эта тема очень близка. Сейчас теоретически все есть для решения такого рода задачи. Производительность сильно увеличилась когда пару недель назад я решил вопрос с возможностью в нескольких потоках обучать одну задачу. Сейчас задачи на сервере расчитываются в 15-20 потоках эффективность возрастала на порядки. Потихоньку начинаю почитывать документацию по расчетам на видеокартах. Слабо пока представляю как можно к ним обычные алгоритмы прикрутить. В общем есть куда двигаться.
Десятки раз когда оставался один неправильный прогноз, но окончательно выловить эту ошибку чуть ли не сложнее того чтобы дойти до 99%

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

Как раз наоборот. Сеть, "запомнившая" обучающую выборку, даст самую лучшую сходимость — прям к нулю. Но довольно часто такие сети не способны к обобщению. Поэтому и опасаются переобучать сети.


Здесь акцент на двоичность данных. Все сигналы это бит а не градиент.

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


Мог бы рассказать разницу в расчетах таких сигналов.

Так почему ж Вы сразу об этом не начали рассказывать?

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


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


И к тому же, как вы собираетесь обучать такие сети?
Дело в том, что непрерывность (а точнее дифференцируемость) выхода нейронной сети как функции от её параметров, является ключевой идеей, позволяющей обучать НС.
Добавив гладкую функцию потерь, как функцию от выхода сети и правильного ответа, мы получаем дифференцируемую функцию потерь, как функцию от параметров сети. Теперь мы можем посчитать градиент, т.е. направление, в котором нам нужно изменять параметры, чтобы минимизировать функцию потерь (на самом деле конечно в противоположную сторону от градиента).
Что вы предлагаете взамен?


Вы конечно извините, но в целом пока только общие слова и абстрактные рассуждения; без подробностей реализации вашей идеи, не видно плюсов и не ясна даже жизнеспособность такой конструкции

Все вышеописанное исправляет потому что это работает. Нет смысла было говорить не проверив это все на практике. Переобучения нет, потому что достраивается только то, что нужно для правильных ответов ни больше. Время сокращается потому, что не приходится пересчитывать все данные, лишь малой части достаточно для получения общего результата. А понимание потому, что мы можем на «развилках» понять какой именно входящий сигнал привел к результату. Суммирование уровней сигналов не дает такой возможности. В замен предлагаю новый алгоритм результаты работы которого смогли бы показать эффективность. Если организовать расчет данных с возможностью проверить результаты это могло бы убедить в правильности моих утверждений? Как раз для этих целей делаю сервис по загрузке и расчету датасетов.
На kaggle есть соревнования, на которых не надо предоставлять код и можно проверить вашу модель.
Например:
www.kaggle.com/c/cat-in-the-dat/data
www.kaggle.com/c/competitive-data-science-predict-future-sales/data
Просто обучаете на train, делаете предсказания для test, отправляете решение… занимаете 1-е место на Leaderboard)… сообщаете нам и тогда те, кто правы, подтвердят свою правоту. А те кто неправы — увидят, что ошибались.

Прошло 5 дней, каков результат?
Я выбрал другую задачу. Одна из указанных не подошла по формату данных шестнадцатеричные данные не так легко обрабатывать. Вторая требует доработки данных. Взял из тех которой нет в списке. Пока так себе результат. Есть ощущение, что не хватает вычислительных ресурсов. До обучения в нужном обьеме все еще долго. Есть идея как быстродействие еще раза в два — три поднять и нужно закупать сервера одного тут недостаточно. А вообще хочу на видюхах попробовать расчитывать, прям быстро это точно не получится сделать.
Кстати может кто-то захочет лично проверить сказанное мной. Могу предоставить устаревшую версию алгоритма исполняемый файл bmf для линукс размером 2.5МБ. В алгоритм планируется внести большие изменения. Использовать можно подавая в консоли данные такого формата

файл iris.json

[
{"dano":{"ДлиннаЧашелистика":"5.1", "ШиринаЧашелистика":"3.5", "ДлиннаЛепестка":"1.4", "ШиринаЛепестка":"0.2"}, "itog":{"ВидИриса":"Iris-setosa"}},
{"dano":{"ДлиннаЧашелистика":"4.9", "ШиринаЧашелистика":"3.0", "ДлиннаЛепестка":"1.4", "ШиринаЛепестка":"0.2"}, "itog":{"ВидИриса":"Iris-setosa"}},
{"dano":{"ДлиннаЧашелистика":"4.7", "ШиринаЧашелистика":"3.2", "ДлиннаЛепестка":"1.3", "ШиринаЛепестка":"0.2"}, "itog":{"ВидИриса":"Iris-setosa"}},
{"dano":{"ДлиннаЧашелистика":"4.6", "ШиринаЧашелистика":"3.1", "ДлиннаЛепестка":"1.5", "ШиринаЛепестка":"0.2"}, "itog":{"ВидИриса":"Iris-setosa"}},
...
]


на вход программе
$cat iris.json | ./bmf iris.sqlite 100
где «iris.sqlite» файл где будет храниться данные сети и 100 это максимальное количество эпох для обучения после обучения программа укажет уровень своего обучения в процентах

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

$echo '[{"dano":{"ДлиннаЧашелистика":"4.6", "ШиринаЧашелистика":"3.1", "ДлиннаЛепестка":"1.5", "ШиринаЛепестка":"0.2"}}]' | ./bmf iris.sqlite

Ближе в конце вывода будет прогноз в формате json. Оставить только результаты работы можно перенаправив информацию лога в пустоту 2>/dev/null

{
"stats":{"size":"1","change":"0","pips":"100","index":"950"},
"itog":{"ВидИриса":"Iris-setosa"}
}


Кому интересно пишите я соберу для вас «пробничек».
Просто поделите «ирисы» на 80% для тренировки и оставшиеся 20% для теста, и посчитайте для нас качество предсказания на тестовом подмножестве. (Проделайте так 5 раз со случайными разбиениями, тренируясь заново, отбросьте крайние и скажите среднее из 3 центральных). Вот эта цифра нам и интересна, она скажет больше всего про ваш алгоритм. Таким же образом посчитайте цифру на тренировке, тогда можно будет посчитать ещё и уровень генерализации. Можете и графики обучения показать. Типично для нейросетей что-то такое (на картинке: train: ~98%, test: ~95%, generalization error: ~3%).
image
Не это самое главный плюс а избежать вот таких графиков. На НС рано или поздно график разворачивается и начинает не сходиться а расходиться. Это называется переобучение. В этой сети такого нет. Сеть расширяется увеличивая свою обучающую способность. Сколько бы не было данных сеть будет только уменьшать количество ошибок. Всегда, независимо от обьема обучающей выборки.
image
Вот пример реальный. При первом проходе сети было 188 ошибок в этохе а через примерно 200 эпох обучения ошибок не стало. Эта сеть еще не доучена до конца остальные ее биты не доучены до 100% но это только вопрос времени. http://биморф.рф/bmf:log/house?divider=2 это не вся сеть а только один бит итогового значения. У нас есть возможность обучать каждый из 20 битов по отдельности. Возможность всегда улучшить результаты какой обьем данных и сети у нас не был вот главный плюс этой сети. Если вы не знаете обьемов обучающей выборки то взял влюбой размер НС вы рано или поздно сталкнетесь с тем что она начнет переобучаться количество ошибок с каждым новым обучение начнет увеличиваться. Все. Дальше обучение конкретно этой НС невозможно. Здесь этого не может быть впринципе. Сеть просто добавляет новых элементов и обучается дальше каждый раз уменьшая количество ошибок. Сети с фиксированным количеством примеров как на кагле 1000 примеров или несколько тысяч это подходит под НС когда вы можете прикинуть ее размер чтобы она не схватила переобучение. А в биморфе мы всегда начинаем с нуля. А она сама добавляет нужное количество нейронов и с каждым новым обучением уменьшая количество ошибок. В любой момент времени мы можем обучающую выборку пополнить новыми данными, даже увеличить в десять раз и обучать спокойно дальше. Что никак не прокатит с НС обучающая способность НС задана в самом начале и не может быть увеличена по ходу обучения. На графике выше 95% это предел возможного для сети. больше этой цифры она никогда не обучится. Ни на трейне ни на тесте. То есть у вас нет ни единого шанса поднять этот параметр выше. А на биморфе вы об этом даже не задумываетесь Просто обучаете до нужного вам значения. В идеале хоть до 100% когда все известные вам примеры будут правильно прогнозироваться вашей сетью. Все появляющиеся новые примеры вы просто доучиваете опять же не думая о каких то ограничениях до любого нужного уровня.
1) Вы используете какую-то нетрадиционную информацию со случайной веб-странички. В нейросетях не совсем так, как в ML, и график редко имеет такую форму, как у вас. Намного чаще он выглядит, как у меня на картинке, и где там тогда «много больше»?
2) Вы не написали, что за тестовый датасет вы используете? 188 экземпляров в тренировочном наборе, а сколько в тестовом наборе?
Напоминаю, что нейросеть не должна видеть ответы в тестовом наборе.
Если вы не хотите повторять метод исследования генерализации, то как вы можете утверждать, что у вас нет ошибки генерализации? Повторите метод, тогда и поговорим.
Аналогия пришла в голову которая показывает разницу в алгоритмах. На примере парусных и дизельных лодок. НС это идти на дизельном двигателе. А биморф это парус. У каждого из способов передвижения есть плюсы. Идти на моторе быстрее чем на парусе. Но сколько бы вы не взяли топлива у вас всегда ограничен запас хода. Идя на парусе вы возможно идете медленнее, но у вас не ограничен запас хода. И когда вам ставят задачу пройти как можно дальше и как можно дольше без возможности зайти в порт вы возьмете большой запас топлива или неограниченный запас хода? У вас есть возможность только в начале решить какой будет размер бака это будет канистра или цистерна. Заправка одноразовая только в порту отправления. Даже сам тест это попытка померить кто куда заплыл при разных обьемах топлива. Большие НС с большим запасом «обучающей способности» (топлива) приблизятся ближе к цели. Сети из десяти нейронов топлива хватит только «прогреть мотор» и заглохнуть прямо в порту. Все приплыли куда смогли и остановились. У НС есть даже признаки по которым можно сказать что «приплыли» это значения результатов уходящие в максимумы. Признак того что сеть работает на пределе своей обучающей способности. Дальше ошибки будут не уменьшаться а увеличиваться. Возможности идти дальше нет и вас просто начинает сносить течением в сторону. Дальше плыть нельзя у всех закончилось топливо, поэтому просто тестом измеряем кто доплыл дальше всех. С парусом вы ограничены только временем. Ветер всегда дует и вы пусть медленнее но на постоянной скорости идете к своей цели. Тест на то кто заплыл дальше для вас бесполезен потому что у вас нет ограничения в запасе хода. Более того вы сможете сделать пять кругов туда и обратно если цель назначения изменится и вам будут приходить противоречивые обучения. Алгоритм просто поменяет свои результаты. Вас все еще продолжающего приближаться на парусе к цели пытаются сравнивать с болтающимися на волнах моторными лодками с пустыми баками. Не знаю опять же смог или нет передать разницу. Надеюсь что смог.
Про котика с дверцей и пользу от аналогий вы знаете, да?
Хватит себя нахваливать, мы вообще про другое вас спрашиваем.
Во всех практических задачах во время работы сети вы не знаете ответы, потому что если бы вы знали ответы, нейросеть была бы не нужна.
И вот теперь у вас спрашивают, насколько ваша сеть работает, когда вы не знаете ответов. А вы говорите, что ваша нейросеть может запомнить все ответы (правда, только пока их будет не больше 1000), и точность запоминания будет 100%.
Какой вообще нам смысл от этой информации? Вы тупо не тот параметр измеряете.

Нейросети применяются в вашем режиме известных ответов для перепроверки работы операторов, но это очень редкий режим, и опять же не факт, что ваше решение покажет в этом режиме результат лучший, чем другие методы ML, потому что random forest и градиентный бустинг наверняка покажет качество лучше и будут работать в 100-1000 раз быстрее оптимизированной версии вашего алгоритма, и будут хорошо работать на большем количестве данных (тот же Vowpal Wabbit обрабатывает 2 гб данных за минуту, например).
будут хорошо работать на большем количестве данных (тот же Vowpal Wabbit обрабатывает 2 гб данных за минуту, например)
В курсе что в алгоритме Vowpal Wabbit можно обучать только линейные модели. Это просто линия делящая выборку на две равные части. Строго говоря алгоритмом машинного с огромной натяжкой можно назвать. Что за алгоритм который просто делит пополам и считает в какой стороне больше красных а в какой синих? А давайте кучу поступивших данных бизнес аналитики просто поделим пополам и сделаем совершенно ненужный вывод который ни о чем не говорит. Уверен он будет в 100-1000 раз быстрее потому что обучения никакого не происходит а при поступлении новых данных вы просто будете болтаться в каких то неизменяемых пределах попадания близкому к случайному и точно никак не обучаться.
А вы говорите, что ваша нейросеть может запомнить все ответы

Уже писал выше чем отличается запомнить от обучиться. Запомнить это знать ответы только тех примеров которые есть в выборке, отклонение в паре параметров в стороны уже не дает ничего потому что вы запомнили а не обучились. Запоминание не требует многократной подстройки данных и запоминается в один проход. Данные больше не изменятся смысла одно и тоже запоминать многократно нет. В биморфе вы можете вбить примеры Ирисов которых нет в выборке (в указанных пределах) и алгоритм на все возможные варианты будет давать предсказание чего не сделает «запоминание» никакой дополнительной обработки помимо результатов запомненного не производится. Странно, что приходится «разжевывать» такие простые вещи человеку занимающемуся алгоритмами машинного обучения. По хорошему встречал информацию что не все считают K-ближайших соседей (KNN) алгоритмом машинного обучения в нем просто нечему обучаться. Также и с алгоритом Vowpal Wabbit который строго тоже ничему обучиться не может. Это просто свойство которое есть у выборки. Какой то модели и ее обучения для этого не требуется.
не факт, что ваше решение покажет в этом режиме результат лучший, чем другие методы ML
Не факт. Но не в этом плюс алгоритма. Давайте по порядку. Разделив всю выборку Ирисов на 30% и 70% и обучившись на обучающей выборке проверил результат на тесте допустим получил 90% (условно) что это за цифра и что она нам дает зная что через минуту добавив оставшиеся 30% к 70% и обучив еще с десяток эпох я получу 98-100% но уже на полной выборке. Что это за цифра 90% о чем она мне говорит? Это просто попадание в какой то диапазон при недообученном алгоритме на неполных данных. Если у меня есть полные данные зачем мне выяснять какое будет попадание на частично обученном алгоритме? И зачем это если сразу же после этого я обучу алгоритм на оставшихся неизвестных ему данных и получу совершенно другой результат. Проверка работы алгоритма на недообученных данных это какой то странный способ получить ничего не значащих цифр. А давайте ученику в школе повырываем каждый десятый лист в учебниках и попробуем проверить как он «додумает» недостающую информацию? Понимаете всю абсурдность ситуации? Для меня это число просто какое то промежуточное которое было до того пока выборка не стала полной. О результативности она не говорит потому что внимание «выборка не полная». А после пополнения выборки до полной результат будет дообучен и совершенно другим.
Давайте разовьём аналогию со школой. В школах есть тесты и экзамены.
Вот такое тестирование — это и есть экзамен для нейросети.
Если у вашей сети будет 90% на тесте, то это и значит, что 9 из 10 новых ирисов она будет способна корректно распознать. Если у другой модели при той же тренировочной и тестовой выборке этот показатель будет 85% — то ваша модель будет лучше другой работать на новых данных, и значит, вашу модель будет лучше использовать на практике. Понятно разжевал?
Если вы добавите все данные для теста в данные для обучения, то у вас будет больше данных и вы получите более точную модель, но ничего не узнаете о способности вашей модели работать на новых данных.
После тестирования никто не мешает вам дообучить модель, так же, как школьники после экзаменов вполне могут дальше учиться. И вы в итоге получите две разных модели: одну модель для тестирования и сравнения с конкурентами, а вторую — более точную.
Вот, например, я тренирую алгоритмы распознавания речи на 20 тысячах часах речи, содержащих иногда ошибки, и тестирую все модели (и свою, и чужие) на руками выверенных 18 часах, хорошо характеризующих мою предметную область. Ну добавлю я эти 18 часов к тренировочной выборке из жадности. Но где тогда я потом возьму данные для непредвзятого тестирования качества? Ведь люди потом на практике будут говорить своим уникальным голосом со своими уникальными интонациями совершенно новые фразы. Как мне тогда измерить и сравнить качество распознавания на новых данных? Вот тестовый набор и является аппроксимацией для новых данных. А если хоть часть из него попадёт в тренировочные данные, то нейросеть под него подстроится и измеренное на нём качество поменяется в сторону улучшения, и уже не будет характеризовать качество на случайных новых данных, на которых сеть не могла доучиться.
Вот и у вас такая же ситуация: вы себя и нас обманываете, утверждая, что наиболее практически полезный режим работы нейросети — работа на новых данных без возможности на них дообучаться — вашей нейросети не нужен.
Ну, не нужен так не нужен — когда заказчики захотят сравнить вас с конкурентами перед тем как принимать решение о покупке вашего решения, сравнение окажется внезапно нужно.
Ну а нам, соответственно, уже сейчас интересно посмотреть на этот показатель, чтобы составить мнение о полезности вашего алгоритма, и заодно понять, где ещё вы себя и нас обманули.
Вот такое тестирование — это и есть экзамен для нейросети.

Перед экзаменом никто не скрывает известную информацию. Вся выборка обучающая и тренировочкана проверяет способность обучиться или запомнить не сильно важно информацию. Если обучившаяся сеть в итоге дает 100% а не 90% как к примеру без теста то это и есть экзамен, цель достигнута. Что там было у них на недоученной сети когда небыла загружена часть информации это уже никого не волнует. Никого не интересует что какой уровень ответов давал школьник если его итоговый результат при выпуске будет 100%. Какой то очень странный поступок скрывать часть информации чтобы померить уровень предсказания недоученной сети. Давайте попробуем разобраться в причинах вашего упорства непринимать эти факты. Обьясните мне почему даже на тренировочной выборке НС никогда до 100% не обучается. Что это за фишка такая? И не кажется аналогией когда даже зная что сеть дает каокой то выдающийся результат без теста вы не можете просто взять и доучить НС до нужных показателей. Вот первопричина почему мы придумываем какие то непонятные метрики для измерения вместо того чтобы взять и дообучить. Что мешает зная что НС не дает нам нужный результат просто взять и довести ее до нужного нам уровня обучения? Вот это главная причина. Обьяснить это можно только ограниченностью НС. Она такие вещи просто не умеет. Поэтому и приходится мерить НС на недообученных данных и оставлять их такими чтобы не испортить эти показатели окончательно. Сама концепция просто непригодна для использования, НС не позволяет даже самые простые вещи к примеру дообучиться после проверки ее на тесте. Или поменять всои предсказния при измененнии выборки или учиться на неограниченно больших данных. Вы приудмываете оправдание применением каких то детских алгоритмов линейной регресии. И как то вам мозг ломает что в любой момент алгоритм можно довести до нужного уровня совпадением простым накидыванием неизвестных ему данных Хоть до 99% хоть до 100% всегда. Что это? Какой то мозговой ступор заставляющий человека обьяснять приудмывать все новые и новые отговорки и защищать заведомо глупую идею с измерением недообученной сети. Как будто это так работает для всех. Не переносите ограничения НС на другие сети. Просто признайте что она такого не умеет и поэтому людям работающим с НС приходится заниматься извращениями чтобы хоть как-то заставить ее работать и получить хоть какие то результаты не поломав окончательно.
нейросеть под него подстроится и измеренное на нём качество поменяется в сторону улучшения, и уже не будет характеризовать качество на случайных новых данных
Десятый раз повторяю любое изменение и обучение на неизвестных данных приводит только к праивльным прогнозам. Любые корректные данные изменяют сеть в правильную сторону. Там нет «аномалий» с разворотом обучения который есть в НС по простой причине любая НС ограничена в обучении с самого своего первого момента создания и больше нет никакой возможности этот параметр увеличить. Здесь же мы ничем не огранчиены. И все обучения как самые первые так и любые последующие приводят только к улучшению ситуациюю. Нет никаких ухудшений как это есть в НС. Я вам уже кидал ссылку на расчет в котором написан процент свопадения. И он постоянно растет какой большой бы не была сеть. Это будет продолжаться всегда пока вы кидаете сети корректные данные для обучения. Тестовая сеть корректные данные поэтому и их обучение приводит к улучшению результатов а не к ухудшению как это просиходит в НС. Вы сейчас как будто не можете перейти какой то невидимый барьер представить что есть структура которая существует без недостатков НС и к ней непримеримы ее мерки. Все пытаетесь свойства НС перенести на другие алгоритмы. Нет это не так работает. Ограничение в развитии после которого мы можем только изменить свходимость (выпускной экзамен) это только для НС. У биморфа я в любой момент могу достаить любую не 100% сеть и продолжить обучать дальше.
>Обьясните мне почему даже на тренировочной выборке НС никогда до 100% не обучается.
Потому что в миллионе входных данных найдутся противоречащие друг другу, а ёмкость сети ограничена. Зачем всё запоминать?
>Вот первопричина почему мы придумываем какие то непонятные метрики для измерения вместо того чтобы взять и дообучить. Что мешает зная что НС не дает нам нужный результат просто взять и довести ее до нужного нам уровня обучения?
Вы зачем-то продолжаете защищать своё решение.
Очевидно же, что вы не сможете померить нужную на практике метрику — поведение сети на новых данных — если будете действовать своим способом.
Попробуйте убедить заказчика, что пофиг, что Siri не работает с его голосом, она же может доучиться, только пусть он всего лишь предоставит текстовую расшифровку каждой фразы, что он сказал. Он вам скажет «а зачем мне тогда ваша нейросеть, если каждую фразу ей расшифровывать надо?»
Когда вы это осознаете, тогда и поговорим.
А то вы опять в общий ИИ ударились какой-то.
Ну что я могу сказать… вы неправильно понимаете, что такое линейная модель. Она не выборку делит на две части, а суммирует входные параметры с определёнными коэффициентами, формируя линию, делящую пространство фич на две части гиперплоскостью. Если из данных сделали много входных параметров различными преобразованиями, то эти предварительные преобразования вполне заменяют первые слои нейросети, а линейная модель представляет из себя последний слой сети. И в некоторых задачах способна таким образом получить 95-99% возможного результата нелинейной модели за очень небольшое время, выиграв в качестве на эффекте масштаба.
Она не выборку делит на две части, а суммирует входные параметры с определёнными коэффициентами, формируя линию, делящую пространство фич на две части
Не суть что она там делит. Факт в том, что процесс принятия решений чуть сложных чем линейный градинет плавная прямая волна не получится поделить одной чертой. Размер правильных предсказаний в такой сети будет крайне низок. Это какой то детский алгоритм и я бы мог его еще в школе написать. Возможно кто-то его и использует но воспринимать эту приметивную вещь как алгоритм сложно. Что значит его обучение? Поменять уровень наклона этой прямой или сместить на пару пикселей выше? Много у вас от такого обучения поменяется? Скорее всего даже в худшую сторону.
И в некоторых задачах способна таким образом получить 95-99%
В подобных задачай проще на глаз определить линию и простой математической формулой задать разделение. И то толку будет больше. Во всех данных элементы котороых не разбиты на две скученные кучки получить хоть какой то приемлемый результат с линейной регрессией равен нулю. Это должны быть очень своеобразные данные с четкой границей разделения Потому что разбейся такая кучака на «неровные группы» и все. «неалгоритм» выдает близкий к случайному результат все равно что генератором случайных числе предсказания делать.
Я вижу, что вы, видимо, никогда не решали больших задач, поэтому просто меня не понимаете. Лол.
и попробуем проверить как он «додумает» недостающую информацию? Понимаете всю абсурдность ситуации?

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

Сначала учитель объясняет ученикам, как решать задачу и показывает ее решение на нескольких примерах.
Проверку результатов правильно сравнить с экзаменом. На уроке (процесс обучения) информация не скрывается. И в этом абсурд. Ученик спрашивает почему часть задачек вы нам не даете, я хотел бы их выучить чтобы на экзамене получить лучший результат. А учитель отвечает — Это мы не будем проходить чтобы вы не набрали 100% на экзамене. Часть задачек в учебнике мы специально закрасили чтобы вы не знали всей известной информации. А теперь попробуйте на экзаменах набрать максимальный результат. Но как же учитель вы ведь нам это даже не давали. А ничего не знаю, так работают НС.
Потому что то, что они скопируют ответ
Да именно. Учитель говорит запоминайте. Замечайте связи между информацией, выбирайте признаки по которым вы сможете научиться давать правильные ответы. На экзамене мне не важно запомнили вы всю «Войну и мир» или только часть. Перечитывайте ее столько раз сколько потребуется но на экзамене я хочу максимально правильные результаты которые возможно. Естественно плюс то, что можете додумать исходя из прочитанного. Зная максимально фактов додумать весь сюжет до максимально близких предсказаний. К примеру вопрос какой могла быть одежда героев. Пусть в книге даже не будет ее точного описания. Если дать 100% книги а не 70% этот ответ будет только точнее. В недорассказанных 30% может оказаться факты которые будут более точно говорить об одежде какая могла бы на героях быть. Их предпочтение, время жизни, любимые цвета все это скажется на процент правильных ответов. На экзамене вопросы будут не 100% совпадающими с диалогами героев а нужно дополнить пустые пятна не сказанные в книге и ответить и на них тоже. Правильный алгоритм обучения не запоминает он улавливает в первой эпохе только часть информации. Допустим один процент от текста. При втором прочтении понимает больше, и так дажлее. НС не могут на 100% пересказать весь сюжет книги только 95% от нее. биморф же может обучиться и рассказать все 100% это возможно, плюс рассказать то, чего в книге небыло. Если спросить о факте который в книге небыл указан то он тоже даст ответ на него. Но вопрос в том что эти ответы будут ближе если не скрывать часть книги а дать максимально много информации. Не вырывать 30% страниц.
Они должны сами решать примеры, которые до того они еще не видели.
Именно так и происходит сейчас. Я как попугай уже который раз говорю что можете зайти и ввести любой пример которого нет в выборке того же ириса фишера и вы не поверите это те данные которые алгоритм самостоятельно реши их в обучающей выборке небыло. Но совершенно другое дело когда вы специально ограничиваете сеть в данных не давая правильных. Я понимаю от чего вам срывает крышу. Нейронной сети доучиться до 100% просто неререально даже если ей дать всю выборку. Тот же график показывает что средний показатель на трейне 95-98% а то и меньше. Обьясните почему не 100%? Сеть ничем не была ограничена. У нее были все данные. Но даже на такой простой задаче как обучиться всем данным из списка обучающей выборки сеть не может. Опять же проверка ее результата это итоговый экзамен за которым никто уже не сможет дообучить сеть недостающим данным. Почему после проверки на тесте никто ни говорит чтобы взять и дообучить сеть на данных которых она не видела? Что это? И почему это работает именно так. Откуда такие ограничения?
И абсурдом было бы просить их решить те же примеры, что учитель показывал.
О тех же примерах которые были в обучающей выборке вообще речи не идет. Вопросы всегда те которых небыло в обучении. Тут речь о другом если вы не поняли о том, что часть нужной информации вы вообще не даете. Вы ее знаете, но пытаетесь скрыть чтобы потом пытаться измерить недообученный алгоритм. У вас есть 10 задач котоыре вы знаете как решать. Но вы даете на укроке только 7 из них. а остальные просто недаете хотя в экзамене они есть. Вот речь о чем. Дайте все 10 задачек. И дайте на экзамене все десять для решения. И плюс еще 5 с верху которые придумаете после урока перед экзаменом. Ну или поменяйте числа в предыдущих задачах так, чтобы цифры были другими, но сама задача разбиралась на уроке. В данных насколько понимаю не проблема. Проблема только если само количество ограничено, но в этом случае тем лучше если алгоритм просто запомнит все данные ведь новых ни у кого нет и появиться им неоткуда. Мы же учим табличку умножения и никто не пытается нас проверить на каких то данных которых в таблице умножения до 10 не может появится. Это просто запомненные данные на очень маленьких выборках. На больших придется вдумываться в цифры и думать как не запоминать а понимать почему именно так а не по другому. Если ученик на экзамене решит все десять задач это и будет говорить о том, что он научился. Если решить девять то еще можно урок првоести подтянуть знания.
Вы даже чужую аналогию перевираете, чтобы получить угодные вам выводы.
Интересно, вы эту подмену вообще осознаёте или нет?
>
Я как попугай уже который раз говорю что можете зайти и ввести любой пример которого нет в выборке того же ириса фишера и вы не поверите это те данные которые алгоритм самостоятельно реши их в обучающей выборке небыло
Да, а по какой причине вы просите проверять варианты по одному, вместо того, чтобы дать программу, которая умеет требуемую нами метрику? Лень или обман?
Потом учеников просят решить несколько примеров самостоятельно.
Еще раз спрошу. Вы во время урока, не на экзамене утаиваете от учеников часть данных? Пытаетесь с учеников спрашивать то, что не объясняли? У вас есть конкретно решенная задача, но вы ее отложили до экзаменов и не даете на ней обучиться. Именно это вы мне сейчас и предлагаете делать с тестовой выборкой.
Лол. Конечно утаиваете. Когда вы спрашиваете у школьника на уроке, сколько будет 3+3*3 у доски, неужели вы ему говорите ответ и все ответы на все комбинации X+Y*Z перечисляете и даёте ему на зубрёжку?
Так вы ему и X+Y*Z не даете. Просто утаиваете часть информации на которой он мог бы вычислить «похожие примеры» еще раз повторю о примерах идентичных вообще не идет речь понятно что он на них праивльно ответит. При тесте проверяются аналогичные примеры тем которые были в тренировочной выборке. Но она не полная, там скрыта часть примеров.

На самом деле проблема что у учителя ограниченный круг задач который он может дать. Их всего скажем сто. Новых нет. А придумать новых не может, поэтому и приходится придумывать какие то способы првоерять. ХОтя по мне так обучив на полной выборке и узнай насколько обучилась модель вполне себе приличная проверка. Вопрос почему мы решаем задачи с таким маленьким количеством примеров? Мы пытаемся использовать модели где простое запоминание дало бы в сто раз лучший результат если количество примеров ограничено. А если не ограничено зачем требуется утаивать часть выборки не давая на них обучаться? Все равно что их всего количества примеров на которых мог бы обучиться ученик дать ему по одному примеру. Один со сложением, один с делением и один с умножением. 2+2=4 а теперь посмотрим как ты числа с тремя нулями вычисляешь. И пытаться получить с него хоть какие то результаты на экзамене, при этом давая примеры с дробными числами. Не удивительно что на классических задачах такой плохой результат, ведь данных для обучения катастрофически не хватает а результат будет определяться случайными факторами обучения внутри модели. У меня есть мысль почему это так происходит. На расчеты тратятся огромные ресурсы. Была уже информация, что обучение модели среднего размера сопоставима с выбросами углекислого газа одного автомобиля. И это при том что 9 из 10 будет просто выброшено не показав достойного уровня при проверке. О каких тут дополнительных примерах может идти речь если то есть обходится планете слишком дорого. Все ваши «ужимки» и ограничения исходят из ограниченности алгоритма и большого расхода ресурсов на их работу. Я же не придумываю ничего нового это все уже давно известно тем, кто интересуется темой.
image
>На самом деле проблема что у учителя ограниченный круг задач который он может дать.
Частично это так, но на практике это не проблема.
А проблема в том, что опять вы мыслите в терминах датасета из 180 примеров, где надо 30 примеров удержать в test set и так вам этого не хочется, что вы тут уже третье эссе на эту тему пишете. Боюсь, что это клиника и не лечится. Хотя, сейчас хорошие врачи, так что может быть и лечится…
Но я с вами точно на этом прощаюсь.
Частично это так, но на практике это не проблема.
Проблема в оценке насколько в той информации которая дается в обучении заданы все зависимости оставшейся выборки. Как можно оценить сколько примеров нужно оценить чтобы модель однозначно давала нужный результат и случайных факторов не оставалось. Из 150 примеров Ириса Фишера сколько нужно чтобы обучиться для всех включая тест? Классический ответ это 70% но почему не 50% почему не 30% а ведь есть грань за которой модель перестанет улавливать суть. Где эта грань проходит очень большой вопрос. Как любят говорить это никто никогда не скажет определенно и нужен большой опыт и практика. Прям магия какая то а не точная наука.

На практике мы имеем совершенно неформулизованную область деятельности в которой неизвестного и непонятного значительно больше понятного. Любая попытка достижения результата это тыканье пальцем в небо сработает/не сработает. До каких то строгих правил и методологий оценки очень далеко. И скорее всего в ближайшее время это не изменится.
mpakep,
Вот такую задачу Ваш алгоритм способен решить?

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

110010101100111010001101010110101010110 — сигнал есть
101010101111010101110100101001011110010 — сигнала нет


Необходимо найти группу информационных битов. Задача с усложнением: таких групп множество и они имеют пересечения.
При таком обьеме недостаточно данных. Чтобы найти зависимости нужно много данных. Сгенерируйте выборку побольше и алгоритм найдет закономерности всегда со 100% результатом. При этом сложность зависимостей не важна. Это может быть трехуровневая, пяти или десятиуровневая формула, вопрос ее нахождения это вопрос времени, не такого большого как может показаться расчет идет на обычным процессарах и за приемлемое количество времени. При этом можно говорить о разных форматах данных такая зависимость может быть спрятана в событиях к примеру или в числе это опять же не особо важно. Может быть раскидана по разным событиям в любом случае закономерность будет найдена.

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

Допустим я пришлю Вам такую задачу в формате, например, текстового файла на десять тысяч строк вида:
110010101100111010001101010110101010110 1
<128 бит входа: 0/1><пробел><наличие сигнала: 0/1>

Прогоните через алгоритм?
Простите не сразу смог ответить уезжал из города. Присылайте на почту dataset@mpak.su я поставлю на расчет.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.