Тогда понятно откуда такое грубое пренебрежение временем, затрачиваемым на разработку, очевидно времени у вас завались, раз можете себе такой подход позволить. :\
Смотрите, вот у вас получается два числа: среднее и сигма, то есть сдвиг и 1/(множитель+e). Очевидно, что применять их непосредственно нельзя, потому что их слишком сильно будет колбасить при сколько-нибудь маленьком размере батча, например при батчах по два семпла их вообще будет носить из стороны в сторону.
Чтобы такой фигни не было к ним применяетс я экспоненциальное сглаживание, в торче с импульсом по умолчанию (1-1/10), а в тензорфлоу (1-1/100) После этого среднее и сигма оказываются средними уже не по конкретному батчу, а по большому куску учебной последовательности, в случае TF даже очень большому более ста батчей.
И вот теперь уже эти сглаженные множитель и сдвиг применяются. Собственно обучение параметров происходит не при обратном проходе, а при прямом. Отсюда сложность, нужно ручками в градиент записать такие числа, чтобы они отражали изменение, вычисленное при прямом проходе. Но поскольку вы пишете руками, то можете вместо того чтобы подгадывать числа, просто учить их при прямом проходе. Возникает неоднородность в коде, конечно.
>> Удачи тому, кто разберётся, например, в обратном проходе в batch normalization по статье из Википедии. :)
Справедливости ради в батчнорме не разбираются даже те, кто его придумал. :))
Вы, например, знали, что примерно половина эффекта от батчнорма в том, что там есть свой bias, и когда люди batchnorm добавляют, то обычно убирают bias у обычного слоя перед ним, а поскольку в батчнорм встроено своё экспоненциальное сглаживание, по умолчанию 0.9, обычно, то bias обучается с в десять раз меньшей дисперсией чем нормальные веса. Если убрать батчнорм, и учить bias обычных слоёв с моментом в десять раз сильнее, половину всей прибавки от батчнорма вы получите на одном этом.
Такого вы ни в какой википедии не прочитаете, тут нужно велосипеды изобретать. :)))
В одной из моих сетей используется операция topk, и возвращаемые ей индексы, её вы тоже к матричному умножению сведете? :)))))
Вы вольны остаться при своём мнении, но полезно знать, что некоторые люди считают его неправильным, и работающим кодом это демонстрируют, поэтому не нужно насаждать своё мнение подрастающему поколению. Пусть они составят своё мнение, и возможно потом расскажут вам что-нибудь интересное.
За ссылку спасибо. Я конечно же спутал и имел в виду гугленет, а не обычный ленет, но это не важно. Дело только в размере, ну и максимум вам ещё конкатинация матриц потребуется. Очевидно, что в виде матричных операций записывается всё что популярно, потому что большинство людей искали ответ именно в такой форме, петля положительной обратной связи или же замкнутый круг. Мне просто неприятно, что новые и новые поколения людей продолжаю копаться там же, на месте, где уже всё выкопано, и автомл давно лучше людей справляется.
И то, что я тут с пол десятка примеров привёл, которые к матричным операциям не сводятся, а вы их все игнорируете лишь убеждает меня в полезности не матричного подхода, чтобы новые люди имели в своем арсенале мысленных внутренние представления, позволяющие им не пропустить что-то необычное, если оно промелькнёт мимо них.
>> Знаете, какая основная претензия к таким статьям? Они бы были бы вполне ничего, если бы их авторы шли бы дальше. Я вот пошёл. В моей первой статье на хабре были классы нейронов, и даже хуже того, для всяких циклических операций использовался Linq - это такой объектный движок над итераторами на C#. Я конечно, не самый типичный любитель нейросетей по ряду причин, ну так и этот парень может оказаться нетипичным. Не подождём - не узнаем.
>>32x32 — это только поиграться с мутными картинками. Вернее даже с мутными текстурками, но тем не менее именно играясь с ними я придумал neck для компьютервижена, который из фичеэкстрактора вынимает информацию в такой форме, что ему пофигу на размеры картинки вообще. То-есть картинка 1024x320 и маленький её кусочек 256x256 на котором расположен интересующий объект, с точностью до простого линейного преобразования дают одинаковый эмбединг.
Чуть больше веры в людей, изобретающих велосипеды, и они смогут вас удивить. :))
>> Тензоры тоже очень просто. И при этом очень быстро. Существует адская пропасть между "быстро считается" и "быстро запрограммировать". Для второго нужны классы абстракций - первое в процессе исследования вообще мало кого интересует, до тех пор пока код работает приемлемое время никто даже и не парится его оптимизацией. Попробуйте безо всяких абстракций на голых матричных умножения запрогать какой-нибудь ленет или йоло, зрелище будет презабавненькое, но очень долгое. Говоря о быстроте экспериментов я имел в виду конечно же время на то чтобы написать экспериментальный код, а не то с какой скоростью он учится. До тех пор, пока он учится быстрее, чем я сделал и съел бутерброд меня его скорость не интересует.
P.S. Зашёл на ваш ютуб-канал и увидел голограммы. Не подскажите случайно где можно в наше время прикупить настоящую толстую голограмму, ну такую, которую можно в белом свете смотреть. хочу дитёнышу показать. А то сейчас в ответ на такой запрос в поисковик выпадает стопятьсот страниц с переливающимися наклейками.
>> Понимание происходящего и правильная реализация — разные вещи. Из того, что вы поняли, как работает нейрон или свёртка, вовсе не следует, что делать их надо нативно и писать про это статью
Как вы собираетесь что-то исследовать не реализуя это в коде? :\ Чтобы что-то понять, нужно с ним поиграться, а чтобы с ним поиграться нужно иметь реализацию, в которой эти игры делаются просто. Уровень абстракций подбирается под задачу. Для кого-то понимания минимальный уровень - всё дерево вычислений, для каких-то пониманий нужно ковыряться в терминах слоёв, а для каких-то пониманий приходится опускаться в более мелкие абстракции, иначе каждый эксперимент будет занимать сутки кодинга.
А если не написать статью, так никто и не поддержит и идеями своими не поделится.
>> Я не использую pytorch и с питоном не знаком. Я работаю только с С++. Торч под капотом уже почти весь на плюсы переписан, кстати. При желании вы можете насладится всеми прелестями автограда, в том числе для очень необычных функций, типа topk. Попробуйте, вам может понравиться. :)
>> в противном случае вы не дождётесь обучения хоть сколько-нибудь большой модели за приемлемое время.
Вопрос с какого размера моделями и датасетами вы хотите работать. Например для многих моих экспериментов я использую cifar100 - задача уже приближённая к реальным, но обучить сеть на её на домашнем 3060 можно за считанные минуты и большинство выводов полученных на нем распространяются и на imagenet. А уже потом, когда эксперименты проделаны и выводы понятны, можно брать сети потолще и какой нибудь COCO. Но при этом свои первые работы и первые выводы я делал вообще на синтетическом датасете на основе одной единственной картинки x - координаты точки, y - rgb этой точки. Очень простая задача, с которой справляется даже сетка написанная на CPU и при этом посмотрев что нарисовала вам сеть и сравнив с исходной картинкой можно многое понять о том как и почему сеть работает. Там на картинке разделяющие плоскости прямо буквально видны - роскошь, которую не могут себе позволить люди изучающие реальные задачи.
Он же вам тут не трансформеры на классах делает миллиардные, а просто учебную сетку. Какова исследовательская задача, такие и инструменты.
Потом переносить придётся, хотя опять скажу - разреженные спарс матрицы и матрицами то называются только чтобы страусов не пугать.
Я тут говорю про то, что если сначала сделать матрицы на классах и и более обычные, то вы сможете понять их работу и другими способами, научитесь смотреть на них с двух сторон, а не с одной, к которой все привыкли и почти всё, что можно будет с этой стороны разглядеть уже разглядели.
>> Так что нет, никаких классов не должно быть Вас же не смущают классы модуля в том же пайторче. Если бы не было инкапсуляции внутри этого класса всего функционала автограда куча людей стучалось бы лбом о дифференциирование того что они напридумывали и больше половины этого столкновения с реальностью бы не вывезли. а те кто вывезли, делали свои сети на много дольше. Класса нейрона не должно быть в инференсе, до поры до времени, тут я согласен, но если человек умеет думать в терминах классов, он сможет сделать с сетями такие вещи, о которых он бы даже не подумал если думает о происходящем только как о матричных операторах не вникая в то, какие более мелкие сущности были представлены в виде матриц.
Возвращаясь к тем же CNN, если человек смотрит на свёртку только как на матричное умножение, а не рассматривает каждое ядро свёртки как отдельную сущность, по сути дела такой вот нейрон, ему просто в голову не придёт задуматься, а какие из свёрток для его сети полезны, а какие нет, и нельзя ли часть свёрток из сети повыкидывать, сильно ускорив инференс (спойлер:можно), или даже оставить всю свёртку тех же размеров, но заменив часть ядер на другие, более полезные. И вот эту операцию уже очень трудно делать если не иметь отдельного класса для нейрона(или отдельного ядра свёртки, математика за ними стоит одинаковая), как минимум потому что вы захотите иметь класс в который нейрон можно из свёртки выделить и из которого отдельное ядро можно обратно в свёртку положить, даже если внутри сети он в виде сетки не представлени и существует только в виде индекса в матрице.
Что-то дернуло меня перечитать комментарии к своей допотопной статье, и это было прикольно. :))) Во-первых могу посоветовать посмотреть мой доклад на последнем ODSфесте: https://www.youtube.com/watch?v=Npm-awHtfeM, почти всё, о чём я говорил тогда в 2015-ом году прекрасно подтверждается и на типовой задаче кормпьютервижена, в котором, казалось бы, всё изучено вдоль и поперёк. Тут в докладе, я кстати, привожу и строгую математику, описывающую связь размеров батча и стохастики с другими параметрами обучения. Подавляющее большинство людей как не понимали всего вот этого, так и продолжают не понимать. Восемь лет прошло, а мои велосипеды все ещё едут лучше общепринятых. :))) Во-вторых, вы тут упоминали, что вам не нравятся мои определения "обобщений", вернее то что я вам их не раскрыл тогда в дискуссии. Если вам интересно, то посмотрите свежие статьи про такое явление как гроккинг в нейросетях, обнаруженное совсем недавно. Вот мои обобщения, как я убеждён, это и есть то, что ведёт к гроккингу. Строго я это ещё не доказал, но очень похоже по всем признакам. Если бы тогда в 2015-ом встретил больше заинтересованности от людей, которые занимались уже тогда нейросетями возможно гроккинг был бы открыт в 2016-ом, а не в 2023-ем, и в России, а не за её пределами.
Моя статья "Давайте изобретать велосипеды": https://habr.com/ru/articles/249657/ Там в качестве пример показана визуализация, которую я придумал изобретая велосипеды в далёком 2014-ом году. Этой весной выступал на ODS фесте и показывал там в частности кое какие вещи, которые видны из этой визуализации и в частности упоминавшиесмя в той далёкой статье 2015-ого года, и люди такие "Ого чувак! Ты открыл мне целый мир!". А всё потому что в самом начале своих занятий нейросетями я изобретал велосипеды, а многие люди просто берут готовое не пробуя его на прочность в свободное от работы время.
Почему-то из статьи по вашей ссылке нет ссылки на то место, из которого эти алгоритмы выросли: https://ru.wikipedia.org/wiki/Метод_коррекции_ошибки, а выросли они из алгоритмя придуманного ещё розенблаттом, и у него много интересных особенностей о которых люди не в курсе. Я свою первую нейросеть тоже на этом алгоритме делал. Например для алгоритма коррекции ошибки доказана теоретическая сходимость, в отличии от обратного распространения.
Я вам больше скажу в моих первых сетях был ещё и класс синапса, Здесь на хабре есть мои статьи 2014-215-ого годов. И знаете что? Благодаря этому я мог делать такие вещи с сетями, которые в матрицу хоть и можно запихать, но они туда так плохо лезут, что никому тупо в голову такая мысль не приходит.
Например я красиво визуализировал сетки и их состояния и когда столкнулся с проблемой затухания градиента я просто прокинул несколько синапсов с нескольких последних слоёв в несколько первых. Оказалось, что всего 3-5 синапсов (а не матриц) достаточно чтобы проблему полностью преодолеть.
Понятно что это можно выразить и на матрицах, умножая на спарс матрицы, которые почти пусты, и получится очень частный случай резидуал коннекшенов, но даже те люди, которые знают про архитектуру резнета не догадываются попробовать как себя поведет сеть если добавить в неё несколько скипконнекшенов не матриц, а одиночных чисел. В результате теперь я знаю про затухание градиентов больше, чем 95% людей занимающихся нейросетями.
Так что не стоит мешать человеку знакомиться с нейросетями его собственным персональным способом. Да, это очень далеко от оптимума, но по дороге он может приобрести разные полезные интуиции, которые потом сможет и на матрицы перенести, если захочет.
Люди читают жопой... Я всего лишь напомнил, что тот факт, что пьесу ставили год и выдали престижную российскую театральную премию, дискредитирует человека точно так же как если бы он с голой жопой вышел на красную площадь и мошонку гвоздём к площади прибил.
И да, я тут погуглил и изменил своё мнение на счёт домоклова меча. Я просто цитирую из википедии "Финист Ясный Сокол": "пьеса российского драматурга Светланы Петрийчук, рассказывающая о российских женщинах, которые бегут в Сирию, чтобы там стать жёнами террористов. Постановка основана на материалах уголовных дел против женщин, уезжавших в Сирию, которых затем судили за «пособничество терроризму»."
Кто бы мог подумать ставя пьесу о Ясных Соколах из ИГИЛ, что что-то может пойти не так... :))))))))
Я более чем уверен, что статья об оправдании терроризма прямым и явным образом была придумана именно для того чтобы бороться именно с таким творчеством.
>> шел больше года и получил престижную российскую театральную премию
Ассоциация театральных критиков назвала режиссера этого спектакля «Человеком года». Вряд ли может быть что-то сильнее дискредитирующее человека, чем получение престижной российской театральной премии.
Грузовым автомобилям следовать впритык запрещает Ньютон, который в своих законах говорит, что у гружёного грузовика тормозной путь становится таким, что между ним и впереди идущим грузовиком как раз помещается легковушка, которую они в случае чего расплющат. :))))
Видел один раз на дороге прекрасную аварию, когда девушка вовремя не перестроилась в левый ряд для поворота, поэтому юркнула из правого в свободное место перед грузовиком и начала тормозить с привычной ей силой. Водитель самосвала, гружёного песком честно тормозил изо всех сил, и я более чем уверен, ни сказал за это время ни одного слова, которое можно было бы процитировать. Скорее всего предлоги были тоже не очень... Дёшево отделалась, в общем-то.
>>> К сожалению, в России с мужчиной может случиться всё что угодно - арестуют, убьют, ограбят, оклевещут, бизнес отожмут, покалечат. И тогда о "хорошем питании, хороших врачах, хорошем образовании, хороших условиях жизни" детей придётся заботиться матери.
В этом месте сразу вспоминается история Иана Мёрдока - создателя Debian Linux-а, которого убили американские полицейские, за то что он угрожал судом и расследованием, за то что они с ним сделали дубинкой.
Для верующих, что с ними что-то может случиться только в России последнее время открылось огромное пространство для прозрений. Но если хотите учиться на чужих ошибках, а не на своих - посмотрите на демографическую пирамиду выбранной вами страны. На них обычно кроме половозрастного состава показывается ещё и кого и на сколько больше, мужчин или женщин. И почти во всех странах мужчин рождается больше, но уже в 30-35 лет мужчин остаётся в живых меньше, и чем дальше тем сильнее. Вот например картинка для Австралии, в которой вроде как нет сталина путина и войны.
Демографическая пирамида Австралии
В России ситуация, конечно, сильно хуже, но только за счёт старшего поколения которое активно вымирало в процессе перестройки. Старше 80-ого года как минимум. На пирамиде Это прям невооружённым взглядом видно, а в вашем поколении ничего драматического не происходит по крайней мере в части смертности.
Ну и женщина, когда выбирает себе мужчину, она, внезапно, ещё и хочет чтобы её детки были получше, а как сказал глава кафедры эволюции МГУ А. Марков: "К сожалению исследования показывают, что лучшее, что вы можете сделать для интеллекта своих детей - это выбрать им правильных родителей". Даже если с мужчиной случается что-то непредвиденное, его гены, давшие ему хороший интегральный показатель успеха, достаются его детям. Что интеллект, что доход, что многие личные качества имеют неплохой такой процент генетической обусловленности. Далеко от 100% конечно, но исследования показали, что как минимум у некоторых личных качеств вклад генов как минимум выше чем вклад всего семейного воспитания вместе взятого. Причём по интеллекту, например, это чрезвычайно серьёзные исследования в которых выборка составляет больше 100000 человек чей геном был прочтён, по любым академическим меркам выводы запредельно достоверные и надёжные.
Ну а если девушки не хотят с вами быть просто за то что вы такой прекрасный и умный, а ещё хотят чтобы вы были успешным и с деньгами возможно это потому что вы не такой умный как какой-нибудь Ландау. Скажите за это спасибо своим родителям, и чуть меньше - свои учителям.
Мальчику - ничего кроме секса, а вот когда он повзрослеет и станет мужчиной тогда ещё лучшую из возможных спутниц, и детишек е.. лучших.
Поскольку не все мальчики становятся мужчинами без посторонней помощи иногда детки заводятся по неосторожности и помогают им пройти эту трансформацию, не всегда, впрочем. Где-то видел статистику, что больше 40% браков в США начинаются со случайного секса.
Могли бы и по ссылке пройти, которую я вам прислал. Там английским по белому написано:
Тогда понятно откуда такое грубое пренебрежение временем, затрачиваемым на разработку, очевидно времени у вас завались, раз можете себе такой подход позволить. :\
Смотрите, вот у вас получается два числа: среднее и сигма, то есть сдвиг и 1/(множитель+e). Очевидно, что применять их непосредственно нельзя, потому что их слишком сильно будет колбасить при сколько-нибудь маленьком размере батча, например при батчах по два семпла их вообще будет носить из стороны в сторону.
Чтобы такой фигни не было к ним применяетс я экспоненциальное сглаживание, в торче с импульсом по умолчанию (1-1/10), а в тензорфлоу (1-1/100) После этого среднее и сигма оказываются средними уже не по конкретному батчу, а по большому куску учебной последовательности, в случае TF даже очень большому более ста батчей.
И вот теперь уже эти сглаженные множитель и сдвиг применяются. Собственно обучение параметров происходит не при обратном проходе, а при прямом. Отсюда сложность, нужно ручками в градиент записать такие числа, чтобы они отражали изменение, вычисленное при прямом проходе. Но поскольку вы пишете руками, то можете вместо того чтобы подгадывать числа, просто учить их при прямом проходе. Возникает неоднородность в коде, конечно.
Более подробно о роли дисперсии градиентов при обучении и сглаживании могу посоветовать мой собственный доклад на ODSFest: https://www.youtube.com/watch?v=Npm-awHtfeM
>> Сглаживание? Где? Там нормализация, а потом сдвиг и сжатие. Или это в pytorch добавлено?
Это везде добавлено и из коробки просто по умолчанию включено.
Keras/TF: https://keras.io/api/layers/normalization_layers/batch_normalization/ , https://www.tensorflow.org/api_docs/python/tf/keras/layers/BatchNormalization переменная momentum = 0.99
Pytorch: https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm2d.html переменная momentum=0.1 (это обратная величина, соответствует 0.9)
Theano https://docs.huihoo.com/theano/0.9/library/tensor/nnet/bn.html переменная running_average_factor=0.1
А вы хоть какую-нибудь библиотеку используете или всё сами? Как вы могли этого не знать, это же половина самого важного, что есть в батчнорме.
>> Удачи тому, кто разберётся, например, в обратном проходе в batch normalization по статье из Википедии. :)
Справедливости ради в батчнорме не разбираются даже те, кто его придумал. :))
Вы, например, знали, что примерно половина эффекта от батчнорма в том, что там есть свой bias, и когда люди batchnorm добавляют, то обычно убирают bias у обычного слоя перед ним, а поскольку в батчнорм встроено своё экспоненциальное сглаживание, по умолчанию 0.9, обычно, то bias обучается с в десять раз меньшей дисперсией чем нормальные веса. Если убрать батчнорм, и учить bias обычных слоёв с моментом в десять раз сильнее, половину всей прибавки от батчнорма вы получите на одном этом.
Такого вы ни в какой википедии не прочитаете, тут нужно велосипеды изобретать. :)))
В одной из моих сетей используется операция topk, и возвращаемые ей индексы, её вы тоже к матричному умножению сведете? :)))))
Вы вольны остаться при своём мнении, но полезно знать, что некоторые люди считают его неправильным, и работающим кодом это демонстрируют, поэтому не нужно насаждать своё мнение подрастающему поколению. Пусть они составят своё мнение, и возможно потом расскажут вам что-нибудь интересное.
За ссылку спасибо. Я конечно же спутал и имел в виду гугленет, а не обычный ленет, но это не важно. Дело только в размере, ну и максимум вам ещё конкатинация матриц потребуется. Очевидно, что в виде матричных операций записывается всё что популярно, потому что большинство людей искали ответ именно в такой форме, петля положительной обратной связи или же замкнутый круг. Мне просто неприятно, что новые и новые поколения людей продолжаю копаться там же, на месте, где уже всё выкопано, и автомл давно лучше людей справляется.
И то, что я тут с пол десятка примеров привёл, которые к матричным операциям не сводятся, а вы их все игнорируете лишь убеждает меня в полезности не матричного подхода, чтобы новые люди имели в своем арсенале мысленных внутренние представления, позволяющие им не пропустить что-то необычное, если оно промелькнёт мимо них.
>> Знаете, какая основная претензия к таким статьям? Они бы были бы вполне ничего, если бы их авторы шли бы дальше.
Я вот пошёл. В моей первой статье на хабре были классы нейронов, и даже хуже того, для всяких циклических операций использовался Linq - это такой объектный движок над итераторами на C#. Я конечно, не самый типичный любитель нейросетей по ряду причин, ну так и этот парень может оказаться нетипичным. Не подождём - не узнаем.
>>32x32 — это только поиграться с мутными картинками.
Вернее даже с мутными текстурками, но тем не менее именно играясь с ними я придумал neck для компьютервижена, который из фичеэкстрактора вынимает информацию в такой форме, что ему пофигу на размеры картинки вообще. То-есть картинка 1024x320 и маленький её кусочек 256x256 на котором расположен интересующий объект, с точностью до простого линейного преобразования дают одинаковый эмбединг.
Чуть больше веры в людей, изобретающих велосипеды, и они смогут вас удивить. :))
>> Тензоры тоже очень просто. И при этом очень быстро.
Существует адская пропасть между "быстро считается" и "быстро запрограммировать". Для второго нужны классы абстракций - первое в процессе исследования вообще мало кого интересует, до тех пор пока код работает приемлемое время никто даже и не парится его оптимизацией.
Попробуйте безо всяких абстракций на голых матричных умножения запрогать какой-нибудь ленет или йоло, зрелище будет презабавненькое, но очень долгое. Говоря о быстроте экспериментов я имел в виду конечно же время на то чтобы написать экспериментальный код, а не то с какой скоростью он учится. До тех пор, пока он учится быстрее, чем я сделал и съел бутерброд меня его скорость не интересует.
P.S. Зашёл на ваш ютуб-канал и увидел голограммы. Не подскажите случайно где можно в наше время прикупить настоящую толстую голограмму, ну такую, которую можно в белом свете смотреть. хочу дитёнышу показать. А то сейчас в ответ на такой запрос в поисковик выпадает стопятьсот страниц с переливающимися наклейками.
>> Понимание происходящего и правильная реализация — разные вещи. Из того, что вы поняли, как работает нейрон или свёртка, вовсе не следует, что делать их надо нативно и писать про это статью
Как вы собираетесь что-то исследовать не реализуя это в коде? :\ Чтобы что-то понять, нужно с ним поиграться, а чтобы с ним поиграться нужно иметь реализацию, в которой эти игры делаются просто. Уровень абстракций подбирается под задачу. Для кого-то понимания минимальный уровень - всё дерево вычислений, для каких-то пониманий нужно ковыряться в терминах слоёв, а для каких-то пониманий приходится опускаться в более мелкие абстракции, иначе каждый эксперимент будет занимать сутки кодинга.
А если не написать статью, так никто и не поддержит и идеями своими не поделится.
>> Я не использую pytorch и с питоном не знаком. Я работаю только с С++.
Торч под капотом уже почти весь на плюсы переписан, кстати. При желании вы можете насладится всеми прелестями автограда, в том числе для очень необычных функций, типа topk. Попробуйте, вам может понравиться. :)
>> в противном случае вы не дождётесь обучения хоть сколько-нибудь большой модели за приемлемое время.
Вопрос с какого размера моделями и датасетами вы хотите работать. Например для многих моих экспериментов я использую cifar100 - задача уже приближённая к реальным, но обучить сеть на её на домашнем 3060 можно за считанные минуты и большинство выводов полученных на нем распространяются и на imagenet. А уже потом, когда эксперименты проделаны и выводы понятны, можно брать сети потолще и какой нибудь COCO. Но при этом свои первые работы и первые выводы я делал вообще на синтетическом датасете на основе одной единственной картинки x - координаты точки, y - rgb этой точки. Очень простая задача, с которой справляется даже сетка написанная на CPU и при этом посмотрев что нарисовала вам сеть и сравнив с исходной картинкой можно многое понять о том как и почему сеть работает. Там на картинке разделяющие плоскости прямо буквально видны - роскошь, которую не могут себе позволить люди изучающие реальные задачи.
Он же вам тут не трансформеры на классах делает миллиардные, а просто учебную сетку. Какова исследовательская задача, такие и инструменты.
Потом переносить придётся, хотя опять скажу - разреженные спарс матрицы и матрицами то называются только чтобы страусов не пугать.
Я тут говорю про то, что если сначала сделать матрицы на классах и и более обычные, то вы сможете понять их работу и другими способами, научитесь смотреть на них с двух сторон, а не с одной, к которой все привыкли и почти всё, что можно будет с этой стороны разглядеть уже разглядели.
>> Так что нет, никаких классов не должно быть
Вас же не смущают классы модуля в том же пайторче. Если бы не было инкапсуляции внутри этого класса всего функционала автограда куча людей стучалось бы лбом о дифференциирование того что они напридумывали и больше половины этого столкновения с реальностью бы не вывезли. а те кто вывезли, делали свои сети на много дольше. Класса нейрона не должно быть в инференсе, до поры до времени, тут я согласен, но если человек умеет думать в терминах классов, он сможет сделать с сетями такие вещи, о которых он бы даже не подумал если думает о происходящем только как о матричных операторах не вникая в то, какие более мелкие сущности были представлены в виде матриц.
Возвращаясь к тем же CNN, если человек смотрит на свёртку только как на матричное умножение, а не рассматривает каждое ядро свёртки как отдельную сущность, по сути дела такой вот нейрон, ему просто в голову не придёт задуматься, а какие из свёрток для его сети полезны, а какие нет, и нельзя ли часть свёрток из сети повыкидывать, сильно ускорив инференс (спойлер:можно), или даже оставить всю свёртку тех же размеров, но заменив часть ядер на другие, более полезные. И вот эту операцию уже очень трудно делать если не иметь отдельного класса для нейрона(или отдельного ядра свёртки, математика за ними стоит одинаковая), как минимум потому что вы захотите иметь класс в который нейрон можно из свёртки выделить и из которого отдельное ядро можно обратно в свёртку положить, даже если внутри сети он в виде сетки не представлени и существует только в виде индекса в матрице.
Что-то дернуло меня перечитать комментарии к своей допотопной статье, и это было прикольно. :)))
Во-первых могу посоветовать посмотреть мой доклад на последнем ODSфесте: https://www.youtube.com/watch?v=Npm-awHtfeM, почти всё, о чём я говорил тогда в 2015-ом году прекрасно подтверждается и на типовой задаче кормпьютервижена, в котором, казалось бы, всё изучено вдоль и поперёк. Тут в докладе, я кстати, привожу и строгую математику, описывающую связь размеров батча и стохастики с другими параметрами обучения. Подавляющее большинство людей как не понимали всего вот этого, так и продолжают не понимать. Восемь лет прошло, а мои велосипеды все ещё едут лучше общепринятых. :)))
Во-вторых, вы тут упоминали, что вам не нравятся мои определения "обобщений", вернее то что я вам их не раскрыл тогда в дискуссии. Если вам интересно, то посмотрите свежие статьи про такое явление как гроккинг в нейросетях, обнаруженное совсем недавно. Вот мои обобщения, как я убеждён, это и есть то, что ведёт к гроккингу. Строго я это ещё не доказал, но очень похоже по всем признакам. Если бы тогда в 2015-ом встретил больше заинтересованности от людей, которые занимались уже тогда нейросетями возможно гроккинг был бы открыт в 2016-ом, а не в 2023-ем, и в России, а не за её пределами.
Моя статья "Давайте изобретать велосипеды": https://habr.com/ru/articles/249657/
Там в качестве пример показана визуализация, которую я придумал изобретая велосипеды в далёком 2014-ом году. Этой весной выступал на ODS фесте и показывал там в частности кое какие вещи, которые видны из этой визуализации и в частности упоминавшиесмя в той далёкой статье 2015-ого года, и люди такие "Ого чувак! Ты открыл мне целый мир!". А всё потому что в самом начале своих занятий нейросетями я изобретал велосипеды, а многие люди просто берут готовое не пробуя его на прочность в свободное от работы время.
Почему-то из статьи по вашей ссылке нет ссылки на то место, из которого эти алгоритмы выросли: https://ru.wikipedia.org/wiki/Метод_коррекции_ошибки, а выросли они из алгоритмя придуманного ещё розенблаттом, и у него много интересных особенностей о которых люди не в курсе. Я свою первую нейросеть тоже на этом алгоритме делал. Например для алгоритма коррекции ошибки доказана теоретическая сходимость, в отличии от обратного распространения.
Я вам больше скажу в моих первых сетях был ещё и класс синапса, Здесь на хабре есть мои статьи 2014-215-ого годов. И знаете что? Благодаря этому я мог делать такие вещи с сетями, которые в матрицу хоть и можно запихать, но они туда так плохо лезут, что никому тупо в голову такая мысль не приходит.
Например я красиво визуализировал сетки и их состояния и когда столкнулся с проблемой затухания градиента я просто прокинул несколько синапсов с нескольких последних слоёв в несколько первых. Оказалось, что всего 3-5 синапсов (а не матриц) достаточно чтобы проблему полностью преодолеть.
Понятно что это можно выразить и на матрицах, умножая на спарс матрицы, которые почти пусты, и получится очень частный случай резидуал коннекшенов, но даже те люди, которые знают про архитектуру резнета не догадываются попробовать как себя поведет сеть если добавить в неё несколько скипконнекшенов не матриц, а одиночных чисел. В результате теперь я знаю про затухание градиентов больше, чем 95% людей занимающихся нейросетями.
Так что не стоит мешать человеку знакомиться с нейросетями его собственным персональным способом. Да, это очень далеко от оптимума, но по дороге он может приобрести разные полезные интуиции, которые потом сможет и на матрицы перенести, если захочет.
Люди читают жопой... Я всего лишь напомнил, что тот факт, что пьесу ставили год и выдали престижную российскую театральную премию, дискредитирует человека точно так же как если бы он с голой жопой вышел на красную площадь и мошонку гвоздём к площади прибил.
И да, я тут погуглил и изменил своё мнение на счёт домоклова меча. Я просто цитирую из википедии "Финист Ясный Сокол": "пьеса российского драматурга Светланы Петрийчук, рассказывающая о российских женщинах, которые бегут в Сирию, чтобы там стать жёнами террористов. Постановка основана на материалах уголовных дел против женщин, уезжавших в Сирию, которых затем судили за «пособничество терроризму»."
Кто бы мог подумать ставя пьесу о Ясных Соколах из ИГИЛ, что что-то может пойти не так... :))))))))
Я более чем уверен, что статья об оправдании терроризма прямым и явным образом была придумана именно для того чтобы бороться именно с таким творчеством.
>> шел больше года и получил престижную российскую театральную премию
Ассоциация театральных критиков назвала режиссера этого спектакля «Человеком года». Вряд ли может быть что-то сильнее дискредитирующее человека, чем получение престижной российской театральной премии.
P.S. На счёт домоклова меча вы, конечно, правы.
Стоило один раз неосторожно примкнуть к республиканской партии, как невидимая рука рынка крепко схватила маска за выступающие части. :)
Грузовым автомобилям следовать впритык запрещает Ньютон, который в своих законах говорит, что у гружёного грузовика тормозной путь становится таким, что между ним и впереди идущим грузовиком как раз помещается легковушка, которую они в случае чего расплющат. :))))
Видел один раз на дороге прекрасную аварию, когда девушка вовремя не перестроилась в левый ряд для поворота, поэтому юркнула из правого в свободное место перед грузовиком и начала тормозить с привычной ей силой. Водитель самосвала, гружёного песком честно тормозил изо всех сил, и я более чем уверен, ни сказал за это время ни одного слова, которое можно было бы процитировать. Скорее всего предлоги были тоже не очень... Дёшево отделалась, в общем-то.
>>> К сожалению, в России с мужчиной может случиться всё что угодно - арестуют, убьют, ограбят, оклевещут, бизнес отожмут, покалечат. И тогда о "хорошем питании, хороших врачах, хорошем образовании, хороших условиях жизни" детей придётся заботиться матери.
В этом месте сразу вспоминается история Иана Мёрдока - создателя Debian Linux-а, которого убили американские полицейские, за то что он угрожал судом и расследованием, за то что они с ним сделали дубинкой.
Для верующих, что с ними что-то может случиться только в России последнее время открылось огромное пространство для прозрений. Но если хотите учиться на чужих ошибках, а не на своих - посмотрите на демографическую пирамиду выбранной вами страны. На них обычно кроме половозрастного состава показывается ещё и кого и на сколько больше, мужчин или женщин. И почти во всех странах мужчин рождается больше, но уже в 30-35 лет мужчин остаётся в живых меньше, и чем дальше тем сильнее. Вот например картинка для Австралии, в которой вроде как нет сталина путина и войны.
В России ситуация, конечно, сильно хуже, но только за счёт старшего поколения которое активно вымирало в процессе перестройки. Старше 80-ого года как минимум. На пирамиде Это прям невооружённым взглядом видно, а в вашем поколении ничего драматического не происходит по крайней мере в части смертности.
Ну и женщина, когда выбирает себе мужчину, она, внезапно, ещё и хочет чтобы её детки были получше, а как сказал глава кафедры эволюции МГУ А. Марков: "К сожалению исследования показывают, что лучшее, что вы можете сделать для интеллекта своих детей - это выбрать им правильных родителей". Даже если с мужчиной случается что-то непредвиденное, его гены, давшие ему хороший интегральный показатель успеха, достаются его детям. Что интеллект, что доход, что многие личные качества имеют неплохой такой процент генетической обусловленности. Далеко от 100% конечно, но исследования показали, что как минимум у некоторых личных качеств вклад генов как минимум выше чем вклад всего семейного воспитания вместе взятого. Причём по интеллекту, например, это чрезвычайно серьёзные исследования в которых выборка составляет больше 100000 человек чей геном был прочтён, по любым академическим меркам выводы запредельно достоверные и надёжные.
Ну а если девушки не хотят с вами быть просто за то что вы такой прекрасный и умный, а ещё хотят чтобы вы были успешным и с деньгами возможно это потому что вы не такой умный как какой-нибудь Ландау. Скажите за это спасибо своим родителям, и чуть меньше - свои учителям.
Мальчику - ничего кроме секса, а вот когда он повзрослеет и станет мужчиной тогда ещё лучшую из возможных спутниц, и детишек е.. лучших.
Поскольку не все мальчики становятся мужчинами без посторонней помощи иногда детки заводятся по неосторожности и помогают им пройти эту трансформацию, не всегда, впрочем. Где-то видел статистику, что больше 40% браков в США начинаются со случайного секса.
Ну вы как читаете, так вам и грустно. Советую вместо этого почитать https://ru.wikipedia.org/wiki/Задача_о_разборчивой_невесте возможно станет повеселее.