будут хорошо работать на большем количестве данных (тот же Vowpal Wabbit обрабатывает 2 гб данных за минуту, например)
В курсе что в алгоритме Vowpal Wabbit можно обучать только линейные модели. Это просто линия делящая выборку на две равные части. Строго говоря алгоритмом машинного с огромной натяжкой можно назвать. Что за алгоритм который просто делит пополам и считает в какой стороне больше красных а в какой синих? А давайте кучу поступивших данных бизнес аналитики просто поделим пополам и сделаем совершенно ненужный вывод который ни о чем не говорит. Уверен он будет в 100-1000 раз быстрее потому что обучения никакого не происходит а при поступлении новых данных вы просто будете болтаться в каких то неизменяемых пределах попадания близкому к случайному и точно никак не обучаться.
А вы говорите, что ваша нейросеть может запомнить все ответы
Уже писал выше чем отличается запомнить от обучиться. Запомнить это знать ответы только тех примеров которые есть в выборке, отклонение в паре параметров в стороны уже не дает ничего потому что вы запомнили а не обучились. Запоминание не требует многократной подстройки данных и запоминается в один проход. Данные больше не изменятся смысла одно и тоже запоминать многократно нет. В биморфе вы можете вбить примеры Ирисов которых нет в выборке (в указанных пределах) и алгоритм на все возможные варианты будет давать предсказание чего не сделает «запоминание» никакой дополнительной обработки помимо результатов запомненного не производится. Странно, что приходится «разжевывать» такие простые вещи человеку занимающемуся алгоритмами машинного обучения. По хорошему встречал информацию что не все считают K-ближайших соседей (KNN) алгоритмом машинного обучения в нем просто нечему обучаться. Также и с алгоритом Vowpal Wabbit который строго тоже ничему обучиться не может. Это просто свойство которое есть у выборки. Какой то модели и ее обучения для этого не требуется.
не факт, что ваше решение покажет в этом режиме результат лучший, чем другие методы ML
Не факт. Но не в этом плюс алгоритма. Давайте по порядку. Разделив всю выборку Ирисов на 30% и 70% и обучившись на обучающей выборке проверил результат на тесте допустим получил 90% (условно) что это за цифра и что она нам дает зная что через минуту добавив оставшиеся 30% к 70% и обучив еще с десяток эпох я получу 98-100% но уже на полной выборке. Что это за цифра 90% о чем она мне говорит? Это просто попадание в какой то диапазон при недообученном алгоритме на неполных данных. Если у меня есть полные данные зачем мне выяснять какое будет попадание на частично обученном алгоритме? И зачем это если сразу же после этого я обучу алгоритм на оставшихся неизвестных ему данных и получу совершенно другой результат. Проверка работы алгоритма на недообученных данных это какой то странный способ получить ничего не значащих цифр. А давайте ученику в школе повырываем каждый десятый лист в учебниках и попробуем проверить как он «додумает» недостающую информацию? Понимаете всю абсурдность ситуации? Для меня это число просто какое то промежуточное которое было до того пока выборка не стала полной. О результативности она не говорит потому что внимание «выборка не полная». А после пополнения выборки до полной результат будет дообучен и совершенно другим.
Аналогия пришла в голову которая показывает разницу в алгоритмах. На примере парусных и дизельных лодок. НС это идти на дизельном двигателе. А биморф это парус. У каждого из способов передвижения есть плюсы. Идти на моторе быстрее чем на парусе. Но сколько бы вы не взяли топлива у вас всегда ограничен запас хода. Идя на парусе вы возможно идете медленнее, но у вас не ограничен запас хода. И когда вам ставят задачу пройти как можно дальше и как можно дольше без возможности зайти в порт вы возьмете большой запас топлива или неограниченный запас хода? У вас есть возможность только в начале решить какой будет размер бака это будет канистра или цистерна. Заправка одноразовая только в порту отправления. Даже сам тест это попытка померить кто куда заплыл при разных обьемах топлива. Большие НС с большим запасом «обучающей способности» (топлива) приблизятся ближе к цели. Сети из десяти нейронов топлива хватит только «прогреть мотор» и заглохнуть прямо в порту. Все приплыли куда смогли и остановились. У НС есть даже признаки по которым можно сказать что «приплыли» это значения результатов уходящие в максимумы. Признак того что сеть работает на пределе своей обучающей способности. Дальше ошибки будут не уменьшаться а увеличиваться. Возможности идти дальше нет и вас просто начинает сносить течением в сторону. Дальше плыть нельзя у всех закончилось топливо, поэтому просто тестом измеряем кто доплыл дальше всех. С парусом вы ограничены только временем. Ветер всегда дует и вы пусть медленнее но на постоянной скорости идете к своей цели. Тест на то кто заплыл дальше для вас бесполезен потому что у вас нет ограничения в запасе хода. Более того вы сможете сделать пять кругов туда и обратно если цель назначения изменится и вам будут приходить противоречивые обучения. Алгоритм просто поменяет свои результаты. Вас все еще продолжающего приближаться на парусе к цели пытаются сравнивать с болтающимися на волнах моторными лодками с пустыми баками. Не знаю опять же смог или нет передать разницу. Надеюсь что смог.
Не это самое главный плюс а избежать вот таких графиков. На НС рано или поздно график разворачивается и начинает не сходиться а расходиться. Это называется переобучение. В этой сети такого нет. Сеть расширяется увеличивая свою обучающую способность. Сколько бы не было данных сеть будет только уменьшать количество ошибок. Всегда, независимо от обьема обучающей выборки.
Вот пример реальный. При первом проходе сети было 188 ошибок в этохе а через примерно 200 эпох обучения ошибок не стало. Эта сеть еще не доучена до конца остальные ее биты не доучены до 100% но это только вопрос времени. http://биморф.рф/bmf:log/house?divider=2 это не вся сеть а только один бит итогового значения. У нас есть возможность обучать каждый из 20 битов по отдельности. Возможность всегда улучшить результаты какой обьем данных и сети у нас не был вот главный плюс этой сети. Если вы не знаете обьемов обучающей выборки то взял влюбой размер НС вы рано или поздно сталкнетесь с тем что она начнет переобучаться количество ошибок с каждым новым обучение начнет увеличиваться. Все. Дальше обучение конкретно этой НС невозможно. Здесь этого не может быть впринципе. Сеть просто добавляет новых элементов и обучается дальше каждый раз уменьшая количество ошибок. Сети с фиксированным количеством примеров как на кагле 1000 примеров или несколько тысяч это подходит под НС когда вы можете прикинуть ее размер чтобы она не схватила переобучение. А в биморфе мы всегда начинаем с нуля. А она сама добавляет нужное количество нейронов и с каждым новым обучением уменьшая количество ошибок. В любой момент времени мы можем обучающую выборку пополнить новыми данными, даже увеличить в десять раз и обучать спокойно дальше. Что никак не прокатит с НС обучающая способность НС задана в самом начале и не может быть увеличена по ходу обучения. На графике выше 95% это предел возможного для сети. больше этой цифры она никогда не обучится. Ни на трейне ни на тесте. То есть у вас нет ни единого шанса поднять этот параметр выше. А на биморфе вы об этом даже не задумываетесь Просто обучаете до нужного вам значения. В идеале хоть до 100% когда все известные вам примеры будут правильно прогнозироваться вашей сетью. Все появляющиеся новые примеры вы просто доучиваете опять же не думая о каких то ограничениях до любого нужного уровня.
Кстати может кто-то захочет лично проверить сказанное мной. Могу предоставить устаревшую версию алгоритма исполняемый файл bmf для линукс размером 2.5МБ. В алгоритм планируется внести большие изменения. Использовать можно подавая в консоли данные такого формата
на вход программе $cat iris.json | ./bmf iris.sqlite 100
где «iris.sqlite» файл где будет храниться данные сети и 100 это максимальное количество эпох для обучения после обучения программа укажет уровень своего обучения в процентах
Проверить данные можно подав на вход исходные данные без указания итогов и указав файл с обученной сетью
В нейроподобных растущих сетях, к которым, — как автор согласился со мной, — относится его алгоритм, нет ни backpropagation ни вообще ничего от классических НС.
Действительно в алгоритме мело что осталось от классических НС, просто очень много нужно изменить чтобы обеспечить работу такой сети. Если речь идет об «обратном распространении» то оно есть. Расчеты в подобных структурах проходят в обе стороны и на их основе принимаются решения о создании «новых связей». По поводу сжимает как архиватор вы не правы. Именно обучение хотя как я понял мало кто из собеседников готов ответить чем обучение отличается от запоминания, от этого и путаница в определениях. На странице машинного обучения в википедии я нашел такое определение алгорима
алгоритм, способный для любого возможного входного объекта выдать достаточно точный классифицирующий ответ.
алгоритм всегда дает точный классифицирующий ответ. Убедится можете на форме того же Ириса Фишера никаких дополнительных вычислений кроме прогнозов алгоритма не производится данные не корректируются и не ищутся ближайшие соседи. На любые данные в установленных диапазонах алгоритм выдаст «классифицирующий ответ» так что это именно обучение а не запоминание. И заметьте на весь диапазон а не только данные указанные в обучении это свойство «обобщением» вроде называется оно тоже есть тут.
Да и вообще, будь у вас в 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 нейронов требовалось всего сто нейронов. Может не так шустро но сеть в миллиард «нейронов» будет работать даже не домашнем компьютере. Разница в расчетах в этих алгоритмах все равно что сравнивать «классическое железо» и «квантовый компьютер» возможно есть задачи которые на квантовом компьютере не пойдут но я пока не вижу таких задач которые однозначно не подходят для нового алгоритма.
разница между качеством на запомненных и новых данных — при этом ухудшается
Не допускаете что это свойство только НС? Почему у людей «запоминание» не приводит к ухудшению уровня анализа. Опять же я вам не расскажу сейчас backpropagation мозга человека, но знаю результаты его работы. О результатах мы можем рассуждать мы сталкиваемся с ними все и постоянно.
то есть, для большого количества задач, найдутся более хорошие алгоритмы, чем ваш.
С этим сто процентов согласен. Если для достижения результата достаточно пару арифметических действий то не стоит усложнять. Но если вам не известен обьем данных и нужно постоянное улучшение так чтобы результат постоянно улучшался то вам простым сложением и делением не обойтись. Для решения первых достаточно привлечь студента и он вам подставит нужные действия в формулу. Для получения самообучающегося алгоритма не зажатого в обьем пары сотни примеров уже и нейронных сетей недостаточно.
не генерализуется: хорошо запоминает хеши, но плохо решает другие задачи, требующие хорошей генерализации (распознавание и классификация картинок, речи, текста)
Опять же тут верно. Действительно картинки получается медленно просчитывать но по другой причине. В алгоритм встроен аналог датамайнинга для получение наиболее оптимальной «новой связи» и 99% уходит не на расчет сети а на насчет наиболее подходящей связи. Это тоже вполне себе решаемая задача но пока не до ее оптимизации. Сейчас весь алгоритм это исполняемый файл в 2.5МБ если сравнивать с самолетом то его уровень это похоже на первый плайнер братьев Райд массу проблем нужно решить и переписать чтобы он превратился в Боинг. Но речь не о готовом продукте а о решении проблемы более оптимальным способом. Возможно еще несколько лет алгоритм не будет пригоден для практического использования нужно создать для него рынок это совершенно другой продукт. Все равно что людям всю жизнь пользующихся кнопочным телефоном предложить водить пальцем по экрану.
Перебирают архитектуру классических нейросетей более быстрыми методами, а не добавлением нейронов.
Ну обучать новые модели со слегка измененными атрибутами а потом выкидывать все которые были чуть хуже конкурентов так себе прирост в скорости.
Я выбрал другую задачу. Одна из указанных не подошла по формату данных шестнадцатеричные данные не так легко обрабатывать. Вторая требует доработки данных. Взял из тех которой нет в списке. Пока так себе результат. Есть ощущение, что не хватает вычислительных ресурсов. До обучения в нужном обьеме все еще долго. Есть идея как быстродействие еще раза в два — три поднять и нужно закупать сервера одного тут недостаточно. А вообще хочу на видюхах попробовать расчитывать, прям быстро это точно не получится сделать.
Вы упомянули задачу инвертирования необратимого хэша. Её невозможно решить обобщением, её возможно решить только запоминанием
Еще раз спрошу на каком оснвоании вы утверждаете что задачу невозможно решить? Кто вам об этом сказал? Может вы исследования проводили, пробовали уже решать подобные задачи? Или вы это в книжке прочитали? По вашему я должен вам поверить на слово, ведь аргументов подтверждающих ваши слова вы не приводите. А я программист я во всем сомневаюсь. Раньше помню в книжках писали что земля плоская и что ничто тяжелее воздуха не может летать а при езде в поезде люди будут задыхаться от нехватки воздуха. А ведь писали специалисты своего дела. Где сейчас эти аффторы? Опять же не обязательно полное решение. Для успеха самой затеи достаточно вероятность правильного предсказания увеличить на 10% и это уже будет успех. Мы сейчас обсуждаем не процент попадание а возможность применения алгоритма к подобным задачам.
Давайте немного поменяем условия. Задача описанная мной ранее содержит 40 бит. Пусть это будет рекомендательная ситуация по результатам просмотра 40 видео. Обратите внимание обьем данных остался тем же. Задача тоже теоретически детерминированная каждый новый пользователь будет смотреть разные видео в разном порядке. Обьем данных не меньше, и сеть должна содержать ту же «обучающую способность» он же размер сети что и предыдущая задача. Чем решение этой достаточно простой задачи отличается от предсказания одного бита на основании 40 бит почти «близких к случайным» данных. Можно ли сказать что задача с видео такая же нерешаемая для НС как и предсказание хеша в алгоритме шифрования? Почему все тогда выстаиваются в очередь чтобы решить такие задачи и никто не берется за хеши?
Поучите азы, а потом пишите что-то.
Есть видео в интернете. Жопа Хэнка главные герои тоже упорно отправляют внимательно читать библию. Любая непонятная ситуация обьясняется недостаточным знакомством с заповедями и библией. Кто вы такой чтобы сомневаться в словах Хэнка?
Вы упомянули задачу инвертирования необратимого хэша. Её невозможно решить обобщением, её возможно решить только запоминанием
откуда вам знать если никто не берется решать эту задачу просто на предположении на пустом месте? Пока не проведут соревнование и не получат реальных результатах о «детерминированности» задачи можно только догадываться. Напомню со времени практически в каждой хеш функции находят баги и зависимости которые «правильные алгоритмы» могли бы найти.
Я скорее верю, что или вы не понимаете какой-то ошибки в собственном же экспериментальном пайплайне из-за невежества, или вы шарлатан
Я скорее «безбулочный порубленоколбасный капустоед» ссылка на видео выше^
Прежде, чем писать, что «алгоритм А отстой, у меня есть новый крутой алгоритм Б», надо хотя бы изучить state-of-the-art в той области, которую вы собрались переворачивать.
Как только захочется есть колбаски я должен прочитать еще раз библию. И так до тех пор пока не пойму все величие в написанного в библии. Вы еще не веруете написанному в книжках? Тогда мы идем к вам. Любое сомнение — ересь читайте еще раз. Ну ну.
А на чем делают? Есть какой то алгоритм которым можно было бы выполнять стоящие перед нейронными сетями задачи, только более гибко и в значительно большем масштабе? Подскажите. Буду признателен. Говоря аналогиями первых строк статьи подскажите то на чем можно летать а не подпрыгивать. Возможно уже есть что-то подобное а я зря накинулся на НС сравнивая несравнимое и нужно просто обьяснять на примере более совершенных алгоритмов.
Вот об этом и надо было писать, если нашли новый подход.
Таки да. Простите за костность моего языка. Именно это я и пытаюсь обьяснить. Всего два свойства озвученные в тексте выше нужно поменять у нейронной сети и она становится пригодной для подобного рода задач, приобретая массу полезных фишечек за попытку озвучить которые меня тут совсем оплюют секта нейронных сетей. Как я понял тут совсем издалека нужно заходить информация в лоб может много кому взорвать мозг. Можно было бы сразу в заголовке написать «НС говно» но это была бы откровенная провокация а мы тут не рубиться все собрались а озвучивать проблемы и находить их решения.
Да остановитесь уже, биологическая аналогия не работает в современном deep learning.
Так и я об этом. НС это игрушка к которой многие аналогии реального мира не подходят. А мы живем в реальном мире и задачи у нас реальные. И задача не приблизить реальный мир к НС а НС заставить быль ближе к окружающему миру. Смотрите лучше на реальные сети а не на «ужимки» нейронной сети за рамки которых не можете выйти. Вы похожи на льва в клетке которому открыли дверь в реальный мир а у него сердечный приступ и паника в глазах «как это?». Сломайте систему попробуйте мыслить чуть больше чем вам позволяют нейронные сети. Мы же не о них сейчас хотя пытаемся найти точки соприкосновения на каких то общепринятых понятиях. Как то нужно обьяснить зверю сидевшему всю жизнь в клетке что такое саванна используя понятия стальные пруты, замок, квадратный кусок неба и трехразовое питание.
Размеры нейросетей меряют в количестве обучаемых весов обычно.
Я вас спрашивал не о НС а о мозге мухи. Пример показывает что попытки измерить сеть не обязательно нейронную в параметрах абсурдна. Опять сейчас скажу непонятную для вашего зашоренного мозга вещь — параметры могут добавляться и уходить прямо во время обучения. То, что я сравниваю постоянно с НС именно так и работает.
Осознание проблемы — первый шаг к её решению.
Именно. Осознайте саму проблемы и сможем обсудить пути ее решения. А то стопятьсот отписавшихся до вас говорят что у НС нет проблемы. Просто мы с ними не умеем работать. Но что не возьми выясняется что никто даже не берется решать указанные задачи с помощью НС. Парадокс правда ведь?
Хорошо, что человеческий мозг — не алгоритм машинного обучения
Человеческий мозг это то, к чему нам нужно стремиться. Обсуждать его свойства и думать как их реализовать в некоем подобии НС. Как было уже сказано не раз НС не позволяет пока даже приблизиться к мозгу мухи не говоря уже о человеческом.
Числа 25+25+50 являются правильным ответом. Это может быть не единственный ответ, но отвечающий всем требованиям. Вопрос то не дать все результаты а получить один правильный. Мы ищем любую из них которая даст нам требуемый результат. Мы не о математике говорим с ее строгими требованиями обратимости а о сходимости функции НС. Хотя строго говоря и в шифровании та же задача. Задача получить ключ подходящий к хешу а не «точно такой же ключ который у был у автора хеша» какой при этом исходный ключ из множества возможных подходящих к хешу уже не особо важно. Поэтому да нестрого говоря crc32 «обратима» как и sha1 тоже «обратима» есть последовательность бит которая будет удовлетворять требованиям функции вопрос только как ее найти. Найти способ не расставить веса на фиксированный размер сети а чтобы сеть могла себя в нужный момент модифицировать и расширить увелича свою обучающую способность. Это свойство сети даст постоянный пусть рост вероятности. Обратите внимание как сеть идет к 100% постоянно но неуклонно увеличива свои показатели. А ведь начала с нуля Лог обучения. Сети потребовалось добавить около 8800 правил чтобы этого добится. Устроит даже неполное попадание скажем в 99.99%. Додумать оставшиеся «непопавшие» биты это вполне решаемая прикладная задача.
Если поискать повнимательнее и 160 млрд. это не все к чему можно придраться. Можно к ненадежности источника придраться или к другим опечаткам. И с параметрами не совсем понял. Представьте что у вас не нейронная сеть с очень узкой задачей а ну пусть будет реальный мозг мухи. В каких параметрах вы ее измериете? При оценке сети в параметрах можно говорить об очень узкой задаче сети, скорее в контексте задачи для которой ее сделали. Но как только вы с сети получаете не фиксированное количество параметров сама оценка в параметрах становится бесполезной. Опять сейчас навалятся что я не понимаю как работает НС. Ну да ладно. Нейрон это условно. То, в чем можно изменить и НС и ненейронную сеть и человеческий мозг. Ведь есть у человеческого мозга примерное количество нейронов. А вот количество параметров в человеческом мозге не измерить потому что нет такого свойства у реальной сети.
Обучно у тех, кто занимается обучением оделей на постоянной основе есть инструменты перевода форматов друг в друга. У меня такой почти с самого начала работы есть. Строк на двести. За одно проверяет пустые данные и сигнализирует и запятые чтобы стояли вместо точек конвертирует. Буквально пару дней назад столкнулся что в csv могут использоваться числа без нуля алгоритм делал на нем ошибку и пришлось числа также конвертировать в удобочитаемый вид. Все это просто добавляется в скрипт готовый в любой момент сконвертировать данные.
А еще вас не смущает то, что для обучения требуется 31 эпоха на том же ирисе? Ведь для обычного «запоминания» вполне достаточно одного прохода по всем данным. Зачем потребовались остальные 30 эпох для обучения если на первой эпохе все эти данные уже запомнены? Никаких новых данных в обучающей выборке уже не появится. Может алгоритм как то эмулирует свою работу? Мимикрирует под нейронные сети или другие «взрослые» алгоритмы. Откуда берутся все эти данные кто их придумывает с плавным увеличением процента попадания если все уже запомнено после первой эпохи. http://биморф.рф/bmf:log/iris Это я так, выдумываю пытаюсь понять в чем бы я обвинил собеседника на вашем месте. Уж как то совсем бездарно и плоско если это так как я описал. Так что нет. Здесь что-то хитрее и далеко не «простое запоминание». А то, о чем вы написали делается за один вечер, только на следующий вечер это разоблачается легким движением. Что вы пока не смогли сделать. Не смогли разоблачить, но и я вас не смог убедить что это работает. Нужно больше времени и примеров работы чтобы доказать то или другое.
У вас есть методология оценки качества алгоритма если сам алгоритм недоступен? Только результаты его работы. Скорость там, время ответа, точность предсказания что там еще есть обучающая способность, способность обобщения. Я создаю алгоритм и возникла необходимость в оценке качества его работы, но как это сделать пока непонятно. Исходным кодом поделиться не могу, а вот возможность загружать датасеты есть и параметры обучения все собираются. Есть апи доступа к проверке входящих данных. Никаких специальных параметров для настройки нет. Все работает из коробки. Буду признателен если подскажите как это можно было бы сделать.
Свойство запоминания легко проверяется. Вариантов которые можно ввести даже при 10 атрибутах входящих учитывая диапазон в 1000 вариантов это 1000^10 и если просто запомнить все значения алгоритм будет выдавать только запомненные данные и теряться при изменении любого параметра в сторону. Но тут не так. Легко проверяются значения атрибутов отличающихся от выборки. И они должны быть близкими к атрибутам выборке. Изменити любой параметр на 0.1 и он не должен измениться, точнее вероятность изменения небольшая. Попробуйте измените два параметра, а если три. Все эти варианты хороший алгоритм должен учитывать. А если каждый из параметров сместить в разные стороны то каким будет ответ? Способность обобщения это вроде называется могу что нибудь перепутать. И если все запомнить то ни о каком обобщении не может идти речь. Но на любом обученном алгоритме есть вомзожность проверить параметры. В форме на уже обученной сети попробуйте поменять значения и очень быстро поймете, что это не запоминания а именно обучение. Это обобщение будет работать даже при одном значении оно только не будет никогда меняться. При двух все пространство доступное значений примерно поделиться на два. При трех создаться три разных части и так далее. При десяти эти действия происходят в десятимерном пространстве. Опять же есть ошибочные данные которые со временем алгоритм должен забыть. Есть еще фактор неполных данных когда в части примеров отсутствуют параметры. Это тоже простым запоминанием не исправить, как то должна разрулиться ситуация что параметра нет и его пустые значения должны чем то заполниться. Есть коррекция допущенных в начале неточных данных. Любы данные верны не на 100% а со временем могут замеситься другими данными. Звучит вроде просто, но чтобы это реализовать у меня ушло пять лет. И самое главное изменение и самое сложное. Все поступающие данные не должны ломать уже полученные знания. Параметры предсказаний не должны уменьшаться а по возможности должны улучшаться. Вот это свойство сложнее всего сделать. Во всяком случае НС с этим не справляется да как и подавляющее большинство других алгоритмов. Здесь же как написал Ященко «Первые из них дают возможность образовывать смыслы, как объекты и связи между ними по мере построения самой сети, т.е. число объектов, как и связей между ними будет такое именно, какое нужно, будучи ограниченным лишь объемом памяти машины.» и я подписываюсь под его словами. Я вижу этом свойстве как оно работает каждый день.
Уже писал выше чем отличается запомнить от обучиться. Запомнить это знать ответы только тех примеров которые есть в выборке, отклонение в паре параметров в стороны уже не дает ничего потому что вы запомнили а не обучились. Запоминание не требует многократной подстройки данных и запоминается в один проход. Данные больше не изменятся смысла одно и тоже запоминать многократно нет. В биморфе вы можете вбить примеры Ирисов которых нет в выборке (в указанных пределах) и алгоритм на все возможные варианты будет давать предсказание чего не сделает «запоминание» никакой дополнительной обработки помимо результатов запомненного не производится. Странно, что приходится «разжевывать» такие простые вещи человеку занимающемуся алгоритмами машинного обучения. По хорошему встречал информацию что не все считают K-ближайших соседей (KNN) алгоритмом машинного обучения в нем просто нечему обучаться. Также и с алгоритом Vowpal Wabbit который строго тоже ничему обучиться не может. Это просто свойство которое есть у выборки. Какой то модели и ее обучения для этого не требуется.
Не факт. Но не в этом плюс алгоритма. Давайте по порядку. Разделив всю выборку Ирисов на 30% и 70% и обучившись на обучающей выборке проверил результат на тесте допустим получил 90% (условно) что это за цифра и что она нам дает зная что через минуту добавив оставшиеся 30% к 70% и обучив еще с десяток эпох я получу 98-100% но уже на полной выборке. Что это за цифра 90% о чем она мне говорит? Это просто попадание в какой то диапазон при недообученном алгоритме на неполных данных. Если у меня есть полные данные зачем мне выяснять какое будет попадание на частично обученном алгоритме? И зачем это если сразу же после этого я обучу алгоритм на оставшихся неизвестных ему данных и получу совершенно другой результат. Проверка работы алгоритма на недообученных данных это какой то странный способ получить ничего не значащих цифр. А давайте ученику в школе повырываем каждый десятый лист в учебниках и попробуем проверить как он «додумает» недостающую информацию? Понимаете всю абсурдность ситуации? Для меня это число просто какое то промежуточное которое было до того пока выборка не стала полной. О результативности она не говорит потому что внимание «выборка не полная». А после пополнения выборки до полной результат будет дообучен и совершенно другим.
Вот пример реальный. При первом проходе сети было 188 ошибок в этохе а через примерно 200 эпох обучения ошибок не стало. Эта сеть еще не доучена до конца остальные ее биты не доучены до 100% но это только вопрос времени. http://биморф.рф/bmf:log/house?divider=2 это не вся сеть а только один бит итогового значения. У нас есть возможность обучать каждый из 20 битов по отдельности. Возможность всегда улучшить результаты какой обьем данных и сети у нас не был вот главный плюс этой сети. Если вы не знаете обьемов обучающей выборки то взял влюбой размер НС вы рано или поздно сталкнетесь с тем что она начнет переобучаться количество ошибок с каждым новым обучение начнет увеличиваться. Все. Дальше обучение конкретно этой НС невозможно. Здесь этого не может быть впринципе. Сеть просто добавляет новых элементов и обучается дальше каждый раз уменьшая количество ошибок. Сети с фиксированным количеством примеров как на кагле 1000 примеров или несколько тысяч это подходит под НС когда вы можете прикинуть ее размер чтобы она не схватила переобучение. А в биморфе мы всегда начинаем с нуля. А она сама добавляет нужное количество нейронов и с каждым новым обучением уменьшая количество ошибок. В любой момент времени мы можем обучающую выборку пополнить новыми данными, даже увеличить в десять раз и обучать спокойно дальше. Что никак не прокатит с НС обучающая способность НС задана в самом начале и не может быть увеличена по ходу обучения. На графике выше 95% это предел возможного для сети. больше этой цифры она никогда не обучится. Ни на трейне ни на тесте. То есть у вас нет ни единого шанса поднять этот параметр выше. А на биморфе вы об этом даже не задумываетесь Просто обучаете до нужного вам значения. В идеале хоть до 100% когда все известные вам примеры будут правильно прогнозироваться вашей сетью. Все появляющиеся новые примеры вы просто доучиваете опять же не думая о каких то ограничениях до любого нужного уровня.
файл 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"}
}
Кому интересно пишите я соберу для вас «пробничек».
алгоритм всегда дает точный классифицирующий ответ. Убедится можете на форме того же Ириса Фишера никаких дополнительных вычислений кроме прогнозов алгоритма не производится данные не корректируются и не ищутся ближайшие соседи. На любые данные в установленных диапазонах алгоритм выдаст «классифицирующий ответ» так что это именно обучение а не запоминание. И заметьте на весь диапазон а не только данные указанные в обучении это свойство «обобщением» вроде называется оно тоже есть тут.
В двоичной структуре все по другому. Есть сиутации в которых мы можем сказать что «огромная» часть сети вообще никак не влияет. Вот этот эффект a&(b|c&d) Есть у вас в формуле a отрицательна то вам можно все остальное вообще не вычислять. Вся правая часть (b|c&d) не влияет на результат результат в любом случае будет false Если a == false и это очень сильно используется в расчетах и обучении сейчас есть цифры по расчетам Для расчета достаточно 3.2% (32 нейрона) при сети в тысячу нейронов, 0.1% (1 тыс) при миллионе «нейронов» в сети и 0.003% (32 тыс) при миллиарде. А обучение происходит еще быстрее потому что расчет уже произошел и часть результатов известна. Формула количества нейровнов влияющих на расчет это «два в степени логарифма двух от количества нейронов деленое на два» но это не точно. Одно это дает огромный плюс такой схеме. Не нужно «вагон железа» для того чтобы создать миллиард нейронов. Представьте если бы для расчета НС в сто слоев по 1000 нейронов требовалось всего сто нейронов. Может не так шустро но сеть в миллиард «нейронов» будет работать даже не домашнем компьютере. Разница в расчетах в этих алгоритмах все равно что сравнивать «классическое железо» и «квантовый компьютер» возможно есть задачи которые на квантовом компьютере не пойдут но я пока не вижу таких задач которые однозначно не подходят для нового алгоритма.
С этим сто процентов согласен. Если для достижения результата достаточно пару арифметических действий то не стоит усложнять. Но если вам не известен обьем данных и нужно постоянное улучшение так чтобы результат постоянно улучшался то вам простым сложением и делением не обойтись. Для решения первых достаточно привлечь студента и он вам подставит нужные действия в формулу. Для получения самообучающегося алгоритма не зажатого в обьем пары сотни примеров уже и нейронных сетей недостаточно.
Опять же тут верно. Действительно картинки получается медленно просчитывать но по другой причине. В алгоритм встроен аналог датамайнинга для получение наиболее оптимальной «новой связи» и 99% уходит не на расчет сети а на насчет наиболее подходящей связи. Это тоже вполне себе решаемая задача но пока не до ее оптимизации. Сейчас весь алгоритм это исполняемый файл в 2.5МБ если сравнивать с самолетом то его уровень это похоже на первый плайнер братьев Райд массу проблем нужно решить и переписать чтобы он превратился в Боинг. Но речь не о готовом продукте а о решении проблемы более оптимальным способом. Возможно еще несколько лет алгоритм не будет пригоден для практического использования нужно создать для него рынок это совершенно другой продукт. Все равно что людям всю жизнь пользующихся кнопочным телефоном предложить водить пальцем по экрану.
Ну обучать новые модели со слегка измененными атрибутами а потом выкидывать все которые были чуть хуже конкурентов так себе прирост в скорости.
Спасибо.
Еще раз спрошу на каком оснвоании вы утверждаете что задачу невозможно решить? Кто вам об этом сказал? Может вы исследования проводили, пробовали уже решать подобные задачи? Или вы это в книжке прочитали? По вашему я должен вам поверить на слово, ведь аргументов подтверждающих ваши слова вы не приводите. А я программист я во всем сомневаюсь. Раньше помню в книжках писали что земля плоская и что ничто тяжелее воздуха не может летать а при езде в поезде люди будут задыхаться от нехватки воздуха. А ведь писали специалисты своего дела. Где сейчас эти аффторы? Опять же не обязательно полное решение. Для успеха самой затеи достаточно вероятность правильного предсказания увеличить на 10% и это уже будет успех. Мы сейчас обсуждаем не процент попадание а возможность применения алгоритма к подобным задачам.
Давайте немного поменяем условия. Задача описанная мной ранее содержит 40 бит. Пусть это будет рекомендательная ситуация по результатам просмотра 40 видео. Обратите внимание обьем данных остался тем же. Задача тоже теоретически детерминированная каждый новый пользователь будет смотреть разные видео в разном порядке. Обьем данных не меньше, и сеть должна содержать ту же «обучающую способность» он же размер сети что и предыдущая задача. Чем решение этой достаточно простой задачи отличается от предсказания одного бита на основании 40 бит почти «близких к случайным» данных. Можно ли сказать что задача с видео такая же нерешаемая для НС как и предсказание хеша в алгоритме шифрования? Почему все тогда выстаиваются в очередь чтобы решить такие задачи и никто не берется за хеши?
Есть видео в интернете. Жопа Хэнка главные герои тоже упорно отправляют внимательно читать библию. Любая непонятная ситуация обьясняется недостаточным знакомством с заповедями и библией. Кто вы такой чтобы сомневаться в словах Хэнка?
откуда вам знать если никто не берется решать эту задачу просто на предположении на пустом месте? Пока не проведут соревнование и не получат реальных результатах о «детерминированности» задачи можно только догадываться. Напомню со времени практически в каждой хеш функции находят баги и зависимости которые «правильные алгоритмы» могли бы найти.
Я скорее «безбулочный порубленоколбасный капустоед» ссылка на видео выше^
Как только захочется есть колбаски я должен прочитать еще раз библию. И так до тех пор пока не пойму все величие в написанного в библии. Вы еще не веруете написанному в книжках? Тогда мы идем к вам. Любое сомнение — ересь читайте еще раз. Ну ну.
А на чем делают? Есть какой то алгоритм которым можно было бы выполнять стоящие перед нейронными сетями задачи, только более гибко и в значительно большем масштабе? Подскажите. Буду признателен. Говоря аналогиями первых строк статьи подскажите то на чем можно летать а не подпрыгивать. Возможно уже есть что-то подобное а я зря накинулся на НС сравнивая несравнимое и нужно просто обьяснять на примере более совершенных алгоритмов.
Таки да. Простите за костность моего языка. Именно это я и пытаюсь обьяснить. Всего два свойства озвученные в тексте выше нужно поменять у нейронной сети и она становится пригодной для подобного рода задач, приобретая массу полезных фишечек за попытку озвучить которые меня тут совсем оплюют секта нейронных сетей. Как я понял тут совсем издалека нужно заходить информация в лоб может много кому взорвать мозг. Можно было бы сразу в заголовке написать «НС говно» но это была бы откровенная провокация а мы тут не рубиться все собрались а озвучивать проблемы и находить их решения.
Так и я об этом. НС это игрушка к которой многие аналогии реального мира не подходят. А мы живем в реальном мире и задачи у нас реальные. И задача не приблизить реальный мир к НС а НС заставить быль ближе к окружающему миру. Смотрите лучше на реальные сети а не на «ужимки» нейронной сети за рамки которых не можете выйти. Вы похожи на льва в клетке которому открыли дверь в реальный мир а у него сердечный приступ и паника в глазах «как это?». Сломайте систему попробуйте мыслить чуть больше чем вам позволяют нейронные сети. Мы же не о них сейчас хотя пытаемся найти точки соприкосновения на каких то общепринятых понятиях. Как то нужно обьяснить зверю сидевшему всю жизнь в клетке что такое саванна используя понятия стальные пруты, замок, квадратный кусок неба и трехразовое питание.
Я вас спрашивал не о НС а о мозге мухи. Пример показывает что попытки измерить сеть не обязательно нейронную в параметрах абсурдна. Опять сейчас скажу непонятную для вашего зашоренного мозга вещь — параметры могут добавляться и уходить прямо во время обучения. То, что я сравниваю постоянно с НС именно так и работает.
Именно. Осознайте саму проблемы и сможем обсудить пути ее решения. А то стопятьсот отписавшихся до вас говорят что у НС нет проблемы. Просто мы с ними не умеем работать. Но что не возьми выясняется что никто даже не берется решать указанные задачи с помощью НС. Парадокс правда ведь?
Человеческий мозг это то, к чему нам нужно стремиться. Обсуждать его свойства и думать как их реализовать в некоем подобии НС. Как было уже сказано не раз НС не позволяет пока даже приблизиться к мозгу мухи не говоря уже о человеческом.