Pull to refresh
-2
0
Дмитрий Черняк@dmiche

IT-архитектор, владелец компании, философ

Send message

Про критерии опровержимости можно модель саму и спросить, загрузив в неё обратно эту портянку. Собственно, можно точно так же, загрузив портянку, спросить и выжимку по ней - если Вам читать долго, или что-то найти хотите. Модель для этого и предназначена и не надломится. Собственно, для этого портянка и нужна в таких статьях - это "исходник", чтобы каждый мог поиграть (не знаю, осознанно ли это сделал автор, но сделал верно!). Просто культура использования ИИ ещё не очень развита и эти возможности не так очевидны, как, например, перемножение при помощи калькулятора.

Однако, для оценки идеи (а представлена именно она) опровержимость не принципиальна - идея оценивается здравым смыслом и интуицией, а формального доказательства требует только, когда превращается в теорию.

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

  1. Непонимание того, что опровержимость имеет границы применения. Например, если вы докажете, что 2 х 2 != 4, или сможете нарушить коммутативный закон, то сломаете арифметику. Однако, это опровержение даётся в рамках "математической песочницы", строго её аппаратом и строго в границах тезиса о том, что всё на свете выразимо скалярными величинами посредством операторов преобразования. И за эти рамки с требованием опровержимости выходить не следует.

  2. Если же мы переходим в область метафизики (а представленный текст - это она), то у нас меняется понятие исчисляемого элемента. Грубо говоря, если в математике у нас операторы - это действия преобразования, а исчисляемое - количество, то в метафизике исчисляемым становятся качество (характеристика процесса состоящего из однотипных действий преобразования), а операторами становятся разные грани их соответствия. И вот тут у нас вопрос о фальсифицируемости разделяется на два разных:

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

    2. Вопрос о фальсифицируемости самой математики: а действительно ли у нас "вообще всё" выразимо её аппаратом? И если Вы, вдруг, решите отказать метафизике в праве на существование, то начните с приведения критерия фальсифицируемости самой математики - её права быть единственной "песочницей исчисления". Хотя бы задумайтесь об этой задаче.

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

P.S. Автору: да, интересно, спасибо. Портянку к себе утащил, погоняю.

А что вы всё-таки тестировали? Точность поиска опорных документов в RAG, т.е. эмбеддинги, или точность обработки найденных опорных документов для выдачи ответа?

Есть такая инструкция от художников: "как нарисовать сову". Она очень простая:
1. Рисуете овал
2. На нём рисуете ещё один овал.
3. Превращаете это в сову.

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

P.S. Ну и про эмбеддинги - тоже сова.

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

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

А зачем нужен реранк в прведённом случае? Ведь, поиск, с одной стороны, вернёт score, которые считаются как мера близости к вектору вопроса. А с другой - если мы выбираем 3-5 чанков, то отвечающая ЛЛМ сама разберётся, что ей релевантно, а что нет - можно вместе с мусором прогрузить.

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

Бирюзовые организации хороши при сочетании двух факторов:

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

2) Когда бизнес находится в области турбулентности, правила и ходы в которой неизвестны. Либо это новый бизнес, либо новая область, либо на улице очередной кризис и старые правила не работают, а новые ещё не устоялись. Т.е., когда неизвестно, кто в реальности окажется прав.

Вот в этой ситуации красные вчистую проиграют тем, кто сможет собрать бирюзовый процесс.

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

Поэтому на таких качелях и живём и, действительно, это особенность территории.

В общем, всё имеет своё место, время, форму и предназначение, а мода - это от лукавого.

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

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

Separated - разделённый
Разделяйте всё: декларацию от имплементации, интерфейс от логики, хранение от вычисления и т.д. Код, написанный таким образом, выглядит более профессионально.

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

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

Levelled - уровневый
Для любой задачи создавайте уровни абстракции. Задумайтесь, какую общую проблему решает этот цикл, или интерфейс? Например, если вам нужно хранить конфигурацию, то необходимо понимать, что это достаточно общая задача и их удобно держать в человекочитаемом формате. Например, yaml. Создайте вначале абстракцию конфига, затем абстракцию чтерия из него в словарь. Но, поскольку в программе удобнее обращаться к переменным, не лишней будет ещё абстракция перевода значений в имена переменных модуля настроек. Но лучше - в переменные объекта, чтобы можно было иметь несколько независимых инстансов, если понадобится.
Теперь добавьте немножко оккультизма: будет хорошо, если эти имена будут вычисляться, чтобы соответствие значений конфига и переменных модуля нигде в коде не встречалось. Только так можно получить подлинную абстракцию.

Intelligent - интеллектуальный
Используйте самые передовые алгоритмические техники, которыми владеете. Это сокращает линейный код на 10%.

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

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

Статья жизненная, жду продолжения.

Это был сарказм. Мне понра :)

А горькая правда в том, что это лишь на 20% объясняется глупостью и спешкой. Многое из здесь приведённого - это тот способ кодирования, который делается степенно, со вкусом и уважением к собственной квадратноголовости. И вот есть большая когорта людей, которые оттачивают этот навык.

Чего-то у вас к концу ленту зажевало.

Куда MultiHeadAttention()-то вставлять? В примере Вы снова биграммы трените.

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

При этом каждый следующий слой технически может либо копать ещё глубже "в философию", т.е., делать необратимое отображение в другое пространство представления, либо делать "повтор", т.е. обратимое отображение в том же пространстве представления. Повтор будет выглядеть как рассуждение.

Было бы логично, если эта конструкция, кроме упомянутых двух действий сможет ещё "собирать обратно" и обобщать. В общем, анализ, дедукция, синтез и индукция. Технически слои это позволяют, а что в реальности они будут делать - им всё равно и зависит только от обратной связи на обучении и внимании на инференсе.

Просто получается, что нам достаточно обучать всего один слой, замыкая его самого на себя N раз, а не передавая на другой слой. Тогда мы получим один слой, который способен делать любые атомарные операции и на предметах, и на абстракциях. А после обучения инференс мы сможем делать либо тоже итеративно, экономя память, либо налить в GPU бутерброд из N таких слоёв для ускорения.

Собственно, где-то была работа о том, как в Мистрале (кажется) дублировали обученные слои и он от этого сильно хуже не становился.

Доходчиво и интересно. Редкость, спасибо!

По теме: выходит, что такая модель только в 2-ходовку умеет? Но если мы изменим архитектуру, оставим только один комплект слоёв (условно "нижние"), замкнём их не на верхние слои, а на самих себя и будем это прокручивать при обучении N раз, то (при условии, что мощность слоя позволяет в себя вместить и факты и обобщения), мы получим внятный механизм рассуждений.

А что посоветуете почитать по части подхода к созданию своего датасета?

На HF-сетах всё красиво, но когда свой делаешь, обычно довольно странный результат.

При МОР мы не в производную что-то подаём, а саму эту производную рассчитываем, как число.
В формулу подаём то, что на выходе этого нейрона было.
А формулы для сигмоиды и тангенса написаны на второй врезке после анимации.
Типа (1-out)*out

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

Для того, чтобы этот вопрос был поставлен, разработка ПО должна была пройти путь от тех самых "лабораторий", через "заводики" (специализированные компьютерные фирмы), через появление конкурентного рынка продукции таких "заводиков", к тому, что в любой корпорации теперь есть уже не своя лаборатория, а свой заводик.

Таким образом, если раньше разработкой ПО руководили профессиональные кадры, задачи были медленно меняющимися (бизнес над душой не висел, делался, как правило, универсальный продукт), бюджеты были ограничены, то, после проникновения разработки в корпоративный сектор, всё стало в точности до наоборот:

Денег куры не клюют, универсальность не нужна, потребности "давай-давай-переделай". Именно в этой ситуации аджайл почти идеален. Как только что-то из этого пропадает (а сегодня оно у американов опять пропадает, потребности стандартизуются, копипастеры совершенствуются), аджайл становится пятым колесом в телеге.

При этом, необходимо отметить, что в России по этим параметрам мы до нормального аджайла ещё и не доросли даже - у нас в инженерке ещё впереди это состояние, лет через 15. Сейчас аджайл бы, скорее, в науке и образовании прижился - там паттерн условий соответствует.

Частотная область в реальности существует.

Во-первых, таковым является пространство внутреннего слоя нейросети. С точки зрения смысла его содержимого, у нас обычные алгоритмы оперируют понятиями пространства и энергии (время в них рассматривается только как обычная пространственная координата), а нейросеть хранит вероятности и связи, что, по сути, является "выворачиванием" континуума и представлением его через время и информацию. Частотное представление - это тоже представление времени в более естественной его форме, как суммы переодичностей.

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

О некоторых особенностях этого пространства в реальных системах у меня есть заметка в блоге.

Не знаю, зачем Вы спорите, если при этом другими словами пересказываете мой предыдущий комментарий...

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

Когда в 40 лет меняют отрасль, это должно выглядеть так:
- Ну что, тебя взяли?
- Ещё бы они меня не взяли!

От кодера в 40 я бы ожидал, что увижу в нём через год недоученного мидла, а через три шибко недоученного сеньора. Имея на входе цену джуна.

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

Тогда мы имеем капитализацию возраста и есть о чём говорить.

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

Сеньор - это же не про статус, это про 3х личную производительность (как минимум) плюс отсутствие затрат на микроменеджмент сотрудника плюс менторство от него.

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

А если в 35 этого нет, то возникает вопрос: чем человек занимался 15 лет своей жизни? И, одновременно, ответ на то, чем он, на самом деле, будет у вас заниматься.

Дело не (с)только в возрасте, но и в том, что этому возрасту должно соответствовать.

Профильный специалист в 35+ должен быть звездой (сеньор, тимлид, либо руководитель). И у него будет красивый послужной список. Если он претендует на позицию ниже, то это с высокой долей вероятности - скрытая профнепригодность.

Если 35+ и у него за спиной опыт сварщика-водителя-предпринимателя, затем 1.5 года компьютерных курсов и ни одного собственного проекта "в гараже" - это, скорее всего, честный труженик, который в большой конторе будет 10 лет джуном, либо будет прикидываться мидлом на однотипных проектах и его это устроит.

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

Самое интересное в истории с рекурентными сетями и трансформерами - это то, что математики так и не поняли, что делали не так и что сделали так.

20 лет развлекухи с рекурентостью было протрачено в предположении, что язык представляет собой последовательную конструкцию.

Однако для всех технарей, кроме тех, что пришли из математики и лингвистики, очевидно, что качеством последовательности обладает не сам язык, а лишь канал связи. Мы не можем передать целостный образ "наложением рук", мы вынуждены понижать его размерность, сериализировать его. Затем получатель, уже в своей голове, развернёт сериализированный пакет обратно в топологическую картинку.

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

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

Т.е., то, что фраза имеет пространственную топологию: начало, конец, близость и т.п. - это не шум. А вот то, что мы её принимаем постепенно - это шум, который только лишь мешает. Собственно, работы по RNN - это ни что иное, как попытка приоритетно обрабатывать этот самый шумовой компонент.

Information

Rating
5,680-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity