Comments 157
В нейронных сетях проблему затухания сигнала могут решать рекуррентные сети, по сути являясь костылем лишь уменьшая проблему, не решая ее полностью.
Слышал звон, не знаю где он. В НС есть проблема затухания градиента, а не «сигнала». И в обычных рекуррентных сетях эта проблема как раз явно выражена, поэтому изобрели всяке LSTM/GRU итд, в которых эта проблема значительно меньше.
Время на обучение сокращается многократно ограничиваясь изменениям нескольких элементов сети.
Сильное утверждение. Обосновывать его вы, конечно же, не будете. Да и вообще объяснять о чем вообще речь.
Слышал звон, не знаю где он. В НС есть проблема затухания градиента, а не «сигнала». И в обычных рекуррентных сетях эта проблема как раз явно выражена, поэтому изобрели всяке LSTM/GRU итд, в которых эта проблема значительно меньше.
Я бы дополнил, что даже если говорить про feed-forward сети, с ней тоже успешно борются всякими резидуал-связями, например.
Позвольте спросить Вы много разработали алгоритмов машинного обучения?
Ситуация в которой алгоритм перестает обучаться а потом и совсем ломается по вашему не выглядет недостатком? Из за переобучения и из за ряда других фатальных недостатков нейронные сети нельзя обучать в потоковых задачах. Надеюсь вы это их преимущества и не станете называть?
Щто? Что вы называете «потоковыми задачами»?
2) при правильно выбранном Learning Rate нейросеть (модель) не «ломается» по мере обучения.
3) Не увидел в вашей статье и комментариях никаких «фатальных» недостатков, да и вообще недостатков. Сплошная вода без малейшей конкретики.
Предлагаю вам решить хоть одну задачу с помощью нейронных сетей, потом уже критиковать, указывая на конкретные проблемы конкретной сети.
— Чуваки, вы делаете это не правильно.
— Мы всегда все делаем правильно!
— Вот эту штуку можно было бы улучшить.
— Мы всегда все делаем правильно!
Тем не менее, даже с этими ограничениями и «невообразимыми» сложностями (а где их нет!) нейросети позволяют хорошо решать многие практические задачи, зачастую, значительно лучше других методов. Так что смысл вашей критики по-прежнему от меня ускользает, и весьма напоминает рассказ про хакера и солонку.
Ладно бы вы говорили, что нейросети что-то не могут делать, но вы по сути лишь рассказываете, что вы не умеете нейросети настраивать, чтобы они нормально работали. Да на здоровье, не настраивайте — у меня больше заказчиков будет.
habrastorage.org/webt/ma/eo/am/maeoamm7d-cgnya6lf4nsubljbg.png
В том числе, работ по бинаризации нейросетей — десятки и сотни каждый месяц. По спайковым нейросетям — даже ещё больше работ.
Но, увы, анализируя средний и топовый уровень этих работ и скорость прогресса, а также принимая во внимание уровень знаний, которые демонстрируют эти учёные и сравнивая его с вашим, я скорее поверю в то, что вы искренне заблуждаетесь в возможностях собственных изобретений, нежели в то, что вы сделали что-то намного лучше них. Поэтому вам и предлагается метод экспериментальной проверки ваших результатов, ведь без него всем скорее кажется, что вы очередной шарлатан, который предлагает товары из «магазина на диване», безапелляционно и уверенно увещевающий, что без этой квадратной сковородки, которая сама равномерно распределяет по ней блинчики во время приготовления еды, мы не сможем жить. И приводит в подтверждение эту картинку с квадратными колёсами, а вовсе не формулы, из которых следует, насколько улучшится жизнь обладателя этой сковородки — сколько часов и денег он сэкономит на этой покупке. Вместо того, чтобы давить нас логикой, вы давите на эмоции. Задумайтесь, почему вы так поступаете?
Как раз это и удивляет. Почему она за пятьдесят лет кроме перделок и свистелок ничего более существенного не может сделать.
На случай, если вы не заметили мой комментарий ниже, а не специально проигнорировали, повторюсь: современные computer vision, NLP, speech recognition и т.д. работают чуть менее, чем полностью на нейросетях.
Предлагаю выбрать алгоритм и обучить. Пусть победит сильнейший.
Разве это не то, что мы вам как раз предлагаем, советуя пойти со своим алгоритмом на кагл?
Но как я уже сказал, вам это не грозит (как минимум, в ближайшее время).
Впрочем, не понимаю, что вам мешает открыть код? Ну или даже, подумаешь, победите, откажетесь открывать код, и вас дисквалифицируют с лидерборда. Зато всем докажете, что ваши алгоритмы работают.
Об этом и речь. Я не могу открыть код следовательно по правилам я не могу победить.
Я же прямо спросил: что вам мешает открыть алгоритм?
Думаете будет хорошо звучать «Меня дисквалифицировали на кагле»?
Думаю, все ваши последние комментарии звучат, как отмазка, потому что вы понимаете, что на реальной задаче ничего у вас не работает.
А жаль, я даже надеялся, что вы сами не осознаёте проблемы, и, может, удастся вам действительно помочь.
Читайте условия внимательно.
Ещё раз: шанс победить у вас есть, никто юридически не обязывает вас открывать алгоритм после победы.
Ну вообще это зависит от конкурса. В большинстве случаев победитель должен предоставить код организаторам под permissive лицензией, если не хочет быть удаленным с лидерборда.
Впрочем, во многих конкурсах это несет в себе только цель отсеять читеров (которые использовали прямо запрещенные лики, ручную разметку и так далее).
Это не ноль, но и не «решим все задачи влёт».
>Я вам сейчас говорю об алгориме который не нужно настраивать. Все работает из коробки. В
Во-первых, всегда нужно учитывать время работы и затраты ресурсов. Никого не интересует алгоритм, который нельзя потом никак применить. Всегда есть какие-то практические ограничения, например, распознавание речи или видео не может нормально работать на мобильном телефоне из-за слабых процессоров и быстрого жора батарейки. А какие-то задачи — на компьютере без ускоряющей вычисления видюшки, или без кластера на N машин в облаке (как Альфа-Го Старкрафт 2).
Во-вторых, я уверен, что оно у вас так хорошо «работает» лишь на трейн-сете, а не на валидационном сете. Таких фальстартов я как преподаватель видел сколько угодно.
Так что проверьте всё как следует, а потом уже пишите, что нашли на поверхности то, что другие ископали уже вдоль и поперёк. (Работы по последовательному добавлению нейронов и по модификациям метода обратного распространения я тоже читал, да, рекордов они не ставят обычно).
Во-вторых, я уверен, что оно у вас так хорошо «работает» лишь на трейн-сете, а не на валидационном сете. Таких фальстартов я как преподаватель видел сколько угодно.
Я снова боюсь навлечь на себя поток критики но скажу. Я честно боюсь «заразится» этим
И проверку работы сети выборками которую все считают эталонным я считаю в корне непраивльной.
*жидкие апплодисменты аудитории*
Вы просто докидываете тестовую выборку и он ее дообучает увеличивая свою сеть до нужных 200 нейровно.
Вы понимаете, что вам не нужно, чтобы модель работала на данных, которые она видела? Для этого можно просто завести словарь «данные-ответ». Вам нужно, чтобы модель работала на данных, которые ей показаны не были — на тестовой выборке, которую нельзя просто взять и докинуть в модель.
Тестовые выборки необходимы только на алгоритмах которые не смогут дообучить ее при необходимости.
Нет, господи, нет, тестовые выборки необходимы для любых алгоритмов, которые мы хотим отправить в прод и ожидаем, что в проде они будут работать так же хорошо, как в наших экспериментах.
Кстати а почему нельзя просто докинуть?
Вам нужно, чтобы модель работала на данных, которые ей показаны не были — на тестовой выборке, которую нельзя просто взять и докинуть в модель.
Или это всетаки очередной «фатальный» недостаток НС который так упорно не хотят признавать мои собеседники? Я просто не умею готовить НС говорили мне они, у НС нет «фатальных» недостатков повторяли они.
Элементарно: Потому что в реальной обстановке применения нейросети вы просто не знаете правильных ответов.
Утрируем:
Робот-дозатор себя спрашивает — кошечка или собачка перед ним? И он должен правильно ответить, а на основании этого ответа, если кошечка, то из дозатора должен посыпаться кошачий корм, а если собачка — то собачий. И не наоборот. И хозяин не должен ему говорить, кто перед ним в этот раз, иначе нет никакого толку от такого робота.
То же самое в случае Siri, вы не знаете, какую фразу сейчас скажет человек, и он не будет каждый раз эту фразу писать потом текстом после неправильного ответа Siri, повторяя при этом «тупая железка».
Тестовая выборка — это экзамен для такого робота, показывающая, можно ли ему что-то доверить на практике.
А если вы знаете ответы, можете доучиваться, и качество *на новых данных* вас не сильно волнует — то конечно, есть лёгкие методы online-learning, которые можно хоть на чайник поставить.
То же самое с распознаванием изображений.
Самый главный параметр это «Процент полного совпадения %» и пока он равен 2.8% затрачено 635с. и обучена 21 эпоха обучения на моем домашнем компе. Обратите внимание как будет расти этот процент исходя из затраченного времени.
Самый большое результат это 0.976~97% на обучении и 0.990~99% на тесте. Если мне удасться расчитать эту сеть на 100% это будет хорошим результатом? Здесь можно увидеть подробный лог по каждой эпохе обучения с указанием процента и количеством ошибок. Сеть сейчас обучается обновляйте страницу для получения последних данных биморф.рф/bmf:log/wine
В общем следите, это должно быть интересно биморф.рф/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% любой его сочтет говнокодом. На говнокоде даже есть пару моих перлов. Это еще одна причина не показывать свой код. Это слишком интимно, пишу как мне удобно, очень часто это не совпадает со стилем и синтаксисом среднестатистического кодера.
Вы, слава богу, добрались до тестирования на валидационном сете, это большой прогресс, но для валидационного сета из 178 элементов разница качества в 0.6% — это всего *одна ошибка* алгоритма. Несколько ошибок — штук 5 — может быть вполне объяснено случайностями во время обучения.
Нейросети же любят за то, что они лучше всего решают задачи на датасетах из сотен тысяч и миллионов записей, пусть и делая там тысячи ошибок, но зато обобщая информацию из всего миллиона записей.
Вы вышли из области применения DL, вы сейчас в области классического ML, и тут, я уверен, классические алгоритмы будут сравнимы с вашим алгоритмом по качеству, особенно если усреднить результаты хотя бы по нескольким датасетам.
Да, и по этому конкретному датасету wine: расскажите, сколько у вас записей было в train, сколько в val, и эти множества же не пересекались друг с другом, верно?
Даже сам термин нейронные сети это биологический термин. Поэтому и удобно его показывать на биологических аналогиях, так сказать на кошачках. Но вы и на этих терминах не поняли о чем речь.
Даже сам термин нейронные сети это биологический термин. Поэтому и удобно его показывать на биологических аналогиях, так сказать на кошачках.
А термин «лес» — это термин из природоведения, но недостатки random forest-а на примере древообрабатывающей промышленности никто не показывает. Это, конечно, гипербола, но суть, надеюсь, ясна: биологические аналогии в приложении к современному DL могут нести максимум иллюстративную роль.
Из за переобучения и из за ряда других фатальных недостатков нейронные сети нельзя обучать в потоковых задачах.
Я фразу «ряд фатальных недостатков» слышу от вас не в первый раз, а самого ряда почему-то не вижу.
Давайте так. Дайте реальную задачу (конкретный датасет, например), на котором нейросети плохо работают по заявленным вами причинам (сначала их неплохо бы внятно сформулировать, кстати), а потом реализуйте и продемонстрируйте на этой задаче ваш алгоритм хотя бы на уровне proof-of-concept. Тогда можно будет о чем-то говорить. А пока же статья ни о чем.
Но если вы придумали как это эффективно делать в парадигме НС — опишите это внятно с конкретным кодом, раз уж у вас это уже работает. Там уже будет видно, какое отношение ваше решение имеет к НС… Может статься, что почти никакого, но если оно эффективно решает (а под эффективно я имею в виду лучше стандартных криптоаналитических методовов) — почему нет? тоже интересно.
Судя по всему даже озвучить решения не получится, уже слили. Это происходит не первый раз подозреваю что хабр окупировали те самые 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.
Зачем вы вообще упоминаете нейросети и рассказываете глупости о каких-то недостатках, если датасета нет?
Но, так уж и быть, я вам подскажу: это провокационный вопрос. Датасет есть — вашим скриптом можно сгенерировать приличных размеров обучающую выборку, а также тестовый холдаут.
Поэтому идем дальше.
Вот об этой гиблой затее все это делать на НС я и говорил.
Нейросети не нужно, чтобы данные повторялись, о чем вы? У вас же не временные ряды какие-нибудь, где паттерны меняются. Обучили один раз в оффлайне, а дальше на инференс она работает на новых данных, и всё ок.
Как? На вашей задаче не работает?
Да что вы?
Может, это потому что хэши специально задумываются необратимыми? И поэтому для хорошей хэш-функции не должно быть возможно предсказать по выходному хэшу биты входных данных?
Поймите, это не задача для алгоритмов типа нейросетей. Не из-за того, что у них есть «затухание сигнала», не из-за того, что у них «фиксированный размер». Это просто в целом не задача для недетерминированных предсказательных алгоритмов.
Смешнее другое — вы утверждаете, что ваш «двоичный алгоритм машинного обучения» с этой задачей справляется? Уж простите, но попахивает ошибкой в эксперименте (в том самом, код которого вы не хотите публиковать), потому что если вам удается по выходу хэша эффективно предсказывать биты входа хэша, вы, пожалуй, сделали прорыв в криптографии.
Вообще я бы задумался вот над чем. За 50 лет существования нейросети по хорошему кроме погремушек хвалится нечем. Исходя только из этого факта я бы уже задумался что тут что-то не число. Или просто никто не умеет фишки НС использовать?
А вот это я забыл упоминуть. Берем десять разных алгоритмов. Обучаем все. И потом просто выкидываем те, которые хуже. Если бы так матиматики к своей работе подходили то бы мы число pi сейчас на генераторах случайных числе вычисляли а потом брали просто который ближе. Нет проблем с расчетами числа пи, просто у тебя недостаточно быстрый генератор случайных чисел.
Пусть предсказывает crc32 ну вроде обратимая, значительно легче.
Пардон, а зачем вам решать детерминированную алгоритмическую задачу нейросетями? Вы вообще понимаете, какой критерий для задачи должен соблюдаться, чтобы она относилась к классу ML-задач?
Или мы говорим о решении вообще произвольных задач? Ну тогда нейросети плохи в разгрузке вагонов с углём. Какой ужас…
Нет уж, давайте возьмём какую-нибудь реальную задачу классификации или регрессии. Идите на kaggle, например, и выбирайте.
Просто выше меня все убеждали что нет проблем
Никто не писал, что у нейросетей нет проблем. У нейросетей есть проблемы. Вам пишут, что ничто из перечисленного в вашей статьей не относится к проблемам нейросетей, а работоспособность и качество вашего «альтернативного» алгоритма в статье никак не описываются и не демонстрируются.
нет нерешаемых задач
Ну, чтобы так переврать тред, надо быть или глупым, или очень жирным троллем.
Вы описали задачу, которая заведомо не решается вообще, и предложили на ней сравнивать два алгоритма. Да я вам и так скажу, как они (оба) на ней будут перформить — очень плохо.
Вообще я бы задумался вот над чем. За 50 лет существования нейросети по хорошему кроме погремушек хвалится нечем. Исходя только из этого факта я бы уже задумался что тут что-то не число. Или просто никто не умеет фишки НС использовать?
Выходите из пещеры в современный мир. У нас тут есть computer vision, NLP, speech recognition и много других областей, где нейросети держат state-of-the-art.
Хотите позиционировать ваш
Возьмите любую реальную задачу из какого-нибудь из этих доменов и решите её с помощью вашей модели. Побьёте топовые результаты — честь вам и хвала.
И если учесть, что статья 2015 года, сомневаюсь, что он актуален.
Впрочем, это я так, чисто придраться к вашему сообщению (потому что вы в очередной раз написали глупость).
А если отвечать серьезно, то:
1. Вам уже ответили, что вы не понимаете разницы между обобщением и запоминанием и, соответственно, неправильно выбираете методы.
2. Вы почему-то меряете размеры сетей «нейронами» (впрочем, не почему-то, а потому что вы всё ещё придерживаетесь бесполезной биологической аналогии), тогда как все сейчас меряют размеры моделей числом параметров.
Представьте что у вас не нейронная сеть с очень узкой задачей а ну пусть будет реальный мозг мухи.
Да остановитесь уже, биологическая аналогия не работает в современном deep learning. Сколько раз нужно повторять, чтобы вы услышали?
В каких параметрах вы ее измериете?
Размеры нейросетей меряют в количестве обучаемых весов обычно.
Опять сейчас навалятся что я не понимаю как работает НС. Ну да ладно.
Осознание проблемы — первый шаг к её решению.
А вот количество параметров в человеческом мозге не измерить потому что нет такого свойства у реальной сети.
Хорошо, что человеческий мозг — не алгоритм машинного обучения, а искусственные нейросети — не модели человеческого мозга.
Да остановитесь уже, биологическая аналогия не работает в современном deep learning.
Так и я об этом. НС это игрушка к которой многие аналогии реального мира не подходят. А мы живем в реальном мире и задачи у нас реальные. И задача не приблизить реальный мир к НС а НС заставить быль ближе к окружающему миру. Смотрите лучше на реальные сети а не на «ужимки» нейронной сети за рамки которых не можете выйти. Вы похожи на льва в клетке которому открыли дверь в реальный мир а у него сердечный приступ и паника в глазах «как это?». Сломайте систему попробуйте мыслить чуть больше чем вам позволяют нейронные сети. Мы же не о них сейчас хотя пытаемся найти точки соприкосновения на каких то общепринятых понятиях. Как то нужно обьяснить зверю сидевшему всю жизнь в клетке что такое саванна используя понятия стальные пруты, замок, квадратный кусок неба и трехразовое питание.
Размеры нейросетей меряют в количестве обучаемых весов обычно.Я вас спрашивал не о НС а о мозге мухи. Пример показывает что попытки измерить сеть не обязательно нейронную в параметрах абсурдна. Опять сейчас скажу непонятную для вашего зашоренного мозга вещь — параметры могут добавляться и уходить прямо во время обучения. То, что я сравниваю постоянно с НС именно так и работает.
Осознание проблемы — первый шаг к её решению.Именно. Осознайте саму проблемы и сможем обсудить пути ее решения. А то стопятьсот отписавшихся до вас говорят что у НС нет проблемы. Просто мы с ними не умеем работать. Но что не возьми выясняется что никто даже не берется решать указанные задачи с помощью НС. Парадокс правда ведь?
Хорошо, что человеческий мозг — не алгоритм машинного обученияЧеловеческий мозг это то, к чему нам нужно стремиться. Обсуждать его свойства и думать как их реализовать в некоем подобии НС. Как было уже сказано не раз НС не позволяет пока даже приблизиться к мозгу мухи не говоря уже о человеческом.
Так и я об этом. НС это игрушка к которой многие аналогии реального мира не подходят.
Астанавитесь. Если к алгоритму не подходят аналогии реального мира, это не значит, что алгоритм плохой.
А мы живем в реальном мире и задачи у нас реальные. И задача не приблизить реальный мир к НС а НС заставить быль ближе к окружающему миру. Смотрите лучше на реальные сети а не на «ужимки» нейронной сети за рамки которых не можете выйти.
Нейросети — это и есть алгоритмы, решающие реальные задачи реального мира.
Поймите, мы оптимизируем с помощью нейросетей бизнес-метрики и решаем прикладные задачи, а не пытаемся моделировать мозг.
Я вас спрашивал не о НС а о мозге мухи. Пример показывает что попытки измерить сеть не обязательно нейронную в параметрах абсурдна.
Нет, пример показывает, что в чьем-то мозгу не хватает нейронов, чтобы осознать, что у нейросети, которая модель машинного обучения, и нейросети, которая у вас в голове, общее только название. Не надо сравнивать ANN с мозгом, черт возьми.
Опять сейчас скажу непонятную для вашего зашоренного мозга вещь — параметры могут добавляться и уходить прямо во время обучения. То, что я сравниваю постоянно с НС именно так и работает.
Я не против того, что в вашем алгоритме концепция такая. Я лишь указываю вам на то, что в нейросетях (и когда я пишу «нейросеть», я имею в виду модель глубокого обучения) всё устроено именно так, как я написал.
А то стопятьсот отписавшихся до вас говорят что у НС нет проблемы. Просто мы с ними не умеем работать. Но что не возьми выясняется что никто даже не берется решать указанные задачи с помощью НС. Парадокс правда ведь?
Такой же «парадокс», как и то, что никто не берется решать задачу строительства дома с помощью морфологии китайского языка. Надеюсь, фантасмагоричность аллегории до вас дойдет.
Человеческий мозг это то, к чему нам нужно стремиться. Обсуждать его свойства и думать как их реализовать в некоем подобии НС. Как было уже сказано не раз НС не позволяет пока даже приблизиться к мозгу мухи не говоря уже о человеческом.
Это полнейшее заблуждение, которое основано только на «интуитивности», разумеется.
Есть скрипт который каждый раз генерирует новые данные. Данные никогда не повторяются. Вот об этой гиблой затее все это делать на НС я и говорил.Так это все знают, и никто не делает это на НС.
Изменение общих подходов дает возможность расчитывать подобные задачи спокойно.Вот об этом и надо было писать, если нашли новый подход.
Так это все знают, и никто не делает это на НС.
А на чем делают? Есть какой то алгоритм которым можно было бы выполнять стоящие перед нейронными сетями задачи, только более гибко и в значительно большем масштабе? Подскажите. Буду признателен. Говоря аналогиями первых строк статьи подскажите то на чем можно летать а не подпрыгивать. Возможно уже есть что-то подобное а я зря накинулся на НС сравнивая несравнимое и нужно просто обьяснять на примере более совершенных алгоритмов.
Вот об этом и надо было писать, если нашли новый подход.Таки да. Простите за костность моего языка. Именно это я и пытаюсь обьяснить. Всего два свойства озвученные в тексте выше нужно поменять у нейронной сети и она становится пригодной для подобного рода задач, приобретая массу полезных фишечек за попытку озвучить которые меня тут совсем оплюют секта нейронных сетей. Как я понял тут совсем издалека нужно заходить информация в лоб может много кому взорвать мозг. Можно было бы сразу в заголовке написать «НС говно» но это была бы откровенная провокация а мы тут не рубиться все собрались а озвучивать проблемы и находить их решения.
А на чем делают? Есть какой то алгоритм которым можно было бы выполнять стоящие перед нейронными сетями задачи, только более гибко и в значительно большем масштабе? Подскажите. Буду признателен.
Я спрошу прямо: вы тролль или идиот?
Вы говорите о детерминированной задаче, реальное решение которой: набить словарь ответами и по ключу доставать данные, из которого они генерируются.
Её решает
Всё.
Нейросети, как и все алгоритмы машинного обучения, предназначены для другого рода задач. Для какого? Человек, выносящий в заголовок поста фразу о том, что он принес новый алгоритм машинного обучения, должен понимать. Не понимаете? Вам сюда. Поучите азы, а потом пишите что-то.
Всего два свойства озвученные в тексте выше нужно поменять у нейронной сети и она становится пригодной для подобного рода задач, приобретая массу полезных фишечек за попытку озвучить которые меня тут совсем оплюют секта нейронных сетей.
Ещё раз. Вы упомянули задачу инвертирования необратимого хэша. Её невозможно решить обобщением, её возможно решить только запоминанием.
Повторяю: н-е-в-о-з-м-о-ж-н-о. Прием, как слышно?
Если вы придумали алгоритм, который инвертирует стойкие хэши — вам с ним на топовые конференции по криптографии собирать научные награды.
Вот только я не верю, что вы его придумали. Я скорее верю, что или вы не понимаете какой-то ошибки в собственном же экспериментальном пайплайне из-за невежества, или вы шарлатан.
Можно было бы сразу в заголовке написать «НС говно» но это была бы откровенная провокация а мы тут не рубиться все собрались а озвучивать проблемы и находить их решения.
Ваша статья — и есть убогая провокация.
Прежде, чем писать, что «алгоритм А отстой, у меня есть новый крутой алгоритм Б», надо хотя бы изучить 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 нейронов требовалось всего сто нейронов. Может не так шустро но сеть в миллиард «нейронов» будет работать даже не домашнем компьютере. Разница в расчетах в этих алгоритмах все равно что сравнивать «классическое железо» и «квантовый компьютер» возможно есть задачи которые на квантовом компьютере не пойдут но я пока не вижу таких задач которые однозначно не подходят для нового алгоритма.
Про то, как у вас работает backpropagation, вы молчите.Я встряну, ладно? В нейроподобных растущих сетях, к которым, — как автор согласился со мной, — относится его алгоритм, нет ни backpropagation ни вообще ничего от классических НС. Это и не сеть вовсе, от слова «совсем». Это, скорее, растущее дерево, механизм памяти. Я давал ссылки на такой тип «алгоритма». Он вряд ли подходит для распознавания кошек или кластеризации, потому что, скорее всего, просто запоминает, сжимая как архиватор.
В нейроподобных растущих сетях, к которым, — как автор согласился со мной, — относится его алгоритм, нет ни backpropagation ни вообще ничего от классических НС.Действительно в алгоритме мело что осталось от классических НС, просто очень много нужно изменить чтобы обеспечить работу такой сети. Если речь идет об «обратном распространении» то оно есть. Расчеты в подобных структурах проходят в обе стороны и на их основе принимаются решения о создании «новых связей». По поводу сжимает как архиватор вы не правы. Именно обучение хотя как я понял мало кто из собеседников готов ответить чем обучение отличается от запоминания, от этого и путаница в определениях. На странице машинного обучения в википедии я нашел такое определение алгорима
алгоритм, способный для любого возможного входного объекта выдать достаточно точный классифицирующий ответ.алгоритм всегда дает точный классифицирующий ответ. Убедится можете на форме того же Ириса Фишера никаких дополнительных вычислений кроме прогнозов алгоритма не производится данные не корректируются и не ищутся ближайшие соседи. На любые данные в установленных диапазонах алгоритм выдаст «классифицирующий ответ» так что это именно обучение а не запоминание. И заметьте на весь диапазон а не только данные указанные в обучении это свойство «обобщением» вроде называется оно тоже есть тут.
А обучение и не отличается от запоминанияЕсли алгоритм «запомнил» значения {1:0, 7:0, 18:1, 42:1} то ничего не будет знать если ему подать в качестве входящих данных неизвестное число из обучающей выборки а если алгоритм «выучил» то вы получите и 3 и 8 и 12 любое другое число главное, чтобы входящие данные не выходили из диапазона от 1 до 64. Именно это свойство и отличает обучение от запоминания.
В процессе запоминания ничего не происходит с анализом данных. Обучение сопровождается расчетом зависимостей между данными и построение модели позволяющей генерировать прогноз даже на неуказанные в обучающей выборке значения.
Более того вы после одного обучения {1:0} уже получите прогнозы, только они будут очень простыми скорее всего всегда равны одному человеку. Алгоритм построит минимальную модель котоаря всегда будет прогнозировать один прогноз из единственного обучающего значения. По мере обучения новым примерам эта модель будет усложняться и подстраиваться под вновь поступающие данные.
0100110010 0010100110 001001001110 01100010 => 1 (15 бит)
1001010010 0100001001 001010010011 01100010 => 0
0010111101 0110000010 011010001010 01100010 => 1 (7 и 8 бит)
В формулу можно добавить любое количество бит взять любые из 40 и сгенерировать скриптом обучающую выборку. Самой формулы в выборке не будет и ее можно будет найти только анализируя данные. Сама выборка должна быть огромной ну скажем десятки тысяч. В списке 40 бит найти эту формулу будет для человека сложно достижимо а для алгоритма запредельно сложно. Правильный алгоритм находит подобные зависимости очень быстро и после пары десятков обучений будет выдавать правильные ответы уже не ошибаясь. Именно нахождение подобных логических структур и стояло требованиях к созданию алгоритма и он их очень хорошо находит. Никаким запоминанием и тем более линейной регрессией это не вычислить данные будут очень равномерно распределяться по всем данным. Человек просматривая данные глазами будет искать эту закономерность очень долго отвлекаясь на анализ большого количества случайных данных. Проверить может ли алгоритм правильно предсказываеть неизвестные ему данные можно подавая последовательности которых нет в выборке. Обучившийся алгоритм в том числе и на них должен давать правильные результаты. Вот алгоритм который будет выявлять подобные зависимости в данных действительно обучается а не запоминает, потому что запомнить 2^40 оОочЕнь сложно.
Нет оценки вашего алгоритма на валидации — нет информации о качестве работы вашего алгоритма.
Тут всё просто. А бла-бла-бла мы уже наслушались.
Опишите нормально алгоритм человеческим языком без пассов руками и вот этих вот «вжух! и всё стало гораздо лучше!», дайте пример реализации, раз он у вас уже работает, примеры использования, тогда и будет более содержательная беседа…
Хотите просто поговорить о недостатках обычных НС и как их исправить? Отлично, это тоже интересно. Но напишите о них хотя бы без фактических ошибок, которые адски режут глаза любому, кто хоть немного в тему погружался.
Этот сломался, несите следующего.
Конечно, если вы будете проверять качество на валидационной выборке и возьмёте функцию побольше.
Криптостойкость алгоритма как раз и говорит о том, что невозможно найти такие правила, по которым можно инвертировать алгоритм за небольшое время, т.к. в процессе инвертирования у вас будет квинтилион промежуточных решений. Если бы было компактное подмножество промежуточных решений, то существовало бы разложение. Такие разложения нашли для md5 и некоторых других алгоритмов, уменьшив их сложность существенно, но всё равно, сложность осталась больше 2^40.
А то, что вы делаете с нейросетью — вы, видимо, считаете радужные таблицы для вашей функции (rainbow tables).
Этот способ работает при условии наличия памяти, а значит, проще его реализовывать наиболее эффективным по памяти алгоритмом, а это не нейросети.
И этот способ, увы, не позволяет решать другие задачи, в которых, наоборот, нужно находить эффективные правила для данных, которые (правила) пригодятся на валидационной подвыборке.
Я ждал, пока вы сами это сообразите… или пока комментаторы вам об этом скажут… но им похоже на очередной ненаучный вечный двигатель не хочется тратить много времени, они просто видят у вас те же самые проблемы, что и у остальных изобретателей: отсутствие воспроизводимости решения, отсутствие сравнимости с конкурентами, очевидные ошибки в экспериментах.
То, что написано выше, каждый пункт это реально работающая идея. Цифры выше именно оттуда. Жаль, а могли бы обсудить работающие идеи а не ахинею которой кормят %ХабраЮзеров% благородные доны.
В общем, алгоритм следующий:
1. Берём датасет
2. ???
3. PROFIT
Господа, давайте обсудим работоспособность моего великолепного алгоритма на примере задачи взлома Пентагона в сравнении с нейросетями?
Кстати, абстрагируясь от исходной темы, благодаря которой «мы все тут сегодня собрались», именно превышение количества параметров НС над величиной обучающей выборки (aka сверхпараметризованные решения) оказывает (иногда) очень благотворное влияние на качество модели. См. arXiv:1812.11118 “Reconciling modern machine learning practice and the bias-variance trade-off” Mikhail Belkin et.al
биморф.рф/bmf/f20b315ba9b683a8891e8a1137c9f53c
У кого есть желание свои данные добавить я готов поставить на расчет. Это можно сделать с главной страницы биморф.рф введя любое ключевое слово в форму поиска сети и уже в сети добавив обучающую выборку.
При этом, мне кажется, вы ещё не умеете сравнивать точность методов на десятке разных задач (как насчёт валидационной подвыборки? точность 100% на тренировочном датасете ни о чём не говорит, подобные алгоритмы ценят за их возможность работать на тех данных, что сеть ещё не видела), и оперируете исключительно оценками на пальцах, поэтому берёте лишь удобные для себя примеры (Как насчёт MNIST и CIFAR10 для начала? Или какого-нибудь Sentiment Analysis on IMDB, если вы умеете работать с текстами, или может возьмёте новостной корпус, что я использовал здесь: github.com/buriy/nlp_workshop. А для табличных задач тоже есть много корпусов посложнее на Kaggle, начиная с тренировочного титаника )
Думаю, мы сможем подождать ещё годик-два до момента, когда вы сможете нормально оформить свою работу и потом уже начинать писать более серьёзные статьи на Хабр.
В параметрах два цифры до запятой, и две цифры после запятой. 60% полное совпадение. Обучается уже около месяца на 16 ядрах биморф.рф/bmf/concrete и все еще продолжает расчитываться. В сети уже 749905 нейронов (ну или чего-то отдаленно на них похожих). Хочу до 100% совпадений расчитать. Думаю, что через годик-два ни желания ни времени что-то писать не будет.
Месяц? Вы же понимаете, что это не нормально?
Плюс идея взять рандомный датасет, конечно, очень в вашем духе, но с чем вы собрались сравнивать? Это же не конкурс, к которому есть лидерборд, а просто залитый кем-то из участников набор данных. Я даже не представляю, как вы на него вышли.
Что вы собираетесь показать? 100% точности на ирисах — это, конечно, было смешно, но давайте серьезно. Вон, там сейчас идёт DS Bowl, например. Может, на нем продемонстрируете крутость своего подхода?
Говорю без сарказма: если он позволит зайти хотя бы в зону медалей, это будет лучший пиар, который возможен.
Прочитал условия учатия, там есть пункт относительно лицензии на код.
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
2) Польза нейросетей — в их результате на новых данных. Какая разница, что там есть имена, главное, чтобы на тех данных, которые нейросеть не видела, она предсказывала правильные ответы.
И одна из задач хорошей технологии, решающей задачи — убирать данные, которые лишь путают. Но тут важен баланс: уберёте много данных, и сеть ничего не предскажет, уберёте мало данных, и ваша сеть переобучится. Что ж, вам придётся как-то решить и эту задачу, сделать её частью вашей победной технологии, раз уж вы считаете, что это *у нас* колёса квадратные…
Это все равно что задать в наборе данных уникальный идентификатор строки. Алгоритм обучившись по нему и будет все ответы выдавать.
Пардон, слово «генерализация» вам о чем-то говорит? Алгоритм должен работать не на тех данных, на которых учился.
А на отдельном холдауте никаких знакомых имен или идентификаторов уже не будет.
Набор данных не совсем корректный и минимум требует доработки (удаления некорректных полей)
Удаляйте, кто ж вам мешает. Это препроцессинг на ваш выбор.
Изначально ведь речь шла о том, что вы покажете эксперимент с кодом, который продемонстрирует качество вашей модели. Но вы вместо этого кидаете ссылку на какой-то поломанный сайт на .php, где происходит что-то и выдаются на выходе какие-то числа.
Мы, конечно, тут все джентльмены и поэтому доверяем вам в плане того, что числа берутся не с потолка, но судя по вашим познаниям в области машинного обучения вы запросто можете допустить какую-то очевидную ошибку валидации или условный дата лик. Поэтому для чистоты эксперимента было бы круто сделать честную проверку.
Разве не достаточно для проверки?
Конечно, этого не достаточно, потому что я не уверен, что вы знаете, что такое train-val-test split, зачем он нужен и как его делать.
Мы надеемся, что вы дорастёте и покажете такие цифры. Вот после этого уже и начнётся серьёзный разговор о том, что не так с нейросетями, и у вас в нём будет взрослое право голоса.
Создавайте сеть с главной страницы, закидывайте свой датасет указав поля для обучения я поставлю его на расчет проверим вместе.
Не забудьте взять такую задачу, где можно сравнить ваши результаты с результатами конкурентов.
Конечно, можете нас и не убеждать.
Тогда мы останемся при своих: вы считаете, что вы — непризнанный гений, а мы — что вы шарлатан, и особенно нам доставляет при этом то, как вы изящно увиливаете от любой попытки сравнить качество вашей разработки с любыми потенциальными конкурентами.
Сочетание слов "двоичный алгоритм" у меня ассоциировалось почему то с бинарными опросниками. Но при чем тут нейросети?
Да и предоставить возможности структурной адаптации сети к изменениям в среде (сиречь данным) — это тоже очень заманчиво. Все-таки в биологии рост сети (дендритных деревьев) играет фундаментальную роль в обучении и памяти. Работы также ведутся, но мало и они далеки от хоть какого-то продакшена. Уж больно все непонятно.
по нейроподобным растущим сетям Ященко не нашел информации в сети. А из того что нашел понял что это все еще нейроны.Нет, от нейронов там только название. Информации мало, вот есть, что есть:
Ященко, Виталий Александрович
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. А ещё есть пирамидальные растущие сети.
И вот это что такое?
«Используется обычно до 3-х уровней (слоев). Использование более 3-х слоев не осмысленно.» это из описания «нейроподобные растущие сети». Получается, что Ященко не смог сделать растущую сеть больше трех слоев? Реально в работающих сетях этот параметр уже переваливает за сотни и тысячи, хотя миллионы и миллиарды думаю реальность ближайшего времени ограничивает только производительность машины на которой происходят расчеты а не «осмысление»
Опять же а это? «Появление ложных фантомов (ложных аттракторов) – присутствует» Ничего подобного нет в уже работающей сети. Никаких фантомов. Я так понял человек был в правильном направлении, но не смог доработать свое детище до конца. У меня на это ушло пять лет первый раз сеть сложилась 13 июня 2019 года в 4 утра с тех пор просто идет оптимизация производительности.
И еще. Слово двоичная не зря выведена в заголовок. Двоичная это базовое свойство сети. А это из присутствующих я так понял осмыслить никто не смог. В двоичном представлении нет отрицательных значений, нет списков. Есть только два значения «включено» или «выключено» 1 или 0 только в таком состоянии можно полноценно интерпритировать сигналы в обе стороны и полноценно расширять сет. Любой значение больше двух дает «Появление ложных фантомов» хотя очень много в приведенных статьях сделано правильно. Ященко молодец! Спасибо автору. Теперь можно сказать не зря было все это общение.
«Используется обычно до 3-х уровней (слоев). Использование более 3-х слоев не осмысленно.»В таблице сравнения из той статьи это относится к «классическим» нейросетям. Сама статья из конца 90-х годов. В то время ни просчитать более 3-х слоёв ни применять их не умели. Высказывание из рода «640КБ хватит всем».
В начале 2000-х институт какое-то ПО разработал, но так как все разработки дотационные, а впоследствии все альтернативные разработки подмял успех глубокого обучение и свёртки, то вся эта тема киснет уже пятый десяток. Поэтому, если есть что-то работающее по этой теме, то, на мой взгляд, важно «не унести это с собой в могилу».
Мне сейчас кажется, что сеть просто растёт на тех данных, что Вы ей скармливаете. А рост должен замедляться по мере увеличения количества обобщений.
Вместо экзотических датасетов я бы скормил ей «Войну и Мир». Причём второй том уже должен приводить к меньшему росту сети. Новая информация должна встраиваться в предыдущие знания. Если рост нелинейный — сеть работает (обобщение присутствует). Рост линейный — ну не получилось.
За время пока мы тут обсуждали статью я написал интерфейс которым можно загружать свои обучающие выборки. Хотел бы попробовать на чужих данных потренироваться. Но пока никто не воспользовался. Нужно создать сеть и загрузить в нее файл с данными. В описании указать поля для обучения. В результате появится форма как на ирисах и бетоне. Апи для автоматизированного получения результатов расчета прилагается к каждой задаче плюс дообучение больших данных теоретически «бесконечно» каждый раз повышая процент правильных прогнозов.
По поводу войны и мира тоже думал :) но я больше склоняюсь к каким то диалоговым задачам. Продажа чего нибудь или скрытый маркетинг. Чтобы алгоритм потренировавшись на диалогах пользователей сам стучался и обсуждал какую нибудь общую тему. Повысив степень «доверия» уже максимально «ненавязчиво» предлагал услугу или событие интересное собеседнику. Восприятие такого рода продвижения должен быть максимально эффективно. Да и человек от него должен получать удовольствие а не раздражение. Общение в наше время вещь востребованная. Я какое то время проработал в фирме с «продажниками» мне эта тема очень близка. Сейчас теоретически все есть для решения такого рода задачи. Производительность сильно увеличилась когда пару недель назад я решил вопрос с возможностью в нескольких потоках обучать одну задачу. Сейчас задачи на сервере расчитываются в 15-20 потоках эффективность возрастала на порядки. Потихоньку начинаю почитывать документацию по расчетам на видеокартах. Слабо пока представляю как можно к ним обычные алгоритмы прикрутить. В общем есть куда двигаться.
Не придираясь к деталям Ваших рассуждений о нейронных сетях (в которых Вы поставили всё несколько раз с ног на голову), давайте согласимся что они имеют ряд концептуальных недостатков. Но почему же Ваша идея исправляет их?
Ну то есть совсем не понятно, почему в вашем случае не будет переобучения например. Почему время обучения сокращается, если задействована только малая часть «двоичных нейронов» на каждом проходе? Скорее наоборот. В самом деле ли хаотично растущая сеть сможет дать «полного контроля сети и однозначного понимания происходящих в ней процессов» которых нет у классических НС?
И к тому же, как вы собираетесь обучать такие сети?
Дело в том, что непрерывность (а точнее дифференцируемость) выхода нейронной сети как функции от её параметров, является ключевой идеей, позволяющей обучать НС.
Добавив гладкую функцию потерь, как функцию от выхода сети и правильного ответа, мы получаем дифференцируемую функцию потерь, как функцию от параметров сети. Теперь мы можем посчитать градиент, т.е. направление, в котором нам нужно изменять параметры, чтобы минимизировать функцию потерь (на самом деле конечно в противоположную сторону от градиента).
Что вы предлагаете взамен?
Вы конечно извините, но в целом пока только общие слова и абстрактные рассуждения; без подробностей реализации вашей идеи, не видно плюсов и не ясна даже жизнеспособность такой конструкции
файл 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"}
}
Кому интересно пишите я соберу для вас «пробничек».
Вот пример реальный. При первом проходе сети было 188 ошибок в этохе а через примерно 200 эпох обучения ошибок не стало. Эта сеть еще не доучена до конца остальные ее биты не доучены до 100% но это только вопрос времени. http://биморф.рф/bmf:log/house?divider=2 это не вся сеть а только один бит итогового значения. У нас есть возможность обучать каждый из 20 битов по отдельности. Возможность всегда улучшить результаты какой обьем данных и сети у нас не был вот главный плюс этой сети. Если вы не знаете обьемов обучающей выборки то взял влюбой размер НС вы рано или поздно сталкнетесь с тем что она начнет переобучаться количество ошибок с каждым новым обучение начнет увеличиваться. Все. Дальше обучение конкретно этой НС невозможно. Здесь этого не может быть впринципе. Сеть просто добавляет новых элементов и обучается дальше каждый раз уменьшая количество ошибок. Сети с фиксированным количеством примеров как на кагле 1000 примеров или несколько тысяч это подходит под НС когда вы можете прикинуть ее размер чтобы она не схватила переобучение. А в биморфе мы всегда начинаем с нуля. А она сама добавляет нужное количество нейронов и с каждым новым обучением уменьшая количество ошибок. В любой момент времени мы можем обучающую выборку пополнить новыми данными, даже увеличить в десять раз и обучать спокойно дальше. Что никак не прокатит с НС обучающая способность НС задана в самом начале и не может быть увеличена по ходу обучения. На графике выше 95% это предел возможного для сети. больше этой цифры она никогда не обучится. Ни на трейне ни на тесте. То есть у вас нет ни единого шанса поднять этот параметр выше. А на биморфе вы об этом даже не задумываетесь Просто обучаете до нужного вам значения. В идеале хоть до 100% когда все известные вам примеры будут правильно прогнозироваться вашей сетью. Все появляющиеся новые примеры вы просто доучиваете опять же не думая о каких то ограничениях до любого нужного уровня.
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% сеть и продолжить обучать дальше.
Потому что в миллионе входных данных найдутся противоречащие друг другу, а ёмкость сети ограничена. Зачем всё запоминать?
>Вот первопричина почему мы придумываем какие то непонятные метрики для измерения вместо того чтобы взять и дообучить. Что мешает зная что НС не дает нам нужный результат просто взять и довести ее до нужного нам уровня обучения?
Вы зачем-то продолжаете защищать своё решение.
Очевидно же, что вы не сможете померить нужную на практике метрику — поведение сети на новых данных — если будете действовать своим способом.
Попробуйте убедить заказчика, что пофиг, что Siri не работает с его голосом, она же может доучиться, только пусть он всего лишь предоставит текстовую расшифровку каждой фразы, что он сказал. Он вам скажет «а зачем мне тогда ваша нейросеть, если каждую фразу ей расшифровывать надо?»
Когда вы это осознаете, тогда и поговорим.
А то вы опять в общий ИИ ударились какой-то.
Она не выборку делит на две части, а суммирует входные параметры с определёнными коэффициентами, формируя линию, делящую пространство фич на две частиНе суть что она там делит. Факт в том, что процесс принятия решений чуть сложных чем линейный градинет плавная прямая волна не получится поделить одной чертой. Размер правильных предсказаний в такой сети будет крайне низок. Это какой то детский алгоритм и я бы мог его еще в школе написать. Возможно кто-то его и использует но воспринимать эту приметивную вещь как алгоритм сложно. Что значит его обучение? Поменять уровень наклона этой прямой или сместить на пару пикселей выше? Много у вас от такого обучения поменяется? Скорее всего даже в худшую сторону.
И в некоторых задачах способна таким образом получить 95-99%В подобных задачай проще на глаз определить линию и простой математической формулой задать разделение. И то толку будет больше. Во всех данных элементы котороых не разбиты на две скученные кучки получить хоть какой то приемлемый результат с линейной регрессией равен нулю. Это должны быть очень своеобразные данные с четкой границей разделения Потому что разбейся такая кучака на «неровные группы» и все. «неалгоритм» выдает близкий к случайному результат все равно что генератором случайных числе предсказания делать.
Сначала учитель объясняет ученикам, как решать задачу и показывает ее решение на нескольких примерах.Проверку результатов правильно сравнить с экзаменом. На уроке (процесс обучения) информация не скрывается. И в этом абсурд. Ученик спрашивает почему часть задачек вы нам не даете, я хотел бы их выучить чтобы на экзамене получить лучший результат. А учитель отвечает — Это мы не будем проходить чтобы вы не набрали 100% на экзамене. Часть задачек в учебнике мы специально закрасили чтобы вы не знали всей известной информации. А теперь попробуйте на экзаменах набрать максимальный результат. Но как же учитель вы ведь нам это даже не давали. А ничего не знаю, так работают НС.
Потому что то, что они скопируют ответДа именно. Учитель говорит запоминайте. Замечайте связи между информацией, выбирайте признаки по которым вы сможете научиться давать правильные ответы. На экзамене мне не важно запомнили вы всю «Войну и мир» или только часть. Перечитывайте ее столько раз сколько потребуется но на экзамене я хочу максимально правильные результаты которые возможно. Естественно плюс то, что можете додумать исходя из прочитанного. Зная максимально фактов додумать весь сюжет до максимально близких предсказаний. К примеру вопрос какой могла быть одежда героев. Пусть в книге даже не будет ее точного описания. Если дать 100% книги а не 70% этот ответ будет только точнее. В недорассказанных 30% может оказаться факты которые будут более точно говорить об одежде какая могла бы на героях быть. Их предпочтение, время жизни, любимые цвета все это скажется на процент правильных ответов. На экзамене вопросы будут не 100% совпадающими с диалогами героев а нужно дополнить пустые пятна не сказанные в книге и ответить и на них тоже. Правильный алгоритм обучения не запоминает он улавливает в первой эпохе только часть информации. Допустим один процент от текста. При втором прочтении понимает больше, и так дажлее. НС не могут на 100% пересказать весь сюжет книги только 95% от нее. биморф же может обучиться и рассказать все 100% это возможно, плюс рассказать то, чего в книге небыло. Если спросить о факте который в книге небыл указан то он тоже даст ответ на него. Но вопрос в том что эти ответы будут ближе если не скрывать часть книги а дать максимально много информации. Не вырывать 30% страниц.
Они должны сами решать примеры, которые до того они еще не видели.Именно так и происходит сейчас. Я как попугай уже который раз говорю что можете зайти и ввести любой пример которого нет в выборке того же ириса фишера и вы не поверите это те данные которые алгоритм самостоятельно реши их в обучающей выборке небыло. Но совершенно другое дело когда вы специально ограничиваете сеть в данных не давая правильных. Я понимаю от чего вам срывает крышу. Нейронной сети доучиться до 100% просто неререально даже если ей дать всю выборку. Тот же график показывает что средний показатель на трейне 95-98% а то и меньше. Обьясните почему не 100%? Сеть ничем не была ограничена. У нее были все данные. Но даже на такой простой задаче как обучиться всем данным из списка обучающей выборки сеть не может. Опять же проверка ее результата это итоговый экзамен за которым никто уже не сможет дообучить сеть недостающим данным. Почему после проверки на тесте никто ни говорит чтобы взять и дообучить сеть на данных которых она не видела? Что это? И почему это работает именно так. Откуда такие ограничения?
И абсурдом было бы просить их решить те же примеры, что учитель показывал.О тех же примерах которые были в обучающей выборке вообще речи не идет. Вопросы всегда те которых небыло в обучении. Тут речь о другом если вы не поняли о том, что часть нужной информации вы вообще не даете. Вы ее знаете, но пытаетесь скрыть чтобы потом пытаться измерить недообученный алгоритм. У вас есть 10 задач котоыре вы знаете как решать. Но вы даете на укроке только 7 из них. а остальные просто недаете хотя в экзамене они есть. Вот речь о чем. Дайте все 10 задачек. И дайте на экзамене все десять для решения. И плюс еще 5 с верху которые придумаете после урока перед экзаменом. Ну или поменяйте числа в предыдущих задачах так, чтобы цифры были другими, но сама задача разбиралась на уроке. В данных насколько понимаю не проблема. Проблема только если само количество ограничено, но в этом случае тем лучше если алгоритм просто запомнит все данные ведь новых ни у кого нет и появиться им неоткуда. Мы же учим табличку умножения и никто не пытается нас проверить на каких то данных которых в таблице умножения до 10 не может появится. Это просто запомненные данные на очень маленьких выборках. На больших придется вдумываться в цифры и думать как не запоминать а понимать почему именно так а не по другому. Если ученик на экзамене решит все десять задач это и будет говорить о том, что он научился. Если решить девять то еще можно урок првоести подтянуть знания.
Интересно, вы эту подмену вообще осознаёте или нет?
>
Я как попугай уже который раз говорю что можете зайти и ввести любой пример которого нет в выборке того же ириса фишера и вы не поверите это те данные которые алгоритм самостоятельно реши их в обучающей выборке небыло
Да, а по какой причине вы просите проверять варианты по одному, вместо того, чтобы дать программу, которая умеет требуемую нами метрику? Лень или обман?
Потом учеников просят решить несколько примеров самостоятельно.Еще раз спрошу. Вы во время урока, не на экзамене утаиваете от учеников часть данных? Пытаетесь с учеников спрашивать то, что не объясняли? У вас есть конкретно решенная задача, но вы ее отложили до экзаменов и не даете на ней обучиться. Именно это вы мне сейчас и предлагаете делать с тестовой выборкой.
На самом деле проблема что у учителя ограниченный круг задач который он может дать. Их всего скажем сто. Новых нет. А придумать новых не может, поэтому и приходится придумывать какие то способы првоерять. ХОтя по мне так обучив на полной выборке и узнай насколько обучилась модель вполне себе приличная проверка. Вопрос почему мы решаем задачи с таким маленьким количеством примеров? Мы пытаемся использовать модели где простое запоминание дало бы в сто раз лучший результат если количество примеров ограничено. А если не ограничено зачем требуется утаивать часть выборки не давая на них обучаться? Все равно что их всего количества примеров на которых мог бы обучиться ученик дать ему по одному примеру. Один со сложением, один с делением и один с умножением. 2+2=4 а теперь посмотрим как ты числа с тремя нулями вычисляешь. И пытаться получить с него хоть какие то результаты на экзамене, при этом давая примеры с дробными числами. Не удивительно что на классических задачах такой плохой результат, ведь данных для обучения катастрофически не хватает а результат будет определяться случайными факторами обучения внутри модели. У меня есть мысль почему это так происходит. На расчеты тратятся огромные ресурсы. Была уже информация, что обучение модели среднего размера сопоставима с выбросами углекислого газа одного автомобиля. И это при том что 9 из 10 будет просто выброшено не показав достойного уровня при проверке. О каких тут дополнительных примерах может идти речь если то есть обходится планете слишком дорого. Все ваши «ужимки» и ограничения исходят из ограниченности алгоритма и большого расхода ресурсов на их работу. Я же не придумываю ничего нового это все уже давно известно тем, кто интересуется темой.
Частично это так, но на практике это не проблема.
А проблема в том, что опять вы мыслите в терминах датасета из 180 примеров, где надо 30 примеров удержать в test set и так вам этого не хочется, что вы тут уже третье эссе на эту тему пишете. Боюсь, что это клиника и не лечится. Хотя, сейчас хорошие врачи, так что может быть и лечится…
Но я с вами точно на этом прощаюсь.
Частично это так, но на практике это не проблема.Проблема в оценке насколько в той информации которая дается в обучении заданы все зависимости оставшейся выборки. Как можно оценить сколько примеров нужно оценить чтобы модель однозначно давала нужный результат и случайных факторов не оставалось. Из 150 примеров Ириса Фишера сколько нужно чтобы обучиться для всех включая тест? Классический ответ это 70% но почему не 50% почему не 30% а ведь есть грань за которой модель перестанет улавливать суть. Где эта грань проходит очень большой вопрос. Как любят говорить это никто никогда не скажет определенно и нужен большой опыт и практика. Прям магия какая то а не точная наука.
На практике мы имеем совершенно неформулизованную область деятельности в которой неизвестного и непонятного значительно больше понятного. Любая попытка достижения результата это тыканье пальцем в небо сработает/не сработает. До каких то строгих правил и методологий оценки очень далеко. И скорее всего в ближайшее время это не изменится.
Вот такую задачу Ваш алгоритм способен решить?
На входе бинарный вектор, состоящий из информационных битов и шума. При наличии сигнала все информационные биты принимают единичное значение.
110010101100111010001101010110101010110 — сигнал есть
101010101111010101110100101001011110010 — сигнала нет
…
Необходимо найти группу информационных битов. Задача с усложнением: таких групп множество и они имеют пересечения.
При этом как писал выше есть бонусы. В нейронной сети невозможно сказать какое событие привело к результату. Тут однозначно мы имеем события которые привели к получению результата. Интерпритируемость полная.
При таком обьеме недостаточно данных. Чтобы найти зависимости нужно много данных.Точки под примером означают выборку в 10-100 тысяч.
Допустим я пришлю Вам такую задачу в формате, например, текстового файла на десять тысяч строк вида:
110010101100111010001101010110101010110 1
<128 бит входа: 0/1><пробел><наличие сигнала: 0/1>
Прогоните через алгоритм?
Двоичный алгоритм машинного обучения с динамической структурой