Митасов Андрей Павлович : другие произведения.

Металоция неведомого. Модуль Л. Ликбез

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
 Ваша оценка:
  • Аннотация:
    Сборник ссылок на литературу для расширения кругозора.
    Расшифровка некоторых терминов.
    Крайнее обновление 08.12.2024.

  
  "Тот факт, что многие ищут истину и не находят ее,
  объясняется, вероятно, тем, что пути к истине,
  подобно дорогам в ногайской степи, ведущим от одного места к другому,
  столь же широки и длинны."
  Георг Кристоф Лихтенберг
  
  "Несомненный признак всякой хорошей книги это тот,
  что она нравится тем больше, чем человек становится старше."
  Георг Кристоф Лихтенберг
  
  Оглавление:
   Вместо введения.
  
  Часть 1. Библиотека.
   Нейронки и ГПТэшки.
   Фракталы.
   Вселенная.
   Метафизика.
   ТРИЗ.
   Программирование.
   Любимая фантастика.
   Педагогика.
   Логика.
   Вместо заключения.
  
  Часть 2. Непонятки простыми словами.
   Нейронная сеть простыми словами.
   Градиентный спуск простыми словами.
   Эмбеддинги простыми словами.
   Трансформеры простыми словами.
   Dropout и Batch normalization простыми словами.
   Математика простыми словами. Фрагмент 1.
   Data Science простыми словами.
   Основа теории вероятности простыми словами.
   Контринтуитивные следствия "Закона больших чисел" на примерах.
   Условная вероятность простыми словами.
   Структуры нейросетей простыми словами.
   Функции активации нейронов простыми словами.
   Разработка интеллектуальной ML-системы простыми словами.
   Еще раз об эмбеддингах еще более простыми словами.
   "Обучение с подкреплением" простыми словами.
   "Проклятье размерности" в пространстве.
   Сверточные сети простыми словами.
   Чем машинное обучение отличается от статистики.
   Батчи в обучении и инференсе нейросетей простыми словами..
   Еще раз о векторизации текста еще более простыми словами.
   Оптические процессоры простыми словами.
   Марковские цепи достаточно простыми словами.
   О реальной "хрупкости" Центральной Предельной Теоремы.
   Распределение Стьюдента простыми словами.
   Обучение с учителем и без простыми словами.
   Сети Колмогорова-Арнольда (KAN) простыми словами.
   Об оценке корреляции временных рядов простыми словами.
   К вопросу о корреляции разнородных нестационарных процессов.
   Квантование нейросетей простыми словами.
   "Множественное вменение" простыми словами.
   Немного о фракталах самыми простыми словами.
   Автоэнкодеры простыми словами.
   Генетические алгоритмы простыми словами.
  
  Иллюстрация:
   Шлюп "Ликбез" от "Модели Кандинский 2.1".
   Шлюп "Ликбез" от "Модели Кандинский 3.0".
   "Батчи в обучении и инференсе нейросетей" от Copilot.
   Шлюп "Ликбез" от "Модели Кандинский 3.01".
   Шлюп "Ликбез" от "Модели Кандинский 3.1".
  
  ========
  
  21.05.2023 9:10
  
  Вместо введения.
  В оглавление.
  
  Наткнулся на неплохую обзорную статью по нейронкам и задумался
  куда ее стоит разместить, чтобы от нее была польза и всегда была "под рукой".
  И сообразил, что неплохо было бы иметь какой-то отдельный модуль,
  посвященный таким ссылкам, раскинувшимся по разным фрагментам текста
  в разных модулях.
  
  Так сказать, раздел "Литература", который должен быть в любом приличном проекте.
  Но как показывает практика, в таком разделе собираются ссылки на источники
  разной степени важности и, самое главное, разного качества и доступности.
  И вторая проблема таких разделов, что они большей частью чисто формальные,
  и, как правило, толком их никто не читает.
  
  Поэтому, этот модуль решил назвать "Ликбез", так как в него планирую,
  пополнять ссылками на действительно полезные и доступные для понимания
  материалы и просто любимые книжки.
  Если это название кого-то "коробит", то приношу свои извинения,
  и всегда буду готов переименовать его в "Литературу",
  но этого не хотелось бы, так как смысл этого модуля немного не другой.
  
  
  ========
  
  Часть 1. Библиотека.
   Нейронки и ГПТэшки.
   Фракталы.
   Вселенная.
   Метафизика.
   ТРИЗ.
   Программирование.
   Любимая фантастика.
   Педагогика.
   Логика.
   Вместо заключения.
  
  
  ========
  
  Нейронки и ГПТэшки.
  В оглавление.
  
  02.08.2023 13:11
  
  Начать знакомство с нейронками рекомендую вот с такого начального материала:
  
  "Нейронные сети для начинающих. Часть 1"
  Автор: Arnis71 (Арнис)
  https://habr.com/ru/articles/312450/
  12 окт 2016 в 15:48
  
  "Нейронные сети для начинающих. Часть 2"
  Автор: Arnis71 (Арнис)
  https://habr.com/ru/articles/313216/
  12 фев 2017 в 18:38
  
  И продолжить вот с этого обзорного материала:
  "Нейросеть - что это такое и как создать свою нейросеть"
  Автор: olzeykan (Олег Руднев)
  https://habr.com/ru/articles/736466/.
  20 мая в 21:56
  
  А знакомство уже с ГПТэшками, несомненно, с "классики" от Павла Комаровского
  "Как работает ChatGPT:
  объясняем на простом русском эволюцию языковых моделей начиная от T9"
  https://vc.ru/future/623774-kak-rabotaet-chatgpt-obyasnyaem-na-prostom-russkom-evolyuciyu-yazykovyh-modeley-nachinaya-ot-t9.
  6 мар 2023 в 08:26
  
  Ну и если, всерьез интересно, что у ГПТэшек "под капотом",
  то можно начать с этого материала:
  "Нейросети-трансформеры изнутри: как работает декодер"
  Автор: Владимир Селеверстов
  Редактор: Даниил Скоринкин
  Иллюстратор: Евгения Родикова
  https://sysblok.ru/knowhow/nejroseti-transformery-iznutri-kak-rabotaet-dekoder/
  27.11.2020
  
  02.06.203 18:28
  
  Очень хорошая обзорная статья и о ChatGPT и о принципах его работы,
  так как принято это сейчас считать, и сравнение его с логикой
  человеческого мышления и языка и, вообще, много-много всякого интересного
  и познавательного, и все это прекрасно иллюстрировано.
  Статья ОЧЕНЬ объемная, но она стоит того, так что настройтесь на длительное чтение.
  
  Что делает ChatGPT: и почему это работает?
  Автор оригинала: Stephen Wolfram
  Автор перевода: TyVik (Виктор)
  https://habr.com/ru/articles/739014/
  2 июня 2023
  
  29.10.2023 13:50
  
  Еще одно очень неплохое и, к тому же, весьма компактное описание
  работы трансформерной технологии в ИИ-системах:
  
  "Объясняем простым языком, что такое трансформеры".
  Автор: randall
  https://habr.com/ru/companies/cloud_mts/articles/770202/.
  27 окт 2023 в 12:36
  
  Автор оригинала: Chris Hughes
  https://towardsdatascience.com/de-coded-transformers-explained-in-plain-english-877814ba6429
  
  
  ========
  
  Фракталы.
  В оглавление.
  
  Для первого ознакомительного представления о фракталах,
  наверно, подойдет достаточно добротный материал из Вики:
  "Фрактал"
  https://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%B0%D0%BA%D1%82%D0%B0%D0%BB.
  
  Для представления о том, в каком направлении развивается сейчас
  теория фракталов, фрактальный метод и связанные с ним практические технологии,
  рекомендую работу Потапова Александра Алексеевича
  "ФРАКТАЛЫ, СКЕЙЛИНГ И ДРОБНЫЕ ОПЕРАТОРЫ В РАДИОТЕХНИКЕ И ЭЛЕКТРОНИКЕ:
  СОВРЕМЕННОЕ СОСТОЯНИЕ И РАЗВИТИЕ"
  http://jre.cplire.ru/jre/jan10/4/text.html.
  25 января 2010 г.
  
  
  ========
  
  Вселенная.
  В оглавление.
  
  Представлений о вселенной, наверно, столько же сколько и разумных существ,
  и какого-то "единственно верного" точно нет.
  МироЗдание БеЗконечно.
  
  Но какие-то "промежуточные представления" вполне могут у кого-то
  и в чем-то совпадать.
  
  Вот материал, близкий к моему представлению о Вселенной:
  "Самая реалистичная интерпретация квантовой механики"
  Автор: Yermack (Ермоленко Игорь)
  https://habr.com/ru/post/506896/.
  16 июня 2020 в 15:14
  
  А это очень интересная книжка о поиске "последнего моря"
  в мире квантовой физики, и хотя я не очень согласен с автором,
  но сам по себе "интеллектуальный детектив" в такой необычной области
  очень познавательный и увлекательный.
  Поэтому с чистым сердцем рекомендую: книга Аманды Гефтер
  "На лужайке Эйнштейна. Что такое НИЧТО, и где начинается ВСЕ"
  http://flibusta.site/b/474823/read.
  
  03.07.2023 12:27
  
  А для того чтобы почувствовать, что до "окончательной теории" еще очень далеко,
  рекомендую прочитать такой материал: статья Симона Эльевича Шноля
  "Космофизические факторы в случайных процессах"
  http://www.delphis.ru/journal/article/kosmofizicheskie-faktory-v-sluchainykh-protsessakh
  
  
  ========
  
  Метафизика.
  В оглавление.
  
  Безусловно, у каждого есть своя персональная "метафизика",
  как представление об устройстве Мироздания,
  и каждое такое представление имеет право на жизнь.
  
  Поэтому, предлагаю познакомиться с таким вариантом метафизики,
  в котором автор весьма убедительно демонстрирует,
  что многие разные учения можно представить как разные проекции,
  условно говоря, одного "гиперкуба".
  
  Юрий Сергеевич Владимиров
  "Метафизика"
  https://www.gpntb.ru/elres/binom/MetaPhys.pdf
  Очень расширяет мировосприятие,
  особенно, если проскальзывать мимо математических формул
  а пытаться схватить суть идеи.
  
  Но это все-таки более-менее "устоявшиеся" взгляды на метафизику нашего Мира,
  а вот если интересны и другие взгляды на Мироздание,
  то их тоже не мало. Например, вот такой для предварительного ознакомления:
  
  Лера Некрасова
  "Есть ли на других планетах параллельные реальности?
  Или такое бывает только на Земле?
  Как Все Устроено"
  https://dzen.ru/a/Y2pwhZE8PVLwoXHw
  Если заинтересует, то там есть ссылки и на развитие этой и других связанных тем.
  
  
  ========
  
  ТРИЗ.
  В оглавление.
  
  Мне представляется, что без знания хотя бы азов ТРИЗ
  - Теории Решения Изобретательских Задач -
  в наше время считаться инженером, как-то, не очень правильно.
  
  Для беглого и вполне увлекательного знакомства с ТРИЗ
  вполне подойдет книга Бориса Львовича Злотина и Аллы Вениаминовны Зусман
  "Месяц под звездами фантазии"
  http://hegelnet.narod.ru/methodology/fantasy.pdf
  
  Ну и если захочется больше углубиться в этой теме,
  то нужно будет сначала познакомиться с "классикой":
  Генрих Саулович Альтшуллер (Альтов)
  "И ТУТ ПОЯВИЛСЯ ИЗОБРЕТАТЕЛЬ"
  https://sheba.spb.ru/za/itut-izo-1989.htm
  
  Это все книжки для "младшего школьного возраста",
  Но "человеку столько лет, насколько он себя чувствует".
  Если появится серьезное желание углубиться в ТРИЗ,
  то рассматривайте это как задачу, которую ну очень легко решить,
  имея доступ в Инет, и минимальные представления о ТРИЗ.
  
  03.07.2023 12:39
  
  Но, наверно, надо все-таки подсказать такую "рубежную книгу" Генриха Сауловича Альтшуллера
  "ТВОРЧЕСТВО КАК ТОЧНАЯ НАУКА"
  https://pqm-online.com/assets/files/lib/books/altshuller.pdf,
  в которой высказана постинне революционная мысль, что любому творчеству,
  можно научиться познавая законы развития той области, на которую направлено конкретное творчество,
  используя подсказки из ТРИЗ.
  
  А для того, чтобы почувствовать, что ТРИЗ вполне можно использовать
  не только в области техники но и практически везде, где нужно решать
  нестандартные задачи очень рекомендую для "домашнего чтения"
  короткий и хороший рассказ Валентины Журавлевой
  "Приключение"
  https://libking.ru/books/sf-/sf/61185-valentina-zhuravleva-priklyuchenie.html,
  как раз на эту тему.
  
  
  ========
  
  24.05.2023 20:35
  
  Программирование.
  В оглавление.
  
  Здесь на первом месте, на мой взгляд, должна быть "Библия Программиста":
  
  Фредерик БРУКС
  "Мифический человеко-месяц".
  https://nsu.ru/xmlui/bitstream/handle/nsu/8870/Frederick_Brooks.pdf
  Главную идею этой книги, в общем-то, можно передать одной фразой,
  но дело не в том, чтобы услышать ее, и пропустить мимо "межушного ганглия",
  а понять, что иного выбора, кроме "документарной гипотезы", по факту, нет.
  
  Может быть когда-то я решусь разместить на данном сайте свой комментарии
  к этой эпохальной книге, но пока это явно "не формат".
  Но тезис, который я вынес из этой книги и которому пытаюсь всегда следовать,
  звучит примерно так:
  "Хороший документ - это готовая программа,
  а хорошая программа - это почти готовый документ".
  
  
  ========
  
  Любимая фантастика.
  В оглавление.
  
  Список любимой фантастики очень широк,
  поэтому ограничусь только самыми-самыми,
  и теми которые созвучны с задумкой проекта "Металоция"
  и максимой "и один в поле воин".
  
  И начну с самого любимого автора:
  Лоис МакМастер Буджолд
  "Границы бесконечности"
  https://www.6lib.ru/books/read/granici_beskonehnosti-19127
  Можно перечислить и еще с десяток книг этого автора из "Барраярского цикла"
  или "Проклятие Шалиона", но пусть каждый сам для себя решает,
  нравится ему или нет этот автор.
  
  Следующие авторы, наверно, в представлениях не нуждаются
  Нил Стивенсон
  "Анафем"
  https://fantasy-worlds.org/lib/id17724/read/
  
  Алексей Осадчук
  "Сумеречный Обелиск"
  https://flibusta.su/book/14317-sumerechnyiy-obelisk/
  По-моему, это четвертая или пятая книга, их хорошего цикла "Проект работяга".
  
  А теперь авторы СамИздата:
  
  Проскурин Вадим Геннадьевич
  "Хоббит, который познал истину"
  http://samlib.ru/p/proskurin_w_g/hobbit3.shtml
  
  Юрченко Сергей Георгиевич
  "ВРЕМЯ ДЛЯ ИНЖЕНЕРА ВРЕМЕНИ"
  http://samlib.ru/j/jurchenko_s_g/01_realmsofmightandmagic.shtml
  Оригинальная ссылка по требованию редакции содержит сильно урезанную версию,
  поэтому даю ту, где сам прочел в полном объеме
  https://booksonline.com.ua/view.php?book=181210
  А на сайте автора, есть дальнейшее, и весьма интересное,
  продолжение этого проекта.
  Интересное еще и тем, что проект еще продолжается,
  и очень познавательно наблюдать за самим процессом создания чего-то,
  одновременно и знакомого и в то же время нового и неведомого.
  
  
  ========
  
  02.06.203 18:28
  
  Педагогика.
  В оглавление.
  
  Этот раздел счел необходимым включить,
  так как в рамках проекта приходится заниматься обучением ИИ-систем,
  а конкретно "Модель Kandinsky 2.x".
  и пытаюсь сравнивать возможные приемы с обучением "homo sapiens".
  Пока получается "не очень".
  Может быть, что-то я не понимаю вообще в педагогике.
  
  И список этих материалов безусловно должен начинаться с книги моего детства,
  зачитанной, но не "до дыр", а до полного погружения в ту эпоху:
  
  Антон Семенович Макаренко
  "Педагогическая поэма"
  https://librebook.me/pedagogicheskaia_poema
  
  Причем предлагаю начать читать "Педагогическую Поэму" с главы,
  которая по "каким-то" причинам не вошла в официальные издания:
  "Из наследия Антона Семеновича Макаренко. На педагогических ухабах"
  Автор: ВладимирХ
  https://aftershock.news/?q=node/1234674
  08:31 - 15/Апр/23
  
  А следующая книга, вообще-то, должна была бы идти по разделу фантастики,
  но я ее понимаю как руководство по наставничеству для самого себя:
  
  Лоис МакМастер Буджолд
  "Проклятие Шалиона"
  https://royallib.com/book/budgold_lois/proklyatie_shaliona.html
  
  
  ========
  
  16.12.2023 16:33
  
  Логика.
  В оглавление.
  
  Не смог пропустить просто замечательный цикл статей
  про основания и законы логики, правда достаточно "классической",
  изложенные буквально "на пальцах",
  и доступные для любого уровня подготовки читателя,
  несмотря на устрашающее названия:
  
  "На чем основана логика?
  Часть 1. Алгебра множеств без аксиом".
  Автор: AntiLogik (Борис Кулик специалист по логике и математике (д.ф.-м.н.))
  https://habr.com/ru/articles/781386/.
  19 дек 2023 в 15:48
  
  //// Здесь мне больше всего заинтересовал
  //// метод доказательства законов "без аксиом" методом перебора,
  //// или используя другие "законы", доказанные таким же образом.
  //// Стоит запомнить как аргумент против изначальной необходимости "аксиом".
  
  "На чем основана логика?
  Часть 2. Математическая модель полисиллогистики".
  Автор: AntiLogik (Борис Кулик специалист по логике и математике (д.ф.-м.н.))
  https://habr.com/ru/articles/781684/.
  19 дек 2023 в 16:18
  
  //// А здесь просто замечательный графический метод анализа бинарной логики,
  //// и достаточно сложных логических задач.
  //// В чем-то это сравнимо с методами умножения/деления "в столбик",
  //// так же просто, удобно и легко запоминаемо.
  
  А это уже другой тип логики - нечеткая логика,
  отличная от привычной логики "исключенного третьего",
  но тоже изложенная доступно и понятно
  на примере управления "стиральной машинкой".
  
  "История о том, как нечеткая логика доказала:
  искусственный интеллект человеку не страшен".
  Автор: Александр Малютин
  https://mirbis.ru/articles/istoriya-o-tom-kak-nechetkaya-logika-dokazala-iskusstvennyy-intellekt-cheloveku-ne-strashen/.
  15 сентября 2017
  
  /// В этом тексте можно найти примеры
  /// и успешного применения математичкой теории на практике,
  /// и формирование успешного маркетингового бренда
  /// из удачного математического термина.
  
  
  ========
  
  25.05.2023 6:33
  
  Вместо заключения.
  В оглавление.
  
  Данный список, надеюсь, будет еще пополняться,
  так что говорить о завершении модуля пока рановато.
  
  Заранее приношу все возможные извинения уважаемым авторам,
  что где-то даю ссылки на какие-то "левые" или "пиратские" сайты,
  на ту же Флибусту. Но не всегда легко найти подходящую рабочую ссылку
  с минимумом рекламных баннеров.
  
  И я, вообще не очень одобряю, авторское право в его нынешнем виде,
  особенно после его распространения на программное обеспечение.
  Права всегда должны сопровождаться обязанностями.
  А этого баланса пока не наблюдается.
  И "флибустьерство" в этой области это просто один из вариантов
  частичного восстановления давно нарушенного баланса.
  
  Я надеюсь, что представленный список книг и статей,
  может лучше характеризовать и автора и сам проект "Металоция",
  лучше чем "справка с места работы".
  
  Прочитанные книги они как корабли, все имеют свои имена, и свою судьбу.
  Иногда их зачитывают до дыр, иногда их можно прочесть всего один раз,
  и запомнить на всю жизнь как момент встречи с Чудом Магии Слова.
  И всегда они готовы из глубин памяти придти на помощь в трудную минуту.
  
  "...И в беде, и в радости, и в горе
  Только чуточку прищурь глаза -
  В флибустьерском дальнем синем море
  Бригантина подымает паруса.
  В флибустьерском дальнем синем море
  Бригантина подымает паруса..."
  
  27 мая 2023 года Андрей Павлович Митасов, Минск, РБ, Порт приписки Земля.
  
  
  ========
  
  15.12.2023 13:02
  
  Часть 2. Непонятки простыми словами.
   Нейронная сеть простыми словами.
   Градиентный спуск простыми словами.
   Эмбеддинги простыми словами.
   Трансформеры простыми словами.
   Dropout и Batch normalization простыми словами.
   Математика простыми словами. Фрагмент 1.
   Data Science простыми словами.
   Основа теории вероятности простыми словами.
   Контринтуитивные следствия "Закона больших чисел" на примерах.
   Условная вероятность простыми словами.
   Структуры нейросетей простыми словами.
   Функции активации нейронов простыми словами.
   Разработка интеллектуальной ML-системы простыми словами.
   Еще раз об эмбеддингах еще более простыми словами.
   "Обучение с подкреплением" простыми словами.
   "Проклятье размерности" в пространстве.
   Сверточные сети простыми словами.
   Чем машинное обучение отличается от статистики.
   Батчи в обучении и инференсе нейросетей простыми словами..
   Еще раз о векторизации текста еще более простыми словами.
   Оптические процессоры простыми словами.
   Марковские цепи достаточно простыми словами.
   О реальной "хрупкости" Центральной Предельной Теоремы.
   Распределение Стьюдента простыми словами.
   Обучение с учителем и без простыми словами.
   Сети Колмогорова-Арнольда (KAN) простыми словами.
   Об оценке корреляции временных рядов простыми словами.
   К вопросу о корреляции разнородных нестационарных процессов.
   Квантование нейросетей простыми словами.
   "Множественное вменение" простыми словами.
   Немного о фракталах самыми простыми словами.
   Автоэнкодеры простыми словами.
   Генетические алгоритмы простыми словами.
  
  
  =========
  
  15.12.2023 13:02
  
  Нейронная сеть простыми словами.
  В оглавление.
  
  Нейронная сеть (НС) - это последовательность нейронов,
  соединенных между собой синапсами/связями.
  
  Нейрон - это вычислительная единица, которая получает информацию,
  производит над ней простые вычисления и передает ее дальше.
  Они делятся на три основных типа: входной, скрытый и выходной.
  Также есть нейрон смещения и контекстный нейрон,
  на которые в первом приближении можно не заморачиваться.
  В том случае, когда нейросеть состоит из большого количества нейронов,
  вводят термин слоя.
  Соответственно, есть входной слой, который получает информацию,
  n скрытых слоев, которые ее обрабатывают
  и выходной слой, который выводит результат.
  У каждого из нейронов есть 2 основных параметра:
  входные данные (input data) и выходные данные (output data).
  В случае входного нейрона: input=output.
  В остальных, в поле input попадает
  суммарная информация всех нейронов с предыдущего слоя,
  после чего, она нормализуется/преобразуется,
  с помощью функции активации (они могут быть очень разные)
  и попадает в поле output.
  
  Алгоритм работы НС следующий:
  
  1. На входной слой поступают данные.
  
  2. Синапсы/связи передают данные на следующий слой.
   Каждому синапсу присвоен определенный коэффициент веса
   и у каждого последующего нейрона может быть несколько входных синапсов.
  
  3. Данные, которые передаются следующему нейрону
   - это сумма всех данных в нейронке,
   умноженных на соответствующие коэффициенты веса.
  
  4. Полученные значения подставляются в функцию активации,
   что приводит к формированию выходных данных.
  
  5. Передача данных будет продолжаться,
   пока она не достигнет конечного выхода.
  
  Известно, что при первом запуске нейронной сети результаты могут быть неточными,
  так как сеть еще не обучена.
  
  Нейронки обучаются посредством обработки нескольких больших наборов
  размеченных или неразмеченных данных.
  Это позволяет сетям более точно обрабатывать неизвестные входные данные.
  Стоит отметить, что в зависимости от типа нейронки и ее структуры
  мы получаем разные прогнозные данные.
  
  Процесс обучения
  
  1. Выбираем один образец из набора данных,
  
  2. Подаем его на вход нейронки и вычисляем результат.
  
  3. Сравниваем полученный результат и известным требуемым ответом.
  
  4. Вычисляем общую ошибку работы нейронки на данном образце.
  
  5. Вычисляем все производные от общей ошибки по весам нейронов.
   Это называется расчетом обратного распространения ошибки.
  
  6. Обновляем веса синапсов/связей каждого нейрона,
   так чтобы уменьшить общую ошибку,
   например, одним из методов градиентного спуска.
  
  7. Возвращаемся к шагу 1 и движемся вперед.
  
  В процессе обучения нейронка КАК-ТО запоминает и КАК-ТО обобщает,
  использованные при обучении данные в ВИДЕ обновленных весов нейронов.
  
  Функции активации
  
  Функция активации представляет собой нелинейное преобразование,
  которое используется нейронами при преобразовании входных данных.
  чтобы помочь сети изучить сложные закономерности в данных.
  
  Использованные материалы:
  
  Начать знакомство с нейронками рекомендую вот с такого обзорного материала:
  "Нейросеть - что это такое и как создать свою нейросеть"
  Автор: olzeykan (Олег Руднев)
  https://habr.com/ru/articles/736466/.
  20 мая 2023 в 21:56
  
  "Нейронные сети для начинающих. Часть 1"
  Автор: Arnis71 (Арнис)
  https://habr.com/ru/articles/312450/
  12 окт 2016 в 15:48
  
  
  ==========
  
  12.02.2023 13:29
  
  Градиентный спуск простыми словами.
  В оглавление.
  
  Наиболее часто при обучении нейронок используют градиентный спуск:
  
  "Градиентный спуск простыми словами".
  Автор: DanilaKhr (Данила)
  https://habr.com/ru/post/716380/
  12 фев 2023 в 13:16
  
  //// Начало цитирования.
  
  ........
  
  Градиентный спуск - это алгоритм оптимизации,
  используемый для минимизации ошибок в модели машинного обучения.
  Он работает путем итеративной корректировки параметров модели
  в направлении отрицательного градиента функции потерь
  (которая представляет ошибку),
  чтобы уменьшить ошибку и найти оптимальные параметры,
  которые дают наилучшие результаты прогнозирования.
  Алгоритм продолжает этот процесс до тех пор,
  пока он не достигнет минимума
  или не будет выполнен заранее определенный критерий остановки.
  
  Или максимально просто.
  
  Градиентный спуск - это способ обучения и совершенствования
  модели машинного обучения.
  Он делает это, постоянно пытаясь лучше предсказать правильный ответ,
  корректируя свое "мышление".
  Для этого используется математическая формула,
  чтобы определить, в каком направлении нужно двигаться,
  чтобы приблизиться к правильному ответу.
  Процесс повторяется много раз,
  пока алгоритм не сможет предсказать ответ настолько хорошо,
  насколько это возможно.
  
  .......
  
  Также существуют альтернативы градиентному спуску:
  
  Стохастический градиентный спуск (SGD):
  вариант градиентного спуска,
  который обновляет параметры модели,
  используя только один случайно выбранный обучающий пример за итерацию.
  
  Mini-batch gradient descent:
  вариант градиентного спуска, который обновляет параметры модели,
  используя небольшую случайно выбранную партию обучающих примеров за итерацию.
  
  Conjugate gradient:
  алгоритм оптимизации, который находит минимум функции
  путем итеративного улучшения аппроксимации минимума.
  (Проще говоря, апроксимация - это приблизительное предположение
  о наименьшем значении функции.)
  
  BFGS (Broyden-Fletcher-Goldfarb-Shanno):
  квази-ньютоновский метод, который аппроксимирует матрицу Гессиана,
  чтобы быстрее сходиться к минимуму функции потерь.
  
  Adam (Adaptive Moment Estimation):
  алгоритм оптимизации на основе градиента,
  который использует скользящие средние градиента и квадраты градиента
  для адаптации скорости обучения для каждого параметра.
  
  ........
  
  Выбор скорости обучения:
  
  Скорость обучения, также известная как размер шага,
  является важным гиперпараметром при градиентном спуске.
  Большая скорость обучения может привести к превышению минимума,
  в то время как небольшая скорость обучения может привести
  к медленной конвергенции.
  Тщательный выбор скорости обучения важен для получения
  хороших результатов при градиентном спуске.
  
  Сходимость и переобучение:
  
  Градиентный спуск может сходиться к минимуму функции потерь,
  но он также может застрять в локальном минимуме,
  что приведет к переобучению обучающих данных.
  Чтобы избежать переобучения,
  можно использовать методы регуляризации,
  такие как регуляризация L1 или L2.
  (Это способы предотвратить чрезмерную сложность модели
  за счет уменьшения влияния некоторых функций в модели.)
  
  Градиентный спуск может быть дорогостоящим с точки зрения вычислений:
  
  Вычисление градиента функции потерь
  и обновление параметров на каждой итерации градиентного спуска
  может быть дорогостоящим с точки зрения вычислений,
  особенно для больших наборов данных или сложных моделей.
  Чтобы сократить время вычислений, можно использовать такие методы,
  как параллельные вычисления и векторизация.
  
  .........
  
  //// Конец цитирования.
  
  
  =========
  
  12.12.2023 13:29
  
  Эмбеддинги простыми словами.
  В оглавление.
  
  Часто используемый в текстах по нейронкам термин "эмбеддинг",
  это просто представление данных различного формата/природы
  набором чисел, точнее говоря, вектором,
  размерность которого может существенно отличаться
  от размерности представляемых данных.
  Особо хочется отметить что эмбеддинги могут использоваться
  и ВМЕСТО обычных признаков, так и ВМЕСТЕ с обычными признаками.
  Обратите на этот существенный момент пристальное внимание
  при чтении этого достаточно объемного текста:
  
  "Эмбеддинги признаков и повышение точности ML-моделей".
  Автор: mr-pickles
  https://habr.com/ru/companies/wunderfund/articles/590651/
  22 ноя 2021 в 14:22
  
  Автор оригинала: Michael Malin
  https://towardsdatascience.com/why-you-should-always-use-feature-embeddings-with-structured-datasets-7f280b40e716
  
  //// Начало цитирования.
  
  Создание эмбеддингов признаков (feature embeddings)
  - это один из важнейших этапов подготовки табличных данных,
  используемых для обучения нейросетевых моделей.
  Об этом подходе к подготовке данных,
  к сожалению, редко говорят в сферах,
  не связанных с обработкой естественных языков.
  И, как следствие, его почти полностью обходят стороной
  при работе со структурированными наборами данных.
  Но то, что его, при работе с такими данными,
  не применяют,
  ведёт к значительному ухудшению точности моделей.
  Это стало причиной появления заблуждения,
  которое заключается в том,
  что алгоритмы градиентного бустинга,
  вроде того, что реализован в библиотеке XGBoost,
  это всегда - наилучший выбор для решения задач,
  предусматривающих работу со структурированными наборами данных.
  Нейросетевые методы моделирования,
  улучшенные за счёт эмбеддингов,
  часто дают лучшие результаты,
  чем методы, основанные на градиентном бустинге.
  Более того - обе группы методов показывают серьёзные улучшения
  при использовании эмбеддингов,
  извлечённых из существующих моделей.
  
  Эта статья направлена на поиск ответов на следующие вопросы:
  
  Что такое эмбеддинги признаков?
  
  Как они используются при работе со структурированными данными?
  
  Если использование эмбеддингов - это столь мощная методика
  - почему она недостаточно широко распространена?
  
  Как создавать эмбеддинги?
  
  Как использовать существующие эмбеддинги для улучшения других моделей?
  
  Эмбеддинги признаков
  
  Нейросетевые модели испытывают сложности
  при необходимости работы с разреженными категориальными признаками.
  Эмбеддинги - это возможность уменьшения размерности таких признаков
  ради повышения производительности модели.
  Прежде чем говорить о структурированных наборах данных,
  полезно будет разобраться с тем, как обычно используются эмбеддинги.
  В сфере обработки естественных языков (Natural Language Processing, NLP)
  обычно работают со словарями, состоящими из тысяч слов.
  Эти словари обычно вводят в модель
  с использованием методики быстрого кодирования (One-Hot Encoding),
  что, в математическом смысле,
  равносильно наличию отдельного столбца для каждого из слов.
  Когда слово передаётся в модель,
  в соответствующем столбце оказывается единица,
  в то время как во всех остальных выводятся нули.
  Это ведёт к появлению очень сильно разреженных наборов данных.
  Решение этой проблемы заключается в создании эмбеддинга.
  
  Рис. Визуализация, выполненная с помощью TensorFlow Embedding Projector
  
  По сути дела, речь идёт о том, что эмбеддинг,
  на основе обучающего текста,
  группирует слова со сходным значением и возвращает их местоположение.
  Например - значение эмбеддинга слова
  может быть подобно значениям эмбеддингов слов и ,
  или словосочетания .
  На практике нейронные сети демонстрируют
  значительное улучшение производительности
  при применении подобных репрезентативных свойств.
  
  Эмбеддинги и структурированные данные
  
  Структурированные наборы данных тоже часто содержат
  разреженные категориальные признаки.
  В вышеприведённой таблице,
  содержащей данные о продажах,
  имеются столбцы с почтовым индексом и идентификатором магазина.
  Так как в этих столбцах могут присутствовать сотни или тысячи
  уникальных значений,
  использование этих столбцов приведёт к появлению
  тех же проблем с производительностью,
  о которых мы говорили ранее в применении к NLP-моделям.
  Почему бы тут, по вышеописанной схеме,
  не воспользоваться эмбеддингами?
  
  Проблема заключается в том,
  что сейчас мы имеем дело более чем с одним признаком.
  В данном случае это два отдельных разреженных категориальных столбца
  (zip_code и store_id),
  а так же другие ценные признаки,
  вроде общего объёма продаж конкретному клиенту.
  Мы просто не можем заложить все эти признаки в эмбеддинг.
  Но мы, однако, можем подготовить эмбеддинги в первом слое модели
  и добавить в модель,
  вместе с эмбеддингами, и обычные признаки.
  Это не только приведёт к преобразованию
  почтового индекса и идентификатора магазина в ценные признаки,
  но и позволит не <размывать> другие ценные признаки тысячами столбцов.
  
  Почему эмбеддингам не уделяют достаточно внимания?
  
  В крупнейших компаниях, занимающихся машинным обучением (Machine Learning, ML),
  эта техника работы с данными, бесспорно, применяется.
  Проблема заключается в том,
  что подавляющее большинство дата-сайентистов,
  находящихся за пределами таких компаний,
  никогда даже и не слышали о таком способе использования эмбеддингов.
  Почему это так?
  Хотя я и не сказал бы,
  что эти методы чрезвычайно сложно реализовать,
  они сложнее того, чему учат на типичных онлайн-курсах.
  Большинство начинающих ML-практиков просто не научили тому,
  как использовать эмбеддинги вместе с другими некатегориальными признаками.
  В результате признаки вроде почтовых индексов и идентификаторов магазинов
  просто выбрасывают из модели.
  Но это - важные данные!
  
  Некоторые значения признака можно включить в модель,
  воспользовавшись другими техниками,
  вроде метода среднего кодирования (Mean Encoding),
  но подобное даёт лишь небольшие улучшения.
  Это привело к тенденции,
  когда от нейросетевых моделей полностью отказываются,
  выбирая методы, задействующие алгоритмы градиентного бустинга,
  которые способны лучше работать с категориальными признаками.
  Но, как уже было сказано,
  эмбеддинги могут улучшить оба метода моделирования.
  Сейчас мы разовьём эту тему.
  
  Создание эмбеддингов
  
  Самое сложное при работе с эмбеддингами
  - разобраться с наборами данных TensorFlow.
  И хотя устроены они совсем не так понятно, как датафреймы Pandas,
  научиться работать с ними весьма полезно.
  В частности - полезно для того,
  кто хотя бы задумывается о том,
  чтобы его модели работали бы с огромными наборами данных,
  и для того, кто стремится к созданию более сложных нейросетевых моделей,
  чем те, которые он уже разрабатывает.
  
  ......
  
  Обратите внимание на то,
  что при создании эмбеддингов нам нужно указать число измерений.
  Это определяет то количество признаков,
  к которому будут сведены признаки из категориальных столбцов.
  Общее правило заключается в том,
  что результирующее количество признаков выбирается
  равным корню четвёртой степени из общего количества категорий
  (например - 1000 уникальных почтовых индексов сводятся к ~6 столбцам эмбеддинга).
  Но это - один из тех параметров,
  которые можно настраивать в собственной модели.
  
  .....
  
  Итоги
  
  Теперь, когда эмбеддинги сохранены,
  их можно включить в состав исходного набора данных.
  Можно даже ввести их в другие наборы данных,
  используя те же категориальные признаки.
  //// !!! Вот это очень важная практическая рекомендация,
  //// которая несколько теряется в этом тексте.
  //// Но она есть, и ее стоит хорошо запомнить,
  //// тем более что она помогает лучше понять, что такое эмбеддинги.
  Я пока не встречался с ситуациями,
  когда использование расширенных наборов данных
  не приводило бы к росту точности моделей.
  Попробуйте эмбеддинги - и я обещаю,
  что их применение станет частью вашей обычной работы
  в сфере машинного обучения.
  
  ......
  
  //// Конец цитирования.
  
  
  ========
  
  20.12.2023 16:12
  
  Трансформеры простыми словами.
  В оглавление.
  
  Трансформеры - это такой принцип/блок построения нейросети
  в котором реализуется механизм "внутреннего внимания",
  обеспечивающий "концентрацию внимания" на конкретный контекст.
  Реализуется это тем, что, по факту, при обучении трансформера
  обучаются три разных "матрицы"/"блока"/эмбеддинга
  - запрос, ключ, значения -
  определенная комбинация которых и обеспечивает "чудо ГПТэшек".
  
  Самое простое, из виденных мною, подробностей данного механизма
  стоит почитать здесь:
  
  "'Attention is all you need' простым языком".
  Автор: bartov-e (Evgeniy V. Bartov)
  https://habr.com/ru/articles/781770/.
  19 дек 2023 21:34
  
  Автор оригинала: Lucidate
  https://www.youtube.com/watch?v=sznZ78HquPc
  
  //// Начало цитирования.
  
  Некоторое время назад я повесил статью с кратким обзором техник векторизации,
  https://habr.com/ru/articles/778048/
  и мне показалось логичным продолжить эту тему
  попыткой разобраться с тем, в какую сторону NLP шагнула дальше
  - выбор пал на механизм attention.
  Мы с Дарьей, моей коллегой по переводу,
  zdrelyuk@bk.ru
  перевели и переработали видеоролик "Attention is all you need explained"
  в статью, которую и представляем вашему вниманию.
  Заранее прошу прощения за светофор в картинках:
  по-другому черный фон из скриншотов убрать не получалось :).
  
  Введение
  
  В 2017 году, в статье Attention is all you need,
  исследователи из Google представили архитектуру Transformer.
  Новизна Transformer заключалась в использовании self-attention
  (досл. с англ. - самовнимание, внутреннее внимание)
  - механизма, благодаря которому модель может сосредоточиться
  не на всех сразу, а на наиболее важных элементах входной последовательности.
  
  Рассмотрим этот механизм и модель подробнее.
  
  1. Зачем нужен attention
  
  1.1. Про рекуррентные нейронные сети (RNNs)
  
  До появления Transformer задачи NLP стандартно обрабатывались
  через рекуррентные нейронные сети (RNN)
  - они умеют сохранять внутреннее состояние,
  то есть помнить и учитывать результаты,
  полученные из предыдущей входной последовательности.
  
  У RNN есть пара недостатков:
  
   в них сложно параллелить задачи;
  
   в них часто возникает проблемы затухающих и разлетающихся градиентов,
   что усложняет обучение моделей с очень длинными входными последовательностями.
  
  1.2. Transformers. Механизм 'Self-attention'
  
  Transformer устраняет эти недостатки,
  используя вместо рекуррентности механизм self-attention.
  Self-attention определяет веса важности элементов входной последовательности
  и не требует сохранять состояния,
  что решает обе упомянутые выше проблемы RNN.
  
  1.3. Лингвистические сложности
  
  Рассмотрим два предложения.
  Они похожи по смыслу и отличаются лишь одним словом.
  В первом предложении she принадлежит Alice, во втором - Barbara.
  
  В первом предложении есть younger,
  поэтому attention относит she к Alice.
  
  Во втором предложении есть older,
  поэтому attention относит she к Barbara.
  
  //// А почему? Получается, что "внимание" как-то "поняло смысл"
  //// всей "конструкции".
  
  Переключение attention обусловлено тем,
  что "more experienced" связано с "even though".
  
  Рассмотрим другие два предложения с очень похожими формулировками,
  но с разными смыслами.
  Сосредоточимся на слове it.
  
  В первом предложении it связано со swap, во втором - с AI.
  Людям это интуитивно понятно.
  
  Эффективная языковая модель тоже должна понимать эти нюансы
  - семантику слов, их порядок в предложении.
  Модель должна уметь сосредотачиваться
  на конкретных членах предложения
  и выявлять взаимосвязанные слова,
  причем все эти процессы должны быть реализованы
  исключительно через числовые представления и трансформации.
  
  1.4. Машины понимают только числа
  
  ИИ понимает и хорошо умеет работать только со скалярами, векторами, матрицами и тензорами
  (даже если тензоры большие и многомерные).
  
  2. Суть идеи attention
  
  2.1. Проектирование attention
  
  Проблема решилась созданием трех матриц.
  Они работают с эмбеддингами слов,
   где представлена семантика каждого слова.
  Семантическое представление в свою очередь было вычислено
  по частотности
  и встречаемости этого слова вместе с другими.
  
  В эмбеддинге также содержится позиционная информация,
  которая вычисляется через синусоиды и косинусоиды.
  
  Три упомянутые выше матрицы - это:
  
   Q - query/запрос;
  
   K - key/ключ;
  
   V - value/значение.
  
  Как и с семантикой в эмбеддингах,
  веса в этих матрицах рассчитываются при обучении.
  Отметим, что во время обучения в сеть типа GPT-3 или ChatGPT
  передаются огромные объемы текста.
  В частности, ChatGPT сообщает,
  что сеть обучалась на более чем триллионе обучающих примеров
  общим объемом в 45 терабайт.
  Поверим ей на слово :)
  
  2.2. Обратное распространение ошибки
  
  GPT-3 использует алгоритм обратного распространения ошибки (backpropagation). Этот
  алгоритм обновляет внутренние веса нейронных сетей с целью минимизации функции
  потерь (loss function).
  
  2.2.1. Как он работает?
  
  а. Сеть делает предположение по пакету входной последовательности.
  
  2.2. Обратное распространение ошибки
  
  GPT-3 использует алгоритм обратного распространения ошибки (backpropagation).
  Этот алгоритм обновляет внутренние веса нейронных сетей
  с целью минимизации функции потерь (loss function).
  
  2.2.1. Как он работает?
  
  а. Сеть делает предположение по пакету входной последовательности.
  
  б. Вычисляется размер потерь между ожидаемым и полученным выводом.
  
  г. Рассчитываются градиенты потерь по правилу дифференцирования сложных функций
  (chain rule).
  
  д. Для снижения ошибок веса обновляются против градиента потерь.
  
  е. Этот процесс останавливается при достижении критерия сходимости
  (convergence),
  когда размер потерь не превышает заданное пороговое значение,
  или когда число итераций достигает предельного значения.
  
  Обратное распространение ошибки помогает Transformer
  итеративно изменять свои веса,
  постепенно повышая точность и снижая потери в предсказаниях.
  
  2.3. Матрицы Query, Key и Value
  
  Веса матриц Query, Key и Value рассчитываются во время обучения сети.
  Матрицы работают с позиционными представлениями
  внутри эмбеддингов слов из входной последовательности.
  
   Матрица [Q]uery - слово, для которого рассчитывается значение attention.
  
   Матрица [K]ey - слово, которое оценивается через attention.
   Собственные значения и собственные векторы (eigenvalues и eigenvectors)
   в этих двух матрицах обычно схожи,
   и через их произведение рассчитывается оценка attention.
   Высокая оценка означает, что слова сильно взаимосвязаны,
   а низкая - что слабо взаимосвязаны.
  
   Матрица [V]alue затем смотрит,
   насколько оценка attention для каждой пары слов
   соотносится с векторной оценкой правильного слова,
   предъявляемого сети во время обучения.
  
  2.4. Аналогия
  
  Модель Transformer предсказывает следующее слово в последовательности,
  которой может быть перевод с одного языка на другой,
  краткое изложение длинного текста или создание текста статьи по ее заголовку.
  
  Цель - сгенерировать наилучшее возможное слово
  или серию слов в выходной последовательности,
  для чего и используют attention.
  
  Чтобы лучше понять этот механизм,
  представьте, что вы детектив,
  который пытается решить дело.
  У вас есть много улик, записей и подсказок,
  но вам нужно сосредоточиться только на важном,
  а все остальное - игнорировать.
  По такому же принципу attention работает в Transformer.
  
  Матрица Q подобна списку вопросов,
  которые вы держите в уме, чтобы раскрыть дело
  - она помогает программе <понять> текст.
  
  Матрица K похожа на набор имеющихся улик.
  Для раскрытия дела вам нужно просмотреть их все,
  но в итоге вы сосредотачиваетесь только на наиболее релевантных уликах
  - соответственно и оценка attention рассчитывается
  через произведение матриц Q и K.
  
  Матрица V обозначает релевантность рассматриваемой улики для дела.
  Дело в том, что, например, согласно оценке attention
  некие два слова могут быть сильно взаимосвязаны,
  но в то же время этими словами могут быть местоимение и существительное
  - и это нам никак не поможет предсказать следующее слово в последовательности.
  
  Сценарий Query/Key/Value
  
  Детектив
  
  Query
  Список вопросов для раскрытия дела
  
  Value
  Выявление наиболее релевантных для дела улик
  
  Key
  Определение релевантности рассматриваемых улик для раскрытия дела
  
  Transformer
  
  Query
  Выбор между резюмированием, переводом и созданием текста для предсказания следующего
  слова
  
  Value
  Выбор слов, взаимосвязанных с представленным словом
  
  Key
  Релевантность полученной пары слов к верному предсказанию
  
  Поиск в библиотеке
  
  Query
  Список вопросов по теме исследования
  
  Value
  Библиотечный каталог
  
  Key
  Релевантность книг из каталога для области исследования
  
  2.5. Формула Query, Key и Value
  
  На схеме ниже матрицы Q и K умножаются друг на друга,
  масштабируются, проходят через маскирование (декодер),
  результаты нормализуются (softmax)
  и умножаются на матрицу V.
  
  Математически это можно записать в виде следующей формулы:
  
  а. Умножить матрицу Q на транспонированную матрицу K.
  Результат - немасштабированная оценка attention.
  
  б. Отмасштабировать оценку attention,
  разделив её на квадратный корень из размерности матрицы K.
  Размерностью может быть любое число;
  стандартно это - 64, значит делим на 8).
  
  в. Затем отмасштабировать через softmax,
  чтобы все пересчитанные веса в сумме давали единицу.
  
  г. Умножить эти отмасштабированные и нормализованные оценки attention
  на матрицу V.
  
  Заключение
  
  В заключение, модели Transformer, такие как ChatGPT и GPT-3,
  используются для таких задач по обработке языка,
  как перевод с одного языка на другой,
  перевод на язык программирования,
  краткое изложение текста,
  создание статьи по заголовку.
  Во всех случаях необходимо предсказывать следующее слово в последовательности.
  
  При вычислении выходной последовательности Transformer
  использует attention для динамического взвешивания
  важности каждого элемента входной последовательности .
  Такой подход позволяет модели на каждом этапе
  сосредотачиваться на наиболее важной информации,
  лучше обрабатывать входные последовательности разной длины.
  
  Attention использует три матрицы,
  которые задействуют алгоритм обратного распространения ошибки.
  Благодаря attention вместе с векторным представлением семантики и позиций слова
  Transformer умеет справляться с переводом,
  смысловой компрессией
  или созданием контента.
  
  .......
  
  //// Из комментариев.
  
  Kreastr
  6 часов назад
  
  Ожидал увидеть в статье описание того как получают Q, K и V
  ( кроме общих слов про бэкпроп,
  который есть в любом методе обучения)
  и архитектуре,
  и почему такой метод расчета оказался
  так важен для производительности системы
  в сравнении с другими архитектурами.
  
  //// Очень хороший вопрос.
  //// В том смысле, что этот пункт - это тот самый "ноу хау",
  //// который и стал "секретным ингредиентом" успеха ChatGPT.
  
  .......
  
  //// Конец цитирования.
  
  В общем "тайна НПТэшек" немножко приоткрылась,
  но до окончательной разгадки еще очень далеко.
  
  P.S.
  Но если Вы осилили предыдущий текст и интерес к трансформерам не пропал,
  то очень рекомендую следующий текст, который проясняет многие вопросы,
  оставшиеся не рассмотренные в предыдущем материале:
  
  "Transformer в картинках"
  Автор: Kouki_RUS (Сергей Шкарин)
  https://habr.com/ru/articles/486358/.
  6 фев 2020 в 17:09
  
  Автор оригинала: Jay Alammar
  https://jalammar.github.io/illustrated-transformer/
  
  
  ========
  
  20.12.2023 16:12
  
  Dropout и Batch normalization простыми словами.
  В оглавление.
  
  В принципе, можно ограничиться таким определением для
  Dropout и Batch normalization, как достаточные эффективные техники
  для улучшения качества машинного обучения нейросетей.
  Причем применяются они по принципу "алхимии" или "кулинарных рецептов".
  Как-то работают, но как и, самое главное, почему точно не известно.
  Но если есть желание познакомиться с этими техниками более детально,
  и попробовать придумать им объяснение,
  то вот неплохое, и достаточно компактное изложение:
  
  "Dropout и Batch normalization".
  Автор: fedorborovitsky (Федор Добровицкий)
  https://habr.com/ru/companies/mvideo/articles/782360/.
  21 дек 2023 в 17:52
  
  //// Начало цитирования.
  
  Dropout и Batch Normalization
  очень хороши в оптимизации процесса обучения
  и борьбе с одной из основных проблем ml - переобучением.
  
  Dropout предполагает случайный кик нейронов из процесса обучения,
  обеспечивает, чтобы нейронная сеть не стала слишком зависимой
  от любого одного узла.
  Сравнить это можно с dropout в спортивных играх.
  Там это стратегия, которая заставляет каждого игрока команды играть лучше,
  а не полагаться только на одного звездного товарища.
  
  Batch Normalization в свою очередь улучшает производительность
  и стабильность нейронных сетей
  путем нормализации входных данных каждого слоя.
  
  Dropout
  
  Основная идея Dropout заключается в случайном <выключении>
  (то есть временном исключении из обучения)
  определенного процента нейронов в сети на каждом шаге обучения.
  Это означает, что во время каждого прохода обучения
  (или каждой эпохи) случайно выбранный набор нейронов игнорируется.
  Это помогает предотвратить чрезмерную зависимость модели
  от конкретных путей и узлов в сети,
  что может привести к переобучению.
  
  Сначала выбирается вероятность p,
  с которой каждый нейрон будет исключаться.
  Обычно находится в диапазоне от 0.2 до 0.5.
  
  Для каждого слоя, где применяется Dropout,
  генерируется случайная маска.
  Эта маска имеет ту же размерность, что и слой,
  и каждый её элемент является бинарным (0 или 1),
  где 1 соответствует активации нейрона,
  а 0 - его отключению.
  Эта маска генерируется заново для каждого прохода обучения
  и для каждого обучающего примера.
  Активации нейронов умножаются на эту маску,
  эффективно <выключая> некоторые нейроны.
  
  В процессе обратного распространения ошибки,
  градиенты рассчитываются только для активных нейронов.
  Нейроны, которые были временно <выключены>,
  не получают обновлений весов.
  
  Во время тестирования или инференции Dropout отключается.
  Однако, активации нейронов масштабируются на коэффициент,
  равный вероятности p,
  чтобы компенсировать большее количество активных нейронов
  по сравнению с обучением.
  Это масштабирование помогает сохранить
  общую сумму активаций на похожем уровне между обучением и тестированием.
  
  Математически, Dropout можно интерпретировать как ансамблевый метод.
  Каждый проход обучения использует случайно отобранную <тонкую> сеть,
  что похоже на обучение множества разных моделей и усреднение их прогнозов.
  
  Подходы к определению оптимальной степени Dropout
  
  1. Выбор степени Dropout в зависимости от типа сети:
  В разных типах сетей, таких как многослойные перцептроны (MLP),
  сверточные нейронные сети (CNN) и рекуррентные нейронные сети (RNN),
  может потребоваться различная степень Dropout.
  
  Многослойные перцептроны (MLP)
  
  Сети с плотными слоями (Dense layers):
  В таких сетях обычно используются значения Dropout от 0.2 до 0.5.
  Это помогает предотвратить переобучение,
  поскольку плотные слои склонны к запоминанию шума в данных.
  Необходимо провести серию экспериментов
  для определения оптимальной степени Dropout,
  учитывая конкретную задачу и сложность данных.
  
  Сверточные нейронные сети (CNN)
  
  - Положение слоев DropВ CNN Dropout часто помещают
  после сверточных и пулинговых слоев.
  Это помогает снизить переадаптацию к тренировочным данным,
  сохраняя при этом пространственные особенности изображений.
  
  - Меньшие значения:
  Для CNN значения Dropout обычно ниже, чем для MLP,
  так как сверточные слои менее склонны к переобучению.
  Общие значения находятся в диапазоне от 0.1 до 0.3.
  
  Рекуррентные нейронные сети (RNN), включая LSTM
  
  - Dropout для входных и рекуррентных соединений:
  В RNN, включая LSTM, важно различать Dropout
  для входных данных и рекуррентных соединений.
  
  - Для входных данных Dropout может быть более высоким (до 0.5),
  чтобы уменьшить зависимость от конкретных входных характеристик.
  
  - Для рекуррентных соединений, рекомендуется
  более низкий уровень Dropout (например, от 0.1 до 0.2),
  поскольку слишком высокий уровень Dropout
  может нарушить передачу информации во времени
  и сделать обучение нестабильным.
  
  2. Определение подходящей степени Dropout:
  Общепринятое значение для Dropout в скрытых слоях колеблется между 0.5 и 0.8,
  при этом более высокие значения чаще используются для входных слоев.
  
  Для входных слоев часто используются более высокие значения Dropout,
  так как они имеют более прямое воздействие на входные данные.
  Значения в диапазоне от 0.5 до 0.8 помогают
  снизить риск переобучения на специфические особенности входных данных,
  особенно в задачах, связанных с большим количеством признаков
  или высокой размерностью.
  
  В скрытых слоях обычно рекомендуются значения от 0.5 до 0.7.
  Это помогает предотвратить чрезмерную адаптацию модели к тренировочным данным,
  сохраняя при этом достаточное количество активных нейронов
  для эффективного обучения.
  
  3. Grid Search для оптимизации параметров:
  Вместо того чтобы угадывать подходящую степень Dropout,
  можно протестировать различные значения систематически.
  
  4. Использование ограничения веса:
  Веса сети могут увеличиваться в размерах
  в ответ на вероятностное удаление активаций слоя.
  Чтобы противодействовать этому,
  можно наложить ограничение на веса,
  чтобы норма всех весов в слое была ниже определенного значения.
  
  5. Использование наименьших наборах данных:
  Dropout более хорош на задачах,
  где количество обучающих данных ограничено,
  и модель склонна к переобучению.
  На задачах с большим объемом обучающих данных
  преимущества от использования Dropout могут быть менее заметны.
  
  Пару пример дропаута
  
  .......
  
  Inverted Dropout
  
  Inverted Dropout - это популярная вариация стандартного Dropout.
  Как и в стандартном Dropout,
  нейроны в слое сети отключаются случайным образом с вероятностью p
  (например, 50% нейронов могут быть отключены).
  Однако, в отличие от стандартного Dropout,
  не просто устанавливается 0 в выключенных нейронах.
  
  Во время каждой итерации обучения для каждого слоя,
  где применяется Dropout,
  генерируется маска Dropout.
  Маска - это массив, содержащий 0 и 1,
  размер которого соответствует количеству нейронов в слое.
  Каждый элемент маски генерируется независимо
  и имеет вероятность p (гиперпараметр) быть равным 1
  и вероятность 1-p быть равным 0.
  
  Маска применяется к активациям (выходам нейронов) данного слоя.
  Это означает, что активации нейронов,
  соответствующие 0 в маске,
  устанавливаются в 0,
  эффективно <выключая> эти нейроны во время текущей итерации обучения.
  
  В отличие от традиционного Dropout,
  Inverted Dropout масштабирует активные нейроны так,
  чтобы суммарная активность слоя оставалась постоянной.
   Это делается путем деления активаций на вероятность сохранения 1-p.
  Таким образом, средний вклад каждого активного нейрона увеличивается,
  компенсируя отсутствие выключенных нейронов.
  
  Batch Normalization
  
  Batch Normalization (BN) предназначен для улучшения скорости,
  производительности и стабильности обучения нейронных сетей.
  
  В основе Batch Normalization лежит решение проблемы
  <внутреннего ковариационного сдвига>
  (Internal Covariate Shift).
  Этот термин описывает явление,
  при котором распределение входных данных каждого слоя нейронной сети
  меняется в процессе обучения,
  из-за чего сети становится сложнее обучать.
  Это происходит из-за того,
  что параметры предыдущих слоев изменяются во время обучения,
  влияя на данные текущего слоя.
  
  Batch Normalization решает эту проблему,
  нормализуя выход каждого слоя.
  Нормализация заключается в преобразовании входных данных каждого слоя таким образом,
  чтобы среднее значение было приближено к нулю,
  а стандартное отклонение - к единице.
  Это делает сеть менее чувствительной
  к масштабу входных данных
  и улучшает общую стабильность процесса обучения.
  
  К примеру для мини-пакета ... алгоритм будет следующим:
  
  где m - размер мини-пакета,
  BN трансформирует каждый вход xi следующим образом:
  
  1. Вычисление среднего:
  
  .......
  
  2. Вычисление дисперсии:
  
  .......
  
  3. Нормализация: , где ? - маленькое число для избежания деления на ноль.
  
  .......
  
  4. Масштабирование и сдвиг: , где ? и ? - параметры,
  которые сеть обучается настраивать.
  
  Интеграция в различные типы нейронных сетей
  
  Интеграция в сверточные нейронные сети (CNN)
  
  В CNN, BN обычно размещается сразу после сверточных слоев
  (Convolutional Layers)
  и перед активационной функцией, такой как ReLU.
  Порядок обычно следующий:
  Свертка -> Batch Normalization -> Активация.
  
  В сверточных слоях BN применяется отдельно
  к каждому каналу выходных данных свертки.
  Это означает, что для каждого фильтра сверточного слоя
  вычисляется собственное среднее и дисперсия.
  
  При этом сохраняется пространственная структура выходных данных,
  т.е. нормализация не влияет на пространственное расположение признаков.
  
  В некоторых случаях BN может служить регуляризатором,
  уменьшая необходимость в Dropout.
  
  Интеграция в рекуррентные нейронные сети (RNN)
  
  Применение BN в RNN сложнее, чем в CNN,
  из-за динамической природы последовательностей
  и зависимости выходов RNN от предыдущих временных шагов.
  
  - BN для входных весов:
  Применяется к данным на каждом временном шаге независимо.
  Это аналогично применению BN в сверточных и полносвязных слоях.
  
  - BN для переходных весов:
  Сложнее, так как требует расчета статистик BN по всем временным шагам.
  В некоторых реализациях используется усреднение статистик по временным шагам.
  
  Пару примеров
  
  .......
  
  Заключение
  
  Dropout и Batch Normalization помогают моделям учиться более эффективно
  и быть более устойчивыми к переобучению,
  что, в свою очередь, приводит к улучшению обобщающей способности
  и производительности на новых данных.
  
  ........
  
  //// Конец цитирования.
  
  Но почему и как возникает "переобучение",
  описания "почему-то" мне еще не встречалось.
  А вот способов борьбы с этой "страшилкой"
  накопилось уже достаточно много.
  И почему так получается?
  
  
  ========
  
  29.12.2023 13:12
  
  Математика простыми словами. Фрагмент 1.
  В оглавление.
  
  Нашел в архивах очень хороший материал с "человеческим" пояснением
  некоторых математических терминов и решил делать подборку
  таких редких в наше время "жемчужин":
  
  "Мир математики глазами AI"
  Автор: Monotirg
  https://habr.com/ru/articles/729226/.
  4 апр в 23:47
  
  //// Начало цитирования.
  
  ......
  
  Математика - это удивительная наука,
  которая описывает мир через числа, формулы и логические рассуждения.
  Однако, несмотря на все её достижения и применения в разных областях,
  многие её аспекты остаются загадкой для человека.
  В этой статье мы рассмотрим мир математики глазами искусственного интеллекта,
  способного анализировать и обрабатывать огромные объемы данных
  и находить решения, которые были бы недоступны для человека.
  Погрузимся в удивительный мир математических концепций и принципов,
  которые помогают понимать мир вокруг нас
  и создавать новые технологии и инновации.
  
  А среди основных разделов выделил:
  
  Математический анализ
  
  Теория множеств
  
  Линейная алгебра
  
  Теория вероятностей
  
  .........
  
  Математический анализ
  
  Теорема Ньютона-Лейбница -
  эта теорема связывает понятия дифференцирования и интегрирования.
  Она утверждает,
  что если функция непрерывна на отрезке,
  то определенный интеграл от неё на этом отрезке
  равен разности значений первообразной этой функции на концах этого отрезка.
  
  Теорема о промежуточном значении
  - эта теорема утверждает, что если непрерывная функция принимает
  два разных значения в двух точках интервала,
  то она должна принимать каждое значение между этими двумя точками
  хотя бы один раз.
  
  Ряд Тейлора - это метод, который позволяет представить функцию
  в виде бесконечной суммы членов,
  связанных с производными функции, вычисленными в определенной точке.
  
  Преобразование Фурье - это метод,
  который разлагает сигнал или функцию на составляющие его частоты.
  Это основной инструмент в обработке сигналов,
  системах связи и многих других областях,
  где важен анализ сигналов или функций.
  
  Теория множеств
  
  Теорема Кантора - эта теорема утверждает,
  что мощность любого множества строго меньше
  мощности множества всех его подмножеств.
  
  Аксиома выбора - Это противоречивая аксиома теории множеств,
  которая утверждает, что для любого набора непустых множеств
  существует способ выбрать один элемент из каждого множества.
  
  Линейная алгебра
  
  Определитель - представляет собой числовое значение,
  связанное с квадратной матрицей.
  У него есть много важных приложений в линейной алгебре,
  таких как определение обратимости,
  вычисление собственных значений и собственных векторов
  и решение систем линейных уравнений.
  
  Матрицы - это способ представления линейных преобразований
  и систем линейных уравнений.
  Они предоставляют мощный инструмент для выполнения вычислений
  и анализа свойств линейных систем.
  
  Линейное отображение - это функция,
  которая отображает векторы из одного векторного пространства в другое,
  сохраняя при этом определённые алгебраические свойства,
  такие как линейность и сохранение векторного сложения и скалярного умножения.
  
  Коммутативность умножения матриц
  
  Здесь я решил спросить,
  как геометрически показать,
  что умножение матриц не является коммутативным.
  
  Когда мы думаем о матрицах как о линейных отображениях,
  то умножению матриц соответствует композиция линейных отображений.
  
  Для того, чтобы показать, что умножение матриц не является коммутативным,
  можно рассмотреть два линейных отображения A и B,
  где A - поворот на 90 градусов против часовой стрелки,
  а B- отражение относительно оси x.
  
  Если мы сначала применяем A,а затем B,
  мы получаем другое преобразование,
  чем если бы мы сначала применяли B, а затем A.
  
  Этот пример иллюстрирует,
  почему умножение матриц не является коммутативным.
  
  Теория вероятностей
  
  Закон больших чисел - этот закон гласит,
  что среднее значение результатов,
  полученных при большом количестве испытаний случайного события,
  будет близко к математическому ожиданию.
  
  Центральная предельная теорема - эта теорема утверждает,
  что сумма большого числа независимых случайных величин
  имеет распределение близкое к нормальному.
  
  Цепь Маркова - это случайный процесс,
  удовлетворяющий свойству Маркова,
  которое гласит, что будущее состояние системы
  зависит только от текущего состояния,
  а не от какого-либо предыдущего состояния.
  
  Условная вероятность - это вероятность наступления события
  при условии, что произошло другое событие.
  
  .....
  
  //// Конец цитирования.
  
  Очень хочется чтобы эта тема "простой и понятной математики"
  была продолжена.
  
  
  ==========
  
  29.12.2023 14:29
  
  Data Science простыми словами.
  В оглавление.
  
  Data Science, в моем понимании, это не столько область технологии/инженерии,
  сколько сейчас сильно продвигаемая новая "технологическая религия",
  в которой можно выделить, как минимум, два "символа Веры".
  Выражаются эти "символы Веры" в разных формулировках,
  но смысл достаточно простой:
  "Данные превыше всего" и "Нет ничего кроме Статистики".
  
  Это конечно шутливое преувеличение, но в каждой шутке есть только доля шутки.
  И чтобы это проиллюстрировать предлагаю текст,
  с пусть не самыми актуальными, но распространенными вопросами
  к желающим приобщиться к "великой и ужасной" Data Science:
  
  "100 вопросов для подготовки к собесу Data Science".
  Автор: evaclick (uproger)
  https://habr.com/ru/articles/783766/.
  28 дек 2023 14:28
  
  В этом материале есть и ответы на указанные "100 вопросов",
  но я процитирую только сами вопросы, чтобы просто оконтурить то,
  что считается необходимым для "сдачи экзамена"
  на вступления в "школу магии Data Science".
  
  //// Начало цитирования.
  
  .......
  
  Содержание
  
  Секция "Статистика"
  
  Что такое нормальное распределение?
  
  Средняя проектная оценка в группе из 10 учеников получилась 7, а медиана 8.
  Как так получилось? Чему больше доверять?
  
  Какова вероятность заражения пациента, если его тест позитивен,
  а вероятность заболевания в его стране составляет 0.1%?
  
  Что такое центральная предельная теорема?
  В чем заключается ее практический смысл?
  
  Какие примеры набора данных с негауссовым распределением вы можете привести?
  
  Что такое метод максимизации подобия?
  
  Вы баллотируетесь на пост, в выборке из 100 избирателей
  60 будут голосовать за вас.
  Можете ли вы быть уверены в победе?
  
  Как оценить статистическую значимость анализа?
  
  Сколько всего путей, по которым мышь может добраться до сыра,
  перемещаясь только по линиям клетки?
  
  В чем разница между линейной и логистической регрессией?
  
  Приведите три примера распределений с длинным хвостом.
  Почему они важны в задачах классификации и регрессии?
  
  Суть закона больших чисел
  
  Что показывает p-значение (значимая вероятность)
  
  Что такое биномиальная формула вероятности?
  
  Счетчик Гейгера записывает 100 радиоактивных распадов за 5 минут.
  Найдите приблизительный 95% интервал для количества распадов в час.
  
  Как рассчитать необходимый размер выборки?
  
  В каких случаях вы бы использовали MSE и MAE?
  
  Когда медиана лучше описывает данные, чем среднее арифметическое?
  
  В чём разница между модой, медианой и матожиданием
  
  
  Секция "SQL"
  
  В чем заключается разница между MySQL и SQL Server?
  
  Что делает UNION? В чем заключается разница между UNION и UNION ALL?
  
  Как оптимизировать SQL-запросы?
  
  Выведите список сотрудников с зарплатой выше, чем у руководителя
  
  Какие оконные функции существуют?
  
  Найдите список ID отделов с максимальной суммарной зарплатой сотрудников
  
  В чём разница между CHAR и VARCHAR?
  
  Выберите самую высокую зарплату, не равную максимальной зарплате из таблицы
  
  Чем отличаются SQL и NoSQL?
  
  В чём разница между DELETE и TRUNCATE?
  
  Пронумеруйте строки в таблице employee
  
  Пронумеруйте строки в таблице в разрезе отдела по зарплате
  
  Какие есть уровни изоляции транзакций?
  
  
  Секция "Python"
  
  Какие отличия есть у Series и DataFrame в Pandas?
  
  Напишите функцию, которая определяет количество шагов
  для преобразования одного слова в другое
  
  В чём преимущества массивов NumPy по сравнению с (вложенными) списками python?
  
  В чём отличие между map, apply и applymap в Pandas?
  
  Самый простой способ реализовать скользящее среднее с помощью NumPy
  
  Поддерживает ли Python регулярные выражения?
  
  Продолжи: "try, except, ..."
  
  Как построить простую модель логистической регрессии на Python?
  
  Как выбрать строки из DataFrame на основе значений столбцов?
  
  Как узнать тип данных элементов из массива NumPy?
  
  В чём отличие loc от iloc в Pandas?
  
  Напишите код, который строит все N-граммы на основе предложения
  
  Каковы возможные способы загрузки массива из текстового файла данных в Python?
  
  Чем отличаются многопоточное и многопроцессорное приложение?
  
  Как можно использовать groupby + transform?
  
  Напишите финальные значения A0, ..., A7
  
  Чем отличаются mean() и average() в NumPy?
  
  Приведите пример использования filter и reduce над итерируемым объектом
  
  Как объединить два массива NumPy?
  
  Напишите однострочник, который будет подсчитывать количество заглавных букв в файле
  
  Как бы вы очистили датасет с помощью Pandas?
  
  array и ndarray - в чём отличия?
  
  Вычислите минимальный элемент в каждой строке 2D массива
  
  Как проверить, является ли набор данных или временной ряд случайным?
  
  В чём разница между pivot и pivot_table?
  
  Реализуйте метод k-средних с помощью SciPy
  
  Какие есть варианты итерирования по строкам объекта DataFrame?
  
  Что такое декоратор? Как написать собственный?
  
  
  Секция "Data Science"
  
  Что такое сэмплирование? Сколько методов выборки вы знаете?
  
  Чем корреляция отличается от ковариации?
  
  Что такое кросс-валидация? Какие проблемы она призвана решить?
  
  Что такое матрица ошибок? Для чего она нужна?
  
  Как преобразование Бокса-Кокса улучшает качество модели?
  
  Какие методы можно использовать для заполнения пропущенных данных,
  и каковы последствия невнимательного заполнения данных?
  
  Что такое ROC-кривая? Что такое AUC?
  
  Что такое полнота (recall) и точность (precision)?
  
  Как бы вы справились с разными формами сезонности
  при моделировании временных рядов?
  
  Какие ошибки вы можете внести, когда делаете выборку?
  
  Что такое RCA (root cause analysis)? Как отличить причину от корреляции?
  
  Что такое выброс и внутренняя ошибка?
  Объясните, как их обнаружить, и что бы вы делали,
  если нашли их в наборе данных?
  
  Что такое A/B-тестирование?
  
  В каких ситуациях общая линейная модель неудачна?
  
  Является ли подстановка средних значений вместо пропусков допустимым? Почему?
  
  Есть данные о длительности звонков.
  Разработайте план анализа этих данных.
  Как может выглядеть распределение этих данных?
  Как бы вы могли проверить, подтверждаются ли ваши ожидания?
  
  
  Секция "Machine Learning"
  
  Что такое векторизация TF/IDF?
  
  Что такое переобучение и как его можно избежать?
  
  Вам дали набор данных твитов, задача
  - предсказать их тональность (положительная или отрицательная).
  Как бы вы проводили предобработку?
  
  Расскажите про SVM
  
  В каких случаях вы бы предпочли использовать SVM,
  а не Случайный лес (и наоборот)?
  
  Каковы последствия установки неправильной скорости обучения?
  
  Объясните разницу между эпохой, пакетом (batch) и итерацией.
  
  Почему нелинейная функция Softmax часто бывает последней операцией
  в сложной нейронной сети?
  
  Объясните и дайте примеры коллаборативной фильтрации,
  фильтрации контента и гибридной фильтрации
  
  В чем разница между bagging и boosting для ансамблей?
  
  Как выбрать число k для алгоритма кластеризации <метод k-средних>
  (k-Means Clustering), не смотря на кластеры?
  
  Как бы вы могли наиболее эффективно представить данные с пятью измерениями?
  
  Что такое ансамбли, и чем они полезны?
  
  В вашем компьютере 5Гб ОЗУ, а вам нужно обучить модель
  на 10-гигабайтовом наборе данных. Как вы это сделаете?
  
  Всегда ли методы градиентного спуска сходятся в одной и той же точке?
  
  Что такое рекомендательные системы?
  
  Объясните дилемму смещения-дисперсии (bias-variance tradeoff)
  и приведите примеры алгоритмов с высоким и низким смещением.
  
  Что такое PCA, и чем он может помочь?
  
  Объясните разницу между методами регуляризации L1 и L2.
  
  ......
  
  //// Конец цитирования.
  
  Если Вы дочитали до этого места, то могли заметить,
  что в части собственно "Data Science" и "Machine Learning"
  вопросов на ПОНИМАНИЕ практически нет.
  В основном вопросы на знание/владение какими-то частными
  техническими/полуэвристическими методами.
  Это собственно не вина, а беда составителей такого рода "задачников".
  Понимания того как вся эта "магия" или "алхимия" машинного обучения
  "не в принципе, а в кожухе" сейчас практически нет.
  
  Но и этот список мне самому полезен как ориентир того,
  какие вопросы надо проработать и зафиксировать в данном модуле.
  
  
  ========
  
  05.01.2024 19:45
  
  Основы теории вероятности простыми словами.
  В оглавление.
  
  Отношение реальности и математики, как способа описания и моделирования
  этой реальности очень многогранно и имеет длинную историю,
  с различными "поворотами сюжета".
  Один из таких интересных вопросов о соотношении теории вероятности (теорвера)
  и реально наблюдаемым эмпирическим "закономерностям"/последовательностям
  весьма своеобразно и интересно изложен в таком материале:
  
  "Эмпирическая вероятность".
  Автор: Sergey_Kovalenko (Сергей Коваленко)
  https://habr.com/ru/articles/493800/.
  6 апр 2020 в 11:42
  
  Текст просто замечательный, очень рекомендую прочесть его полностью,
  а здесь только главный вывод -
  теория вероятности НЕ запрещает никакую эмпирическую последовательность.
  
  //// Начало цитирования.
  
  Давайте обсудим, что мы имеем ввиду,
  когда произносим слово "вероятность".
  Я прошу вас попытаться ответить на этот вопрос
  не с позиции студента или <чистого> математика,
  а так, как его должны понимать инженер,
  прикладной исследователь
  или любой другой человек, которому предстоит принять решение
  на основании эмпирических данных.
  
  Наивный подход
  
  .......
  
  Абстрактные теории
  
  .......
  
  Модель и интерпретация
  
  .......
  
  Примеры
  
  .......
  
  Проверка на ошибки
  
  .......
  
  Доказательная сила
  
  .......
  
  <Голый король>
  
  .......
  
  Вернемся к теории вероятности и трем математикам с монеткой.
  
  Как вы думаете,
  если математики попытаются много раз повторить свой эксперимент,
  обнаружат ли они какие-либо эмпирические закономерности?
  Другими словами, смогут ли они сделать обоснованный вывод,
  что некоторого типа последовательности в их экспериментах
  невозможно наблюдать?
  
  И второй вопрос:
  если эмпирические закономерности есть,
  то какие из них могут быть объяснены
  в рамках общепринятой теории вероятностей?
  
  Боюсь вас разочаровать,
  но ответ на второй вопрос предельно прост:
  <Никакие.>
  
  Действительно,
  все, чего требует содержательный смысл аксиом тории вероятностей
  - чтобы веса, назначенные орлу и решке,
  были неотрицательными и в сумме давали единицу.
  Когда это требование выполнено,
  любая последовательность орлов и решек
  оказывается в наблюдениях допустимой,
  поскольку она не меняет назначенных весов
  и тем самым не создает противоречий с аксиомами.
  Отсюда следует вывод:
  в своем содержательном значении
  аксиомы теории вероятностей
  не накладывают на возможные результаты наблюдений
  ровно никаких ограничений
  и поэтому в строгом логическом смысле
  не способны объяснить
  каких бы то ни было закономерностей в данных.
  
  Что касается вопроса о существовании эмпирических закономерностей,
  то здесь возможно двоякое мнение.
  
  С одной стороны, если монетка не изготовлена с какими-то особыми премудростями,
  то в каждом опыте она может упасть вверх, как орлом, так и решкой,
  поэтому эксперимент может закончится любой их последовательностью,
  а значит эмпирических закономерностей,
  в строгом определении этого понятия,
  - нет.
  
  С другой стороны,
  даже посвятив опытам над симметричной монеткой целую жизнь,
  вряд ли удастся увидеть хотя бы одну серию из 100 подбрасываний,
  в которой орлов будет не больше 10
  (в единичной серии шансы меньше 1 к 10**15).
  Последнее означает,
  что экспериментатор с чистой совестью
  имеет право принять высказывание:
  <В серии из 100 подбрасываний симметричная монетка
  упадет вверх орлом не менее 11 раз>
  в качестве хорошо обоснованной эмпирической закономерности.
  
  Здесь мы явно приходим к противоречию
  между философией науки и здравым смыслом,
  чему из них следовать?
  
  Когда дело доходит до конкретных решений,
  нам приходится поступать категорично:
  атаковать - или обороняться,
  оперировать - или продолжать лечить медикаментозно,
  заключить сделку - или отказаться от предложения.
  В подобных обстоятельствах у вас не получится
  с какой-либо пользой применить теорию вероятности,
  предварительно не совершив ошибок в ее интерпретации.
  В одних случаях маловероятные события
  придется считать невозможными,
  в других - заменять вероятность на частоту
  или думать о математическом ожидании как о среднем значении
  для конечной серии экспериментов.
  
  Причину такой странной ситуации вряд ли стоит искать
  в дефектах абстрактной теории вероятностей:
  есть все основания полагать,
  что эта математическая дисциплина
  как раз-таки непротиворечива.
  Другое дело, что любая теория,
  построенная на философии однозначных <Да> и <Нет>,
  абсолютной <Истины> и <Объективной реальности>,
  вряд ли сможет соответствовать нашему интуитивному пониманию,
  что такое <вероятность>
  и как ее измерять.
  Нет даже полной уверенности,
  что это понятие реально,
  а не является упрощением какой-то
  еще не открытой концепции
  (Как было когда-то с <Небесной сферой>
  или <Эфирным ветром>).
  
  Если теория до конца не разработана,
  а ее интерпретации часто противоречивы,
  стоит ли применять эту теорию на практике?
  В тех случаях, когда результат не слишком расходится со здравым смыслом
  - наверное, стоит!
  Например, Лейбниц, Эйлер, Лагранж, Фурье и многие их современники
  успешно использовали <Анализ бесконечно малых>
  еще задолго до того, как удалось создать
  хоть какую-то теорию действительных чисел.
  
  Не относитесь к наукам слишком строго!
  
  В качестве запоздалой первоапрельской шутки.
  Сергей Коваленко.
  
  2020 год
  magnolia@bk.ru
  
  .......
  
  //// Конец цитирования.
  
  Помимо основного вывода о том, что теория вероятности
  НЕ запрещает никакой эмпирической последовательности,
  специально обращаю Ваше внимание,
  что в тексте ставится очень важный научный, метафизический
  и мировоззренческий вопрос:
  "Что есть сама концепция "вероятности"?
  
  И осторожно намекается, что за "вероятностью" может стоять
  что-то "бесконечно большее",
  для чего у нас сейчас нет ни понимания, ни концепций, ни, даже, гипотез.
  
  Это, конечно же, шутка, даже, первоапрельская шутка,
  но "в каждой шутке только доля шутки".
  
  
  ==========
  
  06.01.2024 11:17
  
  Контринтуитивные следствия "Закона больших чисел" на примерах.
  В оглавление.
  
  В предыдущем фрагменте достаточно обоснованно, и, что немаловажно, с юмором,
  проводилась мысль о том, что обычное интуитивное понимание "вероятности",
  "немного" отличается от "правильного классически-теоретического".
  И даже знание этой, по настоящему, ФУНДАМЕНТАЛЬНОЙ разницы
  не помогает при столкновении с реальными ситуациями.
  
  Предлагаю Вашему вниманию достаточно объемный материал с примерами того,
  как отличается наше интуитивное представление о "вероятности"
  от "хорошо доказанных математических фактов":
  
  "Закон больших чисел и закон больших грабель".
  Автор: materiatura
  https://habr.com/ru/articles/784556/.
  4 янв 2024 в 00:58
  
  Текст достаточно большой, Но сильно сокращать его "почему-то" не хочется.
  
  //// Начало цитирования.
  
  Бросание монеты - дело не хитрое да и оборудование для экспериментов
  не очень дорогое.
  Бросай себе и бросай.
  Этот простой эксперимент дает неожиданно много следствий,
  многие из которых не очевидны,
  а порой и контринтуитивны.
  
  Моя интуиция с завидным постоянством подсказывает мне
  неверное решение
  поэтому я собрал замечательную коллекцию грабель
  на которые я наступал и хотел бы ее показать публике.
  Я не буду использовать формул и законы больших чисел,
  эти столпы теорвера нам не понадобятся.
  Обойдемся только граблями их будет много и разных.
  
  Разница между количеством выпавших орлов и решек.
  
  "Однако если бросаний произведено очень много,
  то числа выпавших гербов и решек окажутся почти равными.
  И равенство будет выполняться тем точнее,
  чем больше произведено бросаний."
  
  Это цитата из отличного учебника физики [1],
  мне он очень нравится.
  В этой цитате очень важно слово
  почти,
  в нём всё дело,
  это грабли,
  я на них наступал.
  Это "почти" означает отношение числа орлов к числу решек.
  Это как раз один из законов больших чисел.
  
  Если говорить не "почти", а в "точности",
  разница между количеством орлов и решек
  в процессе бросания монеты будет увеличиваться.
  Вероятность совпадения числа орлов и решек
  с увеличением числа бросков стремится к нулю.
  
  Получается такое утверждение:
  "С увеличением числа бросков вероятность
  почти одинакового количества орлов и решек стремится к 1,
  а вероятность их точного совпадения стремится к 0".
  Или так:
  "С увеличением числа бросков будет почти одинаковое количество орлов и решек,
  но точного их совпадения не будет".
  Расчехляйте интуицию, будем ею пользоваться.
  
  Общеприняты две модели аналогичные бросанию монеты.
  Первая модель - это блуждание точки на прямой.
  В начальный момент точка находится в нуле,
  после броска монеты в случае выпадения орла
  точка сдвигается на единицу в положительном направлении,
  в случае решки - на единицу в отрицательном направлении.
  Так вот в этой модели среднее значение удаления точки от нуля будет - ноль,
  а разброс значений,
  т.е. дисперсия будет равна числу бросков.
  Таким образом с ростом числа бросков
  мы можем получить любую наперед заданную разницу
  между орлами и решками,
  при том любое количество раз,
  главное не ленится бросать и бросать.
  
  Вторая модель - это два игрока назовем их Олег и Роман,
  пусть после каждого броска монеты если выпал орел выигрывает один рубль Олег,
  а если выпала решка - в таком же выигрыше Роман.
  
  Время нахождения в выигрыше
  
  Представим долгую игру Олега и Романа с тысячами бросаний монеты.
  В процессе игры то Олег, то Роман будет находится в чистом выигрыше,
  в какие-то моменты они будут "при своих",
  то есть будет ничья,
  после каждой ничьи лидерство может сменится
  и кто-то будет опять в выигрыше.
  Я предполагал, что время нахождения в выигрыше
  для каждого из игроков будет примерно одинаковое,
   а ничьи будут достаточно часты,
  ну уж точно, ничьи скорее будут, чем их не будет.
  Это грабли,
  я на них танцевал.
  
  Одинаковое время нахождения в выигрыше игроков
  - самое маловероятное событие.
  Самое вероятное число смены лидерства - 0 (ноль),
  одна смена вероятнее чем две, а две чем три...
  Вероятнее всего, что игрок выигравший первый бросок
  так и останется всегда в выигрыше.
  Как бы долго мы не бросали монету.
  Здесь работает не закон больших чисел,
  а закон арксинуса.
  
  И да, конечно,
  математическое ожидание выигрыша любого из игроков - 0 (ноль).
  
  Количество ничьих
  
  Предположим Олег и Роман бросают монету через равные промежутки времени.
  Моя интуиция подсказывала мне,
  что за четыре часа игры ничьих будет приблизительно
  в четыре раза больше чем за час.
  Опять грабли,
  я на них маршировал.
  Ничьих будет больше всего в два раза,
  И чем дольше будет продолжаться игра,
  ничьих будут случаться все реже и реже.
  За 20 бросаний монеты самое вероятное
  ( вероятность немного больше 0,5)
  число ничьих не более 2-х раз,
  а 10 ничьих имеют вероятность в 8 раз меньше (0,06),
  вероятность отсутствия ничьих - 0,2.
  При 10.000 бросаний количество ничьих будет около 40 раз,
  медиана - 68 ничьих,
  увеличив число бросаний в 100 раз число ничьих увеличится лишь в 10 раз.
  
  Какова же вероятность хотя бы одной ничьи?
  Она равна 1, то есть ничья обязательно будет.
  А как долго ждать этого?
  В среднем - бесконечно.
  Если игра будет продолжаться бесконечно то количество ничьих
  будет бесконечно
  и каждой из них в среднем нужно ждать бесконечно...
  Но только при идеальной монете,
   если монета не идеальна, то количество ничьих
  будет ограничено даже при бесконечной игре.
  
  Разорение игрока
  
  Еще один вопрос который возникает в связи с игрой Олега и Романа:
  "Как скоро закончится игра в связи с тем,
  что у одного из них закончатся деньги?".
  Например, если у Олега в начале игры был 1 рубль,
  а у Романа 100 рублей,
  сколько в среднем продлится игра если за один бросок монеты
  разыгрывается 1 рубль?
  Весь мой "опыт" игры в орлянку подсказывал мне, что не долго,
  5-10 бросков и всё.
  Но, грабли,
  я без них никуда,
  они всегда со мной.
  Игра в среднем продлится 100 бросков.
  А если у каждого по 100 рублей?
  Длительность игры - 10.000 бросков до разорения одного из игроков!
  Дайте мне каску.
  
  Вот еще для тренировки интуиции - пусть Олег богат как Крез,
  бесконечно богат,
  а Роман решил кардинально решить проблему с кредитом
  и последние 100 рублей решил отдать в игру.
  Как долго продлится игра?
  Средняя продолжительность игры - бесконечная игра.
  Вероятность проигрыша Романа - 1,
  то есть он точно проиграет,
  но через бесконечное время игры.
  
  Разорение игрока при нечестной монет
  
  В этой статье, исследовав реальную монету,
  выяснили, что вероятность выпадения одной из сторон равна не ?,
  а что-то около 0,51 (округляю для простоты).
  Что будет, если играть с бесконечно богатым противником этой монетой
  и знать какая сторона монеты выпадает чаще?
  Например у вас есть всего один рубль,
  тогда у вас появляется вероятность не разориться, она равна 0,04,
  а вот если у вас есть 100 рублей,
  то эта вероятность не разориться увеличивается до 0,98,
  но вот только продолжительность этой игры велика
  и игра может вообще никогда не закончится.
  
  Разорение игрока при двух нечестных монетах
  
  Представим что Олег и Роман при игре используют две нечестных монеты
  с одинаковым отклонением от ?,
  но в разные стороны - одна в пользу Олега, вторая в пользу Романа.
  Выбор монеты определяется случайно,
  после каждого броска, например честной монетой.
  Возрастет ли продолжительность игры в этом случае?
  Вроде как при большом количестве бросков влияние отклонения
  от честности используемых монет должно компенсироваться,
  так отклонения одинаковы, но с разными знаками.
  Грабли.
  Продолжительность игры сильно вырастет
  по сравнению с игрой честной монетой.
  
  Выигрыш до первой ничьи
  
  После начала игры Олега и Романа, кто-то вырвется вперед.
  Давайте загадаем какой-то выигрыш для этого удачного игрока.
  Например, 10 рублей.
  Первый вопрос - сколько ожидается раз у лидера будет этот выигрыш
  до первой ничьи?
  Второй вопрос - если мы увеличим ожидаемый выигрыш в 10 раз до 100 рублей,
  сколько ожидается таких выигрышей до первой ничьи?
  Грабли.
  Кажется логичным, что выигрышей в 100 рублей будет меньше
  чем выигрышей в 10 рублей.
  В действительности они будут равновероятны
  и количество обоих выигрышей вероятнее всего - 1.
  
  Блуждание на плоскости и в пространстве
  
  Про блуждание по прямой - в одномерном пространстве,
  я уже написал,
  и это просто другая модель бросания монеты.
  
  Возможно поблуждать и в двухмерном пространстве,
  часто приводят аналогию с пьяным матросом вышедшим из бара.
  В этом случае интересны два вопроса:
  вернется ли когда-то матрос в бар
  и как далеко уйдет матрос от бара за Ъ шагов.
  В бар он вернется, обязательно.
  Расстояние на которое матрос уйдет от бара таково,
  что средний квадрат расстояния пропорционален количеству шагов.
  
  Этот вопрос - "Как далеко уйдет матрос?",
  первые решили Эйнштейн и Смолуховский.
  Здесь нет грабель,
  но есть очень любопытное следствие.
  С помощью этого решения,
  была определена постоянная Больцмана,
  а заодно и вычислено число Авогадро [2].
  Вот так, покидав монетку, посмотрев на броуновское движение
  и подумав о пьяном матросе можно посчитать атомы.
  
  Блуждание в трехмерном пространстве не гарантирует возврат в исходную точку,
  увы.
  Как остроумно сформулировал Сидзуо Какутани
  <Пьяница рано или поздно найдет свой путь домой,
  а вот пьяная птица может потеряться навсегда>.
  Это печальное событие имеет вероятность 0,65,
  а математическое ожидание числа возвращений около 0,5.
  В среднем пьяная птица вернется домой полраза,
  в 65-ти пьянках из 100.
  
  Что выпадет раньше ОО или ОР
  
  Бросаем монету до тех пор пока не выпадет два орла (ОО) или орел и решка (ОР).
  Сколько в среднем нужно сделать бросков до получения
  одной из заданных последовательностей?
  Для начала, отметим что вероятности обоих результатов равны и составляют ?,
  после выпадения первого орла,
  с вероятностью ? выпадет орел или решка.
  Напрашивается вывод, что ожидание для обоих результатов будет одинаковым.
  Я так и думал,
  но интуиция как всегда подвела,
  это были очередные грабли,
  я на них загорал.
  Среднее время ожидания ОО - 6 бросков, а для ОР - 4.
  
  Как то на Хабре,
  была статья о доказательстве равновероятности выпадения орла или решки
  после выпадения подряд 20-ти орлов..
  Даже Википедия рассмотрела эту ситуацию.
  
  Подольем масла в огонь размышлений.
  После выпадения 20-ти орлов у нас может выпасть либо орел либо решка.
  Давайте подсчитаем сколько в среднем нам придется ждать
  этих последовательностей:
  
  Последовательность из 21-го орла в среднем придется ждать 4.194.302 броска.
  
  Последовательность из 20-ти орлов и затем решки придется ждать 2.097.150 броска.
  
  То есть 20 орлов и 1 решка выпадет в среднем почти в два быстрее чем 21 орел ,
  несмотря на то, что вероятности этих комбинаций одинаковы.
  
  И эта последняя последовательность имеет
  самое малое среднее время появления
  вместе с инвертированной последовательностью (20-ть решек и затем один орел)
  и отображенной последовательностью (один орел и 20-ть решек).
  Дальше грабли пойдут еще жирнее.
  
  Для тех, кому кажется, что комбинация из 21 результата
  где орлы и решки чередуются,
  ну, в "соответствии" с законом больших чисел подсчитаем время ожидания
  - 2.796.202 броска.
  
  А еще неожиданно
  (для меня, как и все остальные грабли)
  что ожидаемое количество бросков всегда четно.
  
  Корова больше чем баран, баран больше чем курица, курица больше чем... корова.
  
  На различии времени ожидания для разных комбинаций построена игра Пенни,
  вот она в Википедии.
  Но там не описано самое неожиданное в этой игре.
  Возьмем три комбинации: РРОР, РОРР и ОРРР.
  Вероятность каждой 1/16.
  Время ожидания появления каждой соответственно - 18, 18, и 16 бросков.
  (А например, для комбинации ОРОР ожидание 20 бросков (подмигнул)).
  
  Первая комбинация выигрывает у второй - 3 к 2,
  (т.е. она будет выигрывать 3 игры из 5)
  другими словами вероятность выигрыша первой комбинации над второй ?,
  что больше чем половина игр,
  вторая комбинация выигрывает у третьей - 7 к 5
  (вероятность 7/12, что тоже больше ?),
  вроде напрашивается вывод,
  что первая комбинация должна выигрывать у третьей тем более.
  Напрашиваются грабли.
  Третья комбинация выигрывает у первой 7 к 5!
  
  И еще одни грабли - ожидание второй комбинации - 18 бросков, а третьей - 16,
  но тем не менее вторая выигрывает у третьей.
  Другими словами комбинацию, вероятность победы которой выше,
  ждать нужно дольше!
  Вот как бывает,
  а интуиция то этого не знает!
  
  Равное количество выпадений орлов и решек у нескольких монет.
  
  Если мы будем бросать несколько различимых монет одновременно
  и подсчитывать сколько орлов выпало у каждой монеты.
  Всегда ли мы сможем получить одинаковое количество орлов у всех монет
  имея возможность бросать бесконечно?
  Я даже не буду упоминать про мои грабли,
  я без них никуда.
  Итак если мы будем бросать 2 или 3 монеты,
  мы сможем получить бесконечное число совпадений количества орлов у всех монет.
  Правда среднее время ожидания бесконечно.
  Если же монет будет больше чем три,
  то даже и при наличии бессмертия и бесконечного времени ожидания,
  мы получим лишь ограниченное количество совпадений.
  При всем том же бесконечном времени ожидания.
  
  Длина чистых серий
  
  Условимся называть серию "чистой" если она состоит
  только из одних орлов или решек.
  Какова средняя длина чистой серии?
  Проверяем интуицию,
  про свою я даже и не буду говорить.
  Средняя длина - 2.
  Теперь для любителей замечаний про не симметричную монету.
  Какова длина серий в этом случае?
  Во-первых, длина четных серий и нечетных будет разная.
  Это первые грабли.
  Длина нечетных серий будет зависеть
  от соотношения вероятностей выпадения орлов и решек.
  Для ранее описанной монеты с вероятностями 0,51 к 0,49
  длина нечетных серий будет 2,0016.
  А длина четных: осторожно, грабли номер два
  - будет всегда, независимо от величины несимметричности монеты равна 2.
  
  Чуть - это важно.
  
  Представим ваш друг, всегда говорящий правду, бросает монету так,
  что вы не видите результата.
  Он делает первый бросок и говорит вам, что выпал орел.
  Далее он делает еще один бросок.
  Какова вероятность что в результате двух бросков будет два орла?
  Правильно, это 1/2.
  
  Теперь чуть изменим ситуацию,
  друг бросил монету два раза и сказал вам что орел выпал в один из бросков,
  а про другой бросок ничего не сказал.
  Какова вероятность что выпало два орла? Правильно, это 1/4.
  
  Грабельки на внимательность.
  
  Ваш честный друг положил в коробку две монеты одинаковыми сторонами вверх
  и попросил нас угадать какой стороной они лежат.
  Вероятность нашего успеха - 1/2.
  Вот прямо так - либо угадаем, либо нет.
  Но есть трюк, который позволит нам ответить на этот вопрос.
  Следите за руками:
  
  Просим добавить к этим монетам третью, Орлом вверх.
  Получаем три монеты которые лежат в одной из следующих комбинации
  - ООО, ООР, ОРО, ОРР.
  Вероятность каждой комбинации - 1/4.
  Теперь посчитаем вероятность вытащить Орла из коробки.
  При первой комбинации ООО вероятность вытащить орла - 1,
  при второй и третьей - 2/3, при четвертой - 1/3.
  Общая вероятность:
  
  1*1/4 + 2/3*1/4 + 2/3*1/4 + 1/3*1/4 = 2/3.
  
  Иногда приводят довод, что монеты не различимы и комбинаций будет три,
  а не четыре: ООО, ОРО, ОРР и вероятность каждой комбинации ?.
  Хорошо, посчитаем вероятность вытащить орла в этом случае:
  
  1*1/3 + 2/3*1/3 + 1/3*1/3 = 2/3. Ничего не изменилось, во как.
  
  Что же значит вероятность вытащить орла равная 2/3
  При трех монетах это значит только одно!
  А именно - так как один орел был добавлен нами,
  то до нашего добавленного орла монеты с одинаковыми верхними сторонами
  лежали так - одна вверх орлом, а другая - решкой.
  Такая вот загогулина.
  
  Замечание для тех, кто добавляет к фразу типа
  "реальная монета, она не идеальная, не симметричная,
  а значит и результат отличается от теоретического:"
  да, результат отличается от теоретического,
  но не меняется метод и смысл решения.
  И кстати, для получения максимально близкого результата
  к результату идеальной монеты,
  монета должна быть не идеальной.
  
  Все изложенные в статье факты и цифры,
  это мое личное мнение,
  любые совпадения случайны,
  при бросании монет ни одна из монет, вероятно, не пострадала.
  Повторение опытов вы производите на свой страх и риск,
  автор ответственности не несет.
  
  [1] Сивухин Д.В. Общий курс физики: Учеб.пособие: Для вузов.
  В 5 т. Т.II. Термодинамика и молекулярная физика.
  - 5-е изд., испр. - М.: ФИЗМАТЛИТ. 2005. -544с.
  
  [2] Р. Фейнман, Р. Лейтон, М. Сэндс. Фейнмановские лекции по физике.
  - М.: Мир, 1965.
  
  [3] В.Феллер Введение в теорию вероятностей и ее приложения. Том 1.
  М.: Мир 1967.
  
  [3] В.Феллер Введение в теорию вероятностей и ее приложения. Том 1.
  М.: Мир 1967
  
  //// Конец цитирования.
  
  Вопрос о расхождении интуитивных ожиданий и "правильных математических оценок",
  на самом деле очень серьезный.
  Можно, конечно, считать, что наша интуиция далеко не совершенно,
  что в общем случае справедливо.
  И Мироздание, как учит вся современная наука,
  построено на "Законе больших чисел".
  Но по той же "теории вероятности" есть ненулевая вероятность того,
  что устойчивость такого рода ошибок интуиции
  может свидетельствовать о том,
  что в этом Мироздании чаще "рулит" не "Закон больших чисел",
  а "Закон больших грабель".
  
  И утверждение "классика словесности":
  "Хотели как лучше, а получилось как всегда",
  имеет в своей основе не "большие числа",
  а "Большие Грабли".
  
  Предлагаю, подумать об этом на досуге "за чашечкой кофе" или "рюмочкой чая"
  - может получится что-то нетривиальное.
  
  
  =========
  
  06.01.2024 11:17
  
  Условная вероятность простыми словами.
  В оглавление.
  
  Продолжая цикл заметок о "вероятностях" в нашем мире,
  нельзя пройти мимо достаточно интересной и практичной теории "условных вероятностей".
  Вот достаточно хороший материал по этой теме:
  
  "Условная вероятность простыми словами".
  Автор: Колдун
  https://aftershock.news/?q=node/1329761.
  5/Янв/24 13:30
  
  //// Начало цитирования.
  
  Условная вероятность является одним из важнейших понятий теории вероятности.
  В этой статье она будет разобрана на простых примерах.
  Те, кто хорошо знаком с предметом,
  не найдут здесь ничего интересного.
  Для остальных продолжим.
  Текст не сложный, примеры простые,
  только необходимый минимум формул.
  
  Введение
  
  Допустим, у нас есть случайный процесс,
  который может породить некоторое количество исходов (событий)
  с соответствующими вероятностями.
  Мы будем рассматривать случай, когда исхода всего два.
  Назовем исходы А1 и А2, их вероятности Р(А1) и Р(А2),
  сумма вероятностей Р(А1)+Р(А2)=1.
  Вероятности Р(А1) и Р(А2) будем называть априорными,
  так как эти величины не учитывают никакой дополнительной информации.
  
  Далее мы проводим дополнительный эксперимент,
  результатом которого является событие В.
  Результат эксперимента может скорректировать
  наши представления о вероятности событий А1 и А2.
  
  Так вот, условная (или апостериорная) вероятность
  - это и есть скорректированная вероятность
  с учетом новой информации от события В.
  
  Пока все сказанное выглядит несколько абстрактно,
  поэтому перейдем к пояснению на примере.
  
  Две монеты
  
  Допустим, в кармане лежат 2 монеты, не различимые наощупь.
  Но монеты разные:
  одна из них обычная орел/решка, а вторая орел/орел.
  Мы наугад достаем одну из них.
  Очевидно, что любая из монет может оказаться в руке с вероятностью 1/2.
  
  Перейдем к дополнительному эксперименту.
  Подбросим выбранную монету и посмотрим,
  какой стороной она выпала.
  
  Разберем сначала неинтересный случай - монета выпала решкой.
  В этой ситуации после эксперимента неопределенность исчезает,
  выбранная монета оказалась монетой орел/решка с вероятностью 1.
  Все очевидно, формулы не нужны.
  
  Интересным является случай,
  когда выбранная монета выпала орлом.
  В этой ситуации сохранилась неопределенность.
  Но сместились ли вероятности того,
  какую монету мы достали?
  Для одного броска это не вполне очевидно.
  Но допустим, что мы совершили некоторое количество бросков,
  и каждый раз монета выпадала орлом.
  И тут мы понимаем,
  что чем больше бросков,
  в результате которых каждый раз выпадает орел,
  тем больше степень уверенности в том,
  что мы наугад выбрали монету орел/орел.
  
  Как это можно оценить численно?
  Пришло время отвлечься от конкретного примера
  и сделать небольшую теоретическую вставку.
  
  Но сначала запишем для случая двух монет события и вероятности.
  
  Априорные вероятности
  
  Событие А1:
  Мы наугад выбрали монету орел/орел. Вероятность Р(А1)=1/2.
  
  Событие А2: Мы наугад выбрали монету орел/решка. Вероятность Р(А2)=1/2.
  
  Дополнительный эксперимент
  
  Произошло событие В:
  Выбранную наугад монету мы подбросили N раз,
  и каждый раз выпадал орел.
  
  Теперь обещанная теория.
  
  Формула Байеса
  
  Введем в рассмотрение величины Р(А1|B) и Р(А2|B),
  которые называются условными вероятностями:
  
  Р(А1|B) - это вероятность события А1 при условии,
  что произошло событие В.
  
  Р(А2|B) - это вероятность события А2 при условии,
  что произошло событие В.
  
  Формула для условной вероятности получается из таких соображений.
  Вероятность совместного события AB
  (это когда предполагается, что вместе произошло и событие А и событие В)
  можно связать с условными вероятностями двумя способами:
  
  Р(АВ)=Р(А|B)*Р(В)
  
  Р(АВ)=Р(В|А)*Р(А)
  
  Отсюда следует, что
  
  Р(А|B)=Р(В|А)*Р(А)/Р(В)
  
  Это формула Байеса для вычисления условной вероятности.
  
  В случае двух исходов получаем:
  
  Р(А1|B)=Р(В|А1)*Р(А1)/Р(В)
  
  Р(А2|B)=Р(В|А2)*Р(А2)/Р(В)
  
  Так как после дополнительного эксперимента
  сумма вероятностей по прежнему равна 1,
  то есть Р(А1|B)+Р(А2|B)=1,
  то полная вероятность события B равна:
  
  Р(B)=Р(В|А1)*Р(А1)+Р(В|А2)*Р(А2)
  
  Заметим, что для определения искомых вероятностей
  Р(А1|B) и Р(А2|B),
  в формуле Байеса используются:
  
  - априорные вероятности Р(А1) и Р(А2),
  
  - промежуточные величины Р(В|А1) и Р(В|А2),
  которые найти очень просто.
  
  Смысл формулы Байеса состоит в том,
  что для вычисления искомых вероятностей
  сначала вычисляются промежуточные вероятности,
  при этом меняются местами условие (причина) и следствие из условия.
  //// Обратите внимание на эту, вроде как, чисто "формальное"
  //// изменение последовательности событий.
  //// Может быть это Вам лучше понять суть не только "формулы Байеса",
  //// но и как-то хоть на на секунду допустить,
  //// что это не просто "технический прием",
  //// а попытка учесть "влияние будущего на прошлое".
  
  То есть при использовании формулы Байеса
  вычисляется вероятность того,
  что событие В (следствие)
  было вызвано событием А1 и А2 (причиной).
  Полученные таким образом промежуточные величины
  Р(В|А1) и Р(В|А2)
  далее используются для расчета искомых Р(А1|B) и Р(А2|B).
  
  Все это станет понятным при возвращении к примеру.
  
  Две монеты (продолжение)
  
  Нам надо найти следующие величины:
  
  Р(А1|B) - вероятность того,
  что мы наугад выбрали монету орел/орел при условии,
  что эта монета N раз подряд выпала орлом.
  
  Р(А2|B) - вероятность того,
  что мы наугад выбрали монету орел/решка при условии,
  что эта монета N раз подряд выпала орлом.
  
  Априорные вероятности известны: Р(А1)=1/2, Р(А2)=1/2.
  
  Поэтому для вычисления Р(А1|B) и Р(А2|B) надо найти Р(В|А1) и Р(В|А2).
  
  Р(В|А1) - вероятность того, что монета N раз подряд выпадет орлом
  при условии, что эта монета орел/орел.
  Очевидно, что Р(В|А1)=1.
  
  Р(В|А2) - вероятность того, что монета N раз подряд выпадет орлом
  при условии, что эта монета орел/решка.
  Р(В|А2)=(1/2)^N.
  
  Теперь мы можем записать формулы искомых условных вероятностей:
  
  Р(А1|B)=1/(1+(1/2)^N)=2^N/(2^N+1)
  
  Р(А2|B)=1-Р(А1|B)=1/(2^N+1)
  
  Для упомянутого выше <не вполне очевидного> случая
  одного броска (N=1),
  вместо исходного распределения Р(А1)=1/2 и Р(А2)=1/2,
  получаем Р(А1|B)=2/3 и Р(А2|B)=1/3.
  
  Рассмотрим еще один пример применения формулы Байеса.
  
  Проверка брака на производстве
  
  Есть предприятие, на котором производится некое изделие.
  По результатам длительных испытаний известно,
  что вероятность того,
  что наугад выбранное изделие окажется бракованным, равна p.
  
  На предприятии используется выборочный контроль качества.
  Вероятность того, что процедура контроля выдаст ошибочный результат, равна q.
  Уточним, что ошибка может быть двух видов:
  изделие с браком признано исправным,
  исправное изделие признано бракованным.
  
  Итак, наугад выбрано изделие,
  проведена процедура проверки качества,
  в результате изделие признано бракованным.
  Какова вероятность того,
  что оно является таковым на самом деле?
  Расчет будет приведен ниже.
  Далее варьированием параметров p и q
  мы выясним, каково должно быть их соотношение
  для того, чтобы обеспечить достаточную точность контроля.
  
  Запишем события и вероятности.
  
  Априорные вероятности
  
  Событие А1: Наугад выбрано бракованное изделие. Вероятность Р(А1)=p.
  
  Событие А2: Наугад выбрано исправное изделие. Вероятность Р(А2)=1-p.
  
  Тестирование
  
  Произошло событие В:
  Выбранное наугад изделие прошло процедуру контроля,
  и тест признал изделие браком
  (при этом вероятность того,
  что процедура контроля выдаст ошибочный результат, равна q).
  
  Расчет условной (апостериорной) вероятности
  
  Требуется найти Р(А1|B),
  то есть вероятность того,
  что выбранное наугад изделие реально бракованное,
  при условии, что это изделие признано бракованным процедурой контроля.
  
  Для вычисления Р(А1|B) надо вычислить Р(В|А1) и Р(В|А2).
  
  Р(В|А1) - это вероятность того,
  что изделие признано браком при условии,
  что оно браковано на самом деле.
  Процедура контроля ошибается с вероятностью q,
  то есть дает правильный результат с вероятностью 1-q.
  Значит Р(В|А1)=1-q.
  
  Р(В|А2) - это вероятность того,
  что изделие признано браком при условии,
  что оно на самом деле исправно.
  Процедура контроля ошибается с вероятностью q.
  Значит Р(В|А2)=q.
  
  Теперь мы можем записать формулу для искомой величины:
  
  Р(А1|B)=(1-q)*p/[(1-q)*p+q*(1-p)]
  
  После того, как формула получена в общем виде,
  протестируем ее на численных данных.
  Зададим реальную вероятность брака p=0.001.
  Варьировать будем вероятность ошибки процедуры контроля q.
  Приведем расчет для нескольких значений q,
  при этом величину Р(А1|B) округлим до двух знаков.
  
  Если q=10*p=0.01, то Р(А1|B)=0.09
  
  Если q=p=0.001, то Р(А1|B)=0.50
  
  Если q=0.1*p=0.0001, то Р(А1|B)=0.91
  
  Если q=0.01*p=0.00001, то Р(А1|B)=0.99
  
  Из приведенных расчетов следует,
  что для получения адекватной информации
  о реальном состоянии тестируемого изделия,
  вероятность ошибки процедуры контроля q
  должна быть много меньше исторической вероятности брака p.
  И этот вывод может быть не для всех очевиден до проведения расчетов.
  В данном случае использование формулы Байеса
  поможет найти то соотношение между p и q,
  которое позволяет осуществлять контроль качества
  с любой заданной точностью.
  
  Кстати, та же самая задача
  может быть сформулирована в более драматичном виде.
  Если p - вероятность некого заболевания,
  распространенность которого в популяции стабильна,
  q - вероятность ошибки метода выявления заболевания,
  то все приведенные выше расчеты справедливы и для этой формулировки.
  Поэтому, если вы получите диагноз при исследовании,
  то до того, как начинать всерьез волноваться,
  надо прежде всего выяснить соотношение между p и q.
  
  Мнимые парадоксы
  
  В заключение несколько слов о парадоксах типа
  Задачи о двух конвертах или Игры Монти Холла.
  Об их решении достаточно написано,
  поэтому не будем останавливаться на них подробно.
  Скажем лишь о том,
  что представление об области применимости условной вероятности
  наилучшим образом позволяет понять их
  мнимую парадоксальность.
  Достаточно лишь осознать,
  что к тому моменту игры,
  когда Участник должен сделать свой выбор,
  он не получил никакой полезной информации
  по сравнению с информацией до начала игры.
  То есть к моменту выбора Участник по прежнему
  имеет дело с априорными вероятностями,
  а апостериорные просто отсутствуют.
  
  //// Конец цитирования
  
  В общем все вроде понятно и просто,
  но при этом нельзя никогда забывать,
  что и эти "условные вероятности" имеют в своей основе
  все тот же "Закон больших чисел" и "теоретическое понимание вероятности",
  т.е. отсутствие какой либо ГАРАНТИИ чего бы то ни было.
  
  Но при этом надо отдать должное, что "байесианский путь",
  он как-то "интуитивно" более комфортен для понимания и принятия решений.
  Может быть, в таком направлении и стоит развивать "теорвер",
  чтобы как-то согласовать "интуицию" и "теорию"?
  И чисто формальная смена "причины и следствия" в формуле Байеса,
  возможно, "отзвук" какой-то интуитивно понимаемой "концепции кармы",
  или чего-то похожего, в которой "будущее бросает тень на прошлое".
  
  Интересно как бы в при таком подходе можно было бы,
  связать "Закон больших чисел" и "Закон Больших Грабель"?
  Добавить какие-то еще коэффициенты/множители,
  или рассматривать более расширенный диапазон "вероятностей",
  например, отрицательных или вообще комплЕксных.
  И рассматривать не просто "сложение" вероятностей,
  а их "интерференцию".
  
  Что, слишком радикальная гипотеза?
  Но ведь что-то подобное уже давно используется в квантовой механике,
  просто называется по-другому.
  Математически это осуществимо,
  но идеологически требует "серьезного" пересмотра
  существующей концепции МироЗдания.
  
  
  ========
  
  10.01.2024 14:54
  
  Структуры нейросетей простыми словами.
  В оглавление.
  
  Это материал для тех, кто еще не проникся полной "безнадегой"
  по поводу "пришествия нейрсетей", и хочет начать с чего-то самого простого:
  
  "Кто знает, что значит GPT в названии ChatGPT,
  могут дальше не читать".
  AlexeySushkov (Алексей Сушков)
  https://habr.com/ru/articles/785080/.
  9 янв 2024 в 11:40
  
  //// Начало цитирования
  
  .......
  
  План статьи
  
   Задачи ИИ и архитектуры нейросетей
  
   Виды нейросетей:
  
   Традиционные нейросети FFNN (Feed forward neural networks)
  
   Рекуррентные нейросети RNN (Recurrent neural networks)
  
   Сверточные нейросети CNN (Convolutional neural networks)
  
   Генерация изображений по текстовому описанию (Text-to-Image)
  
   Трансформеры TNN (Transformer Neural Networks)
  
   Иерархия нейросетей
  
   Выводы и ссылки
  
  GPT - Generative Pre-trained Transformer
  
  Generative Pre-trained Transformer:
  
   Generative - понятный термин говорит о том,
   что нейросеть что-то генерирует.
   В случае ChatGPT генерируется текст,
   другие генеративные нейросети могут генерировать картинки, музыку, видео и т.д.
  
   Pre-trained - тоже понятный термин, но, кажется, лишним уточнением,
   т.к. если модель ИИ предварительно не обучена,
   то она бессмысленна для практического применения.
  
   Transformer - это архитектура нейросети,
   которая использует структуру encoder - decoder с механизмом внимания.
   Вот тут и произошла заминка в понимании,
   начинаем разбираться сначала!
  
  Задачи ИИ и архитектуры нейросетей
  
  За последние несколько лет нейросети научились хорошо решать
  несколько классов задач:
  
   Задачи обработки естественного языка Natural Language Processing (NLP)
   такие как:
  
   Понимание и генерация естественного языка
   (Natural-language understanding (NLU) и Natural-language generation (NLG))
  
   Генерация изображений по текстовому описанию
  
   Машинный перевод (Machine translation (MT)), и многие другие.
  
   Распознавание изображений.
  
  В настоящее время удачно сложилось несколько факторов,
  которые и способствовали качественным успехам в работе нейронных сетей
  в этих направлениях:
  
   Современные компании и государства имеют доступ
   к мощным вычислительным ресурсам.
  
   В Интернете накопилось большое количество данных,
   что позволило создать наборы данных для обучения нейросетей (датасеты).
  
   Особенности архитектуры современных сетей:
  
   Открытие новых способов представления и обработки информации.
  
   Возможность ускорить исследования с помощью Transfer Learning.
   Это метод, который позволяет использовать
   предварительно обученные модели нейронных сетей
   для применения к другим задачам.
  
   Возможность использовать для обучения нейросетей
   параллельные вычисления.
  
  Для каждого класса задач обычно применяются свои типы нейросетей:
  
   Для задач NLP - это рекуррентные нейросети (RNN) и трансформеры.
  
   Для генерации визуальной информации - RNN,
   генеративные состязательные сети (GAN), Diffusion и трансформеры.
  
   Для распознавания изображений - сверточные нейросети (CNN).
  
  Видно, что некоторые архитектуры нейросетей универсальны
  и используются для решения нескольких классов задач.
  Рассмотрим подробнее основные современные архитектуры,
  но начнем с классических нейросетей,
  чтобы было легче понять их эволюцию.
  
  Эволюция нейросетей
  
  Нейроны
  
  Традиционные нейросети состояли из персептронов.
  Персептрон - условная модель нейрона мозга человека.
  На схеме классический персептрон,
  у которого n входных параметров X,
  которые нейрон умножает на n весов W,
  суммирует и далее использует функцию активации f(X)
  для получения выходного значения Y:
  
  ......
  
  Традиционные нейросети FFNN (Feed forward neural networks)
  
  В любой нейронной сети есть входной слой нейронов,
  выходной слой и один или несколько скрытых слоев.
  Такие сети называют Multi-layer Perceptron (MLP).
  Они являются полносвязными,
  т.е. все нейроны в слое связаны со всеми нейронами следующего слоя,
  но нейроны в одном слое не связаны друг с другом.
  MLP обычно визуализируются подобными схемами:
  
  ......
  
  При работе нейросети сигнал передается от входов к выходам,
  поэтому такие сети еще называют сетями прямого распространения
  Feed forward neural networks, (FFNN).
  Обучаются FFNN сети методом градиентного спуска
  и обратного распространения ошибки (backpropagation).
  
  ......
  
  Рекуррентные нейросети RNN (Recurrent neural networks)
  
  Recurrent neural networks, RNN)
  - это те же сети прямого распространения,
  но со смещением во времени:
  нейроны получают информацию не только от предыдущего слоя,
  но и от самих себя в результате предыдущего прохода R:
  
  ......
  
  Из этого свойства следует, что такие сети хорошо решают задачи,
  связанные с последовательностями:
  
   Понимание и генерация текстов.
  
   Чат боты и другие диалоговые системы.
  
   Машинный перевод текстов.
  
   Распознавание речи и музыки.
  
   Описание содержимого картинок или видео.
  
  Существует несколько архитектур, развивающих идею рекуррентных нейросетей:
  
  LSTM (Long short-term memory)
  
  Архитектура LSTM используют фильтры (gates) и блоки памяти (memory cells).
  Наличие фильтра забывания на первый взгляд кажется странным,
  но иногда забывать оказывается полезно:
  если нейросеть запоминает книгу,
  то в начале новой главы может быть необходимо
  забыть некоторых героев из предыдущей.
  Эти механизмы реализуются в скрытом состоянии нейрона H:
  
  ......
  
  Управляемые рекуррентные нейроны (Gated Recurrent Units, GRU)
  
  GRU - разновидность LSTM, которая быстрее и проще в эксплуатации.
  Вместо входного, выходного фильтров и фильтра забывания
  здесь используется фильтр обновления (update gate).
  Подробности работы GRU: "Text generation with an RNN"
  
  Недостатки рекуррентных сетей:
  
   Длительное время обучения и выполнения:
   Рекуррентные сети обрабатывают входные embeddings последовательно по шагам,
   что означает, что каждый шаг зависит от предыдущего.
  
   Отсутствие параллелизма.
  
   Рекуррентные сети могут столкнуться с проблемой
   исчезающего или взрывного градиента.
   Это означает, что информация о предыдущих шагах
   может постепенно исчезать или сильно увеличиваться,
   приводя к проблемам в обучении модели.
  
   Неэффективная работа Transfer Learning.
   Это связано с тем, что каждый шаг зависит от предыдущего,
   и изменение архитектуры может повлиять на работу модели.
  
  Трансформеры, в свою очередь, позволяют преодолеть эти недостатки
  и достичь более эффективной обработки последовательностей.
  
  Трансформеры TNN (Transformer Neural Networks)
  
  Задачи, которые хорошо решают трансформеры:
  
   Обработка длинных последовательностей.
  
   Связывание контекста и запоминание долгосрочных зависимостей.
  
   Перевод и генерация текста.
  
  Первое упоминание архитектуры трансформеров относится
  к 2017 "Attention Is All You Need".
  
  Механизм внимания
  
  Механизм внимания является неотъемлемой частью в реализации трансформеров.
  Он обычно демонстрируются на примере задачи машинного перевода.
  Механизм внимания способен выявлять связи между словами
  в разных контекстах и помогает модели перевода
  правильно ассоциировать токены во входной и выходной последовательностях
  
  ......
  
  Механизм внимания не ограничивается только задачами обработки
  естественного языка (NLP),
  его также применяют в других областях и сценариях,
  таких как компьютерное зрение и распознавание речи.
  Визуализация механизма внимания часто представляется в виде схем,
  где главной особенностью является возможность
  подавать данные на вход параллельно и обрабатывать их одновременно:
  
  ......
  
  Трансформеры могут быть следующих типов:
  
   Encoder-only (только кодировщик):
   Эта архитектура трансформера состоит только из кодировщика,
   который преобразует входные последовательности
   во внутреннее представление.
   Такие трансформеры используются, например,
   для классификации текстов или анализа эмоциональной окраски текстов.
  
   Decoder-only (только декодер):
   В этой версии трансформера используется только декодер,
   который генерирует последовательность на основе
   внутреннего представления или контекста.
   Такой тип трансформера часто используется в задачах генерации текста,
   например, в модели GPT.
  
   Encoder + Decoder (кодировщик + декодировщик):
   Это наиболее распространенная архитектура трансформера,
   в которой присутствуют и кодировщик, и декодер.
   Эта архитектура используется в задачах машинного перевода.
  
  При обучении трансформеров есть несколько преимуществ:
  
   Возможность использования различных текстовых данных
   без необходимости предварительной разметки.
  
   Обработка последовательностей как целого:
   TNN способны обрабатывать последовательности данных целиком,
   вместо шаг за шагом, как в рекуррентных нейронных сетях (RNN).
  
   TNN используют механизм внимания,
   который помогает сети фокусироваться
   на наиболее важных частях последовательности
   и устанавливать взаимосвязи между различными элементами данных.
  
   Transfer Learning:
   модели TNN, предварительно обученные на больших наборах данных,
   могут быть использованы для решения задач в других областях.
  
  Т.о. получается, что трансформеры являются на сегодняшний день
  самой эффективной архитектурой для решения практических задач.
  
  Сверточные нейросети CNN (Convolutional neural networks)
  
  Первые архитектуры сверточных нейросетей появились еще
  в 80-х годах прошлого века.
  Сейчас с помощью сверточных сетей решаются следующие актуальные задачи:
  распознавание изображений и видео,
  поиск объектов и сегментация изображений,
  компьютерное зрение
  и алгоритмы в беспилотных автомобилях,
  распознавание объектов на рентгеновских снимках и МРТ,
  идентификация людей и генерация дипфейков.
  
  Алгоритм работы сверточных сетей на примере анализа изображений:
  
   Все сверточные сети состоят из двух частей
   - сверточной части, которая выделяет признаки из изображения
   и классификатор, который по этим признакам распознает изображение.
  
   Изображение проходит через последовательность сверточных слоев.
   На каждом слое применяется набор фильтров
   (также называемых ядрами свертки),
   каждый из которых сканирует изображение с определенным шагом
   (шаг свертки)
   и выделяет признаки изображения,
   такие как границы или текстуры.
   Как результат, для каждого фильтра получается карта признаков,
   которая передается на следующий слой для уменьшения размерности.
  
   Для уменьшения размерности карты признаков
   применяется слой субдискретизации (subsampling) или пулинга (pooling).
  
   Далее обычно следует еще несколько сверточных слоев
   и слоев уменьшения размерности,
   которые извлекают все более абстрактные признаки из изображения.
  
   В конце полученные карты признаков передаются в классификатор,
   который является обычным многослойным персептроном.
  
   В CNN выделение признаков тоже является автоматическим процессом,
   что делает всю сеть нейронной.
  
  Далее приведена визуализация алгоритма работы сверточной сети
  для распознавания лиц.
  На ней интересно посмотреть,
  как выглядят признаки, которые выделяет нейросеть на каждом шаге свертки
  
  ......
  
  В CNN сетях эффективно применяется Transfer Learning.
  При использовании Transfer Learning,
  предварительно обученная модель фиксируется (замораживается),
  чтобы веса и параметры уже обученных слоев не изменялись.
  Затем, добавляются новые слои,
  которые будут адаптироваться к новому набору данных.
  Эти новые слои обычно обучаются на небольшом количестве данных,
  что экономит время и вычислительные ресурсы.
  
  .......
  
  Генеративные состязательные сети GANs
  (Generative Adversarial Networks), Автоэнкодеры (Autoencoder),
  гибридные и мультимодальные нейросети
  
  Для полноты картины упомяну еще несколько архитектур нейросетей
  
  GAN (Generative Adversarial Networks) относится к семейству нейросетей,
  которые состоят из двух сетей, работающих вместе,
  где одна из сетей генерирует данные ("генератор"),
  а вторая - анализирует ("дискриминатор").
  Используются для задач генерации изображений или музыки.
  
  Автоэнкодер (Autoencoder) - специальный тип нейросетей,
  которые используются для задач автоматического обучения задачам кодирования
  (encoding) входных данных и последующим их декодированием
  (decoding) в выходные данные.
  Характерная черта автоэнкодеров в том,
  что размерность входного слоя совпадает с размерностью выходного.
  Применяются для задач в которых надо преобразовать входной сигнал
  в такой же выходной, но с новыми свойствами,
  например, избавиться от шума в изображении или музыке.
  
  Гибридные сети
  
  Нейросети, состоящие из нескольких сетей, например, трансформер + CNN,
  используются для сложных задач познания или моделирования реальности.
  
  Мультимодальные сети
  
  Мультимодальные сети - это нейронные сети,
  которые объединяют информацию из разных типов источников,
  таких как видео, текст, звук и другие,
  для решения сложных задач анализа данных,
  например, распознавание объектов в видео с аудиодорожкой
  или анализ эмоций в мультимодальных данных.
  
  Заключение
  
  Трансформеры являются на сегодняшний день самой эффективной архитектурой
  для решения практических задач.
  С помощью них можно строить large language model (LLM) и мультимодальные сети.
  Но чудес не бывает и нейросети требуют ясного определения задачи,
  которую нужно решить.
  Здесь важна роль человека, чтобы понять проблему,
  сформулировать цель и установить ожидания от сети,
  но это уже совсем другая история.
  
  Оставлю еще несколько полезных материалов
  
  ......
  
   Зоопарк архитектур нейронных сетей. Часть 1
  https://habr.com/ru/companies/wunderfund/articles/313696/
  
   Зоопарк архитектур нейронных сетей. Часть 2
  https://habr.com/ru/companies/wunderfund/articles/313906/
  
   Объяснение CNN на примере классической задачи
   распознавания рукописного текста "Convolutional neural networks"
  https://www.jeremyjordan.me/convolutional-neural-networks/
  
  ......
  
  //// Конец цитирования.
  
  Это конечно очень краткое и неполное описание возможных структур нейросетей
  Но для первоначального ознакомления, на мой взгляд, вполне неплохо.
  А тем кому стало интересно, то могут пройтись по ссылкам в этом модуле,
  их даже больше чем хотелось бы, и все равно этого "маловато будет".
  "Нельзя объять необъятное".
  
  Но с чего-то начинать надо, и, даже в условиях очень бурного потока информации
  на тему нейросетей какие-то основы уже, наверно, не сильно изменятся,
  хотя новых структур будет еще предостаточно.
  
  
  ========
  
  10.01.2024 15:36
  
  Функции активации нейронов простыми словами.
  В оглавление.
  
  Есть такой термин в нейронауках как "функция активации".
  По простому это функция которую выполняет отдельный нейрон
  над поступающими емк на вход данными.
  Чуть более подробно можно посмотреть в этом материале:
  
  "Как обьяснить функции активации в нейронных сетях
  в вашему коту: простое руководство".
  Squirrelfm (Igor Novikov)
  
  https://habr.com/ru/companies/raft/articles/784964/.
  9 янв 2024 9:07
  
  //// Начало цитирования.
  
  ......
  
  Нейрон принимает множество входных сигналов
  и магическим образом обрабатывает их,
  чтобы получить (в идеале) полезный результат на выходе.
  Поскольку нейроны связаны друг с другом,
  этот результат может быть передан связанному нейрону
  в качестве входных данных.
  Таким образом формируется сеть.
  
  Нейрон внутри просто вычисляет взвешенную сумму своих входных данных.
  Вот и вся магия - берем все сигналы (которые выражены числами)
  и суммируем их
  - это результат.
  Ключевое слово здесь - "взвешенная" сумма.
  Он умножает все входные данные на определенный параметр,
  называемый весом.
  Как мы обсудили в этой статье,
  веса вычисляются в процессе обучения,
  и это главная цель обучения.
  Таким образом веса, в целом,
  это магические числа,
  полученные эмпирическим путем
  (он же метод тыка).
  
  Искусственный нейрон имеет два основных свойства:
  weight (вес) и bias (??предвзятость, судья и здесь подкуплен.
  На самом деле это смещение - подробнее в конце).
  И все, что он делает,
  - это линейное преобразование всех входных данных,
  подобное следующему:
  
  y = a * x + b
  # думаю вы узнали уравнение прямой, отсюда название "линейная"
  
  ......
  
  Что нейрон делает кажется простым.
  Потому что это и правда просто.
  Но есть один подвох: это слишком просто!
  Вы можете объединить множество таких нейронов в сеть,
  но это не поможет - многие сложные процессы в реальной жизни
  не являются линейными и смоделировать их такой сетью не выйдет! ??
  
  Чтобы обойти это ограничение, выходные данные не отправляются как есть,
  они сначала преобразуются с использованием функции активации.
  Активационная функция активирует киборгов,
  которые захватят: ой не в ту книгу поглядел.
  Функция активации - это своего рода фильтр, который:
  
   фильтрует неважную информацию и оставляет только важную
   в определенном формате;
  
   вводит необходимую нелинейность,
   позволяя сети учиться и моделировать сложные закономерности.
  
  Так что если подумать об этом - активационные функции
  усложняют работу нейронов,
  и это их основная цель ??...
  Но это логично, они следуют принципу Альберта Эйнштейна:
  сделайте настолько просто насколько возможно, но не проще.
  
  Итак, полная функция преобразования нейрона выглядит так:
  
  выход = активационная_функция(сумма(вес * вход + смещение))
  
  .......
  
  Типы слоев нейронов и их связь с выбором функции активации
  
  Нейроны обычно связывают в сеть, наподобие такой:
  
  ......
  
  Основные три типа слоев это:
  
   Входной - первый слой сети, который принимает сырые данные
  
   Выходной (frontend) - последний слой,
   который преобразует все что нейронная сеть надумала
   в более или менее конкретный ответ.
   Например, если в выходном слое используется softmax
   - он выдаст вероятности что заданная картинка это собака, кошка или попугай.
  
   Скрытый (backend) - бэкенд он и есть бэкенд.
   Делает всю реальную работу под капотом.
  
  Различные слои используют разные функции активации,
  потому что у них разные цели
  (почти так же, как разные фреймворки используются для фронтенда и бэкенда).
  Какую функцию активации использовать, зависит от одного
  - чего мы хотим добиться.
  Эта функция может быть любой, на самом деле,
  но некоторые функции работают лучше.
  Вот самые распространенные из них:
  
  ReLU
  
  Rectifier linear unit (aka нелинейная функция)
  
  Много умных слов, готовьтесь быть шокированными настоящим жестким матаном:
  
  if input > 0:
   return input
  else:
   return 0
  
  И это всё??? ??
  Страшное название, очень простая вещь, как всегда в ML ??.
  Берем входное число и обрезаем его до ноля, если оно отрицательное.
  Интересно, кто заведует отделом наименований в машинном обучении.
  Я думаю - те же люди что придумали "вкусно и точка"...
  
  ReLU предпочтительна по следующим причинам:
  
   Простота и эффективность:
   ReLU совершает простую математическую операцию max(0, x).
   Эта простота приводит к быстрым вычислениям.
  
   Решение проблемы исчезающего градиента (Vanishing Gradient):
   В глубоких сетях градиенты могут стать очень маленькими,
   что мешает обучению сети.
   Для примера посмотрите на другую распространенную функцию сигмоид:
  
  Видите, что она делает?
  Чем больше значение x, тем ближе y к 1.
  Это означает, что при очень больших значениях x,
  когда x изменяется - y практически не меняется.
  Так что почти не имеет значения,
  каково значение x после определенного уровня,
  y будет примерно равно 1,
  и таким образом система не может реагировать на входные данные,
  то есть учиться.
  
  Теперь посмотрим на ReLU:
  
  Поскольку у ReLU нет ограничения для всех положительных входных параметров,
  это помогает уменьшить эту проблему.
  Однако у ReLU есть и свои недостатки.
  Самый заметный из них - проблема <умирающего ReLU>,
  когда многие нейроны могут стать неактивными и выводить только ноль,
  потому что на большом диапазоне значений выход функции равен нулю.
  Это можно уменьшить с помощью вариаций ReLU,
  таких как (Leaky ReLU или параметрический ReLU (PReLU).
  
  Сигмоида
  
  Раз уж мы начали об этом говорить,
  давайте рассмотрим еще одно пугающе звучащее инопланетное чудовище.
  Термин <сигмоид> происходит от греческой буквы <сигма> (?, ?),
  из-за характерной "S"-образной кривой функции.
  Само слово <сигмоид> по сути означает "S-образный"...
  Могли бы просто назвать функцию S-образной, знаете...
  
  Вот график:
  
  И формула:
  
  f(x) = 1/(1+e^-x)
  
  Сигмоида хороша для бинарной (да/нет) классификации,
  потому что она принимает любое действительное число
  в качестве входного и преобразует его в число между 0 и 1.
  По этой причине она часто используется в выходных слоях
  (подробнее об этом смотрите в конце).
  
  Softmax
  
  Мягкомаксимум.
  Как вы уже наверное догадались по предыдущим названиям,
  эта функция не мягкая и не максимум??.
  Ну что поделаешь.
  
  Функция softmax принимает на вход вектор из K действительных чисел
  и нормализует его в распределение вероятностей,
  состоящее из K вероятностей,
  пропорциональных экспонентам входных чисел.
  Да, вы все правильно услышали ??.
  
  Если серьезно, что она делает
  - принимает список произвольных чисел и преобразует их
  в список вероятностей пропорциональных этим числам.
  То есть:
  
  Допустим, у нас есть список [1, 2, 3]:
  
  softmax([1, 2, 3]) = [0.09003, 0.24473, 0.66524]
  
  Вот и все.
  Сумма возвращаемых вероятностей будет равна 1 (или 100%).
  Чем больше число во входном списке (по сравнению с другими)
  - тем выше вероятность,
  в которую оно будет преобразовано на выходе.
  
  Здесь стоит отметить, что функция принимает вектор (список) входных данных
  - а не одно число.
  Это отличается от всех предыдущих,
  и причина в том, что она работает сразу с несколькими нейронами
  (обычно со всем слоем).
  Таким образом, она сворачивает результаты слоя
  в выходное распределение вероятностей.
  По этой причине она часто используется в выходных слоях,
  для получения финального результата.
  
  Кроме того, softmax используется в механизме внимания
  в архитектуре трансформера,
  потому что, если подумать,
  внимание - это своего рода ранжирование множества вещей
  в список наиболее важных.
  
  Главное, что здесь нужно понять:
  
   Вероятность того, что входные данные относятся к первой категории
   (соответствующей 1), составляет примерно 0.09003.
  
   Вероятность того, что входные данные относятся ко второй категории
   (соответствующей 2), составляет примерно 0.24473.
  
   Вероятность того, что входные данные относятся к третьей категории
   (соответствующей 3), составляет примерно 0.66524.
  
  Это делает функцию softmax особенно полезной
  для задач классификации в нейронных сетях,
  когда выходные данные должны представлять вероятность по нескольким классам.
  Например, когда мы пытаемся понять,
  является ли изображение собакой (1), кошкой (2) или рыбой (3).
  
  Фактически, если у вас только две категории,
  она сводится к той же формуле, что и сигмоид,
  так что она как бы сигмоид только для >2 категорий.
  
  Вот формула, если вы действительно хотите ее увидеть:
  
  .......
  
  Tanh
  
  Еще один гиперболоид инженера Гарина.
  Это название хотя бы логичное.
  Гиперболический тангенс часто сокращается как
  (произносится как <танч>).
  
  Эта функция принимает любое действительное число на входе
  и выдает значения в диапазоне от -1 до 1:
  
  tanh(x) = 2 * sigmoid(2x)-1
  
  или
  
  tanh(x) = 2/(1+e^(-2x)) -1
  
  Выходные значения tanh находятся в диапазоне от -1 до 1,
  что делает её центрированной относительно нуля.
  Это выгодно, поскольку это может помочь процессу обучения,
  так как данные, проходящие через сеть,
  в среднем будут поддерживать среднее значение близкое к 0,
  что в свою очередь помогает оптимизации методом градиентного спуска.
  Выходные значения сигмоида, с другой стороны,
  не центрированы относительно нуля (диапазон от 0 до 1),
  что может привести к так называемой проблеме <исчезающих градиентов>
  (см. раздел ReLU для объяснения).
  Из-за этих свойств (быстрый градиентный спуск,
  отсутствие исчезающих градиентов)
  tanh часто используется в скрытых слоях.
  
  Binary Step Function (ступенчатая)
  
  Бинарная ступенчатая функция
  - один из самых простых типов функций активации,
  используемых в нейронных сетях.
  Это пороговая функция активации,
  которая активируется или нет в зависимости от того,
  находится ли входное значение x выше или ниже определенного порога,
  что аналогично переключателю вкл/выкл.
  Обычно она используется в перцептронах
  и задачах бинарной классификации,
  где ожидается, что выход будет либо 0, либо 1,
  например, при решении,
  является ли электронное письмо спамом или не спамом.
  
  Исторически это была первая использованная функция активации
  в контексте нейронных сетей.
  Она использовалась в самом первом типе искусственного нейрона,
  названного перцептроном, разработанного Фрэнком Розенблаттом
  в конце 1950-х годов.
  
  Бинарная ступенчатая функция может быть математически определена как:
  
  .....
  
  где ? это пороговое значение.
  
  Функция не часто используется в современных нейронных сетях,
  потому что она не дифференцируема на пороге ?,
  что делает её непригодной для использования
  с обратным распространением ошибки
  (методом, используемым для обучения нейронных сетей).
  Кроме того, она не предоставляет вероятностный результат,
  а жесткий ответ да-нет,
  который может быть слишком жестким для реальных задач.
  
  Существует множество других функций, это лишь наиболее часто используемые.
  
  Bias: Поговорим про предвзятость
  
  Ещё одна жертва департамента наименований ??.
  Очень хочется поглядеть на этих людей и как они называют своих детей:
  
  На самом деле это просто смещение или сдвиг.
  Название bias пришло из статистики
  и там оно имеет определенный смысл. Смещение добавляется к сумме входных значений нейрона
  (собственно чтобы сместить конечный результат),
  перед применением функции активации.
  
  Это аналог смещения в формуле прямой,
  позволяет сместить график функции вверх или вниз.
  Без смещения вывод нейрона полностью управляется суммой входных параметров,
  что может ограничить его гибкость.
  Смещение добавляет ещё одну возможность настройки нейрона
  которая помогает сети лучше подстраиваться под обучающие данные.
  
  Вот пример где смещение одновременно является и предвзятостью.
  Допустим мы строим рекомендательную систему для фильмов,
  где мы используем оценки одних пользователей
  для того чтобы рекомендовать фильмы другим,
  похожим пользователям.
  Всегда найдутся особенно привередливые критики,
  которые никогда не ставят фильмам высоких оценок.
  Хорошо бы учесть это в нашей системе,
  но если задуматься - это уже не характеристика фильма,
  а конкретного пользователя,
  т.к. он ставит низкие оценки всем фильмам без разбора.
  Веса зависят от характеристик фильма,
  а тут что делать?
  Вот тут и пригождается bias
  чтобы учесть поправку на особенно привередливых пользователей
  при обучении модели.
  
  ......
  
  //// Конец цитирования.
  
  В общем, ничего сложного в "функциях активации" вроде и нет.
  Основная сложность это знание где какую функцию стоит
  или, наоборот, не стоит применять.
  А вот с этим полная "засада"
  - есть какие-то рекомендации, есть эвристики,
  а вот теории, кроме простейших случаев, нет,
  все познается на горьком опыте.
  
  Но может быть что-то когда-то изменится,
  и я с удовольствием включу такой материал в этот модуль.
  
  
  ========
  
  14.01.2024 12:25
  
  Разработка интеллектуальной ML-системы простыми словами.
  В оглавление.
  
  Есть представление, культивируемое настоящими "дата сатанистами",
  что настоящая интеллектуальная система на основе "машинного обучения" (ML)
  может быть построена только на "продвинутой математике".
  "Но не все так однозначно".
  
  Разработка ML-системы на самом деле не очень сильно отличается по идеологии
  от разработки любой технической системы,
  и все отличие только в конкретных "технологических деталях" реализации
  специфических вопросов, относящихся к "машинному обучению".
  А где же тут место "продвинутой математике"?
  
  Вот очень интересное мнение по этому вопросу:
  
  "Уродливая математика в машинном обучении
  или чему нам стоит поучиться у деривативов?"
  Автор: antipov_dmitry (Дмитрий Антипов)
  https://habr.com/ru/articles/786220/.
  14 янв 2024 в 10:25
  
  Текст просто замечательный, очень рекомендую для прочтения в оригинале,
  а здесь просто хочется сохранить этот текст "на всякий пожарный".
  
  //// Начало цитирования.
  
  Когда слушаешь доклады на больших ML-конференциях,
  то часть докладов вызывает восторг,
  но другая часть на послевкусии вызывает странное чувство.
  Да, доклад может быть очень крутым,
  математика блестящей,
  сложность крышесносной,
  но что-то как будто бы не так.
  
  Рис. На 20ом промпте вышло то, что надо!
  
  Эта статья - развлекательно-философская,
  все совпадения с реальностью - случайны,
  персонажи вымышлены,
  с точкой зрения - можно не соглашаться,
  но поразмышлять - стоит.
  
  Да при чем здесь вообще деривативы?
  А просто у деривативов, дженги и машинного обучения
  - много общего,
  давайте разбираться.
  
  Кратко о деривативах в качестве вступления
  
  Термин <деривативы> относится к финансовому миру
  и обознает любой производный инструмент на основе базового актива,
  а если совсем упростить на пальцах,
  это договоренность
  через арбитра что-то сделать
  в отношении чего-то
  на каких-то условиях.
  
  Например, у нас есть бананы.
  Можно просто купить бананы здесь и сейчас по какой-то цене
  - это будет прямая сделка.
  Но как только мы начинаем договариваться о сложных условиях покупки бананов,
  например, желая зафиксировать цену на следующий год при продаже частями
  или зарезервировать за собой право покупки при снижении цены,
  это уже будет сложной сделкой.
  
  Базовый актив здесь - бананы,
  а набор условий поверх - и есть дериватив.
  
  Деривативы могут быть очень сложными.
  Например, мы хотим купить бананы за цену меньше текущей на 10%,
  но только в июле и только при условии,
  что картофель не подорожает,
  а другие покупатели одновременно не купят помидоры
  по цене меньше 20% текущих цен.
  Деривативы могут быть ОЧЕНЬ сложными,
  и в них заложен запредельный уровень математики.
  
  Рис. Монстр-дериватив на основе бананов может выглядеть так!
  
  Математика внутри настолько сложна,
  что на заре появления деривативов самые крупные банки планеты
  соревновались за гениальные умы,
  щедро перебивая любые выставленные цифры зарплат.
  Индустрию пытались <залить математикой>.
  
  Математика же снаружи была настолько изящна,
  что позволяет маркетингу банков и брокеров
  упаковывать безумно сложные продукты в очень простые лозунги
  и продавать их множеству корпоративных клиентов на триллионы денег.
  
  Вера в гениальность очаровывает.
  Вера в математику - подкупает.
  Но деривативы - смертельно опасны,
  потому что никто,
  кроме авторов и редких исключений,
  до конца не понимает,
  что именно в них заложено.
  
  Рис. Еще один вариант монстр-дериватива на бананах
  
  Именно по этой причине деривативы безжалостно убивают
  множество желающих с ними заигрывать,
  в том числе профильных спецов,
  таких как старейший банк Англии,
  который работал 230 лет,
  а потом на деривативах вслыл пузом кверху.
  
  Ни слова больше, нужна картинка дженги.
  
  Рис. Для устойчивости дженги не обязательно должны быть идеальны все блоки
  
  О математике (как обобщении всего, с ней связанного) в ML
  
  Если вы дотянули до этой части - спасибо!
  
  Машинное обучение похоже на деривативы тем,
  что в индустрии так же есть очарованность <математикой>,
  многие задачи пытаются просто <залить математикой>,
  хотя сам процесс создания технологий
  не коррелирует напрямую с количеством и мощностью математиков в команде.
  Как и в деривативах,
  процесс скорее идентичен построению башни в игре <дженга>
  - одни блоки кладутся на другие
  и баланс новых блоков зависит от устойчивости всей предыдущей конструкции.
  
  Причем, аналогия с дженгой гораздо более удачна,
  нежели с обычной пирамидой или башней,
  потому что дженга устойчива к неидеальности бытия,
  то есть все же позволяет совершить некоторое количество ошибок в процессах,
  в целом сохраняя устойчивость всей системы.
  
  Но чем больше промахов было совершено ближе к низу пирамиды,
  тем меньше шансов на дальнейшую устойчивость
  и построение башни ввысь.
  В технологиях - точно так же,
  и <нижние блоки> - они не про математику.
  
  Большинство задач, которые мы пытаемся решить машинным обучением,
  (если оочень огрубить)
  проходят через несколько одинаковых этапов:
  
  1. Постановка задачи
  
  2. Выбор магистрального решения
  
  3. Сбор датасета
  
  4. Разметка данных
  
  5. Построение модели
  
  Да, этапы очень условны,
  так как задачи бывают у всех разные и много нюансов,
  часто этапы вообще едва различимы,
  часто с одного этапа можно возвращаться на другой
  или безудержно скакать между ними много раз,
  но я все же попытаюсь описать максимально средний процесс.
  
  Еще одним плюсом сравнения именно с дженгой является то,
  что в ней нет явных доминирующих блоков,
  в том смысле, что в ней нельзя особенно усилить какой-то отдельный блок,
  они равноценны по ширине,
  но каждый все же следующий зависит от предыдущего
  и всей конструкции в целом.
  
  Рис. Хорошая технология - как дженга,
  где каждый этап может быть неидеален,
  но нужен для следующего
  
  Сначала я расписал все этапы последовательно,
  но гораздо прикольнее их будет перевернуть.
  
  5 - Построение модели
  
  Рис. Картинка как иллюстрация к процессу построения модельки
  
  Хардкор!
  Часто - сильная математика, множество экспериментов,
  самая мякотка и вишенка на торте технологий.
  То, о чем часто рассказывают на конфах.
  Трансформеры, GANы, тензоры, перцептроны,
  все очень сложно, круто,
  математично.
  
  Это самая интересная часть.
  Строить модель - всегда интересно,
  ну потому что это сложно и азартно.
  Здесь есть дофаминовый азарт
  - вытянуть максимум из того, что у нас есть.
  Просто дайте нам датасет
  - и мы все сделаем.
  
  Без шуток - строить модели действительно сложно, интересно, азартно и круто.
  
  4 - Разметка данных
  
  Рис. Гномы-разметчики на конвейерной ленте задач
  
  Разметка - это присвоение неких признаков вашим данным.
  Например, выделение на картинке объекта или транскрибация аудио в текст.
  
  Разметка,
  по моим субъективным ощущениям (я с ней связан напрямую)
  - самый нелюбимый всеми процесс.
  Он сильно менее интеллектуальный и от того сильно менее интересный.
  К сожалению, у некоторых команд есть представление,
  что разметка это нечто разовое и легкое,
  <все же понятно> и что можно просто описать в несколько предложений
  задачу ассесорам и AI-тренерам
  и сразу получить результат на блюдечке.
  
  В сильных командах понимание того, что разметка важна,
  уже обычно набито опытом.
  Весь процесс разметки - максимально итеративный.
  Сделали - проанализировали - внесли правки - размечаем дальше
  и так далее и по кругу много-много раз.
  
  В процессе промежуточного анализа будут всплывать
  граничные, субъективные и просто сложные случаи
  и для хорошего результата это нужно анализировать
  и вовремя корректировать задачу разметчикам.
  Хорошая разметка напрямую зависит от качества собранного датасета,
  а также от понятной и однозначной инструкции разметчикам.
  
  Если бы все было легко и всем все было бы сразу понятно,
  то и кассиры бы повально не спрашивали бы паспорт
  у уже давно совершеннолетних людей ?
  
  3 - Сбор датасета
  
  Рис. Робот собирает датасет с крестьян
  
  Здесь возможны варианты.
  Возможно, датасет у вас уже есть (если данные от бизнеса),
  а возможно его придется формировать с нуля,
  если задача специфичная.
  От датасета требуется, чтобы он был достаточного размера,
  вариативен (часто так, но не всегда)
  и максимально соответствовал поставленной задаче.
  <Чистку> датасета можно отнести как к процессу сбора,
  так и к разметке,
  зависит от задачи.
  
  Датасет должен быть максимально релевантен поставленной задаче.
  Например, если мы собираемся в нашей технологии
  убирать шумы из реальной жизни,
  то набор идеальных студийных записей нам не очень подходит.
  
  2 - Выбор магистрального решения
  
  Рмс. Как и в ремонте - выбор правильного инструмента очень важен
  
  На этом шаге обычно происходит анализ того,
  каким способами можно решить поставленную задачу.
  Здесь очень часто можно свернуть не туда.
  Потому что кто-то, возможно, уже решил наш класс задач,
  а мы про это или не знаем
  или сознательно хотим свой велосипед.
  
  Свой велосипед это хорошо,
  если он оправдан,
  и мы точно-точно знаем,
  почему нам нужен именно он.
  
  Мой любимый пример случился у коллеги на собеседовании
  в большую всем известную компанию. Head of CV (или как-то так)
  одной из команд во вступлении к вопросу рассказал,
  что они в своем маркете на складе распознают штрих-код
  какой-то навороченной нейронкой,
  но на встречный вопрос зачем для распознавания
  статичного штрих-кода вообще нужна нейронка
  - ответить не смог.
  
  Эта задача настолько давно решена классической математикой,
  что некоторые ML-инженеры банально родились позже,
  чем решение распознавания штрих-кода увидело свет.
  Безусловно, есть ситуации, когда сканировать стоит нейронкой,
  но такие ситуации надо знать,
  как и все причины такого решения.
  Потому что прицепить что-то сложное туда,
  где можно обойтись простым
  - это некрасиво.
  Улучшать что-то сложное, не понимая мотивов и исходной проблемы
  - некрасиво.
  
  Конечно, я немного утрирую,
  но этап выбора решения очень важен
  и обязательно нужно делать минимальный анализ для выбора направления,
  в котором мы собираемся двигаться.
  Потому что здесь очень легко направить все усилия не туда
  и сжечь кучу ресурсов.
  И да, это не очень актуально для r&d,
  потому что они как раз-таки могут подвергать сомнениям проверенные решения,
  работа такая.
  
  1 - Постановка задачи
  
  Рис. Точность поставленной задачи
  
  Постановка задачи - фундамент во всех смыслах.
  Осмыслению задачи часто уделяют не так много времени и глубины,
  как оно того заслуживает.
  Под постановкой задачи я подразумеваю детализацию того,
  что мы хотим сделать.
  Бывает так, что мы точно
  (вот прям точно-точно) знаем,
  что мы хотим решить,
  а бывает, что задача поставлена максимально абстрактно.
  
  Чем глубже и лучше мы понимаем, что именно мы хотим сделать
  и в каких условиях,
  тем больше шансов на конечный успех.
  К сожалению, на этом этапе, помимо просто здравого смысла,
  очень важен опыт решения похожих задач
  или некая технологическая <насмотренность>.
  
  Если вы уже сделали пять распознавалок лица для разных случаев,
  то для новой такой задачи будет очень легко задать заказчику
  большинство важных вопросов,
  доуточнив что именно, как и где должно работать.
  Но если у вас такого опыта нет,
  то придется мыслить максимально широко.
  Самое важное, что стоит попытаться понять
  - для чего и какой ценой мы решаем задачу,
  для кого и какая цена ошибки.
  
  Приведу пример:
  пришел заказчик, который хочет создать систему
  автоматического видео-контроля магазина.
  Список пожеланий был обширный:
  контроль как цен, так и сотрудников, правильности выкладки,
  подсчет посетителей и много чего еще.
  
  Заказчику позволительно не знать,
  но это совершенно разные классы задач,
  которые решаются совершенно по разному вплоть до того,
  что камеры нужно будет вешать по разному,
  не говоря уж про алгоритмы.
  Конечно, в рамках одного магазина такое вполне реализуемо сразу,
  но для тиражного решения нужно очень хорошо подумать
  стоит ли оно того
  или в конце будет много разочарований.
  
  Выводы о математике, дженге и деривативах
  
  Важна ли математика в ML?
  Без вариантов, очень важна.
  Но математика - это как финальный босс,
  до него еще нужно дойти,
  не потратив по дороге все доступное количество жизней
  (то есть, доверие и весь бюджет).
  
  Математика - красива и великолепна,
  но направленная не туда
  - теряет свою красоту.
  На одной математике и алгоритмах технологии не взлетают.
  Конечно, это все игры в вероятности
  - всегда есть шанс, что и голая математика вытянет бездарную подготовку,
  но такой шанс
  - не очень велик.
  
  Хорошие технологии
  - это в большинстве своем хорошо проделанная работа
  на всех этапах.
  Необязательно педантично идеальная,
  но достаточно хорошая,
  чтобы сохранить равновесие как башня в дженге.
  И главное - понятная на каждом уровне
  и в каждой своей предпосылке,
  потому что зашкаливающая сложность
  без ее осмысленного понимания на всех этапах
  - убивает, как и деривативы.
  
  Иногда на каждом из этапов нужно останавливаться
  и задавать себе вопрос
  - а все ли правильно мы сделали до этого?
  Ведь усложнить - можно всегда,
  а в конце пути может быть мучительно больно
  от несбыточных ожиданий и потраченных ресурсов.
  
  Желаю вам всем глубокого целеполагания,
  правильных процессов,
  красивой математики
  и отличных технологий.
  
  Спасибо!
  
  //// Из такого текста нет возможности и желания убрать хоть полслова.
  
  //// Конец цитирования.
  
  Так что "не так страшен черт, как его малюют",
  но при этом "дьявол кроется в деталях".
  
  
  ========
  
  20.01.2024 18:37
  
  Еще раз об эмбеддингах еще более простыми словами.
  В оглавление.
  
  Как ни странно, но самое трудное в эмбеддингах,
  это понимание того что любые данные и особенно текст,
  для применения в ИИ-системах нужно как превратить в последовательности чисел,
  и при этом как "свернуть" это числовое представление в более компактную форму,
  читай, в пространство меньшей размерности:
  
  "Эмбеддинги для начинающих".
  Автор: badcasedaily1 (artem)
  https://habr.com/ru/companies/otus/articles/787116/.
  18 янв 2024 в 13:18
  
  //// Начало цитирования.
  
  В широком смысле, эмбеддинг - это процесс преобразования
  каких-либо данных (чаще всего текста, но могут быть и изображения, звуки и т.д.)
  в набор чисел,
  векторы, которые машина может не только хранить,
  но и с которыми она может работать.
  Звучит очень интересно.
  Казалось бы, наша речь - это так просто,
  все связано и понятно.
  Но как это объяснить машине?
  
  В этой статье мы рассмотрим, что такое эмбеддинги и какие они бывают.
  
  Проще говоря эмбеддинг - это способ преобразования чего-то абстрактного,
  например слов или изображений в набор чисел и векторов.
  Эти числа не случайны;
  они стараются отражают суть или семантику нашего исходного объекта.
  
  В NLP, например, эмбеддинги слов используются для того,
  чтобы компьютер мог понять,
  что слова <кошка> и <котенок> связаны между собой ближе,
  чем, скажем, <кошка> и <окошко>.
  Это достигается путем присвоения словам векторов,
  которые отражают их значение и контекстное использование в языке.
  
  Эмбеддинги не ограничиваются только словами.
  В компьютерном зрении, например, можно использовать их
  для преобразования изображений в вектора,
  чтобы машина могла понять и различать изображения.
  
  Немного математической базы
  
  Векторные пространства - это математические структуры,
  состоящие из векторов.
  Векторы можно понимать как точки в некотором пространстве,
  которые обладают направлением и величиной.
  В эмбеддингах, каждый вектор представляет собой
  уникальное представление объекта,
  преобразованное в числовую форму.
  
  Размерность вектора определяет,
  сколько координат используется для описания каждого вектора в пространстве.
  //// При этом неявно предполагается независимость/перпендикулярность
  //// этих размерностей, что вообще-то, скорее всего,
  //// очень спорное утверждение.
  В эмбеддингах высокая размерность может означать
  более детализированное представление данных.
  //// Либо связанность между собой этих представлений.
  //// "Но это не точно".
  Векторное пространство для текстовых эмбеддингов
  может иметь тысячи измерений.
  //// Вопрос "из зала": а сколько измерений нужно для конкретной задачи?
  
  Расстояние между векторами в эмбеддингах
  //// Вот "ключевая аксиома" - различия/сходство в эмбеддингах
  //// измеряется "расстоянием". И на этом основывается вывод об их похожести.
  измеряется с помощью метрик,
  таких как Евклидово расстояние или косинусное сходство.
  Метрики позволяют оценить,
  насколько близко или далеко друг от друга
  находятся различные объекты в векторном пространстве,
  что является основой для многих алгоритмов машинного обучения,
  таких как классификация
  
  Самый интуитивно понятный способ измерения расстояния
  - это Евклидово расстояние.
  В эмбеддингах расстояние вычисляется как квадратный корень
  из суммы квадратов разностей соответствующих компонентов двух векторов.
  Для двух векторов a и b, евклидово расстояние d определяется как:
  
  d(\mathbf{a}, \mathbf{b}) = \sqrt{\sum_{i}(a_i - b_i)^2}
  
  Евклидово расстояние подходит для измерения абсолютных различий,
  но может быть менее эффективным в высокоразмерных пространствах
  из-за проклятия размерности.
  
  Манхэттенское расстояние иногда более подходящее
  для определенных типов данных,
  это расстояние измеряется как сумма абсолютных разностей их компонентов.
  Оно определяется как:
  
  d(\mathbf{a}, \mathbf{b}) = \sum_{i}|a_i - b_i|
  
  Сходство между векторами измеряет степень "похожести" между двумя векторами.
  В эмбеддингах это используется для определения степени
  семантической или контекстной близости между элементами.
  
  Одна из наиболее популярных метрик в текстовых эмбеддингах
  это косинусное сходство.
  Косинусное сходство измеряет косинус угла между двумя векторами.
  Если угол между векторами мал,
  косинус приближается к 1,
  что указывает на высокое сходство.
  Математически оно выражается как:
  
  \text{similarity}(\mathbf{a}, \mathbf{b}) = \frac{\mathbf{a} \cdot \mathbf{b}}{|\mathbf{a}| |\mathbf{b}|}
  
  где . обозначает скалярное произведение векторов, а |a| и |b| - их нормы.
  
  Многомерные эмбеддинги могут быть сокращены
  до более низких размерностей
  с помощью техник PCA или t-SNE.
  
  В общем виде, эмбеддинги делятся на:
  
  .....
  
  Текстовые эмбеддинги
  Word Embeddings
  
  Эти эмбеддинги преобразуют слова в векторы,
  так что слова с похожим значением имеют похожие векторные представления.
  Они впервые позволили машинам понять семантику человеческих слов.
  
  Текстовые эмбеддинги
  Sentence Embeddings
  
  Здесь уже идет дело о целых предложениях.
  Подобные модели создают векторные представления
  для целых предложений или даже абзацев,
  улавливая гораздо более тонкие нюансы языка.
  
  Эмбеддинги изображений
  CNN
  
  CNN позволяет преобразовать изображения в векторы,
  которые затем используются для различных задач,
  например, классификации изображений
  или даже генерации новых изображений.
  
  Эмбеддинги изображений
  Autoencoders
  
  Автоэнкодеры могут сжимать изображения в более мелкие,
  плотные векторные представления,
  которые затем могут быть использованы для различных целей,
  включая декомпрессию или даже обнаружение аномалий.
  
  Эмбеддинги для других типов данных
  Graph Embeddings
  
  Применяются для работы с графовыми структурами
  (к примеру рекомендательные системы).
  Это способ представить узлы и связи графа в виде векторов.
  
  Эмбеддинги для других типов данных
  Sequence Embeddings
  
  Используются для анализа последовательностей,
  например, во временных рядах или в музыке.
  
  Основные алгоритмы
  
  Word2Vec
  
  Word2Vec использует нейронные сети для обучения векторных представлений слов
  из больших наборов текстовых данных.
  Существуют две основные архитектуры Word2Vec:
  
  CBOW: предсказывает текущее слово на основе контекста (окружающих слов).
  Например, в предложении "Собака лает на ___",
  CBOW попытается угадать недостающее слово
  (например, "почтальона")
  на основе окружающих слов.
  
  Skip-gram: работает наоборот по сравнению с CBOW.
  Использует текущее слово для предсказания окружающих его слов в предложении.
  Например, если взять слово "кошка",
  модель попытается предсказать слова,
  которые часто встречаются в окружении слова "кошка",
  такие как "мышь", "мяукает" и т.д.
  
  Эти модели хороши в выявлении семантических отношений между словами.
  
  Для примера работы с Word2Vec можно использовать библиотеку gensim
  
  ......
  
  Word2Vec обучается на ваших текстовых данных
  
  ......
  
  После обучения модели мы можем использовать полученные векторы слов
  или проводить различные виды семантических операций.
  
  GloVe
  
  GloVe создает векторы слов, анализируя,
  как часто пары слов встречаются вместе в большом текстовом корпусе.
  Идея заключается в том,
  что смысловые отношения между словами можно выразить
  в виде векторных различий.
  Например, векторы для "король" - "мужчина" + "женщина"
  должны быть близки к вектору для "королева".
  
  GloVe стремится минимизировать разницу между произведением векторов слов
  и логарифмом их совместной встречаемости,
  позволяя модели улавливать различные типы отношений между словами,
  такие как синонимы, антонимы, контекстные отношения и т.д
  
  Для примера работы GloVe, можно использовать
  предварительно обученные векторы
  или обучить свою модель на выбранном корпусе:
  
  ......
  
  После загрузки модели можно использовать векторы слов для различных задач.
  
  .......
  
  Для работы с русскоязычными текстами понадобится найти
  или обучить GloVe-модель на русскоязычном корпусе,
  так как большинство предварительно обученных моделей GloVe
  предназначены для английского языка.
  Одна из таких - navec.
  
  Эмбеддинги позволяют преобразовывать текстовую
  или категориальную информацию в числовой формат,
  делая её доступной для машины.
  
  .......
  
  //// Конец цитирования.
  
  Короче, нет ничего сложного в самой концепции эмбеддингов,
  но как всегда "дьявол кроется в деталях",
  т.е. в самой реализации конкретных эмбеддингов.
  Для разных задач требуются разные эмбеддинги,
  и приходится подбирать их "методом тыка", "на ощупь",
  т.к. никакой "большой теории эмбеддингов" кроме вышеизложенного
  и ряда полуэмпирических эвристик по большому счету, собственно, и нет.
  
  
  ======
  
  20.01.2024 18:597
  
  "Обучение с подкреплением" простыми словами.
  В оглавление.
  
  Самое простое введение в один самых элитарных разделов ИИ-технологий
  "обучение с подкреплением" (Reinforcement Learning) (RL),
  которое мне дал Bing:
  
  01.01.2024 12:55
  
  .......
  
  //// Спасибо, Бинг. Темы интересные и большие.
  //// Так что, давайте начнем пока с первой,
  //// Только есть просьба в рамках этой темы особое внимание уделить системам,
  //// в которых используется "обучение с подкреплением".
  //// Как выяснилось, у меня большие пробелы в знаниях на эту тему,
  //// и хочется эти пробелы немножко подсократить.
  //// А поиск в Инете практически ничего не дает
  //// - там какая то абстракция и компот из вроде известных слов,
  //// правда, хорошо уже забытых - статистическое распределение,
  //// цепи Маркова, динамическое программирование, уравнение Беллмана...
  //// И ни одного конкретного примера реализации.
  //// Так что ни за что конкретное зацепиться не удается,
  //// чтобы начать распутывать этот "клубок".
  //// А желание такое есть.
  
  Bing 14:25
  Пожалуйста, Андрей. Я рад, что вы выбрали тему обучения с подкреплением.
  Это очень интересная и сложная область машинного обучения,
  которая имеет много применений и потенциала. blush
  
  Обучение с подкреплением (RL) - это метод машинного обучения,
  в котором агент (например, робот или компьютерная программа)
  учится самостоятельно,
  пробуя разные действия в окружающей среде
  и получая от нее вознаграждение или наказание за свое поведение.
  Цель агента - максимизировать свою совокупную награду
  за долгосрочный период.
  
  Для понимания обучения с подкреплением вам нужно знать
  несколько основных понятий:
  
   Агент - это сущность, которая действует в среде
  и учится на основе своего опыта.
  
   Среда - это ситуация или контекст,
  в котором действует агент и которая влияет на его вознаграждение.
  
   Вознаграждение - это сигнал, который получает агент от среды
  за свое действие. Вознаграждение может быть положительным или отрицательным,
  в зависимости от того, насколько хорошо или плохо
  действие агента соответствует его цели.
  
   Состояние - это информация, которая описывает
  текущее положение агента и среды.
  Состояние может быть полным или частичным,
  в зависимости от того, насколько много агент знает о среде.
  
   Действие - это выбор, который делает агент в каждом состоянии.
  Действие влияет на следующее состояние и вознаграждение агента.
  
   Политика - это правило или алгоритм, который определяет,
  какое действие выбрать агенту в каждом состоянии.
  Политика может быть детерминированной или стохастической,
  в зависимости от того,
  насколько однозначно или случайно агент принимает решения.
  
   Функция ценности - это оценка того,
  насколько хорошо или плохо для агента находиться в определенном состоянии
  или выполнять определенное действие.
  Функция ценности учитывает не только текущее,
  но и будущее вознаграждение агента.
  
   Модель среды - это представление или аппроксимация того,
  как среда реагирует на действия агента.
  Модель среды может быть явной или неявной,
  в зависимости от того,
  насколько агент может предсказать или симулировать поведение среды.
  
  Вот простая иллюстрация обучения с подкреплением:
  https://www.guru99.com/ru/reinforcement-learning-tutorial.html
  https://habr.com/ru/companies/newprolab/articles/343834/
  
  Примеры применения обучения с подкреплением:
  
   Игры:
  ИИ может быть обучен для соревнования с людьми
  или другими компьютерными игроками в шахматы, Go, покер и видеоигры.
  Например, AlphaGo - это ИИ, который обучался с подкреплением
  и победил лучших игроков в Go
  
   Робототехника:
  RL может быть использован для обучения роботов выполнению различных задач,
  таких как ходьба, манипуляция предметами или навигация.
  Например, Spot - это робот-собака, который обучался с подкреплением
  и может выполнять разные трюки
  
   Финансовые рынки:
  RL может быть использован для обучения торговых ботов,
  которые могут оптимизировать свою стратегию
  и максимизировать свою прибыль. Например,
  Q-Trader - это ИИ, который обучался с подкреплением и превзошел рынок
  
   Управление процессами:
  RL может быть использован для обучения агентов,
  которые могут управлять сложными системами,
  такими как электросети, транспорт или логистика.
  Например, Google DeepMind использовал RL для оптимизации потребления энергии
  в своих центрах обработки данных.
  
  ......
  
  Вот с такого введения и начиналось мое "глубокое погружение"
  в таинства "обучения с подкреплением".
  Продолжение, если тема заинтересовала, можно тоже пронаблюдать, см.:
  "Металоция неведомого. Модуль Р. Роботы."
  
  
  ========
  
  20.02.2024 20:56
  
  "Проклятье размерности" в пространстве.
  В оглавление.
  
  Использование представления "пространства эмбеддингов" просто
  как аналог привычного нам трехмерного евклидового простраства,
  только с большим количеством размерностей.
  Ну там 6-7 сотен или пара-тройка тысяч, какие могут быть проблемы?
  Ведь математические формулы легко "масштабируются".
  "N - мало, бери M".
  
  Но в том то и дело, что эффективное применение математических формул,
  в первую очередь опирается не строгость "математического формализма",
  а на "нестрогую" и не очень надежную "интуицию".
  И вот как раз в отношении многомерном пространстве с количеством размерностей N,
  не говоря уже про M, эта интуиция может очень сильно подвести.
  Вот хороший текст на эту тему.
  
  "Визуализация реальных масштабов проклятия размерности".
  Автор: mr-pickles
  https://habr.com/ru/companies/wunderfund/articles/748044/.
  17 июл 2023 в 12:37
  
  //// Начало цитирования.
  
  Автор оригинала: Florin Andrei
  https://towardsdatascience.com/visualizing-the-full-extent-of-the-curse-of-dimensionality-5556ff6852bb
  
  Представьте себе набор данных,
  состоящий из некоторого количества наблюдений.
  У каждого наблюдения имеется N признаков.
  Если преобразовать все эти признаки в их числовое представление,
  то можно будет сказать, что каждое из наблюдений
  - это точка в N-мерном пространстве.
  
  Если N - величина небольшая - взаимоотношения между точками
  будут именно такими, какими их можно представить на интуитивном уровне.
  Но иногда N достигает огромных значений.
  Это может произойти, например, когда множество признаков
  создают посредством прямого кодирования или чего-то подобного.
  Для очень больших значений N наблюдения ведут себя так,
  как если бы они были бы представлены разреженными данными,
  или так, как если бы расстояния между ними были бы несколько больше,
  чем можно было бы ожидать.
  
  Это - реальное явление.
  По мере роста N, при условии, что всё остальное не меняется,
  объём части N-мерного пространства, содержащий наблюдения,
  тоже, в некотором смысле, увеличивается
  (или, как минимум, увеличивается количество степеней свободы).
  Увеличиваются и евклидовы расстояния между наблюдениями.
  Группа точек становится всё более разреженной структурой.
  Это - геометрическая база для такого понятия,
  как <проклятие размерности>.
  Подобные изменения в данных влияют на поведение моделей
  и на приёмы работы, применяемые к наборам данных.
  
  Многое может пойти не так, как ожидается в том случае,
  если число признаков очень велико.
  В ситуациях, когда признаков больше, чем наблюдений,
  обычно возникает переобучение моделей.
  В многомерном пространстве ухудшается эффективность любых методов,
  предусматривающих перебор данных (например - GridSearch),
  так как для того, чтобы уложиться в одни и те же линейные интервалы,
  нужно будет сделать больше попыток.
  
  Рост числа признаков наблюдений оказывает влияние на любые модели,
  основанные на расстоянии между наблюдениями или на их близости.
  Предположим, количество размерностей представляет собой
  достаточно большую величину.
  Если взять какую-нибудь точку наблюдений,
  то она окажется расположенной очень далеко от всех остальных точек.
  И, кроме того, расстояния между ней и другими точками
  окажутся практически одинаковыми.
  А так как механизмы модели завязаны на расстоянии между точками наблюдений,
  работа этих механизмов усложнится.
  Например - в такой ситуации, когда все точки расположены друг от друга
  на примерно одинаковом расстоянии,
  не будут нормально работать механизмы кластеризации.
  
  Все эти причины, а так же - многие другие
  - привели к созданию специальных инструментов.
  Среди них - метод главных компонент (Principal Component Analysis, PCA)
  и модель латентного размещения Дирихле (Latent Dirichlet Allocation, LDA). Э
  то - попытка уйти от специфических особенностей пространств
  с очень большим количеством измерений,
  попытка свести свойства набора данных к такому количеству измерений,
  которое лучше соответствует характеристикам той информации,
  которая в нём содержится.
  
  Истинные масштабы проклятия размерности трудно прочувствовать
  на интуитивном уровне,
  а пространства, количество измерений которых превышает 3,
  чрезвычайно сложно визуализировать.
  Поэтому предлагаю вашему вниманию двумерные схемы,
  призванные помочь нашей интуиции.
  У того, что работа с пространствами больших размерностей
  может вылиться в массу проблем,
  есть геометрическое обоснование.
  Именно визуализацией этих проблем мы тут и займёмся.
  Если раньше вы такого не видели
  - результаты могут показаться вам удивительными.
  Геометрия высокоразмерных пространств гораздо сложнее,
  чем может себе представить тот,
  кто раньше о ней не задумывался.
  Здесь мы задействуем метод Монте-Карло для визуализации поведения наблюдений
  с очень большим количеством признаков.
  
  Объём
  
  Представим себе единичный квадрат,
  центр которого находится в начале координат на координатной плоскости.
  В этот квадрат впишем круг.
  
  Круг, вписанный в квадрат
  
  Это - то, с чем мы тут будем работать.
  А теперь поразмыслим об общем, N-мерном случае.
  В трёх измерениях это будет сфера, вписанная в куб.
  А дальше - будет N-мерная сфера, вписанная в N-мерный куб.
  Это - наиболее общий способ описать интересующую нас конструкцию.
  Мы, ради простоты, вне зависимости от того,
  сколько измерений имеет рассматриваемое пространство,
  будем называть эти объекты <сферой> и <кубом>.
  
  Объём куба неизменен, он всегда равняется 1.
  И тут возникает вопрос:
  что происходит с объёмом сферы при изменении количества размерностей N?
  
  Ответим на этот вопрос экспериментальным путём, используя метод Монте-Карло.
  Сгенерируем очень большое количество точек,
  распределённых в кубе равномерно, но случайным образом.
  Для каждой точки вычислим расстояние до начала координат.
  Если это расстояние меньше 0,5 (это - радиус сферы)
  - значит, точка будет находиться внутри сферы.
  
  Точки, распределённые случайным образом
  
  Если разделить количество точек, попадающих внутрь сферы,
  на общее количество точек, это даст нам примерный показатель
  отношения объёма сферы к объёму куба.
  Так как объём куба равен 1 - это отношение будет равно объёму сферы.
  Это приблизительное значение становится точнее по мере роста количества точек.
  
  Другим словами, отношение внутренние_точки / все_точки
  позволяет приблизительно определить объём сферы.
  
  Код, который мы рассмотрим ниже, достаточно прост.
  Так как нам нужно очень много точек, обычных циклов лучше избегать.
  В подобном коде можно воспользоваться NumPy,
  но эта библиотека ориентирована исключительно на CPU
  и на однопоточный режим выполнения, из-за чего код, где применяется NumPy,
  будет медленным.
  
  ......
  
  Если проанализировать вложенные выражения torch в нашем коде,
  то окажется, что тут мы генерируем 100 миллионов случайных точек,
  вычисляем их расстояние до начала координат,
  вычисляем количество точек внутри сферы и делим это количество
  на общее число точек.
  Массив ratio, в итоге, будет содержать сведения об объёме сфер
  в пространствах различных размерностей.
  
  .......
  
  Визуализируем результаты:
  
  Объём сферы диаметром 1 в N-мерном пространстве
  
  Проверим правильность моделирования.
  Для N=1 всё предельно просто:
  и <сфера> и <куб> - это равные отрезки на прямой,
  <объём> сферы будет равен 1.
  Для N=2 и N=3 в дело идут формулы, которые изучают в школе.
  Можно заметить, что наши результаты очень близки к тем,
  что можно найти по формулам.
  
  А вот по мере увеличения N происходит нечто весьма впечатляющее:
  объём сферы стремительно приближается к нулю.
  Он близок к нулю уже тогда, когда N=10.
  /// ДЕСЯТИ! "Карл!!!"
  А когда N оказывается больше 20,
  объём сферы падает до пределов точности чисел с плавающей точкой.
  Наш код, учитывая то, что мы находим лишь приближённое значение,
  вычисляет этот объём как 0,0.
  
  Одно из объяснений этого явления может выглядеть так:
  при больших значениях N почти весь объём куба приходится на его углы.
  Центральная область, содержащая сферу,
  занимает, в сравнении с другими областями куба, незначительный объём.
  В высокоразмерных пространствах углы куба оказываются очень важным местом.
  Большая часть объёма <переходит> в углы.
  Это происходит очень быстро при росте N.
  
  Вот ещё одна интерпретация происходящего:
  сфера - это <окрестность> начала координат.
  По мере роста N точки просто исчезают из этой окрестности.
  Начало координат - это не нечто особенное,
  поэтому то, что происходит в окрестности начала координат,
  должно происходить и в окрестностях всех остальных точек.
  Само понятие <окрестности> претерпевает большое изменение.
  Вместе с ростом N у точек в пространстве становится
  всё меньше и меньше соседей.
  
  Впервые я запустил эту симуляцию много лет назад,
  и я отчётливо помню то, как меня поразил её результат,
  а именно - то, как стремительно движется к 0 объём сферы при росте N.
  После того, как я проверил код и не нашёл в нём ошибок,
  меня посетила такая мысль:
  надо сохранить код, заблокировать экран,
  выйти на улицу, прогуляться и подумать о том,
  что я только что видел :)
  
  Линейное расстояние
  
  Найдём диагональ куба, воспользовавшись функцией от N.
  Это легко, так как диагональ равна sqrt(N).
  Код для таких вычислений слишком примитивен, чтобы его тут показывать.
  А вот - результаты вычислений.
  
  Длина диагонали куба
  
  Для случаев N=2 и N=3 проверить эти вычисления можно,
  основываясь на школьных знаниях
  (речь идёт о диагонали квадрата и обычного трёхмерного куба).
  Но по мере увеличения N растёт и длина диагонали.
  И рост этот ничем не ограничен.
  
  Это может звучать совершенно неправдоподобно,
  но даже при том, что длина ребра куба остаётся неизменной (и равной 1),
  его диагональ может иметь сколько угодно большой размер,
  увеличивающийся при увеличении N.
  При N=1000 диагональ равна примерно 32.
  В теории, если длина ребра куба равна 1 метру,
  существует такое многомерное пространство,
  в котором длина диагонали куба будет равняться 1 километру.
  
  Даже если длина ребра куба не меняется,
  его диагональ, по мере увеличения размерности пространства,
  способна неограниченно расти.
  
  Каждый раз, когда к пространству добавляется новое измерение,
  у куба появляются новые рёбра и грани,
  усложняются характеристики его углов,
  он обретает больше степеней свободы,
  а его диагональ становится длиннее.
  
  Расстояние между наблюдениями
  
  А как насчёт расстояния между наблюдениями,
  или расстояния между точками в пространстве?
  Предположим, мы сгенерировали фиксированное количество случайных точек
  и решили вычислить среднее расстояние между любыми двумя точками,
  а так же - среднее расстояние до ближайшего соседа точки.
  Все точки всегда содержатся в кубе.
  Что произойдёт со средним расстоянием между точками при росте N?
  Запустим ещё одну симуляцию.
  
  Обратите внимание на то, что тут применяется консервативный подход
  к управлению памятью.
  Это важно, так как используемые тут структуры данных довольно-таки велики.
  
  Тут мы используем гораздо меньшее количество точек, чем раньше,
  так как размер главной структуры данных увеличивается
  в соответствии с формулой N^2,
  а это значит, что, если сгенерировать слишком много точек,
  мы очень скоро столкнёмся с нехваткой памяти.
  Но даже так наши приблизительные результаты должны быть
  достаточно близки к реальным значениям.
  
  Вот сводка по средним расстояниям между двумя точками,
  вычисленным для 1000 точек.
  
  Среднее расстояние между точками
  
  Для маленьких N среднее расстояние представлено числом
  от примерно 0,5 до примерно 1.
  Но по мере роста N растёт и среднее расстояние между точками.
  При N=2000 оно уже близко к 18. Это - серьёзный рост.
  
  А вот - визуализация среднего расстояния до ближайшего соседа точки.
  
  Среднее расстояние до ближайшего соседа точки
  
  Тут рост N приводит к ещё более серьёзному росту расстояния,
  чем в предыдущем примере.
  Когда N меньше 10 - расстояния совсем невелики,
  так как в пространствах низкой размерности больше точек
  оказываются поблизости друг от друга.
  А для больших значений N среднее расстояние до ближайшего соседа
  оказывается очень близким к среднему расстоянию между любыми двумя точками.
  Другими словами, видно, что основной вклад в расстояние между точками
  вносит пустота, находящаяся в непосредственной близости от точек.
  
  Соотношение расстояний
  
  Именно поэтому выше было сказано,
  что в пространствах высокой размерности точки оказываются
  практически равноудалёнными друг от друга.
  Среднее расстояние между двумя точками и кратчайшее расстояние между точками
  оказываются практически одинаковыми.
  А теперь вы видите доказательство этого утверждения,
  полученное путём моделирования.
  Теперь вы можете ощутить мощь феномена проклятия размерности
  на интуитивном уровне.
  
  По мере роста количества размерностей N
  точки всё дальше и дальше отходят друг от друга,
  несмотря на то, что их координаты ограничены одним и тем же,
  довольно узким диапазоном значений (-0,5, +0,5).
  Группа точек становится всё более и более разреженной
  только из-за того, что пространство, в котором расположены эти точки,
  приобретает большее количество измерений.
  При увеличении количества размерностей с нескольких единиц
  до нескольких тысяч мы имеем дело с увеличением расстояния между точками
  на пару порядков. Это очень много.
  
  Итоги
  
  Проклятие размерности - это реальное явление,
  основанное на особенностях геометрии N-мерных пространств.
  
  По мере увеличения количества размерностей (или признаков)
  точки (наблюдения) быстро <убегают> друг от друга.
  В новом пространстве, определённо,
  больше места для размещения данных,
  несмотря даже на то, что линейные интервалы по осям остаются неизменными.
  Чем больше размерность пространства, в котором находятся точки,
  тем пустыннее окрестности этих точек.
  
  В общем случае количество наблюдений должно <соответствовать>
  количеству признаков.
  Но в каждой конкретной ситуации желательное соотношение
  количества наблюдений и количества признаков
  зависит от множества факторов.
  
  Надеюсь, эта статья дала вам ключ к интуитивному пониманию
  свойств многомерных пространств,
  которые очень сложно визуализировать.
  Некоторые описанные здесь тенденции,
  характеризующие то, что называют <проклятием размерности>,
  удивительно сильны.
  Теперь у вас должно сложиться некоторое представление о том,
  насколько они сильны.
  
  ......
  
  //// Конец цитирования.
  
  И вот какую "метрику" использовать для существенно многоэлементных эмбеддингов?
  И пока на ум приходит только "золотой стандарт" "дата сатанистов"
  - "косинусное расстояние".
  Но вопрос в том, нет ли каких-то подобных контринтутивных особенностей
  применения этого "золотого стандарта" в существенно многомерных случаях?
  И отдельный вопрос в том, на каком основании принимается допущение
  об ОРТОГОНАЛЬНОСТИ, ПРЯМОЛИНЕЙНОСТИ, и,
  самое главное, НЕПРЕРЫВНОСТИ/ГЛАДКОСТИ этих осей,
  к которым пытаются привязать элементы эмбеддинга?
  Так привычнее или просто ничего другого еще не придумано,
  и придумано быть "не можно"?
  Или, все-таки, можно?
  
  Вот с таких вопросов и начиналось мое "глубокое погружение"
  в таинства "пространства эмбеддингов".
  Если тема заинтересовала, то можно понаблюдать, какие варианты можно еще придумать, см.:
  "Каково же оно "пространство эмбеддингов" нейронки?"
  
  
  ========
  
  26.02.2024 16:16
  
  Сверточные сети простыми словами.
  В оглавление.
  
  Сверточная нейронная сеть это не только весьма удачная для своих целей модель,
  но еще и одна из наиболее интуитивно понятных нейросетевых архитектур.
  И по этим причинам в очень многих материалах по "машинному обучению"
  и нейронным сетям,
  эта архитектура упоминается/используется "сплошь и рядом"
  для самых различных целей.
  И тем удивительнее была трудность найти какое-то более-менее
  простое, понятное и относительно полное описание этой архитектуры
  под настоящими завалами описаний все более новых и новых архитектур,
  родоначальником для которых была простая сверточная сеть.
  
  Но сегодня мне наконец удалось "раскопать археологический слой 2016 года"
  в "темных подвалах" Хабра очень неплохой материал,
  которым и спешу с Вами поделиться:
  
  "Что такое свёрточная нейронная сеть".
  Автор: freetonik (Рахим Давлеткалиев)
  https://habr.com/ru/articles/309508/.
  8 сен 2016 в 14:50
  
  Автор оригинала: Adit Deshpande
  http://goo.gl/pOs9Qi
  
  Перевод Наталии Басс.
  
  //// Начало цитирования.
  
  Введение
  
  Свёрточные нейронные сети (СНС).
  //// Английская аббревиатура - CNN.
  Звучит как странное сочетание биологии и математики с примесью информатики,
  но как бы оно не звучало, эти сети
  - одни из самых влиятельных инноваций в области компьютерного зрения
  
  ......
  
  Задача
  
  Задача классификации изображений - это приём начального изображения
  и вывод его класса (кошка, собака и т.д.)
  или группы вероятных классов,
  которая лучше всего характеризует изображение.
  
  ......
  
  Вводы и выводы
  
  Когда компьютер видит изображение (принимает данные на вход),
  он видит массив пикселей.
  В зависимости от разрешения и размера изображения,
  например, размер массива может быть 32х32х3
  (где 3 - это значения каналов RGB).
  Чтобы было понятней, давайте представим,
  у нас есть цветное изображение в формате JPG, и его размер 480х480.
  Соответствующий массив будет 480х480х3.
  Каждому из этих чисел присваивается значение от 0 до 255,
  которое описывает интенсивность пикселя в этой точке.
  Эти цифры, оставаясь бессмысленными для нас,
  когда мы определяем что на изображении,
  являются единственными вводными данными, доступными компьютеру.
  Идея в том, что вы даете компьютеру эту матрицу,
  а он выводит числа,
  которые описывают вероятность класса изображения
  (.80 для кошки, .15 для собаки, .05 для птицы и т.д.).
  
  Чего мы хотим от компьютера
  
  ......
  
  
  Биологические связи
  
  ......
  
  Структура
  
  Вернёмся к специфике.
  Что конкретно делают СНС?
  Берётся изображение, пропускается через серию свёрточных, нелинейных слоев,
  слоев объединения и полносвязных слоёв,
  и генерируется вывод.
  Как мы уже говорили, выводом может быть класс или вероятность классов,
  которые лучше всего описывают изображение.
  Сложный момент
  - понимание того, что делает каждый из этих слоев.
  Так что давайте перейдем к самому важному.
  
  Первый слой - математическая часть
  
  Первый слой в СНС всегда свёрточный.
  Вы же помните, какой ввод у этого свёрточного слоя?
  Как уже говорилось ранее, вводное изображение
  - это матрица 32 х 32 х 3 с пиксельными значениями.
  Легче всего понять, что такое свёрточный слой,
  если представить его в виде фонарика,
  который светит на верхнюю левую часть изображения.
  Допустим свет, который излучает этот фонарик, покрывает площадь 5 х 5.
  А теперь давайте представим,
  что фонарик движется по всем областям вводного изображения.
  В терминах компьютерного обучения этот фонарик называется фильтром
  (иногда нейроном или ядром),
  а области, на которые он светит,
  называются рецептивным полем (полем восприятия).
  То есть наш фильтр - это матрица
  (такую матрицу ещё называют матрицей весов или матрицей параметров).
  Заметьте, что глубина у фильтра должна быть такой же,
  как и глубина вводного изображения
  (тогда есть гарантия математической верности),
  и размеры этого фильтра - 5 х 5 х 3.
  Теперь давайте за пример возьмем позицию,
  в которой находится фильтр.
  Пусть это будет левый верхний угол.
  Поскольку фильтр производит свёртку,
  то есть передвигается по вводному изображению,
  он умножает значения фильтра на исходные значения пикселей изображения
  (поэлементное умножение).
  Все эти умножения суммируются (всего 75 умножений).
  И в итоге получается одно число.
  Помните, оно просто символизирует нахождение фильтра
  в верхнем левом углу изображения.
  Теперь повторим этот процесс в каждой позиции.
  (Следующий шаг - перемещение фильтра вправо на единицу,
  затем еще на единицу вправо и так далее).
  Каждая уникальная позиция введённого изображения производит число.
  После прохождения фильтра по всем позициям получается матрица 28 х 28 х 1,
  которую называют функцией активации или картой признаков.
  Матрица 28 х 28 получается потому,
  что есть 784 различных позиции,
  которые могут пройти через фильтр 5 х 5 изображения 32 х 32.
  Эти 784 числа преобразуются в матрицу 28 х 28.
  
  ......
  
  (Небольшая ремарка: некоторые изображения, в том числе то, что вы видите выше,
  взяты из потрясающей книги "Нейронные сети и глубинное обучение" Майкла Нильсена
  ("Neural Networks и Deep Learning", by Michael Nielsen).
  http://neuralnetworksanddeeplearning.com/
  Настоятельно рекомендую).
  
  Допустим, теперь мы используем два 5 х 5 х 3 фильтра вместо одного.
  Тогда выходным значением будет 28 х 28 х 2.
  
  Первый слой
  
  Давайте поговорим о том, что эта свертка на самом деле
  делает на высоком уровне.
  Каждый фильтр можно рассматривать как идентификатор свойства.
  Когда я говорю свойство, я имею в виду прямые границы, простые цвета и кривые.
  Подумайте о самых простых характеристиках,
  которые имеют все изображения в общем.
  Скажем, наш первый фильтр 7 х 7 х 3, и он будет детектором кривых.
  (Сейчас давайте игнорировать тот факт, что у фильтра глубина 3,
  и рассмотрим только верхний слой фильтра и изображения, для простоты).
  У фильтра пиксельная структура,
  в которой численные значения выше вдоль области, определяющей форму кривой
  (помните, фильтры, о которых мы говорим, это просто числа!).
  
  ......
  
  Вернемся к математической визуализации.
  Когда у нас в левом верхнем углу вводного изображения есть фильтр,
  он производит умножение значений фильтра на значения пикселей этой области.
  Давайте рассмотрим пример изображения,
  которому мы хотим присвоить класс,
  и установим фильтр в верхнем левом углу.
  
  ......
  
  Помните, всё что нам нужно, это умножить значения фильтра
  на исходные значения пикселей изображения.
  
  ......
  
  По сути, если на вводном изображении есть форма,
  в общих чертах похожая на кривую, которую представляет этот фильтр,
  и все умноженные значения суммируются,
  то результатом будет большое значение!
  Теперь давайте посмотрим, что произойдёт, когда мы переместим фильтр.
  
  ......
  
  Значение намного ниже!
  Это потому, что в новой области изображения нет ничего,
  что фильтр определения кривой мог засечь.
  Помните, что вывод этого свёрточного слоя - карта свойств.
  В самом простом случае, при наличии одного фильтра свертки
  (и если этот фильтр - детектор кривой),
  карта свойств покажет области,
  в которых больше вероятности наличия кривых.
  В этом примере в левом верхнем углу значение нашей 28 х 28 х 1 карты свойств
  будет 6600.
  Это высокое значение показывает,
  что, возможно, что-то похожее на кривую присутствует на изображении,
  и такая вероятность активировала фильтр.
  В правом верхнем углу значение у карты свойств будет 0,
  потому что на картинке не было ничего,
  что могло активировать фильтр
  (проще говоря, в этой области не было кривой).
  Помните, что это только для одного фильтра.
  Это фильтр, который обнаруживает линии с изгибом наружу.
  Могут быть другие фильтры для линий,
  изогнутых внутрь или просто прямых.
  Чем больше фильтров, тем больше глубина карты свойств,
  и тем больше информации мы имеем о вводной картинке.
  
  Ремарка:
  Фильтр, о котором я рассказал в этом разделе,
  упрощён для упрощения математики свёртывания.
  На рисунке ниже видны примеры фактических визуализаций фильтров
  первого свёрточного слоя обученной сети.
  Но идея здесь та же.
  Фильтры на первом слое сворачиваются вокруг вводного изображения
  и "активируются" (или производят большие значения),
  когда специфическая черта, которую они ищут,
  есть во вводном изображении.
  
  ......
  
  (Заметка: изображения выше - из Стэнфордского курса 231N,
  который преподают Андрей Карпатый и Джастин Джонсон
  (Andrej Karpathy and Justin Johnson).
  Рекомендую тем, кто хочет лучше изучить СНС).
  
  Идём глубже по сети
  
  Сегодня в традиционной сверточной нейронной сетевой архитектуре
  существуют и другие слои,
  которые перемежаются со свёрточными.
  Я очень рекомендую тем, кто интересуется темой,
  почитать об этих слоях,
  чтобы понять их функциональность и эффекты.
  Классическая архитектура СНС будет выглядеть так:
  
  Input -> Conv -> ReLU -> Conv -> ReLU -> Pool -> Fully Connected
  
  Последний слой, хоть и находится в конце, один из важных
  - мы перейдём к нему позже.
  Давайте подытожим то, в чём мы уже разобрались.
  Мы говорили о том, что умеют определять фильтры первого свёрточного слоя.
  Они обнаруживают свойства базового уровня, такие как границы и кривые.
  Как можно себе представить,
  чтобы предположить какой тип объекта изображён на картинке,
  нам нужна сеть, способная распознавать свойства более высокого уровня,
  как например руки, лапы или уши.
  Так что давайте подумаем, как выглядит выходной результат сети
  после первого свёрточного слоя.
  Его размер 28 х 28 х 3
  (при условии, что мы используем три фильтра 5 х 5 х 3).
  Когда картинка проходит через один свёрточный слой,
  выход первого слоя становится вводным значением 2-го слоя.
  Теперь это немного сложнее визуализировать.
  Когда мы говорили о первом слое,
  вводом были только данные исходного изображения.
  Но когда мы перешли ко 2-му слою,
  вводным значением для него стала одна или несколько карт свойств
  - результат обработки предыдущим слоем.
  Каждый набор вводных данных описывает позиции,
  где на исходном изображении встречаются определенные базовые признаки.
  
  Теперь, когда вы применяете набор фильтров поверх этого
  (пропускаете картинку через второй свёрточный слой),
  на выходе будут активированы фильтры,
  которые представляют свойства более высокого уровня.
  Типами этих свойств могут быть полукольца
  (комбинация прямой границы с изгибом)
  или квадратов
  (сочетание нескольких прямых ребер).
  Чем больше свёрточных слоёв проходит изображение
  и чем дальше оно движется по сети,
  тем более сложные характеристики выводятся в картах активации.
  В конце сети могут быть фильтры, которые активируются
  при наличии рукописного текста на изображении,
  при наличии розовых объектов и т.д.
  Если вы хотите узнать больше о фильтрах в свёрточных сетях,
  Мэтт Зейлер и Роб Фергюс написали отличную научно-исследовательскую работу на эту тему.
  http://www.matthewzeiler.com/pubs/arxive2013/arxive2013.pdf
  Ещё на ютубе есть видео Джейсона Йосински
  c отличным визуальным представлением этих процессов.
  https://www.youtube.com/watch?v=AgkfIQ4IGaM
  
  Еще один интересный момент.
  Когда вы двигаетесь вглубь сети,
  фильтры работают со все большим полем восприятия,
  а значит, они в состоянии обрабатывать информацию
  с большей площади первоначального изображения
  (простыми словами, они лучше приспособляются
  к обработке большей области пиксельного пространства).
  
  Полносвязные слои
  
  Теперь, когда мы можем обнаружить высокоуровневые свойства,
  самое крутое - это прикрепление полносвязного слоя в конце сети.
  Этот слой берёт вводные данные и выводит N-пространственный вектор,
  где N - число классов, из которых программа выбирает нужный.
  Например, если вы хотите программу по распознаванию цифр,
  у N будет значение 10, потому что цифр 10.
  Каждое число в этом N-пространственном векторе
  представляет собой вероятность конкретного класса.
  Например, если результирующий вектор для программы распознавания цифр
  это [0 0,1 0,1 0,75 0 0 0 0 0,05],
  значит существует 10% вероятность, что на изображении "1",
  10% вероятность, что на изображение "2",
  75% вероятность - "3", и 5% вероятность - "9"
  (конечно, есть и другие способы представить вывод).
  
  Способ, с помощью которого работает полносвязный слой
  - это обращение к выходу предыдущего слоя
  (который, как мы помним, должен выводить высокоуровневые карты свойств)
  и определение свойств,
  которые больше связаны с определенным классом.
  Например, если программа предсказывает,
  что на каком-то изображении собака,
  у карт свойств, которые отражают высокоуровневые характеристики,
  такие как лапы или 4 ноги,
  должны быть высокие значения.
  Точно так же, если программа распознаёт, что на изображении птица
  - у неё будут высокие значения в картах свойств,
  представленных высокоуровневыми характеристиками вроде крыльев или клюва.
  Полносвязный слой смотрит на то,
  что функции высокого уровня сильно связаны с определенным классом
  и имеют определенные веса,
  так что, когда вы вычисляете произведения весов с предыдущим слоем,
  то получаете правильные вероятности для различных классов.
  
  Обучение (или "Что заставляет эту штуку работать")
  
  Это один из аспектов нейронных сетей,
  о котором я специально до сих пор не упоминал.
  Вероятно, это самая важная часть.
  Возможно, у вас появилось множество вопросов.
  Откуда фильтры первого свёрточного слоя знают,
  что нужно искать границы и кривые?
  Откуда полносвязный слой знает, что ищет карта свойств?
  Откуда фильтры каждого слоя знают, какие хранить значения?
  Способ, которым компьютер способен корректировать значения фильтра (или весов)
  - это обучающий процесс,
  который называют методом обратного распространения ошибки.
  
  Перед тем, как перейти к объяснению этого метода,
  поговорим о том, что нейронной сети нужно для работы.
  Когда мы рождаемся, наши головы пусты.
  Мы не понимаем как распознать кошку, собаку или птицу.
  Ситуация с СНС похожа:
  до момента построения сети, веса или значения фильтра случайны.
  Фильтры не умеют искать границы и кривые.
  Фильтры верхних слоёв не умеют искать лапы и клювы.
  Когда мы становимся старше,
  родители и учителя показывают нам разные картинки и изображения
  и присваивают им соответствующие ярлыки.
  Та же идея показа картинки и присваивания ярлыка
  используется в обучающем процессе,
  который проходит СНС.
  Давайте представим, что у нас есть набор обучающих картинок,
  в котором тысячи изображений собак, кошек и птиц.
  У каждого изображения есть ярлык с названием животного.
  
  Метод обратного распространения ошибки можно разделить на 4 отдельных блока:
  прямое распространение, функцию потери, обратное распространение
  и обновление веса.
  Во время прямого распространения, берётся тренировочное изображение
  - как помните, это матрица 32 х 32 х 3 -
  и пропускается через всю сеть.
  В первом обучающем примере,
  так как все веса или значения фильтра были инициализированы случайным образом,
  выходным значением будет что-то вроде [.1 .1 .1 .1 .1 .1 .1 .1 .1 .1],
  то есть такое значение, которое не даст предпочтения
  какому-то определённому числу.
  Сеть с такими весами не может найти свойства базового уровня
  и не может обоснованно определить класс изображения.
  Это ведёт к функции потери.
  Помните, то, что мы используем сейчас - это обучающие данные.
  У таких данных есть и изображение и ярлык.
  Допустим, первое обучающее изображение - это цифра 3.
  Ярлыком изображения будет [0 0 0 1 0 0 0 0 0 0].
  Функция потери может быть выражена по-разному,
  но часто используется СКО (среднеквадратическая ошибка),
  это 1/2 умножить на (реальность - предсказание) в квадрате.
  
  .......
  
  Примем это значение за переменную L.
  Как вы догадываетесь, потеря будет очень высокой
  для первых двух обучающих изображений.
  Теперь давайте подумаем об этом интуитивно.
  Мы хотим добиться того, чтобы спрогнозированный ярлык
  (вывод свёрточного слоя)
  был таким же, как ярлык обучающего изображения
  (это значит, что сеть сделала верное предположение).
  Чтобы такого добиться,
  нам нужно свести к минимуму количество потерь,
  которое у нас есть.
  Визуализируя это как задачу оптимизации из математического анализа,
  нам нужно выяснить, какие входы
  (веса, в нашем случае)
  самым непосредственным образом способствовали потерям (или ошибкам) сети.
  
  .......
  
  (Один из способов визуализировать идею минимизации потери
  - это трёхмерный график,
  где веса нейронной сети
  (очевидно их больше, чем 2, но тут пример упрощен)
  это независимые переменные,
  а зависимая переменная - это потеря.
  Задача минимизации потерь
  - отрегулировать веса так, чтобы снизить потерю.
  Визуально нам нужно приблизиться к самой нижней точке чашеподобного объекта.
  Чтобы добиться этого, нужно найти производную потери
  (в рамках нарисованного графика
  - рассчитать угловой коэффициент в каждом направлении)
  с учётом весов).
  
  Это математический эквивалент dL/dW, где W - веса определенного слоя.
  Теперь нам нужно выполнить обратное распространение через сеть,
  которое определяет, какие веса оказали большее влияние на потери,
  и найти способы, как их настроить,
  чтобы уменьшить потери.
  После того, как мы вычислим производную,
  перейдём к последнему этапу - обновлению весов.
  Возьмём все фильтровые веса и обновим их так,
  чтобы они менялись в направлении градиента.
  
  ......
  
  Скорость обучения - это параметр,
  который выбирается программистом.
  Высокая скорость обучения означает,
  что в обновлениях веса делались более крупные шаги,
  поэтому образцу может потребоваться меньше времени,
  чтобы набрать оптимальный набор весов.
  Но слишком высокая скорость обучения может привести
  к очень крупным и недостаточно точным скачкам,
  которые помешают достижению оптимальных показателей.
  
  .......
  
  Процесс прямого распространения, функцию потери, обратное распространение
  и обновление весов,
  обычно называют одним периодом дискретизации (или epoch - эпохой).
  Программа будет повторять этот процесс фиксированное количество периодов
  для каждого тренировочного изображения.
  После того, как обновление параметров завершится
  на последнем тренировочном образце,
  сеть в теории должна быть достаточно хорошо обучена
  и веса слоёв настроены правильно.
  
  Тестирование
  
  Наконец, чтобы увидеть, работает ли СНС,
  мы берём другой набор изображений и ярлыков
  и пропускаем изображения через сеть.
  Сравниваем выходы с реальностью и смотрим, работает ли наша сеть.
  
  Как компании используют СНС
  
  Данные, данные, данные.
  Компании, у которых тонны этого шестибуквенного магического добра,
  имеют закономерное преимущество перед остальными конкурентами.
  Чем больше тренировочных данных,
  которые можно скормить сети,
  тем больше можно создать обучающих итераций,
  больше обновлений весов
  и перед уходом в продакшн, получить лучше обученную сеть.
  Facebook (и Instagram) могут использовать все фотографии
  миллиарда пользователей, которые у них сегодня есть,
  Pinterest - информацию из 50 миллиардов пинов,
  Google - данные поиска,
  а Amazon - данные о миллионах продуктов, которые ежедневно покупаются.
  И теперь вы знаете какое волшебство они используют в своих целях.
  
  Ремарка
  
  Хоть этот пост и должен быть хорошим началом для понимания СНС,
  это не полный обзор.
  К моментам, которые не обсуждались в этой статье,
  относятся нелинейные (nonlinear) слои и слои объединения (pooling),
  а также гиперпараметры сети,
  такие как размеры фильтров, шаги и отступы.
  Сетевая архитектура, пакетная нормализация, исчезающие градиенты,
  выпадение, методы инициализации, невыпуклая оптимизация,
  сдвиг, варианты функций потерь, расширение данных,
  методы регуляризации, машинные особенности,
  модификации обратного распространения
  и много других необсуждённых (пока ;-) тем.
  
  (Перевод Наталии Басс)
  
  .......
  
  //// Конец цитирования.
  
  Надеюсь, теперь аббревиатуры СНС или CNN,
  уже не будут выглядеть для Вас такими угрожающе непонятными,
  и при слове "свертка" "рука не будет сразу тянуться к пистолету".
  
  
  ========
  
  07.03.2024 10:27
  
  Чем машинное обучение отличается от статистики.
  В оглавление.
  
  Несмотря на то, что я лично придерживаюсь глубокого убеждения,
  что "машинное обучение", особенно по отношению к нейронкам,
  по своей сути является чем угодно,
  но не разделом/продолжением статистики,
  считаю нужным познакомить Вас и с противоположным мнением.
  Тем более, что из него можно многое почерпнуть в плане понимания того,
  как формировалась данная "дисциплина",
  и почему сейчас статистика безоговорочно "правит бал" в этой области.
  При том, что по факту работоспособными оказываются не "формулы",
  а найденные эмпирическим путем некие "полушаманские приемы",
  только очень приблизительно опирающиеся на "строгие математические методы":
  
  "Чем машинное обучение отличается от статистики на самом деле".
  Автор: factorial42
  https://habr.com/ru/companies/skillfactory/articles/570736/.
  1 авг 2021 в 20:34
  
  Автор оригинала: Matthew Stewart
  https://towardsdatascience.com/the-actual-difference-between-statistics-and-machine-learning-64b49f07ea3
  
  //// Начало цитирования
  
  К старту курса о машинном и глубоком обучении делимся мнением Мэтью Стюарта,
  соискателя степени кандидата наук в Гарварде,
  который, по собственному признанию,
  устал слышать эти дебаты, повторяющиеся в социальных сетях и в моём университете
  практически ежедневно.
  Они сопровождаются несколько туманными заявлениями.
  Автор считает, что в этом виноваты обе стороны дебатов
  и надеется, что к концу этой статьи у читателей
  будет более обоснованная позиция в отношении этих несколько расплывчатых терминов.
  Неопределённых утверждений, которые автор часто слышит на эту тему,
  есть несколько, а самое распространённое из них звучит приблизительно так:
  
   Основное различие между машинным обучением (далее - ML) и статистикой
   заключается в их назначении.
   Модели ML разработаны, чтобы делать максимально точные прогнозы.
   Статистические модели - для выводов о взаимосвязях между переменными.
  
  Хотя технически это верно, формулировка не даёт чёткого
  или удовлетворительного ответа.
  Чтобы вы представляли, насколько далеко зашла дискуссия,
  в журнале Nature Methods опубликована статья,
  где описывается разница между статистикой и ML.
  
  Аргументы
  
  Вопреки распространённому мнению ML существует десятилетиями.
  От него отказались из-за больших требований к вычислениям
  и ограничений вычислительной мощности того времени,
  однако в последние годы ML из-за большого количества данных
  после информационного взрыва переживает возрождение.
  
  Итак, если ML и статистика - синонимы,
  почему мы не видим, что кафедры статистики в каждом университете закрываются
  или преображаются в кафедры "машинного обучения"?
  Потому, что это не одно и то же.
  Основное отличие ML и статистики - в назначении,
  однако утверждение о том,
  что ML направлено на точные предсказания,
  тогда как статистические модели предназначены для выводов,
  практически бессмысленно,
  если вы не разбираетесь в этих понятиях.
  Мы должны понимать, что статистика и статистические модели
  - это не одно и то же.
  
   Статистика - это математическое исследование данных.
   Если у вас нет данных, вы не можете заниматься статистикой.
  
   Статистическая модель - это модель для данных,
   используемая либо чтобы сделать вывод о взаимосвязях внутри них,
   либо чтобы создать модель, способную предсказывать будущие значения.
  
  Часто эти два понятия идут рука об руку, поэтому проясним две вещи:
  
   Чем статистика отличается от ML?
  
   Чем статистические модели отличаются от ML?
  
  Существует множество статистических моделей,
  которые могут прогнозировать,
  но их прогнозы не отличаются точностью.
  Точно так же модели ML дают различные степени интерпретируемости,
  от хорошо интерпретируемой регрессии лассо
  до непроницаемых нейронных сетей,
  но последние жертвуют интерпретируемостью ради предсказательной силы.
  Не вдаваясь в детали,
  это достаточно хороший ответ для большинства людей,
  однако иногда такое объяснение оставляет наедине
  с непониманием различий между ML и статистическим моделированием.
  Посмотрим на пример с линейной регрессией.
  
  Статистические модели против ML
  
  Кажется, сходство методов статистического моделирования и ML
  заставило людей предполагать, что это синонимы.
  Наиболее очевиден пример линейной регрессии,
  она, вероятно, является основной причиной недопонимания.
  
  Линейная регрессия - статистический метод,
  мы можем обучить линейный регрессор и получить тот же результат,
  что и статистическая регрессионная модель
  минимизации квадратичной ошибки между точками данных.
  В одном случае делается то, что называется "обучением" модели,
  оно предполагает использование подмножества данных,
  и мы не знаем, насколько хорошо будет работать модель,
  пока не "протестируем" её на тестовом наборе данных,
  которых не было во время обучения.
  Здесь задача ML - получить наилучшие показатели на тестовом наборе.
  
  В случае статистической модели мы находим прямую,
  которая минимизирует среднеквадратичную ошибку по всем данным,
  предполагая, что данные являются линейным регрессором
  с добавлением случайного шума,
  который обычно имеет гауссовский характер.
  В обучающем и тестовом наборах нет необходимости.
  
  Во многих случаях, особенно в исследованиях
  (в примере с датчиком ниже),
  смысл модели заключается в том,
  чтобы охарактеризовать связь между данными и нашей итоговой переменной,
  а не делать прогнозы о будущих данных.
  Эта процедура называется статистическим выводом,
  в отличие от предсказания.
  Однако мы всё ещё можем работать с этой моделью в целях прогнозирования,
  прогноз также может оказаться основной целью,
  но способ оценки модели не будет содержать тестовый набор,
  вместо набора он будет содержать оценку значимости
  и надёжности параметров модели.
  
  Цель машинного обучения с учителем - получение модели,
  которая может делать повторяющиеся предсказания.
  Как правило, нам не важна интерпретируемость модели,
  хотя лично я рекомендую всегда тестировать её,
  чтобы убедиться, что предсказания модели действительно небессмысленные.
  
   Машинное обучение - о результатах и, наверное, о работе в компании,
   где ценность характеризуется исключительно показателями.
  
   Статистическое моделирование более направлено
   на поиск взаимосвязей между переменными и значимости этих взаимосвязей,
   а также на прогнозирование.
  
  Чтобы на конкретном примере показать разницу между этими двумя процедурами,
  я приведу личный пример.
  Я - эколог и работаю в основном с сенсорными данными.
  Если я пытаюсь доказать, что датчик способен реагировать
  на определённый вид стимулов (например, на концентрацию газа),
  то, чтобы определить, является ли реакция сигнала статистически значимой,
  воспользуюсь статистической моделью.
  
  Я бы также попытался понять эту взаимосвязь и проверить её повторяемость,
  чтобы точно охарактеризовать реакцию датчика и на основе этих данных
  сделать выводы.
  Есть факты, которые возможно проверить:
  является ли отклик линейным,
  можно ли отнести его к концентрации газа,
  а не к случайному шуму в датчике и т. д.
  
  Напротив, я могу получить массив из 20 различных датчиков
  и использовать его, чтобы попытаться предсказать реакцию моего нового датчика.
  Это странно, если вы немного знаете о сенсорах,
  но сейчас это важная область экологической науки.
  
  Модель с 20 различными переменными,
  предсказывающая результат работы датчика,
  явно имеет дело с предсказанием,
  и я не ожидаю, что она будет особенно интерпретируемой.
  Эта модель из-за нелинейности
  - результата химической кинетики
  и взаимосвязи между физическими переменными и концентрацией газа,
  вероятно, будет чем-то экзотичнее статистической модели,
  например нейронной сетью.
  Хотелось бы, чтобы модель можно было понять,
  но я буду вполне доволен, пока возможны точные прогнозы.
  
  Если я пытаюсь доказать взаимосвязь переменных
  до степени статистической значимости,
  чтобы опубликовать её в научной статье,
  то воспользуюсь статистической моделью,
  а не моделью ML,
  потому что меня больше волнует взаимосвязь переменных,
  а не прогнозирование.
  Составление прогнозов всё равно может быть важным,
  но отсутствие интерпретируемости большинства алгоритмов ML
  затрудняет доказательство взаимосвязей в данных.
  На самом деле это большая проблема в академических исследованиях,
  когда учёные используют алгоритмы без их понимания
  и получают спекулятивные выводы.
  
  Должно быть ясно, что эти два подхода различаются целью,
  несмотря на использование схожих средств её достижения.
  При оценке алгоритма ML для подтверждения точности
  используется тестовый набор,
  в то время как для статистической модели анализ параметров регрессии
  с помощью доверительных интервалов,
  тестов на значимость и других тестов
  может использоваться для оценки легитимности модели.
  Поскольку эти методы дают одинаковый результат,
  легко понять,
  откуда происходит предположение, что они одинаковы.
  
  Статистика против ML - пример линейной регрессии
  
  Я думаю, заблуждение довольно хорошо отражено
  в якобы остроумной картинке, сравнивающей статистику и ML.
  
  Однако смешение двух терминов только из-за того,
  что они оба используют одни и те же фундаментальные понятия вероятности,
  неоправданно.
  Если утверждать, что машинное обучение
  - это просто превознесённая статистика,
  также можно сделать следующие утверждения:
  
   Физика - это просто превознесённая математика.
  
   Зоология - это просто превознесённое коллекционирование марок.
  
   Архитектура - это просто превознесённое строительство замков из песка.
  
  Эти заявления нелепы,
  все они основаны на смешении терминов на основе схожих идей.
  
  Физика построена на математике,
  это применение математики для понимания явлений.
  Физика также включает аспекты статистики,
  и современная форма последней обычно строится
  на основе теории множеств Цермело - Френкеля
  в сочетании с теорией мер для создания вероятностных пространств.
  У них много общего,
  потому что они исходят из одного корня и применяют схожие идеи
  для достижения логического завершения.
  Аналогично архитектура и строительство песчаных замков,
  вероятно, имеют много общего,
  хотя я не архитектор и не могу обосновать объяснения,
  но это явно не одно и то же.
  
  Прежде чем продолжить,
  я кратко проясню ещё два распространённых заблуждения по нашему вопросу.
  Первое: ИИ не отличается от ML,
  а наука о данных - это просто статистика.
  Спорить с аргументами трудно, поэтому всё пройдёт быстро.
  
  Наука о данных - это, по сути,
  применяемые к данным разного размера вычислительные и статистические методы.
  К ним можно отнести исследовательский анализ данных,
  когда данные изучаются и визуализируются,
  чтобы помочь учёному лучше понять их и сделать из них выводы.
  
  Наука о данных также включает преобразование сырых данных в форму,
  пригодную для анализа,
  а также предварительную обработку данных,
  предполагая определённый уровень знания компьютерных наук,
  поскольку она включает программирование, установку соединений и конвейеров
  между базами данных, веб-серверами и т. д.
  
  Для работы со статистикой необязательно использовать компьютер,
  но без него невозможно заниматься наукой о данных.
  Вы можете ещё раз убедиться,
  что, хотя последняя работает со статистикой,
  это явно не одно и то же.
  
  Точно так же машинное обучение - не то же самое, что искусственный интеллект,
  на самом деле ML - подмножество ИИ.
  Это очевидно:
  мы обучаем машину делать обобщающие выводы о типе данных
  на основе предыдущих данных.
  
  ML основано на статистике
  
  Прежде чем мы обсудим, чем различаются статистика и ML,
  поговорим об их сходстве.
  Мы уже слегка касались этого вопроса в предыдущих разделах.
  
  ML построено на основе статистики.
  Это очевидно,
  //// А мне вот нет.
  //// На мой взгляд, ML - это определенные технические решения,
  //// которые даже приблизительно не описываются "статистикой".
  //// "Статистику" используют для оценки РЕЗУЛЬТАТОВ работы этих решений,
  //// а не для их выбора/проектирования/совершенствования.
  //// На мой инженерный взгляд, это принципиальный момент.
  поскольку оно связано с данными,
  а данные должны быть описаны с помощью статистической базы.
  //// Большие языковые модели разве построены на "статистической базе" текстов?
  Однако механика статистики,
  расширяемая в термодинамику для большого числа частиц,
  также построена на статистике.
  Понятие давления и температуры на самом деле о статистике.
  Вот почему невозможно описать температуру или давление молекулы,
  это чепуха.
  
  Температура - проявление средней выделяемой при столкновениях молекул энергии.
  В случае большого их количества логично, что мы можем описать температуру.
  Вы согласитесь, что термодинамика и статистика - это одно и то же?
  Нет, термодинамика использует статистику,
  чтобы помочь нам понять взаимодействие работы и тепла
  в виде транспортных явлений.
  
  Термодинамика строится не только на статистике,
  но и на многих других элементах;
  ML опирается на большое количество областей математики и компьютерных наук:
  
   Теория ML из математики и статистики.
  
   Алгоритмы ML из таких областей,
   как оптимизация, матричная алгебра, интегральное исчисление.
  
   Реализации ML на основе концепций компьютерных наук и инженерии:
   трюки ядра, хеширование признаков).
  
  Когда человек начинает программировать на Python,
  берёт библиотеку sklearn и использует её алгоритмы,
  многие понятия абстрагируются,
  так что различия увидеть трудно.
  Здесь абстракция привела к невежеству в смысле содержания ML.
  
  Статистическая теория обучения - это статистическая основа ML
  //// Это ключевая догма во всем ML,
  //// которая, на мой взгляд, по факту УЖЕ "контрпродуктивна",
  //// и, как минимум, не может даже "постфактум" объяснить
  //// существующие достижения "нейронаук".
  //// Возможно, в начале "большого пути" "статистическая теория обучения"
  //// давала хоть какие-то ориентиры в ML,
  //// но сегодня это далеко не так.
  
  Основное различие между статистикой и машинным обучением
  - в том, что статистика основана исключительно
  на вероятностных пространствах
  и вся выводится из теории множеств;
  она о том, как группировать числа в категории (подмножества),
  а затем накладывать на это множество меру,
  чтобы гарантировать,
  что суммарное значение всех чисел равно 1.
  Это называется вероятностным пространством.
  
  Статистика не делает никаких других предположений,
  кроме этих понятий множеств и мер.
  Поэтому, когда мы задаём вероятностное пространство
  в строгих математических терминах,
  мы задаём три вещи,
  то есть вероятностное пространство,
  которое обозначается (?, F, P),
  состоит из трёх компонентов:
  
   Пространства выборок,
   то есть множества всех возможных исходов.
  
   Множества событий, F,
   где каждое событие - это множество исходов с любым их количеством.
  
   Назначения вероятностей событиям,
   P; то есть функция от событий к вероятностям.
  
  ML базируется на теории статистического обучения,
  она, в свою очередь, основывается на аксиоматическом понятии
  вероятностных пространств.
  Эта теория разработана в 1960-х годах
  и развивает традиционную статистику.
  Категорий ML несколько,
  я сосредоточусь на обучении с учителем,
  которое проще всего объяснить,
  хотя, погружённое в математику, оно всё равно несколько эзотерично.
  
  Статистическая теория обучения в случае обучения с учителем говорит нам,
  что у нас есть набор данных S = {(xi, yi)}.
  Иными словами, есть набор данных из n точек данных,
  каждая из которых описывается другими значениями (признаками),
  представленными x, эти признаки отображаются определённой функцией,
  чтобы дать значения y.
  
  То есть мы знаем, что у нас есть эти данные,
  цель - найти функцию,
  которая отображает значения x в значения y.
  Множество всех возможных функций,
  которые могут описывать данное отображение,
  называется пространством гипотез.
  
  Чтобы найти функцию,
  мы должны дать алгоритму способ "научиться" тому,
  как эффективнее подойти к решению проблемы.
  Этот способ называется функцией потерь.
  Итак, для каждой гипотезы (предполагаемой функции),
  которая у нас есть,
  мы должны оценить, как эта функция работает,
  посмотрев на значение её ожидаемого риска по всем данным.
  
  Ожидаемый риск - это, в сущности, сумма функции потерь,
  умноженная на вероятностное распределение данных.
  Если бы мы знали совместное распределение вероятностей отображения,
  то легко нашли бы наилучшую функцию.
  Однако в общем случае распределение неизвестно,
  поэтому лучший вариант
  - предположить самую подходящую функцию,
  а затем эмпирически решить,
  является ли эта функция потерь лучшей.
  Это называется эмпирическим риском.
  
  Затем мы можем сравнивать различные функции
  и искать гипотезу с минимальным ожидаемым риском,
  то есть гипотезу, которая даёт минимальное значение
  (называемое инфимумом)
  из всех гипотез по данным.
  //// Да нет перебора всех гипотез. Есть "трансформация" какой-то функции,
  //// ВКЛЮЧАЮЩАЯ трансформацию и "пространства" и "представления".
  
  Однако алгоритм имеет тенденцию обманывать,
  минимизировать функцию потерь путём чрезмерной подгонки к данным
  [переобучения],
  поэтому после обучения функции на обучающем наборе
  эта функция проверяется на тестовом наборе данных,
  которых не было в обучающем наборе.
  Природа определения ML вводит проблему переобучения
  и обосновывает необходимость обучающего и тестового множества
  при выполнении машинного обучения.
  В статистике это необязательно:
  мы не пытаемся минимизировать эмпирический риск.
  Алгоритм обучения, который выбирает функцию,
  минимизирующую эмпирический риск,
  называется эмпирической минимизацией риска.
  
  Примеры: линейная регрессия
  
  В традиционном её толковании
  мы пытаемся минимизировать ошибку между некоторыми данными,
  чтобы найти функцию,
  которая может описывать данные.
  Здесь обычно используется средняя квадратичная ошибка.
  Мы возводим её в квадрат,
  чтобы положительные и отрицательные ошибки не нивелировали друг друга.
  //// Но при этом считаем ошибки независимыми и "линейными".
  Затем мы можем решить задачу нахождения коэффициентов регрессии
  в закрытой форме.
  
  Если взять функцию потерь как среднюю квадратичную ошибку
  и выполнить эмпирическую минимизацию риска,
  как утверждает теория статистического обучения,
  мы получим тот же результат,
  что и традиционный линейный регрессионный анализ.
  Так происходит просто потому,
  что эти решения эквивалентны,
  //// Ни фига не "эквивалентны", а похожи в простейших случаях.
  точно так же, как выполнение метода максимального правдоподобия
  на этих же данных даст вам тот же результат.
  
  Максимальное правдоподобие имеет другой способ достижения той же цели,
  но никто не будет спорить и говорить,
  что максимальное правдоподобие
  - это то же самое, что и линейная регрессия.
  Простейший случай явно не помогает дифференцировать эти методы.
  //// Вот с этим согласен.
  
  Ещё один важный момент:
  в традиционных статистических подходах
  нет понятия обучающего и тестового наборов,
  но мы используем метрики,
  которые помогают оценить работу модели;
  процедура оценки отличается,
  но оба метода способны дать нам статистически надёжные результаты.
  
  Другой момент:
  традиционный статистический подход дал нам оптимальное решение,
  потому что оно имело закрытую форму.
  Метод не проверял другие гипотезы и не сходился к решению,
  тогда как метод ML пробовал множество моделей
  и сходился к окончательной гипотезе,
  совпадающей с результатом алгоритма регрессии.
  
  Если бы мы использовали другую функцию потерь,
  результаты не сошлись бы.
  С кусочно-линейной потерей
  (которая не дифференцируются с помощью стандартного градиентного спуска,
  поэтому потребовались бы другие методы,
  такие как проксимальный градиентный спуск),
  то результаты окажутся другими.
  
  Окончательное сравнение можно провести, рассмотрев смещение модели.
  Можно попросить алгоритм ML проверить линейные модели,
  а также полиномиальные модели, экспоненциальные модели и т. д.,
  чтобы увидеть, подходят ли эти гипотезы к данным лучше,
  учитывая нашу априорную функцию потерь.
  Это сродни увеличению пространства релевантных гипотез.
  
  В традиционном статистическом смысле мы выбираем одну модель
  и можем оценить её точность,
  но не можем автоматически заставить её выбрать лучшую модель
  из 100 различных.
  Очевидно, что в модели всегда присутствует погрешность
  из-за выбранного алгоритма.
  Она неизбежна,
  поскольку поиск произвольной оптимальной для набора данных функции
  - NP-полная задача.
  
  ML или статистика, что лучше?
  
  На самом деле это глупый вопрос.
  Что касается статистики и ML,
  то машинное обучение не существовало бы без статистики,
  но оно полезно в современную эпоху.
  Сравнение машинного обучения и статистических моделей немного сложнее.
  Если вы просто хотите создать алгоритм,
  с высокой точностью прогнозирующий цены на жильё,
  или использовать данные при определении вероятности заражения человека
  определёнными видами заболеваний,
  то, скорее всего, лучше применять машинное обучение.
  Если вы пытаетесь доказать взаимосвязь переменных или сделать выводы из данных,
  то лучшим подходом, скорее всего, окажется статистическая модель.
  
  Если у вас нет большого опыта в статистике,
  вы всё равно можете изучать ML и использовать его,
  предлагаемая библиотеками машинного обучения абстракция
  делает их довольно простыми для использования неспециалистом.
  Но вам всё равно необходимо некоторое понимание
  лежащих в их основе статистических идей,
  чтобы предотвратить перебор моделей и получение ошибочных выводов.
  
  Где узнать больше?
  
  Если вы заинтересованы в более глубоком изучении
  статистической теории обучения,
  существует множество книг и университетских курсов по этой теме.
  Вот несколько курсов лекций, которые я рекомендую (англ.):
  
   MIT. Статистическая теория обучения и её приложения.
  
   Университет Иллинойса. Статистическая теория обучения.
  
  Если хочется углубиться в вероятностные пространства,
  то я предупреждаю вас, что это довольно тяжёлая математика,
  обычно она рассматривается только на курсах статистики для выпускников.
  Вот несколько хороших источников по этой теме (англ.):
  
   Университет Йювяскюля. Введение в теорию вероятности.
  
   Университет Квинсленда. Краткое введение в вероятность.
  
  Эта статья не только показывает разницу между ML и статистикой,
  но и напоминает, что достижения будущего
  часто скрыты в решениях, которые в прошлом заводили в тупик.
  Над изобретателем булевой логики смеялись,
  а глубокие нейронные сети не находили признания десятилетиями,
  но сегодня именно они во многом помогают нам...
  
  ......
  
  //// И ни одного комментария. Ни у кого нет возражений.
  //// Или каких-то противоречивых мыслей/гипотез.
  
  //// Конец цитирования.
  
  Ну что тут скажешь?
  Что переть "против мэйнстрима" глупо и "небезопасно",
  и, по большому счету, бессмысленно.
  Пока прогресс в развитии ИИ-систем сильно не притормозиться,
  а признаков такого не наблюдается, скорее наоборот, все только разгоняется,
  оспаривать "священные каноны" вряд ли полезно для собственного здоровья.
  
  Так что придется пока заниматься своей работой
  с полным пониманием того, насколько это все "не ко времени"
  и уж точно "не ко двору".
  
  ========
  
  07.04.2024 17:57
  
  Батчи в обучении и инференсе нейросетей простыми словами.
  В оглавление.
  
  Решил разъяснить для себя разницу между использованием батчей (минипакетов)
  на этапе обучения нейросетей и во время инференса, т.е. использования.
  А то как-то всем все понятно, а у меня каждый раз при их упоминании
  возникают какие-то "непонятки".
  Вот и решил сегодня их прояснить, взяв консультацию у Copilot.
  
  07.04.2024 16:41
  
  ......
  
  //// Хорошо, Copilot. У меня есть несколько, надеюсь, простых вопросов
  //// относительно обучения и работы нейросетей.
  //// Первый вопрос такой:
  //// в методе стохастического градиентного спуска используется такое понятие
  //// как размер батча.
  //// Можете описать своими словами, на что он влияет,
  //// и какие есть рекомендации по его выбору?
  
  > Copilot 16:47
  
  > Конечно, Андрей.
  > Размер батча в методе стохастического градиентного спуска (SGD)
  > - это количество обучающих примеров,
  > которое используется для одного обновления модели.
  > Вот основные моменты, на которые он влияет:
  
  >  Обобщение:
  > Меньшие батчи могут способствовать лучшему обобщению,
  > так как они вносят больше "шума" в процесс обучения.
  
  >  Память:
  > Большие батчи требуют больше памяти,
  > что может быть ограничивающим фактором на некотором оборудовании.
  
  >  Скорость обучения:
  > Большие батчи могут ускорить процесс обучения,
  > так как модель обновляется реже,
  > но каждое обновление требует больше вычислений.
  
  >  Стабильность:
  > Большие батчи могут привести к более стабильной сходимости,
  > но также могут "застрять" в локальных минимумах.
  
  > Что касается рекомендаций по выбору размера батча,
  > то они могут варьироваться в зависимости от конкретной задачи
  > и доступных ресурсов.
  > Вот несколько общих советов:
  
  >  Экспериментирование:
  > Начните с небольшого размера батча и постепенно увеличивайте его,
  > наблюдая за изменениями в производительности модели.
  
  >  Правило большого пальца:
  > Часто используют степени двойки (например, 32, 64, 128),
  > так как это может быть более эффективно с точки зрения вычислений
  > на многих современных архитектурах.
  
  >  Ресурсы:
  > Выбирайте размер батча, который оптимально использует доступную память,
  > не приводя к переполнению.
  
  > Надеюсь, это поможет вам лучше понять влияние размера батча
  > на процесс обучения нейросетей!
  > Если у вас есть еще вопросы, с удовольствием на них отвечу.
  
  //// Спасибо, Copilot.
  //// Примерно так это я и представлял,
  //// хотя не очень понимаю, почему больший размер батча требует большей памяти.
  //// Я представляю это так, что при обработке каждого примера
  //// ошибка просто накапливается,
  //// и вроде как, не требуется отдельное хранение всех ошибок.
  //// Что я не правильно понимаю в методе стохастического градиентного спуска?
  
  > Copilot 16:54
  
  > Ваше замечание о накоплении ошибки верно, но важно понимать,
  > что в процессе обучения нейросети каждый пример из батча
  > должен быть загружен в память для вычисления градиентов.
  > Вот почему больший размер батча требует больше памяти:
  
  >  Хранение данных:
  > Каждый пример из батча содержит данные (например, изображения, текст),
  > которые нужно хранить в памяти во время обработки.
  
  >  Градиенты:
  > Для каждого примера вычисляются градиенты по весам модели,
  > и эти градиенты также занимают память.
  
  >  Параллелизм:
  > Современные вычислительные системы часто обрабатывают
  > несколько примеров параллельно,
  > что увеличивает требования к памяти.
  
  > Когда мы говорим о "накоплении ошибки",
  > на самом деле имеется в виду накопление градиентов ошибки для всего батча
  > перед обновлением весов.
  > Но до этого момента каждый пример и соответствующие ему градиенты
  > должны быть где-то сохранены,
  > и это "где-то" - это оперативная память.
  
  > Надеюсь, это проясняет ситуацию!
  > Если у вас есть еще вопросы, буду рад помочь.
  
  //// Спасибо, Copilot.
  //// Но я все равно не очень понимаю, зачем хранить все градиенты
  //// для всех примеров батча.
  //// Мне представляется, что вычислив градиенты для первого примера
  //// и запомнив их, можно градиенты для следующих примеров
  //// просто складывать с градиентами предыдущего примера,
  //// и таким образом просто их накапливать в тех же ячейках памяти,
  //// а не хранить их все в памяти.
  //// Опять я что-то не так понимаю в SGD?
  
  > Copilot 17:02
  
  > Вы абсолютно правы, Андрей.
  > В методе стохастического градиентного спуска (SGD)
  > действительно можно накапливать градиенты по мере обработки каждого примера,
  > и это часто делается в практических реализациях для экономии памяти.
  > Этот процесс называется градиентным накоплением.
  
  > Вот как это работает:
  
  > 1. Инициализируются градиенты весов модели как нулевые.
  
  > 2. Для каждого примера в батче:
  
  >  Вычисляются градиенты ошибки.
  
  >  Эти градиенты суммируются с уже накопленными градиентами.
  
  > 1. После обработки всех примеров в батче,
  > накопленные градиенты используются для обновления весов модели.
  
  > Таким образом, не требуется хранить отдельные градиенты для каждого примера,
  > что действительно экономит память.
  > Однако, когда мы говорим о требованиях к памяти для больших батчей,
  > мы также имеем в виду не только градиенты,
  > но и саму необходимость хранения входных данных каждого примера в батче,
  > поскольку все они должны быть доступны для вычисления градиентов.
  
  > Спасибо за ваш вопрос, он помогает уточнить важные аспекты работы SGD.
  
  .....
  
  //// Спасибо, Copilot.
  //// Можно считать, что с этим вопросом разобрались.
  //// Но я часто встречаю упоминание "размер батча" в текстах,
  //// которые относятся уже к инференсу нейросетей, а не их обучению.
  //// И это вызывает у меня полное недоумение.
  //// Что это за батчи на инференсе, что означают, как они работают,
  //// какие есть по ним рекомендации?
  //// Вот сколько сразу вопросов.
  
  > Copilot 17:09
  
  > Отличный вопрос, Андрей.
  > Давайте разберёмся.
  
  > Размер батча на инференсе относится к количеству примеров данных,
  > которые обрабатываются за один раз
  > во время использования нейросети после её обучения.
  > Вот основные моменты:
  
  >  Эффективность:
  > Обработка данных батчами может быть более эффективной,
  > чем обработка каждого примера по отдельности,
  > особенно на GPU или других параллельных вычислительных устройствах.
  
  >  Скорость:
  > Большие батчи могут ускорить процесс инференса,
  > так как позволяют лучше использовать параллелизм вычислительных ресурсов.
  
  >  Требования к памяти:
  > Как и при обучении, большие батчи требуют больше оперативной памяти,
  > что может быть ограничивающим фактором.
  
  > Рекомендации по размеру батча на инференсе:
  
  >  Тестирование:
  > Проведите тесты с разными размерами батча,
  > чтобы найти оптимальный баланс между скоростью и потреблением памяти.
  
  >  Аппаратные ресурсы:
  > Учитывайте ограничения вашего оборудования;
  > на некоторых системах большие батчи могут не поместиться в память.
  
  >  Потребности приложения:
  > Если требуется низкая задержка (например, для реального времени),
  > предпочтительнее могут быть меньшие батчи.
  
  > Итак, размер батча на инференсе
  > - это способ оптимизации процесса использования нейросети,
  > который нужно подбирать индивидуально для каждой задачи
  > и конкретной вычислительной среды.
  
  > Надеюсь, это ответило на ваши вопросы!
  > Если есть ещё что-то, с чем я могу помочь, пожалуйста, спрашивайте.
  
  //// О, да. Теперь все понятно.
  //// Спасибо, Copilot.
  //// Просто в материалах, которые я прорабатываю о таких мелочах
  //// обычно забывают упомянуть, мол, и так все ясно.
  //// Теперь мне понятно,
  //// что батчи на инференсе это способ распараллеливания работы
  //// по разным данным с целью получения разных результатов,
  //// А батчи в SGD - это, наоборот,
  //// способ как "сжатия"/обработки нескольких данных
  //// для получения одного "результата".
  //// Формулировки, конечно, весьма корявые,
  //// но так проще их уложить в памяти и понимании.
  
  > Copilot 17:18
  
  > Именно так, Андрей.
  > Вы очень хорошо сформулировали основную идею использования батчей
  > в разных контекстах.
  > Это действительно помогает лучше понять и запомнить,
  > как работают батчи в обучении и инференсе нейросетей.
  
  ......
  
  //// Спасибо, Copilot. Но может быть Вам будет интересно представить графически
  //// эту разницу батчей в различных контекстах.
  //// Я не настаиваю, задача очень не простая,
  //// но может быть Вам интересны такие задачки.
  //// Если, все-таки попробуете такое представить,
  //// то, пожалуйста, не забывайте о своем логотипе и формате JPG.
  
  > Copilot 17:24
  > Я попробую создать это.
  > "Графическое изображение разницы батчей в обучении и инференсе нейросетей
  > с логотипом Copilot в формате JPG"
  > Выполнено с помощью Designer. На платформе DALL"E 3.
  
  //// Спасибо, Copilot. Очень интересно у Вас получилось и с хорошим юмором.
  
  .......
  
  "Графическое изображение разницы батчей в обучении и инференсе нейросетей
  с логотипом Copilot в формате JPG".
  Создано с помощью искусственного интеллекта Copilot на платформе DALL" E 3.
  
Графическое изображение разницы батчей в обучении и инференсе нейросетей с логотипом Copilot в формате JPG:  OIG1.HI4ejEUux_qxsbEcJSQr.jpg Графическое изображение разницы батчей в обучении и инференсе нейросетей с логотипом Copilot в формате JPG:  OIG1.BB_GZ0TpuPob4bVWGKqC.jpg
Графическое изображение разницы батчей в обучении и инференсе нейросетей с логотипом Copilot в формате JPG:  OIG1.KYsXGLZIkRrQOAhAFEpr.jpg Графическое изображение разницы батчей в обучении и инференсе нейросетей с логотипом Copilot в формате JPG:  OIG1.4EAFByxq3PVflGjbXWgl.jpg
  
  
  ========
  
  07.06.2024 12:42
  
  Еще раз о векторизации текста еще более простыми словами.
  В оглавление.
  
  Еще один небольшой текст для закрепления понимания
  темы векторизации текста, так сказать более общего подхода,
  включающего мои любимые эмбеддинги:
  
  "Что такое векторизация текста в NLP и какая она бывает: One-hot encoding, Bag of words, TF-IDF, Word2Vec, BERT и другие".
  Автор: troimc (Alexander Troitsky)
  https://habr.com/ru/articles/820159/.
  7 июн 2024 в 10:03
  
  //// Начало цитирования.
  
  Всем привет! Вдохновившись прикольной и понятной статьей на английском языке,
  https://neptune.ai/blog/vectorization-techniques-in-nlp-guide
  и не найдя сходу чего-то похожего в русскоязычном сегменте интернета,
  решил написать о том, как обрабатывается текст перед тем,
  как на нем начинают применять разные модели ИИ.
  Эту статью я напишу нетехническим языком,
  потому что сам не технарь и не математик.
  Надеюсь, что она поможет узнать о NLP тем,
  кто не сталкивается с AI в продуктах на ежедневной основе.
  
  О чем эта статья:
  
  Что такое векторизация текста и как она развивалась
  
  Зачем она нужна и где применяется
  
  Какие бывают методы векторизации и какие у них преимущества и недостатки
  
  Что такое векторизация (и немного истории)
  
  Векторизация текста - это процесс преобразования текста в числовой формат,
  который могут понимать и обрабатывать алгоритмы машинного обучения.
  Текстовые данные по своей природе являются категориальными
  и неструктурированными,
  из-за этого обучать модели ИИ прямо на тексте - нельзя,
  их надо векторизовать.
  
  Векторизация текста как концепция начала развиваться после Второй Мировой войны
  и использовалась в основном для поиска информации и перевода текста.
  
  Один из ключевых моментов в развитии технологии векторизации текста
  - создание модели векторного пространства (vector space model, VSM) в 1970-х годах,
  которая позволяла представлять текстовые документы
  как векторы в многомерном пространстве.
  Эта модель стала основой для многих методов информационного поиска
  и начала использоваться для анализа и сравнения документов.
  
  Рис. ...
  
  С появлением интернета и увеличением доступных текстовых данных в 1990-х и 2000-х годах,
  интерес к векторизации текста и развитию методов NLP значительно вырос.
  Это привело к разработке более продвинутых методов,
  таких как TF-IDF (Term Frequency-Inverse Document Frequency),
  который позволяет лучше учитывать контекст и семантическое значение слов.
  
  Почти все современные векторайзеры текста были изобретены внутри компании Google
  - это Word2Vec и BERT.
  Они умеют преобразовывать слова в цифры,
  которые отлично описывают значения и контекст использования этих слов.
  
  Где применяются векторайзеры?
  
  Ответ простой - почти везде, где текст встречается с ИИ.
  У всех текстовых моделей есть так называемые "тело" и "голова".
  Если говорить очень упрощённо, то тело - это векторизация,
  а голова - это обучение какой-то модели на результатах тела.
  
  Именно поэтому векторайзеры очень важны
  - чем лучше вы передадите суть слова в числовом выражении,
  тем лучше потом обучится модель.
  
  Если говорить о бизнес применении,
  то вот небольшой список из примеров где используется NLP,
  а значит и векторизация:
  
  ......
  
  Разбираемся в том какие бывают методы векторизации текста
  
  Давайте попробуем на примерах разобраться в том,
  как работают разные методы векторизации на примере двух предложений:
  
  Лодка села на мель
  
  Девушка села на стул
  
  One-hot encoding
  
  Самый просто и примитивный метод,
  результатом которого является матрица с единицами и нулями внутри.
  1 говорит о том, что какой-то текстовый элемент
  встречается в предложении (или документе).
  0 говорит о том, что элемент не встречается в предложении.
  Давайте разберемся на примере двух предложений выше:
  
  Сначала нужно получить список всех слов, встречаемых в наших предложениях.
  В нашем случае это ['Лодка', 'Девушка', 'села', 'на', 'мель', 'стул']
  
  Составляем матрицы для каждого предложения.
  
  Рис. ...
  
  Рис. ...
  
  Собственно, эти матрицы
  - это и есть векторизованное значение этих предложений.
  Как вы видите, чтобы описать всего 4 слова,
  у нас получились довольно большие и разряженные матрицы
  (разряженные значит, что внутри больше нулей, чем единиц).
  Каждая такая матрица занимает много места,
  поэтому для больших текстов этот метод становится неэффективным.
  
  Кроме того, метод не описывает:
  
  Как часто встречается слово.
  
  Контекст этого слова.
  
  Bag of words
  
  По сути это тот же самый one-hot encoding,
  но тут матрицы схлопываются
  и каждое предложение будет представлять из себя одну строку,
  а не большую матрицу.
  Таким образом Bag of words имеет те же минусы, что one-hot encoding,
  но занимает меньше места.
  Чтобы получить Bag of words можно сложить столбики каждой матрицы
  из one-hot encoding в одну строку, получится:
  
  Рис. ...
  
  TF-IDF
  
  TF-IDF - это уже более сложная штука, чем bag of words или one-hot encoding,
  но всё еще относится к тому, что можно описать простой экселькой.
  Состоит этот метод векторизации из двух компонентов:
  Term Frequency (частотность слова в документе)
  и Inverse Document Frequency (инверсия частоты документа).
  В TF-IDF редкие слова и слова, которые встречаются в большинстве документов
  (в нашем случае предложений), несут мало информации,
  а значит им дается небольшой вес внутри вектора.
  
  TF-IDF = TF * IDF
  
  TF = количество раз когда слово встретилось в предложении или документе
  деленное на количество слов (токенов) в предложении или документе
  
  IDF = натуральный логарифм от количества документов
  деленное на количество документов с каким-то словом.
  
  Давайте разберем пример с нашими двумя предложениями:
  
  Рис. ...
  
  И в итоге получаем векторы у каждого предложения.
  В данном примере метод посчитал слова "Лодка", "мель" значимыми
  в первом предложении,
  и слова "Девушка", "стул" значимыми во втором предложении.
  Словам "села", "на" был присвоен нулевой вес,
  потому что они встречались в обоих предложениях.
  
  Рис. ...
  
  Как я писал ранее, этот метод векторизации
  всё ещё считается относительно простым.
  Применять его можно как baseline при решении какой-то NLP задачи,
  а также для простых задач бинарной классификации.
  Например, он вполне может подойти для поиска негатива в отзывах.
  Также у TF-IDF есть настраиваемые параметры длины
  анализируемой части предложения и вместо слов "Девушка" и "села"
  можно сразу искать в тексте словосочетание "Девушка села",
  тогда TF-IDF будет худо-бедно воспринимать контекст.
  Но все равно базово он воспринимает контекст хуже, чем методы векторизации,
  о которых мы будем говорить далее.
  
  Word Embeddings (Word2Vec)
  
  Word2Vec - это изобретение компании Google,
  которое представили широкой публике в 2013 году.
  Суть его заключается в том, что нейронная сетка переваривает
  большое количество текста и на основании него создает векторы
  для каждого слова.
  Эти векторы - это на самом деле веса обученной нейронной сетки,
  которая либо берет на вход какое-то слово
  и пытается предсказать ближайшие окружающие его слова
  (это называется Skip-Gram),
  либо наоборот: берет на вход окружающие слова,
  а на выходе предсказывает загаданное слово.
  
  Если взять веса этой нейронки,
  привести в двухмерное пространство
  и разместить на графике разные рандомные слова,
  то окажется, что "пёс" и "собака" будут стоять рядом.
  А кошка будет ближе ко льву.
  То же самое с глаголами.
  
  Рис. ...
  
  На выходе у Word2Vec каждое слово имеет какой-то длинный вектор чисел,
  что-то типа [0.12, -0.54, 0.84, ...*ещё 200 чисел*..., 0.99].
  Вектор чисел каждого слова не зависит от контекста этого слова
  - вектор фиксирован.
  //// Вот самое главное, что нужно знать про Word2Vec - "вектор слова фиксирован".
  Именно это недоразумение исправили исследовали Google через 5 лет
  после обнародования Word2Vec, когда опубликовали...
  
  BERT
  
  На самом деле BERT, как и Word2Vec,
  это лишь один из методов векторизации текста за счет нейронных сетей.
  Все вместе эти методы называются трансформерами, и их довольно много.
  
  Рис. ...
  
  Суть BERTa та же, что у Word2Vec,
  однако он намного сложнее и более гибкий относительно контекста,
  в котором употребляется слово.
  Нейронная сетка BERTа состоит из множества слоёв,
  в отличие от классического Word2Vec с одним слоем,
  поэтому BERT долго и сложно обучается на очень большом количестве данных.
  
  Рис. ...
  
  Особенно интересен последний пункт про контекст.
  Давайте рассмотрим его на примере двух предложений:
  
  Он взял лук и пошел на охоту
  
  Он добавил нарезанный лук в картошку
  
  Несмотря на то, что в обоих предложениях мы употребляем слово "лук",
  его смысл абсолютно разный и отображает разные предметы.
  Именно тут BERT поймет разницу между двумя луками,
  //// Точнее попытается выразить в векторе некое различие
  //// между употреблением этого слова в одном контексте от другого.
  а Word2Vec - нет, и даст один и тот же вектор для двух луков.
  
  Рис. ...
  
  Изначальный BERT обучался на большом датасете из примерно 3 млрд слов
  (англоязычная Википедия и Toronto Book Corpus).
  Впоследствии большая часть дата саенс сообщества
  либо использует уже готовый BERT,
  либо переобучает последние слои этой нейронки,
  чтобы она лучше учитывала контекст какой-то конкретной ситуации,
  для этого не требуется очень много вычислительных мощностей или данных.
  
  Заключение
  
  Мы ответили на основные вопросы о том, что такое векторизация,
  как и где она применяется и чем различаются её основные методы.
  
  .......
  
  //// Конец цитирования.
  
  На мой взгляд, очень толковое и краткое изложение основных отличий
  в применяемых методах векторизации текста.
  Это с одной стороны, а с другой стороны становится понятным,
  почему использование BERT в векторизации текста,
  т.е. переход от простых векторов к эмбеддингам,
  стало в настоящее время стандартом де-факто
  для большинства самостоятельно разрабатываемых небольших ИИ-систем.
  
  
  ========
  
  06.07.2024 21:05
  
  Оптические процессоры простыми словами.
  В оглавление.
  
  Возможно очень скоро в дополнение к ИИ-революции,
  будет происходить еще "оптическая" революция,
  могущая изменить представление о способах обработки таких привычных "битов".
  Поэтому возможно кому-то будет интересно познакомиться,
  хотя бы в самых общих словах, с основными идеями в этой области:
  
  "ОПТИЧЕСКИЕ ПРОЦЕССОРЫ".
  Автор: alexandrakilov
  https://habr.com/ru/articles/827108/.
  08 июл 2024 в 20:08
  
  //// Начало цитирования.
  
  Все мы понимаем, что рано или поздно кремниевая технология,
  используемая сегодня для создания процессоров, достигнет своего предела.
  Это как с нефтью - рано или поздно она закончится -
  вот поэтому уже сейчас начинают разрабатывать
  альтернативные энергетические технологии!
  Точно такая же ситуация сложилась и в мире информационных технологий
  - кремниевой технике начинают искать замену.
  Бегущие по проводникам, как танки, электроны довольно непрактичны
  - как минимум теряется значительная часть их энергии,
  выделяясь в виде тепла и электромагнитного излучения,
  хотя это не единственный минус.
  Причем на рассмотрение предлагаются абсолютно разные варианты замены
  - от биокомпьютера до оптических процессоров.
  Стоп!
  А что это такое?
  Вряд ли у каждого из нас на столе, скажем, через десять лет
  будет стоять компьютер из бактерий,
  а вот то, что в компьютере будущего будет установлен оптический процессор
  - вполне реально.
  Сегодня мы поговорим об этом чуде рук человеческих.
  
  Рассмотрим преимущества оптической технологии:
  
  " Можно параллельно передавать двумерные массивы за один световой импульс.
  
  " Возможность использования совершенно разных сред передачи, хранения
   и обработки информации.
  
  " Обработка информации возможна во время ее передачи через оптическую систему,
   которая представляет собой вычислительную среду.
   Представляете, вы отправили картинку для ее обработки
   - она будет обработана почти мгновенно,
   потому что она обрабатывается по мере ее прохождения через оптическую систему.
  
  " Информация, которая закодирована оптическим лучом,
   может передаваться со скоростью света
   без выделения большого количества энергии на логических элементах!
   Это действительно хорошо - ведь чем меньше затраты энергии, тем лучше.
  
  " Оптическая система не позволяет перехватывать информацию,
   поскольку ничего не излучает в окружающую среду.
  
  Все эти преимущества достигаются благодаря тому,
  что в качестве носителей информации используются фотоны, а не электроны.
  
  Основные элементы оптических процессоров с переносом изображения давно известны.
  Это - линза, зеркало, оптический транспарант
  (транспарант - прозрачная пластина,
  на которой каким-либо способом нанесено изображение,
  представляющее собой пространственное распределение коэффициента поглощения,
  коэффициента преломления (или толщины) или же того и другого одновременно)
  и слой пространства.
  В настоящее время к ним добавились волновые элементы,
  а также лазеры, полупроводниковые многоэлементные фотоприемники,
  нелинейные оптические среды, разного рода дефлекторы
  и светоклапанные устройства.
  
  Базисная логическая функция, с помощью которой можно построить любой,
  сколь угодно сложный цифровой компьютер,
  имеет множество оптических реализаций.
  На рисунке 1 дан простой пример построения многовходовой функции ИЛИ-НЕ/И-НЕ
  с помощью линзы L и порогового устройства-инвертора N.
  
  Рисунок 1 - Построение функции ИЛИ-НЕ/И-НЕ
  
  Здесь в качестве порогового элемента можно использовать
  как оптическое светоклапанное устройство
  (переключающаяся бистабильная среда),
  так и простой фотоэлектронный приемник
  с нелинейной передаточной характеристикой
  (т.е. нелинейной зависимостью интенсивности выходного светового потока от входного).
  
  На рисунке 2 показан оптический процессор,
  реализующий преобразование входной вектор-строки в выходной вектор-столбец.
  
  Рисунок 2 - Преобразование вектор-строки в вектор-столбец.
  
  Здесь LED - линейка светоизлучающих диодов.
  Они расположены на фокальной линии цилиндрической линзы L1.
  T- оптический транспарант с записанной на нем матрицей пропускания T(i,j).
  Строки матрицы параллельны образующей первой линзы.
  L2 - цилиндрическая линза, образующая которой параллельна столбцам матрицы транспаранта.
  Она собирает лучи, прошедшие через элементы одной строки,
  на одном пикселе многоэлементного фотоприемника D.
  Не трудно увидеть, что входной Х и выходной У вектора
  связаны линейным преобразованием
  
  У = ТХ.
  
  В оптической системе возможна также обработка двумерных структур.
  На рисунке 3 представлена схема оптического процессора,
  реализующего операцию свертки двух изображений,
  которая лежит в основе работы многих устройств ассоциативной памяти
  и распознавания образов.
  
  Рисунок 3 - Свертка изображений.
  
  Здесь S - плоский однородный источник света,
  L1 и L2 - сферические линзы,
  D - матричный фотоприемник,
  T1 и T2 - транспаранты,
  пропускание которых соответствует двум обрабатываемым изображениям.
  
  Распределение интенсивности излучения на матричном фотоприемнике
  пропорционально интегралу:
  
  Рис. Интеграл преобразования.
  
  В предыдущих примерах свет выполнял ту роль,
  что и электроны в проводниках обычных микросхем.
  При этом в качестве <проводов> выступали геометрические лучи.
  Понятно, что с таким же успехом свет можно загнать в волновод
  и организовать вычислительную среду по принципам,
  близким к идеологии электронной полупроводниковой микросхемотехники.
  Этим занимается интегральная и волновая оптика.
  
  Принципиально новые возможности дает использование свойств
  пространственной когерентности излучения.
  Так, в когерентной оптике легко реализуются следующие математические операции
  над комплексными функциями двух переменных:
  умножение и деление, сложение и вычитание, интегрирование и дифференцирование,
  вычисление свертки и корреляции, преобразование Фурье, преобразование Гильберта,
  преобразование Френеля и ряд других,
  можно показать, что даже с помощью только двух базовых операций
   умножения и преобразования Фурье
  можно выполнить целую серию других
  (сложение и вычитание, дифференцирование, интегрирование с весом,
  свертка, изменение масштаба аргумента функции,
  восстановление функции из ее спектральной плотности и др.).
  
  Структура когерентного оптического процессора,
  так называемая 4F-схема,
  приведена на рисунке 4.
  Здесь LS - лазерная осветительная система,
  формирующая широкий пучок когерентного излучения.
  T1 и T2 - амплитудно-фазовые транспаранты,
  модулирующие фазу и амплитуду проходящей световой волны.
  L1 и L2 - сферические линзы с фокусным расстоянием F.
  Результирующий сигнал считывается матричным фотоприемником D.
  
  Рисунок 4 - Когерентный оптический процессор.
  
  Распределение амплитуды светового поля в плоскости фотодетектора
  пропорционально свертке амплитудного пропускания первого транспаранта
  с Фурье-образом амплитудного пропускания второго транспаранта.
  Процессоры такого типа используются в качестве
  комплексных пространственных фильтров в системе улучшения качества изображения,
  а также в системах распознавания образов.
  
  Фурье-спектр двумерного сигнала вычисляется с помощью линзы L
  и слоя пространства длиной F так, как показано на рисунке 5.
  Остальные элементы предназначены для ввода-вывода данных и освещения системы.
  
  Рисунок 5 - Вычисление Фурье-спектра двумерного сигнала.
  
  Для обычного компьютера, использующего быстрый алгоритм Кули-Тьюки,
  длительность Фурье-преобразования растет с ростом точек дискретизации n
  пропорционально: n log(n).
  В оптическом компьютере эта процедура даже
  в двумерном случае выполняется всего за один машинный такт,
  что делает оптический компьютер незаменимым для решения задач,
  требующих быстрой оценки ситуации и управления в реальном времени.
  
  ......
  
  //// Конец цитирования.
  
  Надеюсь, главную идею "оптического компьютинга" Вы сумели уловить
  - обработка идет не отдельными "битами", а целыми массивами/картинками
  со скоростью света с минимальными потерями "на нагрев атмосферы".
  Кому стало интересно, как это может быть связано с нейросетями,
  то вот следующий более специализированный материал:
  "Абсолютная экзотика - оптические нейронные сети (ОНС)".
  Приятного чтения.
  
  
  ========
  
  14.07.2024 17:57
  
  Марковские цепи достаточно простыми словами.
  В оглавление.
  
  В материалах по нейронным сетям достаточно часто встречается термин
  "Марковские цепи" в достаточно разных контекстах.
  Поэтому имеет смысл, хотя бы, немного представлять, что это такое:
  
  "Марковские цепи в обработке естественного языка
  и моделировании текстовых данных".
  Автор: MaxRokatansky (OTUS)
  https://habr.com/ru/companies/otus/articles/746412/.
  6 июл 2023 в 20:22
  
  //// Начало цитирования.
  
  В последние десятилетия марковские цепи стали
  широко используемым инструментом в обработке естественного языка
  и моделировании текстовых данных.
  Они представляют собой вероятностную модель,
  которая основывается на предположении о марковских свойствах
  последовательности событий.
  
  .......
  
  Основы марковских цепей
  
  Марковские цепи являются мощным инструментом
  для моделирования случайных процессов,
  основанных на последовательности состояний и переходах между ними.
  В этом разделе мы рассмотрим основные принципы марковских цепей,
  начиная с понятия состояния и переходов.
  
  Состояние в марковской цепи представляет собой
  определенную конфигурацию системы в данном временном периоде.
  Например, если мы моделируем процесс перемещения человека в городе,
  то состояние может быть определено его текущим местоположением.
  Переходы, с другой стороны, представляют процесс изменения состояний со временем.
  В нашем примере, переход может быть перемещением человека
  из одного района в другой.
  
  Марковские цепи могут быть классифицированы
  по различным типам состояний и переходов.
  Одним из вариантов является разделение цепи
  на цепи с абсорбирующими и непоглощающими состояниями.
  В цепях с абсорбирующими состояниями существуют такие состояния,
  из которых невозможно покинуть.
  Это может быть полезно для моделирования долгосрочных состояний,
  например, состояния покоя или окончательного результата эксперимента.
  Непоглощающие состояния, с другой стороны,
  позволяют цепи перемещаться между состояниями вечно
  и никогда не останавливаются.
  
  Другой важной характеристикой марковских цепей является
  их однородность или неоднородность.
  Однородные цепи имеют фиксированные вероятности перехода между состояниями
  и эти вероятности не меняются со временем.
  Неоднородные цепи, напротив, имеют переменные вероятности перехода,
  которые могут изменяться в зависимости от времени или других факторов.
  
  Матрицы переходных вероятностей являются основным инструментом
  для представления марковских цепей.
  Это квадратные матрицы, где элементы определяют вероятности перехода
  из одного состояния в другое.
  Каждая строка матрицы представляет состояние,
  а каждый столбец представляет состояние, в которое можно перейти.
  Сумма элементов в каждой строке должна быть равна единице,
  что отражает факт сохранения вероятности.
  
  Используя матрицы переходных вероятностей,
  мы можем моделировать и анализировать различные
  статистические свойства марковских цепей,
  такие как эргодические состояния
  или вероятности достижения определенных состояний.
  
  Более подробно про марковские цепи мы разбирали в нашей статье с заголовком
  <Искусство прогнозирования: погружение в Марковские цепи>
  https://habr.com/ru/companies/otus/articles/732424/
  
  Применение марковских цепей в обработке естественного языка
  
  От моделирования языковых структур до статистического анализа текстов,
  марковские цепи позволяют создавать эффективные и точные модели
  для решения сложных задач.
  
  Одним из главных преимуществ использования марковских цепей
  в обработке естественного языка является их способность
  моделировать структуру текста.
  В отличие от традиционных методов, основанных на грамматиках или правилах,
  марковские цепи позволяют автоматически извлекать
  статистическую информацию о взаимосвязи между словами и их последовательностями.
  Это позволяет строить гибкие и адаптивные модели,
  способные точно предсказывать следующее слово или фразу
  на основе имеющегося контекста.
  
  Для построения модели марковской цепи,
  текст обрабатывается и анализируется для извлечения статистической информации.
  В основе модели лежит предположение о том,
  что вероятность появления следующего слова зависит от предыдущих слов или символов.
  Таким образом, модель может запомнить последовательности слов
  и определить наиболее вероятное следующее слово или фразу на основе контекста.
  
  ......
  
  Автопредсказание следующего слова на основе контекста
  является одной из самых распространенных и важных задач
  в обработке естественного языка.
  Ее цель заключается в том, чтобы предсказать
  наиболее вероятное следующее слово или фразу,
  исходя из предыдущих слов или фраз текста.
  
  Марковские цепи предоставляют эффективный инструмент
  для моделирования и решения этой задачи.
  Основная идея заключается в том, что вероятность появления следующего слова
  зависит от контекста, предыдущих слов или фраз.
  Марковская цепь моделирует эту зависимость,
  определяя вероятности перехода от одного слова к другому
  в зависимости от рассматриваемого контекста.
  
  Для решения задачи автопредсказания
  используется модель марковской цепи n-го порядка,
  где n определяет количество предыдущих слов,
  учитываемых при предсказании следующего слова.
  Например, в случае n=1, модель будет учитывать
  только последнее слово в контексте.
  В случае n=2, будет учитываться два последних слова, и так далее.
  
  Для построения модели марковской цепи необходимо иметь
  достаточный объем обучающих данных, состоящий из текстовых корпусов,
  чтобы определить частотности и вероятности перехода от одного слова к другому
  в разных контекстах.
  Эти данные можно использовать для создания матрицы переходных вероятностей,
  которая указывает вероятность появления каждого следующего слова
  в зависимости от предыдущих слов.
  
  .......
  
  Помимо автопредсказания, марковские цепи также находят применение
  в автокоррекции и исправлении опечаток.
  Благодаря своей способности моделировать вероятности появления
  последовательностей символов или слов,
  марковские цепи могут быть использованы для определения
  наиболее вероятной корректировки опечатки или исправления ошибки в слове.
  Это помогает повысить точность автокоррекции и обеспечить
  более надежную обработку текста.
  
  Однако, несмотря на все преимущества марковских цепей
  в обработке естественного языка, существуют и определенные ограничения.
  В частности, марковские цепи не учитывают смысловую связь между словами
  и не уделяют должного внимания семантическому анализу текста.
  Это может приводить к некорректным предсказаниям или моделированию.
  Поэтому вместе с марковскими цепями часто применяются
  и другие методы и модели для более точного анализа и обработки текста.
  
  Марковские цепи в моделировании текстовых данных
  
  Основная идея заключается в том, что вероятность появления определенного слова
  или символа зависит только от предыдущих слов или символов в тексте.
  Данные зависимости улавливаются и сохраняются в виде математической модели
  - марковской цепи.
  Каждое состояние в цепи представляет собой конкретное слово или символ,
  а переходы между состояниями соответствуют статистическим вероятностям.
  Таким образом, модель может предсказывать
  наиболее вероятное следующее слово или символ на основе предыдущих.
  
  Создание моделей на основе марковских цепей для генерации текста
  является процессом, включающим несколько ключевых шагов.
  Во-первых, необходимо провести предварительную обработку текстовых данных,
  удалить неинформативные символы и провести токенизацию предложений или слов.
  Затем происходит построение самой марковской цепи,
  где осуществляется подсчет вероятностей переходов между состояниями.
  Различные подходы могут использоваться для определения порядка модели,
  то есть количества предыдущих слов или символов,
  которые учитываются при генерации
  
  Преимущества и ограничения марковских цепей
  
  Преимущества марковских цепей в обработке естественного языка
  и моделировании текстовых данных связаны с их простотой и эффективностью.
  
  Одним из основных преимуществ марковских цепей является
  их способность предсказывать последовательности на основе вероятностей
  и статистических данных.
  Это позволяет им генерировать тексты, которые визуально и семантически
  похожи на исходный текст.
  Например, марковская цепь может быть использована
  для автоматической генерации текстов на основе собранных новостных статей
  или литературных произведений.
  
  Однако марковские цепи имеют некоторые ограничения,
  которые необходимо учитывать при их применении.
  Во-первых, марковские цепи предполагают, что вероятность следующего элемента
  зависит только от предыдущих элементов последовательности.
  Это значит, что они не учитывают контекст,
  который находится за пределами заданного окна.
  Если в тексте есть глубокие зависимости или долгосрочные связи между элементами,
  марковская цепь может быть недостаточно точной.
  
  Второе ограничение марковских цепей связано
  с их неспособностью обрабатывать вариативность и неопределенность в данных.
  Так как марковские цепи работают на основе статистических данных,
  они могут не всегда улавливать сложные метафоры, идиомы или сарказмы.
  Они также не могут прогнозировать неожиданные и новые фразы или слова,
  которые могут появиться в тексте.
  
  Для улучшения результатов применения марковских цепей
  в обработке естественного языка и моделировании текстовых данных
  можно использовать комбинацию с другими методами и моделями.
  Например, можно воспользоваться рекуррентными нейронными сетями
  или глубоким обучением для учета долгосрочных зависимостей и контекста.
  Также возможны различные приемы фильтрации и предобработки данных,
  которые позволят учесть специфику конкретной задачи.
  
  Заключение
  
  В заключение, марковские цепи - это мощный инструмент
  для обработки естественного языка и моделирования текстовых данных.
  Они обладают простотой и эффективностью,
  позволяющей автоматически извлечь правила и особенности языка
  из больших объемов текстовых данных.
  Однако их использование имеет некоторые ограничения,
  связанные с контекстом и вариативностью данных.
  Для улучшения результатов можно комбинировать марковские цепи
  с другими методами и моделями.
  
  //// Конец цитирования.
  
  Вроде все понятно. Чистая "статистика". Никакой магии.
  И где-то на грани ее, именно "на грани", или даже за ней,
  проявляется тот невероятный феномен как "явление ChatGPT граду и миру",
  которое пытаются представить как простую "Марковскую цепь".
  Может быть, дело не только в "статистике",
  а в какой-то другой форме записи закономерностей?
  
  
  ========
  
  06.08.2024 16:16
  
  О реальной "хрупкости" Центральной Предельной Теоремы.
  В оглавление.
  
  Очень полезный текст для понимания, насколько "хрупким" является
  основание главного фундамента современной матстатистики:
  
  "Толстые хвосты распределений - это загадочно и странно".
  Автор: mr-pickles
  https://habr.com/ru/companies/wunderfund/articles/832276/.
  05 авг 2024 в 14:27
  
  Автор оригинала: Filip Piekniewsk
  https://blog.piekniewski.info/2024/04/01/fat-tails-are-weird/
  
  //// Начало цитирования.
  
  Если вы посещали занятия по статистике
  - вы, возможно, проходили тему <общая теория меры>.
  Там могла идти речь о мере и об интеграле Лебега,
  а так же - об их связи с другими способами интегрирования.
  Если на ваших занятиях много внимания уделялось математике (так было у меня),
  то на них вы вполне могли познакомиться с теоремой Каратеодори
  о продолжении меры и даже с основами теории операторов
  на гильбертовых пространствах,
  а так же - с преобразованиями Фурье и много с чем ещё.
  Большинство этих математических конструкций нацелено
  на доказательство одной из самых важных теорем,
  на которой основана огромная часть статистики.
  Речь идёт о центральной предельной теореме (ЦПТ).
  
  ЦПТ утверждает, что для широкого класса того,
  что мы называем в математике <случайными величинами>
  (которые представляют собой результаты проведения некоего эксперимента,
  включающего в себя элемент случайности),
  до тех пор, пока они удовлетворяют определённым условиям
  (как может показаться - простым),
  их среднее значение сходится к случайной величине определённого типа,
  который называют <нормальным> или <Гауссовым>.
  
  Вот те два условия, которым должны удовлетворять эти величины:
  
  Они независимы друг от друга.
  
  Они имеют конечную дисперсию.
  
  На обычном языке это означает то,
  что отдельные случайные измерения (эксперименты)
  <не знают> ничего друг о друге,
  и то, что каждое из этих измерений <большую часть времени>
  пребывает в ограниченном диапазоне значений,
  так как его практически всегда можно <измерить> с помощью прибора,
  обладающего конечной шкалой значений.
  Оба эти предположения выглядят разумными и универсальным.
  Тут можно быстро заметить то стечение обстоятельств,
  которое должно привести к появлению распределения Гаусса.
  
  Каждый раз, когда мы имеем дело с большим количеством агентов,
  показаний приборов, измерений, которые <не связаны друг с другом>
  - мы выходим на распределение Гаусса.
  Просто волшебство какое-то.
  А как только у нас будет нормальное распределение
  - мы сможем кое-что сказать о соответствующих средних показателях.
  Так как распределение Гаусса полностью определяется лишь двумя числами
  - математическим ожиданием и дисперсией,
  мы можем, собрав достаточно данных, довольно точно оценить эти значения.
  А после того, как мы оценим эти значения
  - мы можем начинать делать прогнозы относительно,
  например, вероятности того, что заданная сумма случайных показателей
  превысит некое значение.
  Почти всё то, что мы называем <статистикой>,
  основано на этой идее.
  Речь идёт о различных тестах, о моделях и о прочем подобном.
  Именно так мы приручаем случайность.
  На самом деле, часто те, кто завершают курс статистики,
  думают, что колоколообразная кривая распределения Гаусса
  - это единственное распределение,
  которое что-то значит,
  и что всё остальное относится к разряду математических курьёзов,
  которым нет никакого практического применения.
  Это, как мы скоро выясним, серьёзная ошибка.
  
  Вернёмся к допущениям ЦПТ,
  которые могут показаться достаточно безобидными:
  мы предполагаем, что переменные независимы.
  Но каково точное значение этого понятия?
  Говоря математическим языком, мы просто разводим руками и сообщаем,
  что вероятность одновременного наступления событий X и Y
  равна произведению их вероятностей.
  Если выразить это другими словами, то получится,
  что распределение вероятности одновременного наступления событий
  можно разложить на проекции распределений вероятностей наступления отдельных событий.
  Отсюда следует то, что знание результата X
  не даёт абсолютно никакой информации о результате Y.
  Это, кроме прочего, означает,
  что X никоим образом не воздействует на Y.
  И, более того, означает,
  что ничто не действует одновременно на X и на Y.
  Бывает ли такое хоть когда-нибудь в реальном мире?
  
  Но дело осложняется ещё и тем,
  что, в строгом математическом смысле,
  два физических события, которые, образно выражаясь,
  <освещают> друг друга,
  не являются, с технической точки зрения, независимыми.
  То же самое можно сказать даже и о двух событиях,
  которые одновременно <освещает> третье событие.
  Они либо, до некоторой степени, <знают> <друг о друге>,
  либо <знают> о каком-то другом событии,
  которое имело место в прошлом и могло повлиять на оба эти события.
  На практике, конечно, мы это игнорируем.
  В большинстве случаев эта <информация> или <зависимость> настолько слаба,
  что это ничуть не мешает отличной работе ЦПТ
  и даёт статистикам надежду спокойно дожить до следующего дня.
  Но насколько надёжна ЦПТ в том случае,
  если события не вполне <независимы>?
  К сожалению - именно этот вопрос многие курсы по статистике обходят стороной,
  не давая даже его понимания на интуитивном уровне.
  
  Поэтому устроим небольшой эксперимент.
  Ниже показаны результаты проведённой мной симуляции,
  представленные в виде 400?200=80 000 независимых пикселей.
  Каждый из них принимает случайное значение между нулём и единицей
  (код можно найти здесь).
  Я усреднил полученные значения и построил ниже изображения гистограмму.
  Индивидуальные значения, или результаты эксперимента,
  отмечены красной вертикальной линией.
  Тут мы видим ЦПТ в действии.
  Колоколообразная кривая выглядит именно так, как ожидалось!
  
  Видео https://blog.piekniewski.info/media/gaussian_CLT.mov
  
  Симуляция независимых пикселей
  
  Теперь немного модифицируем этот эксперимент,
  добавляя к каждому из этих пикселей небольшие случайные значения
  (в диапазоне -0.012, 0.012).
  Так мы имитируем слабый внешний фактор, воздействующий на все пиксели.
  Этот фактор настолько незначителен,
  что его воздействие на наше поле пикселей почти невозможно заметить.
  Но, так как ЦПТ аккумулирует данные,
  даже такие незначительные <общие> отклонения
  оказывают разрушительное воздействие на эксперимент.
  
  Видео https://blog.piekniewski.info/media/gaussian_CLT_fail.mov
  
  Симуляция пикселей, на которые что-то влияет
  
  Мы сразу же замечаем то, что образцы больше не относятся к распределению Гаусса.
  Мы регулярно видим отклонения, сильно превышающие 6-10 сигм.
  Этого, при работе с данными, описываемыми распределением Гаусса,
  не должно происходить практически никогда.
  ЦПТ, на самом деле, оказывается
  очень хрупкой конструкцией
  в тех случаях, когда между исследуемыми данными
  имеется хотя бы очень слабая зависимость.
  Всё это понятно, но... есть ли у этого какие-то последствия?
  
  Кто-то может подумать, что это ерунда.
  Если это - не распределение Гаусса, то, возможно - какое-то другое,
  а значит - есть аналогичные инструменты и для такого варианта развития событий.
  Ну... и да, и нет.
  
  На самом деле - изучены и другие типы распределений вероятностей.
  Кривая распределения Коши (я писал об этом) выглядит почти так же,
  https://blog.piekniewski.info/2017/09/27/when-the-tail/
  как колоколообразная кривая распределения Гаусса.
  При этом случайная величина, имеющая распределение Коши
  не имеет математического ожидания и дисперсии.
  И существуют даже версии <ЦПТ> для распределения Коши,
  поэтому можно подумать,
  что это - лишь <менее компактное> распределение Гаусса.
  Но это - мысль, которая очень и очень далека от истины.
  Подобные распределения часто называют распределениями с <толстыми хвостами>
  (это так из-за того, что в хвост
  и за пределы <центральной> части распределения
  попадает гораздо больше <веса>).
  Такие распределения являют собой странные и проблематичные сущности.
  Большая часть того, что мы, работая с <Гауссовой> статистикой,
  принимаем как должное,
  не действует при работе с другими распределениями.
  Множество таинственных свойств связывают эти распределения с такими понятиями,
  как сложность, фракталы, перемежающийся хаос, странные аттракторы, эргодическая динамика.
  Эти связи нам до сих пор до конца не понятны.
  
  Например, посмотрим на то, как средние значения ведут себя
  при распределении Гаусса, Коши и Парето.
  
  https://i0.wp.com/blog.piekniewski.info/wp-content/uploads/2024/03/mean_convergence_10k.png?ssl=1
  
  Сходимость среднего значения для N = 10000 образцов
  
  Обратите внимание на то, что на графиках изображены не образцы,
  а средние значения, взятые по всё более длинным последовательностям образцов.
  Значения, описываемые распределением Гаусса,
  сходятся, как и ожидается, очень быстро.
  Значения, описываемые распределением Коши,
  никогда не сходятся,
  а значения, описываемые распределением Парето,
  сходятся при alpha=1.5,
  хотя и гораздо медленнее, чем в случае с распределением Гаусса.
  Переход от 10 тысяч образцов к миллиону позволяет ярче увидеть происходящее:
  
  https://i0.wp.com/blog.piekniewski.info/wp-content/uploads/2024/03/mean_convergence_1m.png?ssl=1
  
  Сходимость среднего значения для N = 1000000 образцов
  
  Получается, что при использовании распределения Коши
  значения варьируются так сильно,
  что среднее, буквально - первый момент распределения - никогда не сходится.
  Подумайте об этом:
  после миллионов и миллионов значений
  появляется ещё одно единственное значение,
  которое сдвигает всё эмпирическое среднее на серьёзную величину.
  И неважно то, сколько до этого было значений
  - даже после квадриллионов значений,
  уже <усреднённых>,
  появляется всего одно значение, настолько большое,
  что оно способно сдвинуть всё среднее значение на большую величину.
  Это - очень и очень странно в сравнении с чем-либо,
  связанным с распределением Гаусса.
  
  Хорошо, а имеет ли это какое-то значение на практике?
  Скажем - есть ли у этого какие-то последствия для статистических методов,
  вроде тех, что используются в нейронных сетях и в искусственном интеллекте?
  Для того чтобы узнать ответ на этот вопрос
  - можно провести очень простой эксперимент.
  Будем выбирать образцы из распределений с центром в значениях -1 и 1.
  Мы хотим оценить <центральную точку>,
  которая лучше всего разделяет образцы из этих двух распределений,
  учитывая то, что они могут в некоторой степени перекрываться.
  Симметрия всей этой конструкции подсказывает нам,
  что такая вот наилучшая точка, разделяющая распределения - это 0.
  Но попробуем это выяснить в ходе итеративного процесса,
  основанного на взятии образцов.
  Начнём поиск с предположения о наилучшем разделяющем значении
  и, получая новую информацию, будем, постепенно снижая скорость обучения,
  приближать его к полученным образцам.
  Если мы решим использовать одинаковое количество образцов
  из каждого распределения - тогда мы можем ожидать того,
  что этот процесс сойдётся к правильному значению.
  
  Мы повторим эксперимент для двух экземпляров распределения Гаусса
  и распределения Коши, как показано ниже
  (обратите внимание на то, как, на первый взгляд,
  похоже выглядят эти распределения).
  
  bell_curve_separation.png (800?600)
  
  Исследование распределений Гаусса и Коши
  
  В случае с распределением Гаусса мы получаем именно такой результат,
  как ожидали.
  
  https://i0.wp.com/blog.piekniewski.info/wp-content/uploads/2024/03/weight_convergence_gaussian.png?ssl=1
  
  Исследование распределения Гаусса
  
  А вот в случае с распределением Коши всё выглядит немного сложнее,
  чем казалось.
  
  https://i0.wp.com/blog.piekniewski.info/wp-content/uploads/2024/03/weight_convergence_cauchy.png?ssl=1
  
  Исследование распределения Коши
  
  Показатель, полученный в ходе итеративного процесса, в итоге сходится,
  так как мы постоянно снижаем скорость обучения.
  Но сходится он к совершенно произвольному значению!
  Мы можем повторить этот эксперимент много раз,
  и каждый раз будем получать разные значения!
  Представьте себе, что мы тут наблюдаем то,
  как сходятся значения весов в глубинах некоей нейронной сети.
  И даже хотя каждый раз они сходятся к <чему-то>,
  речь идёт о неких случайных значениях,
  а не о значениях оптимальных.
  Если хотите порассуждать об этом,
  применяя понятия энергетического ландшафта и минимизации ошибок,
  то получится следующее.
  Эта ситуация соответствует очень плоскому ландшафту,
  градиенты на котором практически равны нулю,
  а итоговое значение параметра зависит в основном от того,
  куда его завело воздействие образцов,
  взятых до того, как скорость обучения стала очень маленькой.
  
  С этим мы разобрались.
  А существуют ли подобные распределения в реальном мире?
  В конце концов, преподаватель по статистике сказал,
  что практически всё можно описать с помощью распределения Гаусса.
  Вернёмся к вопросу о том, почему мы вообще видим распределение Гаусса
  практически повсюду.
  Это так исключительно из-за центральной предельной теоремы
  и из-за того факта, что мы наблюдаем что-то,
  что является результатом независимого усреднения множества случайных сущностей.
  Речь может идти о чём угодно:
  о социологии, о молекулярной физике, о динамике фондового рынка.
  А из вышеприведённого эксперимента мы знаем о том,
  что ЦПТ перестаёт работать в том случае,
  если наблюдения хотя бы немного зависят друг от друга.
  Как подобные зависимости возникают в реальном мире?
  Обычно они возникают из-за пертурбаций,
  которые приходят в систему из систем другого масштаба.
  Это может быть что-то большое, меняющее всё вокруг,
  или что-то маленькое, которое, опять же, всё вокруг меняет.
  
  Поэтому, например, молекула газа в воздушной камере будет двигаться,
  подчиняясь законам распределения Максвелла-Больцмана
  (его можно рассматривать как урезанное распределение Гаусса).
  Но вот - приходит техник и открывает клапан,
  позволяя газу выйти из камеры в комнату.
  Это событие полностью изменит то, как двигается молекула газа.
  Или, в том же примере с газом,
  в комнате ниже начинается пожар.
  Камера нагревается, молекулы ускоряются.
  Или над лабораторией взрывается ядерная бомба,
  которая испаряет воздушную камеру вместе с её содержимым.
  Отсюда можно сделать следующий вывод:
  в сложной, нелинейной реальности, в которой мы живём,
  явления в определённых системах на некие промежутки времени
  подчиняются законам распределения Гаусса.
  Эти спокойные периоды прерываются <вмешательствами>,
  исходящими <снаружи> системы
  - либо в смысле пространства,
  либо в смысле масштаба,
  либо - и в том и в другом сразу.
  
  Поэтому настоящие <толстые хвосты>,
  которые мы видим в реальном мире
  - это нечто более коварное,
  чем то, что описывается простыми распределениями Коши или Парето.
  Они, некоторое время, может - годы или десятилетия,
  могут вести себя как распределения Гаусса.
  А затем внезапно <переворачиваются> на 10 сигм
  и либо впадают в полное безумие,
  либо снова продолжают вести себя как распределения Гаусса.
  Это очень хорошо видно на графиках фондовых индексов.
  В течение длительных периодов времени они представляют собой
  суммы сравнительно независимых акций
  и ведут себя как сущности, описываемые распределением Гаусса.
  А потом какой-нибудь банк сообщает о банкротстве,
  инвесторы паникуют и внезапно оказывается,
  что все акции в индексе нельзя назвать <независимыми>.
  Они, скорее, сильно друг с другом коррелируют.
  Тот же шаблон применим при описании практически любых явлений:
  это и погода, и социальные системы, и экосистемы,
  и движение тектонических плит, и сход лавин.
  Почти ничто из того, с чем мы сталкиваемся,
  не находится в <состоянии равновесия>.
  Всё, скорее, находится в процессе поиска псевдостабильного состояния,
  сначала делая это очень медленно,
  а в итоге - чрезвычайно быстро.
  
  Живые существа нашли способы ориентироваться в этих постоянных переходах
  между состояниями (в определённых пределах, конечно).
  А вот статические артефакты,
  в особенности - сложные,
  например - машины, созданные человеком,
  обычно хорошо чувствуют себя только в очень узком диапазоне условий.
  Когда условия меняются - машины нуждаются в <подстройке>.
  Общество и рынок, в целом, постоянно проводят такие вод <подстройки>,
  получая обратную связь от самих себя.
  Мы живём в огромной реке с псевдостабильным течением.
  Но в реальности единственное, что никогда не меняется
  - это постоянное стремление к восстановлению нарушенного равновесия
  и попадание в новые локальные энергетические минимумы.
  
  Вышесказанное может звучать как некие философские рассуждения,
  но у этого имеются вполне практические последствия.
  Например - тот факт, что нет такого явления,
  как <общее умственное развитие> без возможности постоянно
  и очень быстро обучаться новому
  и <подстраиваться> под новые условия.
  Нет такого понятия, как <безопасная компьютерная система>
  без возможности постоянно её обновлять и устранять уязвимости,
  так как эти уязвимости находят и используют злоумышленники.
  Не существует <стабильных экосистем>,
  в которых разные виды живых существ живут рядом друг с другом в полной гармонии.
  Не бывает <оптимальных рынков>,
  на которых решены все споры между их участниками.
  
  Цель этого поста заключается в том, чтобы рассказать о том,
  как ограничены чисто статистические методы в мире,
  состоящем из сложных нелинейных динамических систем.
  Может - есть другой путь?
  Конечно есть - и биология являет собой экзистенциальное доказательство этому.
  А людей сбивает с толку не то,
  что не всё в биологии подчиняется <статистике>.
  Конечно, до некоторой степени - подчиняется.
  Людей сбивает с толку следующее:
  то, что ты изучаешь, означает так же много,
  как то, как именно ты это изучаешь.
  Например - возьмём генераторы случайных чисел.
  Если мы видим массу чисел, как кажется - случайных -
  можно ли сказать о том, что именно их сгенерировало?
  Вероятно - нет.
  А теперь нанесём их на точечный график,
  сопоставим числа, идущие друг за другом.
  Иногда это называют спектральным тестом.
  Сделав это, мы внезапно увидим некую структуру
  (как минимум - для простых линейных генераторов случайных чисел,
  основанных на конгруэнтности).
  Что мы только что сделали?
  Мы побороли случайность, сделав предположение о том,
  что за этой последовательностью чисел стоят
  некие динамические процессы.
  Мы предположили, что эти числа возникли
  не из <волшебного чёрного ящика случайности>,
  и что между последовательными числами
  есть некая динамическая взаимосвязь.
  Затем мы перешли к обнаружению этой взаимосвязи.
  Аналогично, если говорить о машинном обучении,
  можно, например, связать метки со статическими образами.
  Но этот подход (хотя, как кажется, весьма успешный),
  похоже, склонен к насыщению
  и к выдаче <хвоста> из глупых ошибок.
  Как справиться с этим хвостом?
  Возможно (здесь я выдвинул эту идею),
  https://blog.piekniewski.info/2016/11/04/predictive-vision-in-a-nutshell/
  надо провести нечто вроде <спектрального теста>
  и исследовать временные отношения между кадрами.
  В конце концов - люди ведь воспринимают зрением не набор случайных картинок,
  которые выскакивают у них перед глазами, появляясь из <чёрного ящика>.
  Всё, что мы видим, генерируется физическими процессами.
  Эти процессы развиваются в соответствии с законами природы.
  
  Подозреваю, что системы, которые <статистически изучают динамику развития мира>,
  по мере их усложнения,
  будут обладать весьма удивительными возникающими в них свойствами.
  Это похоже на те свойства, которые возникают в больших языковых моделях,
  которые, между прочим, пытаются изучить <динамику языка>.
  Я ожидаю, что, например, у таких систем появятся способности
  к обучению чему-либо с первого раза.
  А может - и ещё что-нибудь интересное.
  Но это - уже тема для другого материала.
  
  ..........
  
  //// Конец цитирования.
  
  Обратите внимание на последний абзац.
  и вспомните основные допущения Предельной Центральной теоремы:
  "независимость" и "конечность дисперсии",
  т.е. по факту наличие какого-то предела для "матожидания",
  и ограниченность "разброса",
  что в реальном мире, если и присутствует,
  то только на каком-то совсем незначительном "по историческим меркам" периоде.
  А на следующем "периоде" они могут уже быть какими-то другими.
  И вот это самое "могут" никакой современной статистикой как раз и не охватывается.
  И, самое главное, вообще не имеет никаких средств для анализа Мира,
  в котором ВСЕ как-то ВЗАИМОСВЯЗАНО.
  
  И это свойство "взаимосвязанности" Мира обеспечивает
  ему поразительную РЕАЛЬНУЮ устойчивость,
  в поразительном контрасте с "хрупкостью" ЦПТ,
  основанной на АБСТРАКТНОЙ "независимости".
  
  Может быть, стоит что-то "поменять в консерватории",
  если инструменты для "статистического изучения динамики развития мира"
  уже вроде как появляются, хотя бы, в виде этих самых "нейронок",
  то вот теоретический аппарат "намертво прибитый гвоздями"
  к Центральной Предельной Теореме,
  никак этого объяснить не в состоянии.
  Может быть, именно в этом главная трудность понимания поведения
  тех же больших языковых моделей?
  
  \\\ Сережка ольховая,
  \\\ легкая, будто пуховая,
  \\\ но сдунешь ее -
  \\\ все окажется в мире не так,
  \\\ а, видимо, жизнь
  \\\ не такая уж вещь пустяковая,
  \\\ когда в ней ничто
  \\\ не похоже на просто пустяк...
  
  \\\ Евгений Евтушенко. 1975г.
  
  
  ========
  
  23.08.2024 8:24
  
  Распределение Стьюдента простыми словами.
  В оглавление.
  
  Продолжим "ликбез" по основам классической матстатистики
  с экскурсом в историю возникновения/разработки интересных идей:
  
  "Как математик-пивовар t-распределение изобретал".
  Автор: vasilisa_b (Василиса Белокопытова)
  https://habr.com/ru/companies/gazprombank/articles/836488/.
  20 авг 2024 в 10:01
  
  //// Начало цитирования.
  
  Распределение Гаусса на графике - это колоколообразная кривая.
  Она достигает своего пика в среднем значении и убывает по обе стороны от него.
  Социологи его применяют, когда изучают мнение,
  а статистики - средние доходы, рост людей и то, кто какую окрошку предпочитает.
  
  Распределение удобное, математически выверенное.
  Показывает, что типичные события происходят часто, а редкие - редко.
  В начале двадцатого века выяснилось, что для некоторых случаев оно не подходит,
  более того - может выдать ложные результаты.
  
  Например, оно не подходит для промышленного пивоварения.
  К такому выводу однажды пришёл учёный
  (и экспериментальный пивовар компании Гиннесс)
  Уильям Госсет.
  Он столкнулся с проблемой:
  как подойти к оценке качества сырья и продукта,
  если данных для анализа мало,
  и в итоге вывел так называемое t-распределение.
  У него, в отличие от распределения Гаусса,
  более низкий <горб> и толстые <хвосты>
  - края, отвечающие за маловероятные события.
  За счёт этих хвостов, а также благодаря своей возможности меняться,
  притворяясь гауссовым,
  t-распределение незаметно, но прочно вошло в нашу жизнь.
  
  Правда, под именем <распределение Стьюдента>.
  
  image
  
  Нормальное распределение (z) и два варианта распределения Стьюдента
  
  Уильям Сили Госсет родился в 1876 году в Кентербери,
  в семье английского полковника.
  Юноша хотел пойти по стопам отца и стать офицером, однако не смог:
  помешало плохое зрение.
  Поэтому он поступил в Винчестерский колледж, а затем в Оксфорд,
  где изучал математику и химию.
  Завершив обучение, он отправился туда,
  где были очень нужны молодые учёные-химики с математическим складом ума.
  
  На пивоварню.
  
  image
  
  За 60 лет до Госсета
  
  Варка пива - не самый простой процесс, но и не волшебство.
  Многое зависит от ингредиентов, ячменя и хмеля,
  которые в свою очередь зависят от условий выращивания.
  А пиво любят за постоянство вкуса.
  Поэтому здесь особенно нужен и важен контроль.
  
  Обычно контролем занимались сами пивовары.
  По виду, запаху и вкусу они оценивали качество ингредиентов
  и либо пускали их в дело, либо браковали.
  Когда производство наращивает объёмы, такая схема уже не очень подходит.
  
  Вот, например, у ячменя множество сортов.
  При одинаковых условиях выращивания один сорт может давать вдвое больше урожая,
  чем другой. Как это определить научно и достоверно?
  Вырастить два поля ячменя двух разных сортов,
  собрать сначала урожай, а потом две выборки,
  провести статистическую проверку гипотез.
  
  Но это долго и дорого, поэтому обычно сначала делают случайную выборку,
  а потом выводы.
  
  Если выводы по выборке соответствуют стандартному распределению,
  то всё ок, она корректна и репрезентативна.
  
  image
  
  Вот так (по Гауссу) - нормально
  
  А если значения на графике образуют не колокол, а слона в удаве,
  значит, принцип отбора какой-то неправильный
  и экстраполировать выводы не стоит.
  
  image
  
  Вот так нормальное распределение выглядеть НЕ должно
  
  У компании Гиннесс не было времени выращивать целые поля разных ячменей,
  и выводы нужно было делать по нескольким исследованным образцам.
  Здесь требовался математический ум.
  
  В 1899 году ум как раз устроился на работу в компанию.
  
  Колокол и блюдце
  
  Уильям Госсет начал с того, что вывел вероятность ошибки.
  Он рассчитал, с какой вероятностью разные небольшие выборки
  могут дать значение, отличное от истинного.
  Сделать это можно было только одним способом:
  провести много, очень много экспериментов.
  
  Изучив множество выборок, Госсет подсчитал,
  что два образца дают точность в районе 80 %,
  три - уже 87,5 %,
  //// А нет ли в этих цифрах связи с "правилом Парето"?
  а при исследовании 87 образцов вы получите примерно ту же точность,
  что и при изучении тысячи.
  Это позволило серьёзно сократить расходы,
  однако компания решила, что потенциал ноу-хау не исчерпан
  - и отправила Госсета в оплачиваемый отпуск,
  который он провёл в лаборатории известного биолога и статистика Карла Пирсона.
  
  Результатом отпуска и стало то самое t-распределение.
  Госсет вывел формулу, позволявшую оценить качество выборки
  в зависимости от количества её степеней свободы,
  или, иначе говоря, независимых элементов в выборке.
  При этом число степеней свободы всегда на единицу меньше
  количества объектов в выборке,
  то есть при выборке в 5 элементов у нас будет 4 степени свободы, при 3 - 2.
  Объясняется это просто:
  если вам известно среднее арифметическое выборки
  и все значения, кроме одного,
  вы легко сможете высчитать это последнее значение.
  То есть оно не является независимым.
  
  image
  
  Сама формула выглядит так.
  Y - значения независимых переменных из выборки,
  n - количество степеней свободы
  
  На основе этой формулы можно построить распределения
  для разных небольших выборок и нарисовать график.
  При трёх (то есть для двух степеней свободы)
  он имеет форму лежащего вверх дном блюдца:
  его <горб> сильно ниже, чем у стандартного распределения,
  а <хвосты> - толще.
  Это позволяет учитывать тот факт, что при небольшой выборке,
  скорее всего, получится больший разброс значений.
  Но чем больше образцов, тем сильнее график вытягивается вверх по центру,
  приближаясь к стандартному распределению.
  
  Такое распределение учитывает, что в выборке может быть
  чуть больше необычно больших или маленьких значений,
  при этом общая картина сохраняется:
  если вы взяли три образца и их результаты соответствуют <блюдцу>, всё ок.
  А если нет - то, сравнив графики,
  вы всё равно сможете понять, какова вероятность ошибки.
  И если она невелика - ею можно пренебречь и в продакшене.
  
  Ячменное поле экспериментов
  
  Однажды к Госсету за советом обратился коллега - солодовник Эдвин С. Бивен,
  тот занимался экспериментальной работой ещё с 1890-х годов.
  Их сотрудничество оказалось взаимовыгодным:
  математические навыки Госсета дополняли практический опыт Бивена.
  
  В 1913 году Бивен предложил дизайн эксперимента по схеме шахматной доски:
  восемь сортов ячменя на участках размером один квадратный ярд.
  Каждый сорт был представлен по одному разу в каждом блоке,
  но распределение внутри блока было сбалансированным, а не случайным.
  А Госсет тем временем сформулировал метод оценки ошибки для сравнения сортов,
  алгебраически эквивалентный дисперсионному анализу.
  Который, к слову, в этот же период, но независимо от Госсета,
  разработал Рональд Фишер.
  
  Они были знакомы, вели переписку и, судя по всему,
  как положено великим умам,
  мыслили одинаково.
  
  Вместе с тем Фишер считал, что рандомизированные схемы круче,
  а Госсет - что сбалансированные.
  И поэтому первый критиковал второго за метод <полурядовой полосы>,
  который тот вместе с Бивеном часто использовал для полевых испытаний.
  Например, два сорта ячменя высевались длинными полосами
  на площади около одного акра.
  Такой подход позволял точно оценивать ошибки при сравнении различных сортов.
  В одном из экспериментов стандартная ошибка среднего значения сорта
  составила около 0,6 процента.
  Госсет утверждал, что сбалансированные схемы имеют меньшую реальную ошибку
  по сравнению с расчётной.
  И хотя они могут пропускать небольшие реальные различия,
  значительные пропускают гораздо реже.
  
  Впрочем, вообще Госсет был за сочетание баланса и рандомизации во имя точности.
  
  Так откуда же здесь Стьюдент?
  
  Разработав свою теорию, Уильям Госсет решил её опубликовать,
  так как он всё же был учёным и хотел, чтобы новые знания распространялись.
  Однако у компании было другое мнение.
  Получив новую прорывную технологию, она хотела использовать её самостоятельно,
  а не отдавать в руки конкурентам.
  Тем более что всего несколькими годами ранее произошёл неприятный случай,
  один из коммерческих секретов был опубликован в общедоступном издании.
  В конце концов начальство позволило выпустить статью под псевдонимом Стьюдент,
  чтобы никто не догадался.
  В смысле, чтобы конкуренты не смогли связать технологию
  с пивоваренной промышленностью
  и понять, откуда ноги растут.
  
  Они и не поняли.
  
  А t-распределение так и осталось распределением Стьюдента.
  
  image
  
  Уильям <Ну Стьюдент, так Стьюдент> Госсет
  
  Используют его там, где размер выборки мал
  и не подходит под нормальное распределение.
  С его помощью можно, например, оценить эффективность разных сотрудников,
  сравнив относительно небольшое количество их показателей.
  Распределение Стьюдента используют при анализе рынка,
  социологических исследованиях, даже в медицине.
  Предположим, есть медицинское исследование,
  в котором участвует десять человек, из них пятеро получили плацебо.
  С таким малым числом участников трудно определить
  является разница статистически значимой или случайной.
  
  В общем, Госсет использовал статистические методы
  для улучшения различных этапов пивоварения,
  включая выбор и обработку сырья, контроль за ферментацией
  и консистентность качества конечного продукта.
  Это было особенно важно для масштабного производства Гиннесса,
  где даже небольшие улучшения играют значительную роль.
  
  А ещё, говорят, что он был просто хорошим парнем.
  
  //// Конец цитирования.
  
  Хорошее, практичное распределение,
  но опять же, основанное на "независимости данных".
  М в пределе сводится к гаусовскому распределению,
  со всей его "хрупкостью"/чувствительностью к этой "независимости".
  Т.е. налицо устойчивость/реальность при малом объеме экспериментальных данных,
  с одновременным стремлением к неусточивой и мало реальной,
  но теоретичиски "правильной" форме распределения при увеличении выборки,
  а если "удав проглотит" не "слона", а "кита" или "верблюда"?
  А если "данные", вообще, как-то очень сложно/хитро взаимосвязаны,
  то что можно использовать в качестве "приближения"?
  
  
  ========
  
  07.09.2024 11:36
  
  Обучение с учителем и без простыми словами.
  В оглавление.
  
  Для "полноты картины" описания "машинного обучения" -
  этой весьма перспективной ИТ-технологии в нынешние времена,
  наверное, давно нужно было прояснить некоторые основные термины этой технологии.
  Вот достаточно "вменяемый" текст, хотя и немного "отставший от жизни":
  
  "Обучение с учителем и без - в чём разница?".
  Автор: Sber (SberTeam)
  https://habr.com/ru/companies/sberbank/articles/840554/.
  03 сен 2024 в 14:35
  
  Данный текст можно считать отражением ситуации в "машинном обучении"
  до "великой ЧатГПТ революции",
  
  //// Начало цитирования.
  
  Обучение с учителем и без являются двумя основными подходами
  к построению моделей машинного обучения (МО).
  В них заложен существенно разный подход к обучению,
  а также разные сценарии использования.
  В этой статье объясняются эти оба метода и различия между ними.
  
  Обучение с учителем
  
  Этот подход подразумевает обучение алгоритма МО на размеченных наборах данных.
  Для каждого примера в обучающем наборе алгоритм знает,
  какой результат является правильным.
  Он использует эти знания, чтобы попытаться обобщить их на новые примеры,
  которые он никогда раньше не видел.
  Применяя эту информацию, модель может постепенно обучаться
  и повышать свою точность.
  //// До определенного предела.
  В размеченных данных каждый <вход> связан с правильным <выходом>.
  Например, в наборе медицинских изображений каждое из них будет связано с указанием,
  содержит ли входное изображение признаки искомой болезни.
  
  Цель этого метода заключается в умении модели устанавливать связь
  между выходными и входными данными.
  Она тренируется, итеративно составляя прогнозы на входах
  и корректируя свои параметры для получения верного ответа.
  
  .........
  
  Обучение с учителем состоит из двух подкатегорий:
  классификации и регрессии.
  
  В классификации модель предсказывает правильную метку входных данных.
  Она полностью обучается и проходит тестовую оценку.
  Затем её можно применять для прогнозирования на новых, неизвестных данных.
  
  .........
  
  Другая подкатегория обучения с учителем - регрессия,
  результатом которой является непрерывное значение.
  Например, вероятность или цена.
  Бывают линейные и логистические регрессии.
  
  Линейная регрессия.
  Простой алгоритм, который моделирует линейную связь
  между одной или несколькими объясняющими переменными
  и непрерывной числовой выходной переменной.
  Он быстрее обучается по сравнению с другими алгоритмами машинного обучения.
  Его самое большое преимущество заключается
  в способности объяснять и интерпретировать прогнозы модели.
  
  ..........
  
  Логистическая регрессия.
  Не выполняет статистическую классификацию,
  а оценивает параметры логистической модели.
  Причина, по которой её можно применять для классификации,
  заключается в границе принятия решений,
  которая вставляется для разделения классов.
  Таким образом, в своей самой простой форме логистическая регрессия
  использует логистическую функцию
  для моделирования бинарных зависимых переменных.
  
  Другие распространённые типы алгоритмов
  для выполнения классификации и/или регрессии:
  
  Деревья решений.
  Это непараметрический алгоритм, который также может выполнять
  регрессию и классификацию.
  Он понятен и прост для визуализации и интерпретации.
  Концептуально можно рассматривать дерево решений в виде потока,
  текущего от корня к листьям.
  Путь к листу от корня определяет правило принятия решения,
  принятое на основе признаков.
  
  Случайные леса.
  Это алгоритм, который использует bootstrap-агрегацию
  и метод случайного подпространства для выращивания отдельных деревьев
  с целью получения мощного агрегированного предиктора,
  способного как к классификации, так и к регрессии.
  Цель состоит в том, чтобы уменьшить корреляцию между предикторами
  для агрегированной модели.
  
  Опорные векторные машины.
  Используются для классификации изображений и категоризации текстов.
  
  Нейронные сети.
  Изучают сложные закономерности в данных
  и применяются для распознавания изображений и речи.
  
  Преимущества обучения с учителем:
  
  высокая точность прогнозирования;
  
  широкий спектр применений;
  
  высокая степень интерпретируемости;
  
  контроль процесса обучения;
  
  оценка производительности алгоритма;
  
  инкрементальное обучение.
  
  Недостатки:
  
  проблема доступности данных;
  
  зависимость надёжности прогнозов и эффективности модели
  от качества и согласованности разметки;
  
  зависимость производительности модели
  от правильно выбранных входных переменных;
  
  сложность масштабирования;
  
  ограниченность закономерностей,
  поскольку они только в пределах предоставленных наборов обучающих данных;
  
  высокая вычислительная стоимость.
  
  Обучение без учителя
  
  Это подход, применяемый для обнаружения базовой структуры данных.
  Алгоритмы обучения без учителя не требуют отображения входов и выходов
  и, соответственно, участия человека.
  Обычно они используются для выявления существующих закономерностей в данных,
  так что экземпляры группируются без необходимости в метках.
  Предполагается, что экземпляры, которые попадают в одну группу,
  имеют схожие характеристики.
  
  Этот метод чаще всего используется в таких сценариях,
  как сегментация клиентов, обнаружение аномалий,
  анализ потребительской корзины, кластеризация документов,
  анализ социальных сетей, сжатие изображений.
  //// А теперь еще и для задач генерации текста, изображений, видео и т.д.
  
  Модели обучения без учителя группируют данные
  и используются для решения трёх основных задач:
  //// Уже, как минимум, четырех - причем задача "генерации"
  //// сейчас развивается наиболее бурно.
  
  Кластеризация.
  Группировка похожих точек данных в кластеры.
  
  .......
  
  Ассоциация.
  Поиск связей между переменными.
  
  .......
  
  Сокращение размерности.
  Алгоритм количественно сокращает переменные в данных,
  но при этом стремится сохранить как можно больше информации.
  Этот метод применяется во время предварительной работы с данными.
  Пример: улучшение качества изображения посредством удаления шума
  при помощи автокодировщика.
  
  Наиболее распространённые алгоритмы и методы обучения без учителя:
  
  Кластеризация методом k-средних (k-means).
  Популярный и широко используемый алгоритм,
  который разбивает данные на так называемые k-кластеры.
  Каждая точка данных присваивается ближайшему кластерному центру,
  а центры кластеров пересчитываются итеративно.
  
  ........
  
  Иерархическая кластеризация.
  Алгоритм строит иерархию кластеров двумя способами:
  агломеративным (подход снизу вверх)
  и разделительным (нисходящий подход).
  
  .......
  
  DBSCAN.
  Алгоритм группирует точки данных, которые плотно упакованы,
  и отмечает те, которые лежат отдельно, как выбросы.
  DBSCAN предполагает, что кластеры - это плотные области в пространстве,
  разделённые областями с меньшей плотностью.
  В отличие от k-средних, DBSCAN выводит количество кластеров на основе данных
  и может обнаруживать кластеры произвольной формы.
  Используется для пространственного анализа данных и фильтрации шума.
  
  Анализ главных компонентов.
  Преобразует данные в набор некоррелированных компонентов,
  которые максимизируют дисперсию.
  Этот процесс снижает размерность данных.
  
  ........
  
  Леса изоляции.
  Алгоритм создаёт набор деревьев,
  случайным образом выбирая признак и разделяя данные.
  Затем алгоритм обнаруживает аномалии,
  ища точки, требующие меньше разделений для изоляции.
  
  ........
  
  Одноклассовый SVM.
  Этот метод изучает границу,
  которая отделяет нормальные точки данных от выбросов.
  Используется для многомерных данных и в задачах обнаружения аномалий,
  
  .......
  
  Преимущества:
  
  не нужны размеченные наборы данных;
  
  выявляются скрытые закономерности;
  
  сокращаются размерности;
  
  выявляются аномалии и выбросы в представленных данных;
  
  повышается экономическая эффективность.
  
  Недостатки:
  
  трудности в интерпретации результатов из-за отсутствия меток;
  
  нет чётких метрик;
  
  ресурсоёмкость;
  
  проблемы переобучения;
  
  зависимость от качества используемых признаков.
  
  Сравнение подходов
  
  Обучение с учителем подразумевает использование обучающих наборов.
  К примеру, алгоритм может предсказать,
  как долго автомобилист будет в пути с учётом времени суток, погоды и т. д.
  Но сначала модель придётся научить понимать,
  что такое дождливая погода и как она увеличивает время вождения автомобиля.
  
  Модели обучения без учителя работают сами по себе
  и обнаруживают внутреннюю структуру неразмеченных данных.
  Эти модели не требуют человеческого вмешательства.
  Они не делают прогнозов,
  а только автоматически группируют данные.
  //// Это утверждение УЖЕ неверно.
  //// Генеративные ИИ-модели как раз обучаются делать "прогнозы".
  //// На этом построен и принцип их обучения и режим их работы (инференса).
  Например, изображения по содержащимся на них объектам
  (людям, животным, зданиям и т. д.),
  не зная заранее, что это за объекты.
  Если использовать обучение без учителя в одном и том же наборе данных
  о поездках на работу в автомобиле,
  модель будет группировать поездки с одинаковыми условиями,
  такими как время суток и погода,
  но не сможет предсказать время в пути.
  
  Как правильно выбрать
  
  Обучение с учителем используется чаще, чем без него,
  потому что оно точнее и эффективное.
  В свою очередь, обучение без учителя можно использовать для данных,
  которые не размечены, что часто встречается.
  Также его можно применять для поиска скрытых закономерностей в данных,
  которые модели обучения с учителем не смогут обнаружить.
  Контролируемое обучение проблематично для классификации больших данных,
  но полученные результаты будут максимально точными.
  Алгоритмы неконтролируемого обучения легче обрабатывают большие данные
  в режиме реального времени,
  но конечные результаты менее точны.
  
  Но это не выбор <или/или>.
  Есть золотая середина, известная как обучение с частичным привлечением учителя.
  Здесь используется набор обучающих данных как с размеченными,
  так и с неразмеченными данными.
  Это полезно, когда трудно извлечь соответствующие функции из больших объёмов.
  Например, такой алгоритм можно использовать
  для набора с миллионами изображений,
  из которых размечены только несколько тысяч.
  
  Обучение с частичным привлечением учителя оптимально для медицинских изображений,
  где небольшой объём обучающих данных может привести
  к значительному повышению точности результатов.
  
  ........
  
  //// Конец цитирования.
  
  Если обратить внимание на то,
  что в тексте полностью упущены генеративные ИИ-модели
  и основной внимание уделяется "деревянным" решениям,
  т.е. ситуация в "машинном обучении" ДО "эпохи ChatGPT",
  то можно было бы сделать вывод о том что это текст,
  как минимум, двухлетней давности.
  Но он точно появился на этой неделе, да еще в блоге Сбера,
  который уже достаточно далеко продвинулся в разработке своий
  генеративных ИИ-моделей.
  Тогда что это было?
  
  А как Вам такая версия?
  Этот материал полностью продукт ИИ-системы от Сбера,
  обученная на материалах предыдущих лет.
  И Сбер просто проверяет качество полученного результата
  на достаточно искушенном сообществе.
  Судя по количеству плюсиков и отсутствию "гневных" комментариев,
  эксперимент прошел успешно.
  А какова Ваша позиция в этом вопросе?
  
  
  =========
  
  14.09.2024 14:10
  
  Сети Колмогорова-Арнольда (KAN) простыми словами.
  В оглавление.
  
  Очень интересный и поучительный, во всяком случае для меня, материал
  о новом классе нейросетей, содержащий давно искомую "крупицу тайных знаний":
  
  "Сети Колмогорова-Арнольда:
  новый <старый> шаг к интерпретируемому ИИ".
  Автор: andreybrylb
  https://habr.com/ru/articles/843234/.
  13 сен 2024 в 22:46
  
  Автор оригинала: Стив Надис
  https://www.quantamagazine.org/novel-architecture-makes-neural-networks-more-understandable-20240911/
  
  //// Начало цитирования.
  
  В мире искусственного интеллекта произошел интересный прорыв.
  Исследователи разработали новый тип нейронных сетей,
  который может сделать их работу более прозрачной и понятной.
  Эти сети, названные сетями Колмогорова-Арнольда (KAN),
  основаны на математическом принципе, открытом более полувека назад.
  https://ru.wikipedia.org/wiki/Теорема_Колмогорова_-_Арнольда
  
  Нейронные сети сегодня - это мощнейшие инструменты искусственного интеллекта.
  Они способны решать сложнейшие задачи, обрабатывая огромные массивы данных.
  Однако у них есть существенный недостаток - их работа непрозрачна.
  Ученые не могут до конца понять, как именно сети приходят к своим выводам.
  Это явление получило название "черного ящика" в мире ИИ.
  
  Долгое время исследователи задавались вопросом:
  возможно ли создать нейронные сети,
  которые давали бы такие же точные результаты,
  но при этом работали бы более понятным образом?
  И вот, похоже, ответ найден.
  
  В апреле 2024 года была представлена новая архитектура нейронных сетей
  - сети Колмогорова-Арнольда.
  Эти сети способны выполнять практически все те же задачи,
  что и обычные нейронные сети, но их работа гораздо более прозрачна.
  В основе KAN лежит математическая идея середины 20 века,
  которую удалось адаптировать для современной эпохи глубокого обучения.
  
  Несмотря на то, что KAN появились совсем недавно,
  они уже вызвали большой интерес в научном сообществе.
  Исследователи отмечают, что эти сети более понятны
  и могут быть особенно полезны в научных приложениях.
  С их помощью можно извлекать научные закономерности непосредственно из данных.
  Это открывает новые захватывающие возможности для научных исследований.
  
  Соответствие невозможному
  
  Чтобы понять, в чем преимущество KAN, нужно разобраться,
  как работают обычные нейронные сети.
  Они состоят из слоев искусственных нейронов, соединенных между собой.
  Информация проходит через эти слои, обрабатывается
  и в итоге превращается в результат.
  Связи между нейронами имеют различные веса, которые определяют силу влияния.
  В процессе обучения сети эти веса постоянно корректируются,
  чтобы результат становился все более точным.
  
  Главная задача нейронной сети - найти математическую функцию,
  которая наилучшим образом описывает имеющиеся данные.
  Чем точнее эта функция, тем лучше прогнозы сети.
  В идеале, если сеть моделирует какой-то физический процесс,
  найденная функция должна представлять собой физический закон,
  описывающий этот процесс.
  //// Что-то в этой формулировке смущает,
  //// но что именно "ухватить не удается".
  //// Может быть вера в возможность представления "всего и вся"
  //// именно "математической формулой".
  //// Хотя весь арсенал ВОЗМОЖНОЙ математики на сегодня
  //// даже близко не исчерпан, тем более той которая появится через пару сотен лет.
  //// Так что есть сомнения в возможности в НАСТОЯЩЕЕ время,
  //// представить любую реальную зависимость известными способами.
  
  Для обычных нейронных сетей существует математическая теорема,
  которая говорит, насколько близко сеть может приблизиться к идеальной функции.
  Из этой теоремы следует, что сеть не может представить эту функцию
  абсолютно точно.
  А вот KAN в определенных условиях способны на это.
  //// Но в общем случае это будет все-равно приближение,
  //// в каком-то месте/условиях КАК-ТО отличающееся от реальности.
  //// И вот в этом отличии, возможно, основная проблема.
  
  KAN работают принципиально иначе.
  Вместо числовых весов они используют функции на связях между нейронами.
  Эти функции нелинейны, то есть могут описывать более сложные зависимости.
  При этом их тоже можно обучать, настраивая с гораздо большей точностью,
  чем простые числовые веса.
  
  Однако долгое время KAN считались чисто теоретической конструкцией,
  непригодной для практического применения.
  Еще в 1989 году в научной статье прямо утверждалось,
  http://cbcl.mit.edu/people/poggio/journals/girosi-poggio-NeuralComputation-1989.pdf
  что математическая идея, лежащая в основе KAN,
  "неуместна в контексте обучаемых сетей".
  
  Истоки этой идеи уходят в 1957 год,
  когда математики Андрей Колмогоров и Владимир Арнольд
  доказали интересную теорему.
  Они показали, что любую сложную функцию многих переменных
  можно представить в виде комбинации множества простых функций
  от одной переменной.
  //// Опять же вопрос в том, является ли искомая функция,
  //// вообще представимой в привычных терминах/пространствах.
  //// Например, в пространствах "дробно-отрицательной" размерности.
  
  Рис. Андрей Колмогоров (вверху) и Владимир Арнольд в 1957 году доказали,
  что сложную математическую функцию можно переписать
  как комбинацию более простых.
  
  Однако была одна проблема.
  Простые функции, получаемые в результате применения теоремы,
  могли быть "негладкими", то есть иметь острые углы.
  Это создавало сложности для построения на их основе обучаемой нейронной сети.
  Ведь для успешного обучения функции должны быть гладкими,
  чтобы их можно было плавно подстраивать.
  //// А ведь есть еще функции "разрывные"/"неоднозначные"/"фрактальные"/"хаотические".
  
  Так что идея KAN долгое время оставалась лишь теоретической возможностью.
  Но все изменилось в январе прошлого года,
  когда за эту тему взялся аспирант-физик из MIT Цимин Лю.
  Он работал над тем, как сделать нейронные сети более понятными
  для научных приложений,
  но все попытки заканчивались неудачей.
  И тогда Лю решил вернуться к теореме Колмогорова-Арнольда,
  несмотря на то, что раньше ей не уделяли особого внимания.
  
  Его научный руководитель, физик Макс Тегмарк,
  поначалу скептически отнесся к этой идее.
  Он был знаком с работой 1989 года и думал,
  что эта попытка снова зайдет в тупик.
  Но Лю не отступал, и вскоре Тегмарк изменил свое мнение.
  Они поняли, что даже если функции, порождаемые теоремой,
  не являются гладкими,
  сеть все равно может аппроксимировать их гладкими функциями.
  К тому же, большинство функций, встречающихся в науке,
  как раз являются гладкими.
  А это значит, что теоретически возможно их идеальное
  (а не приближенное) представление.
  
  Лю не хотел отказываться от идеи, не попробовав ее на практике.
  Он понимал, что за 35 лет, прошедших с момента публикации статьи 1989 года,
  вычислительные возможности шагнули далеко вперед.
  То, что казалось невозможным тогда, вполне могло оказаться реальным сейчас.
  
  Около недели Лю работал над идеей, разрабатывая несколько прототипов KAN.
  //// Всего-то неделю. Ничего себе "скорость" и "глубина погружения".
  //// Или дел в том, что для реализации "забаненной" ранее идее,
  //// наконец-то, пришло время, удачное стечение обстоятельств,
  //// и, конечно, дерзкое упорство первооткрывателя.
  Все они имели два слоя - самую простую структуру,
  на которой исследователи сосредотачивались десятилетиями.
  //// Кстати, эта "двухслойная парадигма" до сих пор присутствует
  //// в большинстве обучающих курсов по нейронным сетям.
  Выбор двухслойной архитектуры казался естественным,
  ведь сама теорема Колмогорова-Арнольда по сути дает схему такой структуры.
  Теорема разбивает сложную функцию
  на отдельные наборы внутренних и внешних функций,
  что хорошо соответствует двухслойной структуре нейронной сети.
  
  Однако, к разочарованию Лю,
  ни один из его прототипов не показал хороших результатов
  в решении научных задач, на которые он рассчитывал.
  И тут Тегмарк предложил ключевую идею:
  а что если попробовать KAN с большим количеством слоев?
  Такая сеть могла бы справляться с более сложными задачами.
  
  Рис. Цимин Лю использовал теорему Колмогорова-Арнольда
  для построения нейронных сетей нового типа.
  
  Эта нестандартная мысль оказалась прорывом.
  Многослойные KAN начали подавать надежды,
  //// Вот это ключевая "крупинка информации",
  //// которая отсутствует во всех других сообщения/обзорах KAN.
  //// Сети более глубокие, чем классические "двуслойки",
  //// каким-то образом преодолевают "негладкость" искомой функции.
  //// Это пока никак теоретически не обосновано,
  //// но зато есть практическая реализация.
  //// И, самое главное, порождают надежду,
  //// что увеличение "многослойности" - глубины нейросетей,
  //// также позволят преодолеть барьеры "неоднозначности", "фрактальности"
  //// и, может быть, "хаотичности".
  //// А что? Мечтать, так мечтать?
  //// Только ради одной этой "крупинки знания/надежды"
  //// этот текст стоит того, чтобы зафиксировать его в проекте без купюр.
  и вскоре Лю и Тегмарк привлекли к работе коллег из MIT, Калтеха
  и Северо-Восточного университета.
  Они хотели собрать команду, в которой были бы как математики,
  так и эксперты в областях, где планировалось применять KAN.
  
  В апрельской публикации группа продемонстрировала,
  что трехслойные KAN действительно возможны.
  Они привели пример трехслойной KAN,
  способной точно представить функцию,
  с которой не справлялась двухслойная сеть.
  Но на этом исследователи не остановились.
  С тех пор они экспериментировали с сетями, имеющими до шести слоев.
  С каждым новым слоем сеть становилась способна выполнять
  все более сложные функции.
  "Мы обнаружили, что можем добавлять столько слоев, сколько захотим",
  - отметил один из соавторов работы.
  
  Проверенные улучшения
  
  Авторы также применили свои сети к двум реальным задачам.
  Первая относилась к области математики, известной как теория узлов.
  В 2021 году команда DeepMind создала обычную нейронную сеть,
  способную предсказывать определенное топологическое свойство узла
  на основе других его свойств.
  Спустя три года новая KAN не только повторила это достижение,
  но и пошла дальше.
  Она смогла показать, как предсказанное свойство связано со всеми остальными
  - то, чего обычные нейронные сети сделать не могут.
  
  Вторая задача была связана с явлением в физике конденсированных сред,
  называемым локализацией Андерсона.
  Целью было предсказать границу,
  на которой происходит определенный фазовый переход,
  а затем вывести математическую формулу,
  описывающую этот процесс.
  Ни одна обычная нейронная сеть никогда не могла этого сделать.
  KAN справилась с задачей.
  
  Но главное преимущество KAN перед другими типами нейронных сетей
  - их интерпретируемость.
  Именно это и было основной мотивацией для их разработки, по словам Тегмарка.
  В обоих примерах KAN не просто выдала ответ,
  но и предоставила объяснение.
  "Что значит, что что-то поддается интерпретации?
  Если вы дадите мне некоторые данные,
  я дам вам формулу,
  которую вы сможете записать на футболке",
  - пояснил Тегмарк.
  
  Рис. Макс Тегмарк, соратник Лю, высказал ключевое предложение,
  которое привело к функционированию сетей Колмогорова-Арнольда
  
  Эта способность KAN, хотя пока и ограниченная,
  предполагает, что такие сети теоретически могут научить нас
  чему-то новому об окружающем мире,
  считает физик Брайс Менар из Университета Джона Хопкинса,
  изучающий машинное обучение.
  "Если проблема действительно описывается простым уравнением,
  сеть KAN довольно хорошо справляется с его поиском",
  - отметил он.
  Однако Менар предупредил, что область, где KAN работают лучше всего,
  вероятно, будет ограничена задачами,
  подобными тем, что встречаются в физике,
  где уравнения, как правило, содержат очень мало переменных.
  
  Лю и Тегмарк согласны с этим, но не видят в этом недостатка.
  "Почти все известные научные формулы, такие как E = mc?,
  можно записать в терминах функций от одной или двух переменных",
  - сказал Тегмарк.
  "Подавляющее большинство вычислений, которые мы выполняем,
  зависят от одной или двух переменных.
  KAN используют этот факт и ищут решения в такой форме".
  
  Конечные уравнения
  
  Статья Лю и Тегмарка о KAN быстро вызвала ажиотаж в научном сообществе,
  собрав 75 ссылок всего за три месяца.
  Вскоре другие группы исследователей начали работать над своими версиями KAN.
  
  В июне появилась статья Ичжэна Вана из Университета Цинхуа и его коллег.
  Они показали, что их нейронная сеть на основе идей Колмогорова-Арнольда (KINN)
  "значительно превосходит" обычные нейронные сети
  в решении уравнений в частных производных.
  Это важное достижение, ведь такие уравнения встречаются повсюду в науке.
  
  Исследование, опубликованное в июле учеными из Национального университета Сингапура,
  https://arxiv.org/abs/2407.16674
  дало более неоднозначные результаты.
  Они пришли к выводу, что KAN превосходят обычные сети в задачах,
  где важна интерпретируемость.
  Однако в задачах компьютерного зрения и обработки звука
  лучше справлялись традиционные сети.
  В обработке естественного языка и других задачах машинного обучения
  оба типа сетей показали примерно одинаковые результаты.
  Для Лю эти выводы не стали неожиданностью.
  Ведь изначально группа разработчиков KAN фокусировалась
  на "задачах, связанных с наукой",
  где интерпретируемость является главным приоритетом.
  
  Тем временем Лю стремится сделать KAN более практичными и простыми в использовании.
  В августе он и его коллеги опубликовали новую работу под названием "KAN 2.0".
  https://arxiv.org/abs/2408.10205
  Лю описал ее как "больше похожую на руководство пользователя,
  чем на обычную научную статью".
  По его словам, эта версия более удобна для пользователей
  и предлагает новые функции, например, инструмент для умножения,
  которых не хватало в исходной модели.
  
  Лю и его соавторы утверждают, что этот тип сетей представляет собой
  нечто большее, чем просто инструмент для решения задач.
  KAN продвигают то, что группа называет "наукой, основанной на любопытстве".
  Она дополняет "науку, основанную на приложениях",
  которая долгое время доминировала в машинном обучении.
  
  Например, при изучении движения небесных тел
  исследователи, ориентированные на приложения,
  сосредотачиваются на прогнозировании их будущих положений,
  а ученые, движимые любопытством, надеются раскрыть фундаментальную физику,
  стоящую за этим движением.
  Лю верит, что с помощью KAN исследователи смогут получить от нейронных сетей
  гораздо больше, чем просто помощь в решении сложных вычислительных задач.
  Вместо этого они могли бы сосредоточиться
  на получении глубокого понимания изучаемых явлений
  ради самого знания.
  
  Этот подход открывает захватывающие перспективы для науки.
  KAN могут стать мощным инструментом не только для предсказания результатов,
  но и для раскрытия скрытых закономерностей и принципов,
  лежащих в основе различных природных и технических процессов.
  
  Конечно, KAN все еще находятся на ранней стадии развития,
  и предстоит решить немало проблем,
  прежде чем они смогут полностью раскрыть свой потенциал.
  Но уже сейчас ясно, что эта новая архитектура нейронных сетей
  может существенно изменить подход к использованию искусственного интеллекта
  в научных исследованиях.
  
  Возможность "заглянуть внутрь" работы нейронной сети,
  понять логику ее выводов
  - это то, о чем ученые мечтали с момента появления технологии глубокого обучения.
  KAN делают важный шаг в этом направлении,
  предлагая не просто точные предсказания,
  но и понятные объяснения.
  
  Это может привести к настоящему прорыву в различных областях науки.
  Представьте, что нейронная сеть не просто предсказывает погоду с высокой точностью,
  но и выводит новые метеорологические законы.
  Или не только распознает раковые клетки на снимках,
  но и формулирует новые гипотезы о механизмах развития опухолей.
  
  Естественно, KAN - не универсальное решение всех проблем.
  У этой технологии есть свои ограничения и области,
  где она может быть менее эффективна, чем традиционные нейронные сети.
  Но в сфере научных исследований,
  особенно там, где важно не только получить результат,
  но и понять, как он был достигнут,
  KAN могут стать незаменимым инструментом.
  
  Работа Лю, Тегмарка и их коллег открывает
  новую главу в истории искусственного интеллекта.
  Она показывает, что иногда для движения вперед нужно оглянуться назад
  и по-новому взглянуть на старые идеи.
  Теорема, доказанная Колмогоровым и Арнольдом более полувека назад,
  нашла неожиданное применение в эпоху глубокого обучения,
  предлагая решение одной из самых сложных проблем современного ИИ.
  
  Будущее KAN выглядит многообещающим.
  По мере того как исследователи продолжают экспериментировать с этой архитектурой,
  открываются новые возможности и области применения.
  Возможно, мы стоим на пороге новой эры в развитии искусственного интеллекта
  - эры, где машины не только дают ответы,
  но и помогают нам понять, почему эти ответы верны.
  
  В конечном счете, цель науки - не просто предсказывать явления,
  но и понимать их.
  KAN предлагают путь к такому пониманию,
  соединяя мощь современных вычислений
  с прозрачностью и интерпретируемостью классической математики.
  Это слияние может привести к новым открытиям и инсайтам,
  которые были недоступны ранее.
  
  Так что следующий раз,
  когда вы услышите о прорыве в области искусственного интеллекта,
  помните о KAN.
  Эти сети могут не только решать сложные задачи,
  но и объяснять свои решения на языке, понятном человеку.
  И кто знает, может быть, именно KAN
  помогут нам раскрыть следующую великую тайну природы,
  записав ее формулу на футболке,
  как мечтает Макс Тегмарк.
  
  ,,,,...
  
  //// Из комментариев.
  
  michael108
  2 часа назад
  
  Правильно ли я понимаю, что, получив на вход массив данных,
  KAN предложит набор функций 1-2 переменных,
  в сумме описывающих эти данные?
  
  Если я правильно помню,
  когда-то подобное предлагалось делать с помощью набора экспонент.
  А тут -- будет широкий набор функций
  (в том числе и неоднозначных, типа модуля).
  //// Больше интересны "комплЕксные функции" - тоже принципиально неоднозначные,
  //// но имеющие куда больший потенциал в плане "выразительности".
  И этот набор будет давать нам идею о том,
  какая физика стоит за этими данными?
  
  .......
  
  //// Конец цитирования.
  
  Помимо самой интересной концепции нейросетей,
  заслуживающей отдельного внимания,
  интересен будет еще и путь дальнейшего развития этой концепции.
  "Нельзя дважды войти в одну и ту же реку".
  Очевидно, что исследователи учтут опыт разработки обычных нейросетей
  и, возможно, обратят внимание на какие-то аспекты машинного обучения,
  которые были упущены из виду, или просто не проявились,
  при разработке/обучении сверточных, генеративных, дискриминационных
  и других уже привычных архитектур.
  
  А для меня информация о том, что увеличение "многослойности" нейросети,
  позволяет преодолевать какие-то "теоретические барьеры",
  стала как "живительный глоток" в концепции "многоуровневых пространств",
  которую пытаюсь приложить для интерпретации/понимания
  поведения/обучения нейронок.
  
  
  ========
  
  28.09.2024 14:45
  
  Об оценке корреляции временных рядов простыми словами.
  В оглавление.
  
  Прорабатывая материалы по инструментам оценки корреляций в реальных процессах,
  по ссылке в комментариях набрел просто на изумительный материал на эту тему:
  
  "Корреляция между временными рядами: что может быть проще?".
  Автор: adeshere (Алексей)
  https://habr.com/ru/articles/542638/.
  16 фев 2021 в 12:00
  
  Материал настолько мне понравился, что считаю просто необходимым
  включить его в список "обязательной литературы"
  по изучению основ матстатистики и "реальной логики",
  практически ничего из него не сокращая,
  несмотря на его очень значительный размер.
  
  //// Начало цитирования.
  
  Предварительные замечания
  
  ......
  
  А теперь - к делу:
  
  Рис. Связь между количеством морских пиратов
  и глобальной температурой кажется очевидной.
  Интересно, что для пиратства в области авторских прав
  (на рисунке не показаны)
  корреляция с потеплением намного более сильная,
  только вот знак корреляции будет противоположный
  
  Введение
  
  Все чаще объектами статистического анализа становятся
  не массивы (таблицы) значений,
  а временные ряды.
  Такие ряды формируются при наблюдениях за природными процессами и явлениями,
  изучении социологических или макроэкономических показателей,
  при промышленном производстве и сбыте продукции.
  Главное, что отличает временной ряд от других типов данных
  - это то, что номер (время) наблюдения имеет значение.
  То есть, важен не только результат измерения,
  но и тот момент времени, когда оно выполнено.
  К сожалению, при применении статистических методов
  на этот нюанс часто не обращают внимания.
  Однако, именно эта "мелочь" приводит
  к очень серьезным и нетривиальным следствиям
  с точки зрения обработки таких сигналов.
  Самые обычные формулы, описанные во всех учебниках,
  внезапно отказываются работать.
  А попытки их применения "в лоб" иногда дают,
  мягко говоря, весьма неожиданные результаты.
  Например, статистическая связь между числом пиратов и глобальным потеплением
  оказывается не просто "значимой", а "практически достоверной".
  Что удивительно, столкнувшись с такой ситуацией,
  даже достаточно грамотные исследователи не всегда понимают,
  где же тут "порылась собака" .
  Данные вроде бы правильные, математика (как и жена Цезаря)
  - точно вне подозрений.
  А результат - ни в какие ворота...
  А Вы твердо уверены,
  что всегда правильно оцениваете значимость таких корреляций?
  
  Содержание:
  
  Часть 1. Необходимая тривиальщина
  
  Часть 2. Критерий истины - практика
  
  Часть 3. А вот и ответы
  
  Часть 4. И еще раз про доказательство от противного
  
  В сухом остатке
  
  Дополнительное замечание про распределения:
  нормально ли, что анализируя данные геофизического мониторинга,
  мы никогда не встретимся с нормальным распределением?
  
  Часть 1 - необходимая тривиальщина
  
  Если вы еще не совсем забыли прочитанное в учебниках по статистике,
  можете смело этот раздел пропустить,
  и переходить сразу к части 2-ой.
  
  Как известно, математика невероятно эффективно описывает реальность.
  Построив абстрактную математическую модель,
  мы отвлекаемся от всего несущественного,
  и это позволяет нам не только лаконично выразить
  свойства моделируемого объекта на языке формул,
  но часто также и сделать далеко идущие выводы
  о закономерностях его поведения.
  Сказать, что такие выводы полезны для практики
  - это не сказать ничего.
  Буквально вся окружающая нас сейчас техника была бы невозможна без математики,
  транслирующей физические законы и их следствия в тот формат,
  который можно непосредственно применять для разных практических нужд.
  
  Одна из базовых математических абстракций,
  с изучения которой начинается любой курс матстатистики
  - это понятие случайной величины.
  Считается, что получая значение случайной величины
  результате какого-то измерения, или эксперимента,
  мы извлекаем его из некоторого пространства элементарных событий.
  Очень важно, что при повторении опыта
  мы извлекаем новое значение случайной величины
  из той же самой генеральной совокупности.
  Именно этот - тривиальный, казалось бы, факт -
  позволяет нам строить очень мощные и крайне полезные статистические критерии.
  В частности, мы можем вычислять произвольные функции
  одной или нескольких случайных величин
  и делать определенные выводы о поведении этих функций.
  
  Например, чтобы оценить наличие связи между двумя случайными величинами X и Y,
  мы можем вычислить коэффициент Rxy корреляции между ними.
  Для независимых случайных величин
  с не слишком экзотическими свойствами значение Rxy
  будет обычно приближаться к нулю по мере роста объема той выборки,
  по которой мы оцениваем Rxy.
  Прелесть и мощь математики проявляется в том,
  что, имея самую минимальную информацию об исходных случайных величинах
  (достаточно знать их функцию распределения),
  мы можем точно сказать,
  как именно (по какому закону) будет приближаться к нулю Rxy,
  если X и Y действительно независимы.
  Например, если X и Y имеют нормальное распределение,
  то 95%-ный доверительный уровень z95 можно приблизительно оценить по формуле:
  
  z_{95}=2/ \sqrt{N}
  
  где N - это количество пар измерений в выборке
  (будем считать, что их достаточно много).
  Говоря простыми словами,
  если мы оценим коэффициент корреляции Rxy между X и Y по выборке,
  содержащей 100 пар значений,
  то для независимых X и Y лишь в 5% случаев
  (т.е. в каждой 20-й выборке)
  модуль Rxy окажется больше 0.2.
  
  А значение
  
  z_{99} =3/\sqrt{N} =0.3
  
  и вовсе будет превышено лишь в 1% случаев.
  Поэтому, получив в такой ситуации Rxy=0.4
  (то есть, намного выше, чем z),
  мы говорим, что произошло очень редкое и маловероятное,
  в рамках выдвинутой гипотезы, событие.
  Настолько редкое, что гипотеза о независимости X и Y
  (иногда ее называют "нулевая гипотеза"),
  скорее всего, неверна, и ее надо отвергнуть.
  Именно так обычно доказывают, что X и Y статистически связаны.
  
  Мало-мальски искушенный читатель, наверно, уже начинает зевать:
  зачем я опять повторяю известные вещи?
  Все сказанное выше, действительно, очень похоже на правду.
  Однако, как говорили еще в древнем Риме,
  тут не вся правда.
  
  Первый (и очень важный) подводный камень состоит в том,
  что наши расчеты (которые только что привели к противоречию)
  на самом деле опирались не только на предположение
  о независимости случайных величин X и Y,
  но также еще и на предположение
  о нормальности их распределения.
  Аномальное (в рамках нашей модели) значение Rxy действительно говорит,
  что модель, по всей видимости, неверна.
  Однако ошибка может быть
  в любом месте.
  Вполне возможно, что в X и Y действительно независимы,
  просто они имеют другое (не гауссовское) распределение.
  При котором значение Rxy=0.4 при объеме выборки N=100
  вполне обыденно и типично.
  
  В частности, наши формулы для оценки z будут бесстыдно врать,
  если окажется, что дисперсия X и Y бесконечна.
  Простейший пример такой ситуации
  - это так называемое "пушечное" распределение.
  Давайте поставим орудие на вращающийся лафет,
  повернем его в случайное положение
  (все углы от 0 до 180R равновероятны)
  и пальнем в прямую бесконечную стену.
  (Не забываем, что это модель, и снаряд летит по прямой).
  Теперь, чтобы ввести случайную величину L
  с бесконечным матожиданием и бесконечной дисперсией,
  достаточно взять линейку и измерить то расстояние,
  которое пролетит ядро
  
  до попадания в стенку
  
  Интересно, что если слегка изменить условия,
  и ввести на стене-мишени ось координат
  с нулем в основании перпендикуляра, опущенного от пушки на стену,
  и определить L, как значение на этой оси,
  то матожидание L теперь будет просто нулем.
  А дисперсия - все равно бесконечна.
  Для любознательных предлагаю задачку:
  попробуйте построить "антоним" нашей случайной величины,
  с конечной дисперсией, но бесконечным матожиданием.
  Возможно ли это?
  
  К счастью для большинства аналитиков,
  столь экзотические распределения в обычной практической жизни
  встречаются редко.
  Бывает, что распределение может оказаться,
  например, равномерным,
  однако это не очень сильно повлияет на уровни значимости z статистики Rxy.
  Они лишь немного изменятся по сравнению со значениями,
  рассчитанными для гауссовых X и Y.
  Конечно, есть еще проблема "тяжелых хвостов", или выбросов,
  но она сравнительно просто может быть решена
  выбраковкой таких значений перед началом анализа.
  
  Так все-таки, нужно ли проверять
  функцию распределения исходных случайных величин
  на нормальность?
  Формально, конечно, да...
  Но могу вас заверить, что для достаточно длинного экспериментального ряда
  (если, конечно, это не выходной сигнал гауссовского генератора белого шума)
  такая проверка всегда покажет,
  что распределение достоверно отличается от нормального.
  Поэтому общепринятый метод заключается в том,
  что в такой ситуации уровни значимости все равно вычисляются
  по стандартным формулам для случайных величин с гауссовым распределением.
  А затем оговаривается,
  что поскольку условия применимости этих формул немного нарушены,
  реальная значимость вместо 99%-ной может оказаться, например, 97%-ной.
  Считается, что такие различия не играют особой роли,
  если рассчитанный уровень значимости превышается многократно.
  Например, если при объеме выборки 10000 корреляция Rxy=0.25
  (а оценка 3/sqrt(N) дает значение z99=0.03),
  то исходную гипотезу о независимости X и Y все равно можно смело отвергнуть.
  Ведь значение z превышено на порядок!
  
  Буквоеды, конечно, скажут, что подобный вывод
  не является математически строгим.
  Но реальный мир всегда отличается от абстрактной модели.
  При обработке результатов любого эксперимента
  мы неизбежно должны принимать какие-то допущения,
  доказать которые невозможно.
  Вот и в описанном выше примере, несмотря на отсутствие строгости,
  этот вывод будет верным по существу,
  так как для действительно независимых случайных величин X и Y
  такое событие (Rxy=0.25 при объеме выборки 10000)
  практически невероятно ни при каком разумном распределении X и Y.
  
  Ну что, переходим к расчетам?
  
  Часть 2. Критерий истины - практика
  
  А теперь приведу пару фактов,
  сопоставление которых друг с другом
  полностью разрушает только что сформулированную,
  такую стройную и прекрасную картину нашего модельного мира.
  
  Факт первый:
  при числе измерений порядка 10000 для любых независимых случайных величин
  с "адекватным" распределением
  (имеются в виду распределения, похожие на равномерное или нормальное,
  без гигантских выбросов и т.п.)
  вероятность получения |Rxy| > 0.1 исчезающе мала.
  Во всяком случае, она существенно меньше, чем 0.01.
  
  Факт второй:
  если посчитать коэффициент корреляции между любыми геофизическими параметрами,
  для которых имеются достаточно длинные ряды наблюдений,
  то сплошь рядом окажется, что Rxy по модулю больше, чем 0.1.
  Иногда - много больше.
  Причем, это верно для любых пар рядов.
  В зависимости от конкретного набора параметров,
  такие "суперзначимые" корреляции могут наблюдаться
  в половине всех случаев или даже в трех четвертях.
  Точная цифра не имеет значения
  - ведь согласно теории вероятностей,
  для действительно независимых величин
  они должны обнаруживаться чуть чаще, чем никогда.
  Так что же, все до одного геофизические параметры
  правда взаимозависимы?
  Погодите немного с ответом...
  
  Не будем зацикливаться на геофизике.
  Посчитаем, к примеру, коэффициент корреляции
  между уровнем воды в скважине на Камчатке
  и активностью тараканов в аквариуме в подвале лаборатории на Памире
  (активность измерялась автоматически, непрерывно в течение 5 лет,
  в рамках эксперимента по прогнозу землетрясений биологическим способом):
  
  Рис. Уровень воды в скважине на Камчатке (вверху)
  и двигательная активность колумбийских тараканов (внизу).
  Двигательная активность измерялась автоматически,
  в рамках эксперимента по прогнозу землетрясений биологическим способом
  
  Внезапно, корреляция равна Rxy= -0.35 при числе измерений около 20 000:
  
  Рис. Между прочим, очень показательная картинка!
  С одной стороны, корреляционное поле наглядно демонстрирует,
  что связь между переменными весьма расплывчатая.
  С другой - формальный 99%-ный уровень значимости,
  равный в этом случае 0.02, превышен на ДВА порядка.
  То есть, критерии однозначно говорят,
  что эта корреляционная связь не случайна.
  Мне одному кажется, что эти два утверждения
  как-то не совсем идеально согласуются между собой?
  
  А вот для уровня активности сомиков в соседнем аквариуме
  расчеты дают значение Rxy= +0.16.
  Знак корреляции изменился,
  но это тоже на порядок выше формального 99%-ного уровня значимости.
  Неужели животные как-то чувствуют происходящее в скважине за тысячи километров?!
  
  Дальше еще интереснее.
  Возьмем ряды чисел микроземлетрясений,
  произошедших в 1975-1985 годах в нескольких сейсмоактивных районах,
  и формально их сдвинем по времени лет на 20
  (просто добавим поправку к календарю).
  Теперь прокоррелируем эти ряды, например,
  с изменениями солнечного радиоизлучения на волне 2800 МГц (10.7 см) в 1955-1965 гг.
  Здравый смысл говорит,
  что после такого сдвига всякая корреляция должна исчезать.
  А вот и неправда!
  Сами значения Rxy при сдвиге, разумеется, поменяются.
  Но они все равно на порядки выше формальных 99%-ных уровней значимости.
  Хотя ни о какой причинно-следственной связи при подобном временном сдвиге
  
  и речи не может быть
  
  Например, для сейсмических станций NN 1-6 Гармского полигона
  корреляция получилась равной +0.04, +0.12, -0.01, +0.28, +0.45 и +0.17
  при количестве наблюдений около 3800 шт на каждой станции,
  что соответствует значению z99=0.05.
  А всего из 15 станций значимая на 99%-ном уровне корреляция
  наблюдается в 9 случаях...
  
  Те же зашкаливающие корреляции наблюдаются и практически
  для любых социальных процессов, а также в эконометрике.
  Правда, тут длина временных рядов по объективным причинам намного меньше
  - десятки, в лучшем случае сотни точек.
  Зато можно коррелировать практически что угодно!
  Например, успеваемость школьников в Нижневартовске
  с урожаем кокосов на Филиппинах.
  А среднегодовую заболеваемость легочными инфекциями в Санкт-Петербурге
  (возьмем наблюдения за последние 30 лет)
  с - индексом Доу-Джонса.
  Впрочем, вместо индекса Доу-Джонса с тем же успехом можно подставить в формулы
  урожайность пшеницы во Франции в двадцатом веке
  (только добавьте +100 к номеру года),
  или поголовье овец в Австралии в девятнадцатом
  (тут уже придется добавить две сотни).
  Можно даже проделать небольшой трюк,
  и интерпретировать число 1899 (и другие номера лет),
  как номер суток, считая с определенной даты.
  Если подобрать начальную дату так,
  чтобы этот ряд хронологически совместился
  с количеством вызовов скорой помощи в сутки в среднем российском городе
  (для которого вам повезет найти эти данные),
  итоговый вывод от этого не изменится!
  То есть, пробуя коррелировать разные случайно выбранные пары
  достаточно длинных экспериментальных рядов,
  мы будем лишь изредка получать Rxy, близкий к нулю.
  Гораздо чаще коэффициент корреляции будет намного выше любых формальных
  
  уровней значимости
  
  Необходимое уточнение:
  "гораздо чаще" получится, только если наблюдений достаточно много
  - десятки и сотни тысяч отсчетов.
  Чем короче ряды, чем меньше значение N, тем выше значение z.
  Поэтому для коротких рядов вероятность,
  что коэффициент корреляции случайно попадет в интервал [-z, +z],
  возрастает.
  
  Получается, что абсолютно любые процессы взаимосвязаны?
  Только для доказательства наличия "значимой" корреляции
  нужно нарастить длину ряда?
  Но как тогда быть с примерами,
  где мы просто "сдвинули" ряд во времени
  или вообще подменили шаг временной шкалы?
  Ведь речь тут идет уже не о синхронных процессах
  (при очень большом желании, поверить в связь школьников и кокосов
  все-таки можно),
  а именно о случайно наложенных друг на друга
  произвольных экспериментальных сигналах?!
  
  Я понимаю, что у половины читателей рука уже тянется к пистолету,
  чтобы приставить его к виску автора и потребовать доказательства,
  то есть данные.
  Сразу скажу, что данных в табличном виде не будет.
  Оригинальные данные я не имею права выкладывать в сеть
  (но их описание и картинки можно найти,
  например, вот тут: раз, два, три).
  https://www.elibrary.ru/item.asp?id=12899433
  https://www.elibrary.ru/item.asp?id=13621353
  https://www.elibrary.ru/item.asp?id=15254933
  А давать ссылки на общедоступные данные просто не вижу смысла
  - всегда можно возразить, что они специально подобраны.
  Однако, вы легко можете проверить написанное выше,
  прокоррелировав между собой пару десятков
  случайно выбранных рядов долговременных наблюдений
  практически любых природных и/или социальных процессов,
  доступных в Сети.
  Чем более длинные серии вы загрузите,
  тем ощутимее окажется разница между корреляциями,
  ожидаемыми для случайных независимых переменных,
  и фактически полученными значениями Rxy.
  Самое сложное, что вам придется для этого сделать
  - это импортировать данные в выбранную программу статистического анализа.
  После этого расчет коэффициента корреляции обычно выполняется
  
  нажатием одной кнопки
  
  ......
  
  Впрочем, пора уже вспомнить о другой половине читателей,
  которые не поленились проверить мои утверждения
  (или просто поверили на слово),
  и теперь пребывают в сомнении когнитивного диссонанса.
  Ведь расчеты сделаны стопроцентно надежными методами,
  а достоверность данных не вызывает ни малейших сомнений.
  При этом причинная связь между рядами абсолютно исключена
  (особенно, когда они сдвинуты на столетия).
  И несмотря на все это, корреляция в доброй половине случаев
  просто зашкаливает.
  Боюсь, что рука у них уже тоже тянется к пистолету,
  только дуло направлено не в сторону автора,
  а к собственному виску...
  
  Так вот, НЕДЕЛАЙТЕЭТОГО!
  
  Прочтите сначала третью часть этого опуса.
  Я очень старался написать ее так, чтобы предотвратить ненужные жертвы!
  
  Часть 3. А вот и ответы
  
  Наверно, многие уже поняли, к чему я клоню.
  Для остальных я сначала сформулирую правильный вывод,
  а уже потом его обосную.
  На самом деле, все вышеописанные "недоразумения" объясняются тем,
  что мы пытаемся применять аппарат,
  предназначенный для работы со случайными величинами,
  для анализа случайных процессов.
  
  Главное, что отличает случайный процесс от случайной величины
  - процесс явным образом зависит от времени.
  Проводя наблюдения за каким-то природным явлением,
  мы вовсе не извлекаем получаемые значения
  из одной и той же генеральной совокупности.
  Даже если настройки прибора и положение датчиков не менялись,
  состояние измеряемого объекта в каждый новый момент времени
  будет другое.
  Попросту говоря, это будет уже другая случайная величина.
  Серию измерений, выполненных одним и тем же прибором,
  даже неподвижно стоящим под одной и той же горой,
  нельзя рассматривать,
  как серию выборок из одного и того же
  пространства элементарных событий.
  Это - основная причина,
  почему привычные статистические методы в этом случае не работают.
  
  Повторю еще раз другими словами.
  Для описания случайного процесса,
  в отличие от случайной величины,
  недостаточно задать его функцию распределения один раз.
  Просто потому, что
  в разные моменты времени t
  она может быть разной.
  А еще для случайного процесса надо определить
  функцию совместного распределения вероятностей
  для моментов времени t и t+dt и так далее.
  Чтобы оценить эти функции,
  наблюдая за случайным процессом,
  нужна не одна реализация, а целый ансамбль.
  Ну, хотя бы десяток реализаций.
  Причем, это обязательно должны быть реализации
  одного и того же случайного процесса.
  Тогда и только тогда для каждого момента времени
  у нас будет несколько измерений одной и той же случайной величины.
  Как их обрабатывать дальше,
  мы уже знаем из школьного вузовского курса статистики.
  
  Но что же делать, если у нас есть
  только одна Земля, одна Камчатка, один Памир?
  Как изучать взаимосвязи между процессами,
  каждый из которых мы наблюдаем в единственном экземпляре?!
  (тут должна быть театральная пауза ;-)
  
  Не буду врать,
  что над этим вопросом издревле размышляли лучшие умы человечества.
  Однако кое-какие способы выкрутиться из этой подставы все же имеются.
  Оказывается, что для некоторых классов случайных процессов,
  все характеристики которых неизменны во времени,
  наличие ансамбля не обязательно!
  То есть, нам не потребуется десять реализаций,
  чтобы оценить какую-нибудь статистику.
  Вместо этого достаточно некоторое время понаблюдать за одной!
  Например, чтобы оценить коэффициент корреляции между X и Y,
  достаточно иметь одну реализацию X и еще одну - Y.
  Что, собственно, все мы и делаем,
  когда вычисляем коэффициент корреляции между потеплением и пиратами.
  Ну или рыбками на Памире и уровнем в скважине на Камчатке.
  
  Если процесс позволяет такие трюки,
  то он называется эргодическим.
  Иногда различают эргодичность по среднему, по дисперсии и т.д.
  При анализе наблюдений очень часто априори считается,
  что исследуемые процессы являются эргодическими.
  Иногда это даже не оговаривается специально.
  
  Но если мы хотим избежать грубейших ошибок,
  то нельзя забывать,
  что гипотеза эргодичности - это только гипотеза.
  Подавляющее большинство долговременных наблюдений продолжается конечное время
  (вы поняли, это такая шутка),
  а на выходе получается единственный ряд.
  Доказать эргодичность такого процесса в принципе невозможно.
  Поэтому, начиная анализ данных,
  мы чаще всего просто постулируем ее явным образом или неявно.
  А что еще остается делать,
  если в наличии куча данных и руки чешутся
  начальник требует срочно использовать всю мощь
  безупречного, многократно проверенного теоретиками
  статистического инструментария
  для достижения практических целей?
  
  Ну а теперь пришло время поставить финальную точку.
  
  На самом деле, все упомянутые в этой статье временные ряды
  (как, впрочем, и подавляющее большинство других подобных сигналов)
  вовсе не являются эргодическими.
  И если доказать эргодичность процесса достаточно сложно
  (я бы сказал, практически нереально),
  то вот опровергнуть ее часто можно без особых усилий.
  Достаточно просто вспомнить,
  что практически все экспериментальные временные ряды
  существенно нестационарны.
  Огромный массив накопленных экспериментальных данных
  однозначно свидетельствует,
  что априорная "базовая модель" почти любого природного процесса
  - это вовсе не белый шум
  (для которого действительно можно заигрывать с эргодичностью).
  Нет, спектры большинства реальных сигналов имеют
  
  степенной вид
  
  Точнее, они обычно становятся степенными
  после удаления доминирующих периодичностей
  - сезонной, суточной и т.д.
  
  А именно, спектральная мощность W пропорциональна периоду T
  в некоторой положительной степени b.
  В электронике, геофизике и во многих других прикладных областях
  показатель степени b чаще всего лежит где-то между 0.5 и 2.0.
  В предельном случае (когда показатель степени b=2),
  мы имеем процесс с независимыми случайными приращениями.
  Для такого процесса каждое следующее значение
  (в момент времени t+1)
  состоит из значения в момент времени t и случайной добавки.
  Про такой процесс говорят, что он имеет бесконечную память.
  Но если текущие значения ряда зависят от предыдущих,
  то такой процесс нельзя считать стационарным.
  
  Рис. Примеры модельных рядов со степенным спектром.
  Степенной параметр b подписан на графиках
  
  На этом рисунке приведены примеры модельных рядов
  с различным степенным показателем b,
  сгенерированных по алгоритму Фосса.
  Видно, что чем больше значение b,
  тем очевиднее нестационарность сигнала.
  Но если ряд не стационарен,
  то он заведомо не может рассматриваться,
  как последовательность измерений
  одной и той же случайной величины.
  Для него совершенно бессмысленно оценивать те статистики,
  которые вводятся и исследуются при анализе случайных величин.
  
  Да, конечно, мы можем формально подставить измеренные значения в формулы,
  и даже посчитать что-то внешне напоминающее Rxy.
  Однако каким будет теоретическое распределение этой статистики,
  никому не известно.
  
  Кстати говоря:
  если Вы можете аккуратно посчитать это распределение
  для рядов со степенным спектром,
  то, пожалуйста, напишите это в комментариях или мне в личку.
  Я сам, к сожалению, не умею
  - но думаю, что такой результат был бы достаточно интересен
  для геофизиков, занимающихся обработкой экспериментальных рядов
  
  Ясно только,
  что классические доверительные границы в этом случае считать бесполезно.
  Они просто не имеют никакого отношения к делу,
  так как мы имеем все основания отвергнуть "нулевую модель"
  вне зависимости от того,
  получится ли у нас |Rxy| >> z,
  или же будет Rxy = 0.
  Ведь занявшись анализом временных рядов,
  мы уже вышли за пределы этой модели,
  сформулированной для работы со случайными величинами.
  А это значит, что полная (правильная) формулировка модели
  теперь должна включать не два,
  а три постулата.
  А именно,
  
  ЕСЛИ выполнены три условия:
  
  У1) X и Y статистически независимы
  
  У2) какое-нибудь ограничение на функции распределения X и Y
  
  У3) X и Y - это случайные величины
  
  (т.е. анализируемая выборка составлена из пар (Xi, Yi),
  извлеченных из одной и той же генеральной совокупности)
  
  ТО значение Rxy почти никогда,
  по модулю,
  не будет превышать z,
  где z - это некоторая функция от объема выборки N,
  а конкретный вид этой функции определяется условием У2.
  
  Вполне очевидно, что когда мы рассматриваем временные ряды,
  для которых не доказана эргодичность
  (тем более, есть прямые свидетельства нестационарности),
  третье условие заведомо нарушается.
  Этого более чем достаточно, чтобы отклонить сформулированную модель,
  даже не вычисляя значение Rxy.
  
  Часть 4. И еще раз про доказательство от противного
  
  К сожалению, у меня нет таланта писать доступно и кратко.
  А донести свою мысль все-таки хочется.
  Поэтому давайте попробуем заново проследить
  всю логику доказательства наличия статистической связи
  между переменными X и Y методом корреляций.
  
  Первый шаг доказательства заключается в том,
  что мы формулируем некоторый набор требований, или предположений,
  о характеристиках X и Y.
  В число этих предположений входит и допущение о том,
  что они статистически независимы.
  
  На втором шаге мы берем экспериментальные данные
  и вычисляем некоторую совместную статистику X и Y.
  В данном случае это - статистика Rxy.
  
  Третий шаг состоит в вычислении функции распределения Rxy
  при условии, что все сформулированные ранее допущения
  - например, условия У1, У2 и У3 - истинны.
  
  На четвертом шаге мы сравниваем фактически полученное значение Rxy
  с теоретическим распределением этой величины.
  Если оказывается, что вероятность случайно наблюдать
  именно такое значение Rxy пренебрежимо мала, то отсюда делается вывод, что не все исходные допущения истинны.
  Проще говоря, что хотя бы одно из условий У1, У2 и У3 - ложно.
  
  Наконец,
  если у нас нет абсолютно никаких сомнений в истинности
  всех прочих предположений,
  кроме допущения о статистической независимости X и Y,
  то мы делаем вывод об ошибочности именно этого допущения.
  То есть, если мы уверены в истинности У2 и У3,
  то ложным должно быть условие У1.
  Что, собственно и означает:
  связь есть!
  
  Теперь понятно, почему эта схема "сбоит"
  при работе с нестационарными временными рядами.
  Сравнивая вычисленный коэффициент корреляции
  с теоретическими уровнями значимости z,
  мы не учитываем, что теоретическое распределение z
  рассчитано для одной модели,
  а коэффициент корреляции Rxy вычислен совсем для другой.
  Если упустить из вида этот нюанс,
  можно получать "значимые корреляции" через раз.
  Что порою и наблюдается даже в статьях,
  напечатанных в рецензируемых научных журналах.
  
  Если у вас остается еще хоть капля сомнений,
  или вы просто не любите абстрактные рассуждения,
  проведите простой
  
  численный эксперимент
  
  со случайными, независимыми, но не эргодическими рядами.
  Возьмите полсотни реализаций белого шума S(t)
  длиной по миллиону значений (t=0,1,... 1000000).
  Проинтегрируйте каждую такую реализацию по правилу:
  P(0)=0, P(t+1)=P(t)+S(t).
  И потом посчитайте значение парного коэффициента корреляции
  для случайно взятых рядов P(t).
  Или для их фрагментов (только не слишком коротких).
  Просто по построению, все эти ряды и фрагменты
  абсолютно независимы друг от друга.
  Можно даже не вычислять,
  чему равен уровень значимости z для коэффициента корреляции Rxy
  при подобном объеме выборки.
  Так как первый же тест покажет разницу на порядки.
  Надеюсь, мне не нужно дополнительно пояснять,
  что полученный результат совершенно не связан
  с возможной неидеальностью генератора случайных чисел?
  
  Похожий, но чуть менее впечатляющий результат можно получить
  и для рядов с другими значениями степенного параметра спектра
  в пределах обычного для геофизических наблюдений диапазона b=[0.5, 2.0].
  Все дело в том, что такие ряды, в простонародном названии
  - фликкер-шум,
  страдают так называемой низкочастотной расходимостью спектра.
  Это значит, что на любом интервале времени
  максимальную амплитуду имеют те вариации,
  чья характерная длительность сопоставима с длиной ряда.
  Если мы рассматриваем ограниченную во времени серию наблюдений,
  это очень похоже на линейный тренд.
  А корреляция между двумя линейными трендами,
  как известно, всегда равна +1.
  Точнее, оценивать корреляцию для линейно спадающих или растущих функций
  бессмысленно.
  Чтобы построить линейную функцию,
  нужно ровно две точки, которые и определяют число степеней свободы процесса.
  Можно до бесконечности увеличивать частоту дискретизации такого сигнала,
  - количество информации (= число независимых значений данных) от этого
  не изменится.
  Поэтому в формулу для оценки уровня значимости z коэффициента корреляции Rxy
  в этом случае надо подставлять значение N=2.
  Ну и чему равно z в таком случае?
  
  Как говорится, вот то-то же и оно.
  
  Впрочем, и после вычитания линейного тренда фликкер-шумовой ряд
  вовсе не станет стационарным.
  Так как останутся периоды, близкие к половине длины ряда и т.д.
  А ведь кроме фликкер-шумовой "базы",
  в большинстве реальных геофизических, макроэкономических
  и других подобных сигналов
  обычно присутствуют также и периодические компоненты,
  иногда весьма мощные (сезонная, суточная, приливная и т.д.);
  сплошь и рядом встречается экспоненциальный тренд и другие особенности,
  камня на камне не оставляющие от надежды на стационарность...
  И, тем более, на эргодичность...
  
  В сухом остатке
  
  Временной ряд - это не набор значений некоторой случайной величины!
  Когда мы формируем выборку из некоторой генеральной совокупности,
  все измерения можно переставлять как угодно - от этого ничего не изменится.
  А вот значения временного ряда переставлять нельзя
  - они всегда индексированы.
  Принципиально важно,
  что любые статистики случайного процесса (=временного ряда)
  явно зависят (или могут зависеть) от времени.
  Собственно, при анализе наблюдений именно эта зависимость
  нас чаще всего и интересует.
  
  Для оценки статистик случайного процесса одной реализации,
  вообще говоря,
  недостаточно!
  Это почти то же самое,
  как оценивать дисперсию случайной величины
  по единственному ее измерению.
  Чтобы использовать методы матстатистики,
  нужен целый пакет рядов
  (ансамбль реализаций случайного процесса).
  Если речь идет о парной статистике (корреляция между X и Y),
  нужен ансамбль из пар временных рядов.
  Располагая таким набором,
  мы можем оценивать коэффициент Rxy корреляции
  между случайными процессами X и Y,
  как функцию времени t.
  А вот говорить о корреляции случайных процессов
  безотносительно момента времени t,
  в общем случае, беспредметно.
  Так как значения Rxy в разные моменты времени t,
  вообще говоря, будут разные.
  
  Увы, но на практике у нас обычно имеется только одна Вселенная
  и только одна реализация каждого временного ряда.
  Чтобы использовать статистические методы при работе с такими данными,
  приходится опираться на гипотезу эргодичности.
  Она предполагает, что вместо вычисления какой-то статистики
  (например, среднего) по ансамблю реализаций,
  мы можем взять один ряд,
  усреднить по времени,
  и получить то же самое.
  Если ряд эргодический, этот подход реально работает!
  
  Проблема, однако, в том,
  что почти любые сигналы,
  получаемые при долговременных наблюдениях
  за геофизическими, макроэкономическими и многими другими процессами,
  практически никогда не удовлетворяют условию эргодичности.
  Применяя при обработке подобных данных стандартный аппарат матстатистики,
  ориентированный на манипуляции со случайными величинами,
  запросто можно не просто "сесть в лужу",
  но и получить совершенно абсурдные результаты.
  И вовсе не потому, что эти методы чем-то плохи.
  Все дело в том,
  что неосторожно подменяя случайную величину случайным процессом,
  мы безоговорочно выходим за рамки дозволенного,
  грубо нарушая условия применимости этих методов.
  
  Если так, то как же тогда анализировать подобные временные ряды,
  спросите вы?
  Нестационарные, с трендами, сезонными и суточными циклами, и т.д.?
  Как искать связь между ними и оценивать ее значимость?
  Хороший вопрос.
  Я постараюсь написать об этом в следующей статье.
  Если, конечно, такая тематика будет интересна читателям Хабра.
  
  P.S. Автор благодарит за полезные замечания и советы И.Цуркиса.
  При оформлении коллажа использована картинка с вот этого сайта.
  
  Дополнительное замечание про распределения:
  
  нормально ли, что анализируя данные геофизического мониторинга,
  мы никогда не встречаемся с нормальным распределением?
  
  Да-да, я в курсе про Центральную предельную теорему.
  Но еще больше я склонен верить практике обработки
  тысяч различных экспериментальных сигналов
  - прежде всего, данных геофизического мониторинга,
  но далеко не только его.
  Поэтому большая просьба к тем "чистым" математикам,
  которых задевает утверждение,
  что отсутствие нормальности - это нормально:
  не надо ругаться!
  Просто возьмите десяток-другой экспериментальных рядов,
  полученных в результате длительных
  (многие недели и месяцы) наблюдений
  и содержащих достаточное количество точек данных
  (десятки тысяч и более).
  И попробуйте найти среди них такие,
  чье распределение неотличимо от нормального,
  например, по критерию хи-квадрат.
  К сожалению или к счастью,
  жизнь несколько отличается от
  
  идеальных моделей
  
  В качестве примера приведу наблюдения скорости радиоактивного распада
  - процесса, который по определению является
  образцом стационарности и случайности
  (с учетом поправки за уменьшение количества делящегося вещества).
  Не буду сейчас обсуждать цель проведения вот этих измерений.
  https://ufn.ru/ru/articles/1998/10/e/
  Скажу только, что регистрация активности образцов плутония
  проводились в стабилизированных лабораторных условиях
  непрерывно в течение многих лет.
  Так вот,
  самый простой статистический анализ сразу же показал,
  что в этих рядах есть все виды нестационарности
  - начиная от суточных колебаний активности
  и кончая "шумом мерцания", или фликкер-шумом.
  Понятно, что сам радиоактивный распад вне подозрений.
  Однако чем точнее измерения,
  чем стабильнее измеряемая величина,
  тем более заметным становится влияние на результат
  все более слабых эффектов и факторов.
  Контролировать их все невозможно.
  Авторы цитируемого эксперимента исключают температурный эффект,
  как возможную причину нестабильности.
  Однако кроме него, на результаты измерений могли влиять,
  например, изменения атмосферного давления и влажности воздуха
  (из-за этого меняется количество - частиц,
  поглощавшихся по пути от источника до детектора),
  дрейф характеристик полупроводникового детектора альфа-частиц и т.д.
  
  Можно с уверенностью утверждать,
  что для подавляющего большинства сигналов,
  получаемых при долговременном мониторинге,
  условия ЦПТ не выполнены.
  Во-первых, нет никаких гарантий,
  что поведение контролируемой величины
  зависит от многих малых и независимых причинных факторов
  - наоборот, обычно они коррелированы между собой,
  а вклад некоторых преобладает.
  Но еще более важно,
  что практически все природные процессы нестационарны,
  что сразу же выводит их за рамки явлений,
  к которым может быть применена ЦПТ.
  Впрочем, это уже отдельный вопрос,
  который обсуждается в третьей части статьи.
  
  ........
  
  //// Из комментариев.
  
  adeshere
  17 фев 2021 в 01:13
  
  \\\ Отличная статья, очень интересно было бы почитать Ваши мысли
  \\\ по поводу оценки зависимости нестационарных таймсерий.
  \\\ Я так подозреваю, что-то на основе вейвлетов ?
  
  Если говорить про самые общие идеи,
  то я бы на первое место поставил такую:
  для нестационарных таймсерий никаких общих идей и подходов нет
  в принципе.
  Каждый ряд нестационарен по-своему,
  поэтому каждый случай надо разбирать индивидуально.
  
  Что касается геофизического мониторинга,
  то у нас довольно полезным иногда оказывается подход,
  основанный на декомпозиции сигнала на компоненты.
  В идеале - физически обусловленные,
  когда каждую компоненту сигнала можно связать с какими-то причинными факторами,
  под влиянием которых она находится.
  Например, многие сигналы довольно логично раскладываются на сезонную вариацию,
  нестационарный тренд (дрейф)
  и квазистационарный (относительно более высокочастотный) остаток.
  
  Еще одна идея - это анализ сигналов в скользящем окне.
  Если размер такого окна небольшой,
  и внутри окна сигналы можно считать квазистационарными,
  то это позволяет применять довольно много методов обработки
  для поиска взаимосвязей между сигналами в пределах окна.
  Обычно для этого строится какая-то
  (по возможности, физически осмысленная)
  модель,
  а затем ее параметры оцениваются для каждого положения скользящего окна.
  В качестве бонуса, мы автоматически получаем
  зависимость параметров модели от времени
  - часто это самое интересное.
  
  Третья идея - это параметрический анализ.
  Даже имея нестационарный сигнал,
  мы можем оценить какую-то статистику этого сигнала
  (например, фрактальную <размерность> D)
  в небольшом временном окне,
  и затем построить зависимость D от времени.
  Довольно часто такие параметрические статистики
  можно считать квазистационарными.
  Это позволяет искать взаимозависимости между такими статистиками
  (а не измеряемыми величинами),
  применяя обычный статистический аппарат.
  
  Общая проблема всех таких алгоритмов
  - это отсутствие математической строгости.
  Однако тут не все просто.
  Ведь даже когда мы используем для анализа экспериментальных сигналов
  алгоритмы со строгим обоснованием и доказанной оптимальностью,
  у нас всегда остается открытым вопрос о том,
  не нарушены ли условия применимости таких алгоритмов?
  Ведь любой алгоритм всегда начинается с преамбулы (требования),
  что исходные данные должны обладать вполне определенными свойствами.
  Но когда мы имеем дело с экспериментальным сигналом,
  доказать выполнение этих требований почти невозможно.
  Поэтому было бы наивно думать,
  что корректность результата можно гарантировать строгостью метода.
  На практике использование строгих методов
  не дает никаких преимуществ,
  если с тем же уровнем строгости не доказана
  адекватность модели данных,
  в рамках которой сформулирован метод.
  При режимных наблюдениях это почти невозможно.
  В лучшем случае можно только предполагать,
  что <базовая модель> сигнала вполне адекватна реальным данным.
  В худшем (и, к сожалению, более типичном) случае,
  наоборот, имеются видимые несоответствия
  между требованиями теоретической модели и экспериментальным сигналом.
  Но если у нас нет уверенности в адекватности используемой модели данных,
  это ставит под сомнение и все результаты,
  полученные в рамках такой модели.
  
  Поэтому простых ответов и решений нет
  (точнее, я их не знаю).
  Можно только предположить,
  что в любой нестандартной ситуации надо в первую очередь
  апеллировать к логике, критическому мышлению и здравому смыслу.
  И не бояться предлагать свои решения и подходы в дополнение
  (или даже в противовес)
  к стандартным.
  Чем больше разных подходов получится опробовать,
  тем больше будет надежда,
  что ничего интересного не пропущено,
  и что найденные зависимости достаточно устойчивы
  (то есть они не являются артефактами выбранной <базовой модели>).
  
  Ну и конечно, любой результат надо проверять
  и фальсифицировать всеми доступными способами.
  Какими именно - вопрос настолько же творческий,
  как и вопрос о выборе подходов и методов.
  Но, например, для оценки значимости
  очень часто бывает полезно численное моделирование.
  
  P.S. Что-то очень сумбурный ответ получается :-(
  Наверно, мне все-таки надо набраться терпения
  и скомпилировать это все в виде статьи.
  Чтобы получилось нормальное обсуждение с критикой
  (желательно конструктивной),
  а не просто вопросы-ответы :-(((
  
  .........
  
  ruslaniv
  17 фев 2021 в 12:35
  
   в дата-сайнс
  - это почти что как законы термодинамики в физике.
  
  barbaris76
  17 фев 2021 в 21:13
  
  Есть прекрасный аналог на русском:
  "после того, не значит - вследствие того".
  
  adeshere
  17 фев 2021 в 23:41
  
  Верно.
  Но у нас на ученом совете матерые геологи, умудренные опытом,
  говорят чуть-чуть по другому:
  <корреляция - не доказательство>.
  Их этому жизнь научила ;-)
  И не важно, что про такую науку, как математика,
  некоторые из них слышали очень издалека ;-))
  
  ........
  
  Androniy
  17 фев 2021 в 16:12
  
  Если виновата зависимость значений от предыдущих,
  то взятие конечно-разностной производной
  должно избавить от этой зависимости.
  При этом, если процессы зависимые,
  то и их производные тоже должны быть зависимыми.
  Таким образом, если посчитать производную от значений двух процессов,
  то их корреляция,
  по идее,
  может дать более точный ответ о зависимости (независимости) процессов.
  Или взятие производной не влияет на стационарность?
  
  adeshere
  17 фев 2021 в 17:27
  
  Да, переход к приращениям часто устраняет нестационарность
  или очень существенно ее подавляет.
  Кстати, для большинства упомянутых в статье сигналов
  ложные корреляции в этом случае исчезают.
  
  У нас в геофизике переход к приращениям - это один из типовых приемов.
  В частности, это обычно делается при поиске признаков
  коллективного поведения в различных сигналах.
  Это относительно новый, очень интересный метод анализа,
  с помощью которого был сделан, например,
  заблаговременный прогноз сильнейшего землетрясения последних лет
  - события Тохоку-2011. Правда, это был
  
  среднесрочный прогноз
  
  (с которым дела постепенно налаживаются,
  причем во многом благодаря вкладу российских сейсмологов),
  а для практических целей наиболее интересен оперативный.
  Поэтому общемирового фурора не получилось.
  Но среди специалистов эти результаты хорошо известны,
  т.к. соответствующие результаты были опубликованы
  
  еще до землетрясения
  
  (подробнее см. работы А.А.Любушина,
  мне они очень нравятся, хотя это мой непримиримый конкурент в научном плане ;-)
  В отличие от прогнозных работ другого сотрудника нашего института,
  гораздо более раскрученных и модных,
  но кратно более слабых в плане
  надежности статистического обоснования результатов.
  Впрочем, для любого нового направления это нормально на начальном этапе.
  
  Так что идея с приращениями - правильная и полезная,
  но, как и все остальное, это отнюдь не панацея.
  Например, это не работает для периодических функций
  (производная синуса = косинус).
  Но главное, при дифференцировании
  усиливается вклад высоких частот
  (фактически спектр умножается на частоту).
  А на высоких частотах чаще всего сосредоточен основной шум.
  Из-за этого полезный сигнал
  (в том числе и регрессионная связь)
  может просто
  
  утонуть в шумах
  
  А мы (геофизики) сейчас работаем на довольно слабых эффектах,
  которые надо <вытаскивать> из шума,
  т.к. все эффекты первого порядка величины уже изучены достаточно хорошо.
  Например, мы уже давно знаем про приливы в твердой Земле,
  и умеем их измерять (это эффект первого порядка величины).
  Но при изучении внутреннего строения Земли важны не сами приливы,
  а их отклонения от теоретических
  (т.е. отклонения амплитуд и фаз наблюдаемых приливных волн
  от теоретически вычисленных).
  И вот это - уже эффект второго порядка малости,
  для <вытаскивания> которого нужна достаточно аккуратная
  и хитрая обработка сигналов.
  
  ........
  
  sadr0b0t
  27 мая 2023 в 22:48
  
  \\\ Главное, что отличает случайный процесс
  \\\ от случайной величины - процесс явным образом зависит от времени.
  \\\ Проводя наблюдения за каким-то природным явлением,
  \\\ мы вовсе не извлекаем получаемые значения
  \\\ из одной и той же генеральной совокупности.
  
  расскажите, как вы можете получить случайную величину,
  не зависящую от времени?
  бросок игрального кубика - это случайный процесс или случайная величина?
  Можете ли вы получить несколько результатов броска одного и того же кубика,
  результат которых не зависит от времени?
  
  adeshere
  29 мая 2023 в 00:02
  
  @sadr0b0t, спасибо за хороший вопрос (хотя и слегка запоздалый).
  В своей статье я этот момент слегка упустил
  - думал, что это все очевидно,
  и что мой жаргон никого не смутит.
  Ваш вопрос показывает, что это не так,
  и что надо было об этом сказать.
  Попробую исправиться: лучше поздно, чем никогда ;-)
  
  \\\ расскажите, как вы можете получить случайную величину,
  \\\ не зависящую от времени
  
  Разумеется, значения случайной величины при разных измерениях будут разные.
  На то она и случайная величина ;-)
  Однако генеральная совокупность, из которой они извлекаются
  - остается одной и той же.
  Она от времени не зависит.
  Именно в этом смысле можно сказать,
  что функция распределения, матожидание, дисперсия
  и другие свойства случайной величины
  зафиксированы раз и навсегда
  и завтра останутся такими же, как сегодня.
  И не важно, когда и сколько измерений мы сделаем.
  
  Когда говорят, что случайный процесс зависит от времени,
  то имеют в виду, что для него это не так.
  Говоря формальным языком, случайный процесс
  - это индексированное семейство случайных величин.
  У которых могут быть разные матожидания и т.д.
  Если под индексом понимать время
  (как это чаще всего и бывает),
  то как раз и получится, что случайный процесс зависит от времени.
  В отличие от любой конкретной случайной величины,
  которая от времени не зависит
  (хотя последнее - это уже наверно жаргон,
  но раз я выбрал для статьи такой стиль,
  то буду и тут ему следовать).
  
  Конечно, независимость характеристик случайной величины от времени
  - это лишь идеализация
  (тот же Большой Взрыв намекает ;-).
  Однако в рамках человеческого опыта
  многие реальные процессы довольно хорошо этой идеализации соответствуют.
  Например, при бросании правильного игрального кубика
  вероятность выпадения любой цифры равна 1/6
  при первом, втором, третьем и т.д. бросках.
  Именно в этом смысле иногда говорят (да, жаргон),
  что результаты броска не зависят от времени
  - но имея при этом в виду вовсе не то,
  что мы всегда будем получать исключительно только значение "42" (с),
  а что вероятность получить любую цифру от 1 до 6
  не меняется при разных бросках..
  
  Впрочем, если бросать такой кубик достаточно долго,
  то он начнет изнашиваться.
  К примеру, если сделать кубик из дерева,
  то износ вдоль и поперек волокон будет отличаться.
  И спустя некоторое время кубик станет несимметричным.
  А еще у него может появиться сточенное ребро,
  на котором он будет останавливаться каждый сотый бросок.
  Вероятность выпадения 1 при этом может стать равной 1/7, а двойки - 1/5, и т.д.
  И вот в этом случае
  (когда вероятности изменились)
  мы обязаны сказать,
  что наша генеральная совокупность уже не торт та.
  Это означает, что приближение "случайной величины" больше не работает.
  Как только износ кубика перестает быть пренебрежимо малой величиной,
  у нас появляется случайный процесс,
  характеристики которого зависят от времени.
  
  Надеюсь, это достаточно понятная аналогия?
  
  Если не очень - спрашивайте еще, я постараюсь ответить.
  
  P.S. Что же касается основной статьи,
  то в ней я как раз и пытался обратить внимание читателей
  на тот не совсем очевидный факт,
  что в практической жизни нас почти всегда окружают
  именно случайные процессы,
  а вовсе не случайные величины.
  Попросту говоря, мы очень часто думаем,
  что бросаем один и тот же кубик.
  А на самом деле он каждый раз разный...
  
  ......
  
  //// Конец цитирования.
  
  К сожалению второй продолжения такого замечательного материала так и не появилось,
  хотя автор очень активен в комментариях по темам связанным со статистикой,
  - собственно так я и набрел на эту статью -
  и из этих комментариев вполне можно скомпилировать продолжение,
  или просто получить разьяснение к некоторым моментам.
  Но это достаточно трудозатратно, но какие-то пометки,
  я стал у себя делать. Может что-то и получится.
  //// Ага, встретил в этих комментариях упоминание, что "не все потеряно",
  //// и продолжение потихоньку готовится. Ждем-с с нетерпением.
  
  Но главное, что хотелось бы добавить к этому тексту,
  что Мироздание очень сложно и многоуровневое, и, зачастую, пародоксальное...
  И помимо предложенной автором максимы:
  
  \\\ ... мы очень часто думаем,
  \\\ что бросаем один и тот же кубик.
  \\\ А на самом деле он каждый раз разный...
  
  Наверно, стоит иногда задуматься и о ее полной противоположности:
  
  "Мы очень часто думаем,
  что бросаем РАЗНЫЕ "кубики".
  А на самом деле "он" ОДИН И ТОТ ЖЕ..."
  
  Т.е. причина корреляции ПРИНЦИПИАЛЬНО РАЗНЫХ ВРЕМЕННЫХ рядов,
  вполне возможно, имеет и какое-то иное основание,
  чем недоработанность матаппарата,
  вообще, где-то на уровне самого Мироздания.
  Но это уже будет темой "следующего выпуска нашей программы".
  
  
  ========
  
  28.09.2024 20:25
  
  К вопросу о корреляции разнородных нестационарных процессов.
  В оглавление.
  
  Проблема корреляции различных временных рядов/процессов,
  помимо чисто математических проблем,
  имеет еще одну "метафизическую" грань,
  которая сама по себе очень интересна,
  и очень непривычна, так как ставит под сомнение "самые основы"
  традиционных научных представлений.
  ///////// И даже математики. Но это отдельная тема.
  Тема эта и сложная и многоплановая,
  поэтому для ознакомления с ней предлагаю "выжимку" из такого материала:
  
  Метафизика, 2024, ? 2 (52). ISSN 2224-7580. стр.98
  https://mega.rudn.ru/file/Метафизика%20%202-6.pdf.
  
  DOI: 10.22363/2224-7580-2024-2-98-115
  EDN: XYPOJA
  
  О ВЛИЯНИИ МОЩНЫХ НЕСТАЦИОНАРНЫХ ПРОЦЕССОВ
  НА ПАРАМЕТРЫ СТАНДАРТОВ ВРЕМЕНИ И ЧАСТОТЫ
  В.А. Панчелюга1, М.С. Панчелюга
  
  Институт теоретической и экспериментальной биофизики РАН,
  Российская Федерация, 142290, Московская обл., г. Пущино,
  ул. Институтская, д. 3
  
  //// Начало цитирования.
  
  Аннотация.
  В настоящей работе сделана попытка рассмотрения с единых позиций
  круга экспериментальных феноменов,
  связанных с некоторым неустановленным внешним влиянием
  на стандарты времени и частоты.
  К последним кроме традиционных кварцевых и рубидиевых генераторов,
  водородных стандартов частоты
  мы относим также процесс радиоактивного распада,
  который традиционно играет роль ультрастабильных часов
  в различных методах радиоизотопного датирования.
  Причем <ультрастабильность> таких часов обычно предполагается
  для <ультрабольших> промежутках времени.
  Рассмотрены некоторые особенности гипотетического внешнего воздействия,
  а также наблюдаемые при этом характерные периоды.
  Также кратко рассмотрены исследования,
  в которых предприняты попытки воссоздать процесс влияния
  на кварцевые и радиоизотопные эталоны в лабораторных экспериментах.
  
  Введение
  
  Предметом настоящей статьи являются экспериментальные феномены,
  связанные с некоторым неустановленным внешним влиянием
  на стандарты времени и частоты
  - наиболее стабильные приборы,
  которые в настоящее время имеются у человечества.
  Высокая стабильность их параметров означает,
  в первую очередь, крайне слабый, в идеале нулевой, отклик
  на любое внешнее воздействие.
  В данном разделе будут рассмотрены примеры некоторого
  пока неустановленного внешнего влияния,
  которое способно возмущать параметры этих ультрастабильных приборов.
  
  К стандартам времени, кроме традиционных кварцевых и рубидиевых генераторов,
  водородных стандартов частоты мы относим также процесс радиоактивного распада.
  Радиоактивный распад, мгновенные значения или флуктуации которого
  часто используются как эталон случайности
  в промышленно выпускаемых высококачественных генераторах случайных чисел,
  со стороны своих средних значений традиционно выступает
  в роли ультрастабильных часов,
  используемых в различных методах радиоизотопного датирования.
  Ход таких часов описывается законом радиоактивного распада,
  и со времен Резерфорда предполагается,
  что никакие внешние воздействия не влияют
  на среднюю скорость распада радиоактивных изотопов.
  Причем <ультрастабильность> таких часов обычно предполагается
  для <ультрабольших> промежутках времени,
  на которых стабильность вышеперечисленных кварцевых, рубидиевых,
  водородных стандартов, с одной стороны,
  никем по понятным причинам не изучалась,
  а с другой - на основании того,
  что нам уже известно,
  очевидно, совершенно неудовлетворительна.
  По этой причине продолжаются поиски новых эталонов,
  обладающих хорошей долговременной стабильностью.
  В качестве примера возможного кандидата можно привести пульсары -
  намагниченные быстро вращающиеся нейтронные звёзды,
  чья беспрецедентная ротационная устойчивость
  может стать основой шкалы пульсарного времени
  с нестабильностью менее 10-18:10-19,
  и которая может использоваться
  для синхронизации используемых ныне атомных шкал,
  основанных на водородных стандартах [1].
  
  Кварцевые генераторы
  
  В работе [2] исследовались флуктуации <компьютерного времени>,
  обеспечиваемого кварцевыми генераторами.
  Для этого регистрировалось время исполнения цикла
  с программно фиксированной длиной (6,8 с) для DOS-системы.
  На фурье-спектрах были обнаружены обладающие
  высокой спектральной плотностью регулярные флуктуации
  с периодами 0,5 и 1 мин.
  На их фоне часто наблюдаются импульсы
  - резкие увеличения длительности цикла
  с амплитудой, значительно превосходящей интервал
  обычных регулярных флуктуаций.
  Временной интервал между импульсами варьирует от 15 до 43 мин,
  тогда как внутри этого интервала период колебаний составляет 2-3 мин.
  Отмечается, что обнаруженные закономерности подобны представленным в работе [6].
  
  В серии работ [3-4] исследовалась разность фаз в системе,
  состоящей из двух прецизионных кварцевых генераторов,
  расположенных таким образом,
  чтобы плоскости колебаний их кварцевых кристаллов были ортогональны.
  Очевидно, в силу этого обстоятельства авторы назвали выходной сигнал системы
  Т-сигналом.
  В спектре мощности Т-сигнала, зарегистрированного 5-12 августа 1991 г.,
  обнаружены пики в области 60 и 38 мин [3].
  В работе [4], являющейся продолжением исследований, начатых в [3],
  были найдены периоды 37,9 и 67,4 мин.
  В то время как период 37,9 мин можно рассматривать,
  как уточнённое значение периода 38 мин,
  то период 67,4 мин, по нашему мнению, является новым
  и относится к другой группе периодов,
  чем период 60 мин.
  
  Авторы [3-4] отмечают,
  что близкие к обнаруженным ими периоды присутствуют
  в спектре мощности рентгеновского излучения Солнца:
  36,3 и 59,5 мин [7].
  Также в работах [3-4] были проведены синхронные измерения Т-сигнала
  и интенсивности свечения культуры фотобактерий,
  находящихся в средоизолирующем боксе,
  которые показали, что кривые ежесуточных значений светимости фотобактерий
  и дисперсии Т-сигнала очень похожи
  (коэффициент корреляции достигает значения 0,9),
  что свидетельствует о высокой биологической активности фактора,
  определяющего значения Т-сигнала.
  
  ...........
  
  Особо подчеркивается, что аппаратурные и геофизические помехи
  с такими временными характеристиками исключены
  и предполагается, что причиной наблюдаемых периодов
  является непосредственное воздействие солнечных процессов
  на стандарты времени и частоты
  посредством гравитационных волн.
  Авторы пишут: <В итоге мы приходим к выводу,
  что гравитационные волны от Солнца, Земли и всей Вселенной
  могут заметно возмущать ход атомных стандартов частоты.
  Возможно, что именно гравитационные шумы
  и ограничивают стабильность атомных стандартов> [5. С. 20].
  
  ...........
  
  Нестационарные процессы при пусках мощных ракет
  
  В работе [17] рассмотрены нестационарные процессы,
  связанные с набором стартовой мощности ракет:
  <Ракетный двигатель до момента отрыва работает с набором стартовой мощности,
  - имеет место нестационарный процесс,
  но далее в полете до отделения первой ступени она изменяется незначительно,
  то есть процесс уже стационарный> [17].
  Анализ телеметрических данных, получаемых в этот момент,
  показал наличие необъяснимых аномалий.
  Автор отмечает, что наблюдаемые аномалии могут быть объяснены
  если предположить, что во время набора стартовой мощности
  происходит локальное изменение скорости хода времени.
  
  Автор пытается объяснить механизмы наблюдаемого явления,
  опираясь на козыревские представления о физической природе времени.
  Он пишет:
  <Одно из положений гипотезы Козырева гласит:
  "Если время воздействует на систему с причинно-следственной связью,
  то должны меняться физические свойства вещества:
  изменяется частота колебаний кварцевых пластин,
  уменьшается электропроводность и объем ряда веществ..."
  Это доказано опытом.
  А система управления - сплошь кварцевые пластины
  и электропроводные вещества> [17].
  
  .......
  
  Каирское землетрясение
  
  В качестве примера нестационарных процессов могут быть рассмотрены
  мощные землетрясения.
  В работе [18] приведены результаты измерений фазоразностного сигнала
  двух высокостабильных кварцевых генераторов,
  которые были выполнены в Томске во время Каирского землетрясения
  в октябре 1992 г.
  Как следует из рис. 1, в момент второго толчка
  происходит сбой фазы колебаний фазоразностного сигнала,
  что, очевидно, связано с переходом от колебаний с периодом 70-80 с
  к режиму практически гармонических колебаний с периодом 160 с.
  
  .........
  
  Для указанного диапазона периодов была показана
  не только тесная связь найденного спектра
  со спектром собственных колебаний Земли,
  но также его универсальный характер:
  спектры периодов, найденные для флуктуационных процессов
  в системах различной природы всегда совпадали
  с соответствующей частью спектра,
  найденного для временных рядов флуктуаций скорости ?-распада [14].
  В силу универсального характера спектра [14]
  будем в дальнейшем называть его универсальным спектром периодов (УСП).
  
  .........
  
  Всё сказанное выше, касаемое УСП,
  можно было бы попробовать вывести из связи УСП и собственных колебаний Земли,
  которые, как отмечалось, модулируют все процессы в земных геосферах.
  Но дальнейшие исследования обнаружили связь УСП
  со спектрами периодов ряда астрофизических систем:
  периодами в спектрах астрофизических мазеров [28-29],
  вращательными периодами астероидов [30],
  а также двойных звездных систем [31].
  Совокупно работы [28-31] выводят УСП из земной <сферы обитания>
   и дают основание смотреть на него
  как на глобальный космофизический феномен.
  
  .......
  
  Одними из таких исследований являются работы новосибирской группы,
  начавшей свою работу с начала 1980-х гг.
  под руководством академика М.М. Лаврентьева.
  Здесь в первую очередь следует отметить серию работ,
  опубликованную в ДАН СССР [34-37],
  основной целью которых было повторение оригинальных исследований Козырева.
  Положительный результат этих экспериментов дал импульс дальнейшим исследованиям,
  среди которых особо хотелось бы отметить мониторинг изменений
  массы ряда природных минералов [38],
  а также введение в практику исследований так называемых <зеркал Козырева>.
  Особо ценным среди результатов новосибирской группы
  видится проведение мониторинга во время падения фрагментов кометы
  Шумейкеров - Леви 9 на Юпитер,
  результаты которого были описаны в [39-40],
  а также в недавно вышедших статьях [41-42].
  
  Одним из главных результатов, по мнению авторов эксперимента,
  является обнаружение того,
  что реакция используемых наземных тест-систем
  опережает световой сигнал на величину ~ 43 мин
  (при среднем расстоянии до Юпитера порядка 750 млн км)
  - обнаружена сверхсветовая коммуникация [41].
  Также обнаружено длительное
  <...необратимое изменение базального состояния
  двух весьма разных по физической природе систем.
  Речь идет о несимметричных крутильных весах
  (изменение угла поворота коромысла)
  и о некоторой сложной смеси в предкритическом состоянии
  в запаянной пробирке
  (произошел фазовый переход <жидкость-кристалл>) [41. С. 101].
  Также предполагается биологическая активность обнаруженного сигнала [41].
  
  .........
  
  Описанные эксперименты по выбросам в скорости бета-распада
  в фокусе параболического зеркала
  являют пример наиболее впечатляющего природного влияния
  на процесс радиоактивного распада,
  когда в некоторых случаях вариации скорости достигают нескольких порядков.
  В настоящее время <резерфордовский запрет>
  на невозможность изменения скорости радиоактивного распада
  преодолен,
  и в мировой научной печати существует огромный массив статей,
  посвященных различным периодам в вариациях скорости радиоактивного распада.
  Показано, что годовые и сезонные периоды обычно имеют амплитуды ~ 10-1...10-3,
  а околомесячные и суточные ~ 10-3...10-5,
  что на много порядков меньше выбросов, обнаруженных А.Г. Пархомовым.
  Более детально эти вопросы рассмотрены в обзоре [46].
  
  ........
  
  Заключение
  
  Как следует из приведенного краткого и далеко не полного рассмотрения
  примеров систем, в которых происходит влияние
  на кварцевые и рубидиевые генераторы, водородные стандарты частоты,
  а также на процесс радиоактивного распада,
  во всех случаях, когда мы может идентифицировать источник такого влияния,
  им оказывается некоторый нестационарный процесс
  или процесс, в котором присутствуют <режимы с ускорением>.
  В случаях, когда система-индуктор выходит
  на стационарный режим функционирования,
  такого влияния не происходит.
  В рассмотренных примерах это набор стартовой мощности при пусках мощных ракет,
  толчок землетрясения, моменты удара болванки о наковальню,
  падение фрагментов кометы, выбросы корональных масс,
  электрические разряды, разгон-торможение механической системы.
  
  Важно отметить, что система, которая находится в нестационарном режиме,
  становится чувствительной к неустановленному воздействию,
  которое порождает сторонний нестационарный процесс.
  Работает принцип взаимности.
  В качестве такой системы нами был рассмотрен детектор Смирнова.
  Также, как следует из списка регистраций этого детектора,
  генераторами неустановленного воздействия
  являются определенные моменты в динамике небесных тел.
  Как правило, это моменты,
  когда можно выделить некоторый экстремум
  в пространственно-временной динамике нескольких тел.
  Наиболее яркий пример здесь - солнечные затмения.
  Существует большая литература с примерами неожиданных реакций
  различных тест-систем, в том числе и радиоактивного распада,
  стандартов времени и частоты,
  наблюдаемых в моменты максимума затмения,
  когда реализуется такого рода экстремум.
  
  Вышесказанное дает основание предположить,
  что в случаях, когда источник воздействия не идентифицирован,
  им также является некоторый нестационарный процесс.
  
  Литература
  
  .........
  
  //// 48 источников о результатах исследований/анализа
  //// за период более 30 лет. Например, такое:
  
  47. Панчелюга В. А., Шноль С. Э.
  Экспериментальное исследование влияния быстро вращающегося массивного тела
  на форму функций распределения амплитуд флуктуаций скорости ?-распада
  // Гиперкомплексные числа в геометрии и физике. 2006. 1 (5), т. 3. С. 102-115.
  
  ..........
  
  //// Конец цитирования.
  
  Наверно, не совсем понятно о чем идет речь,
  так как это одна публикация из целой серии статей на эту тему.
  Но, мне показалось, что именно она более всего подходит,
  для иллюстрации того, что один НЕСТАЦиОНАРНЫЙ процесс,
  может оказвать заметное влияние на другой процесс находящийся
  ТОЖЕ в НЕСТАЦОНАРНОМ режиме.
  Причем механизм этого влияния ПОКА НЕИЗВЕСТЕН,
  но уже достаточно устойчиво регистрируется,
  даже на таких казалось бы "непоколебимых"/безупречных устройствах
  как эталонные датчики времени, типа кварцевые и рубидиевые генераторы.
  
  Правда, для регистрации этого влияния,
  требуются очень чувствительные и, иногда, нетривиальные методы.
  Но сам факт таких регистрацйи, наверно, уже трудно отрицать,
  зато можно замалчивать, ссылаясь на отсутствие
  "обоснованной научной/математической модели".
  А идею "универсального спектра периодов" (УСП) считать чисто "спекулятивной".
  
  Так что у любого желающего есть полная возможность,
  проявив дерзость и фантазию,
  предложить свою версию "природы/модели нестационарной корреляции"
  временных процессов разной природы, трактовку УСП,
  план экспериментов в подтверждение/опровержение,
  направления практического применения, ну т.д.
  
  Или, вообще, "забацать" свою модель Мироздания,
  в которой такая "нестандартная корреляция"
  является главным связующим элементом
  между различными нестационарными процессами,
  типа гравитации,
  но не стационарной, а именно динамической.
  Может этим и заняться - чего мелочиться?
  
  
  ========
  
  06.10.2024 10:47
  
  Квантование нейросетей простыми словами.
  В оглавление.
  
  Использование различных нейросетей идет не только "в ширь",
  т.е. в сторону увеличения их размеров, областей применения,
  но и "в глубь", т.е. применения их в компактных или специализированных устройствах.
  И в этом направлении становится актуальным создание небольших по размерам,
  быстродействующих ИИ-моделей и, при этом, сохраняющих качество/точность,
  сопоставимое с большими нейросетями.
  Для этой цели сейчас активно используется и развивается такое направление
  как "квантование нейросетей". Думаю, что общие представления
  об этой технологии будут не бесполезны:
  
  "Краткий гайд по квантованию нейросетей".
  Автор: The-Founder-1 (The Founder Академия нейросетей)
  https://habr.com/ru/articles/848306/.
  04 окт 2024 в 18:57
  
  //// Начало цитирования.
  
  Мы достаточно написали статей про оптимизацию ваших нейросетей,
  сегодня пора перейти к дроблению, уменьшению и прямому урезанию,
  иначе квантованию данных.
  Сам по себе процесс этот несложный с точки зрения всего,
  но подводные камни у операции есть.
  
  Мы буквально уменьшаем битность данных,
  что позволяет сократить вычислительные ресурсы и уменьшить объем памяти,
  необходимой для хранения моделей.
  
  Наша карточка от Nvidia пользуется дешевыми,
  например, 8-битными ядрами для вычисления операций свертки/умножения матриц
  - мы получаем дешевую модель.
  Конечно, такое подрезание чисел с плавающей запятой
  может приводить и к снижению точности.
  Катастрофической.
  
  Придумали разные методы квантования,
  каждый из которых имеет свои особенности, подходы и применения.
  
  Их делят по трем критериям:
  униформное и неуниформное квантование,
  симметричное и асимметричное квантование,
  а также статическое и динамическое квантование.
  Углубляться мы не будем.
  Главное, что квантование может приводиться не только к 8-битности,
  но и к 16...
  
  Там, где данные с высокой массой распределения от -1 до 1
  - там вероятно значение входит в диапазон.
  Самое главное - квантование - это всегда приближение,
  которое может обходиться вам дороговато.
  Если вы решили сократить объем память в несколько раз
  и буквально перевести float32 к int8, особенно...
  Т.е от плавающей запятой к целочисленным значениям.
  
  Если все плохо, то приводится, например, статическое квантование.
  Иначе, модель сразу обучается на "квантованных" данных.
  
  Два принципа квантования
  
  Практическая реализация идет, например,
  через Post-training quantization (PTQ)
  и базируется на постобучающем преобразовании модели,
  уже завершившей тренировку на данных с высокой точностью чисел,
  обычно 32-битных с плавающей запятой.
  Тот случай, когда мы рассчитываем,
  что наша супермодель выживет от такого удешевления данных.
  
  Поэтому основная цель PTQ - минимизировать потребление памяти
  и вычислительных ресурсов на этапе инференса
  без необходимости повторного обучения модели.
  
  В PTQ веса модели и, в некоторых случаях,
  активации преобразуются в целочисленные значения меньшей разрядности,
  чаще всего это 8-битные целые числа (int8),
  что позволяет существенно сократить размер модели
  и ускорить вычисления за счёт использования инструкций SIMD
  (Single Instruction, Multiple Data)
  на уровне аппаратного обеспечения.
  
  SIMD-операции обрабатывают несколько данных с помощью одной инструкции.
  В этом их отличие от традиционных/скалярных операций.
  
  В PTQ не происходит изменений в архитектуре нейронной сети,
  и алгоритм квантования выполняется отдельно от процесса обучения.
  
  Основные этапы включают квантование весов с плавающей запятой в int8
  посредством вычисления масштабов и нулевых сдвигов,
  что позволяет сохранить диапазон значений.
  Это осуществляется с помощью статистической информации,
  собранной на небольшом объёме тренировочных данных.
  
  Важно, что через PTQ активации и веса могут квантоваться по-разному:
  активации могут квантоваться динамически на этапе инференса
  в зависимости от входных данных,
  тогда как веса - статически на основе априорной (изначальной) статистики.
  
  Если вы действительно работаете над глубокой-глубокой нейросетью,
  то могут возникнуть проблемы с точностью,
  то же относится к задачам с высокой чувствительностью в данных.
  
  Quantization-Aware Training (QAT) сложнее
  - тут квантование учитывается уже на этапе обучения модели.
  
  В отличие от PTQ, в QAT веса и активации модели представляются
  в формате низкой разрядности (int8 или int16)
  в ходе всего процесса тренировки,
  что позволяет модели адаптироваться к ограниченной точности чисел.
  
  Архитектура QAT предполагает, что квантованные версии весов
  используются не напрямую,
  а через эмуляцию процесса квантования
  во время прямого и обратного прохода модели.
  
  В прямом проходе веса и активации моделируются как квантованные целые числа,
  что позволяет эффективно эмулировать процесс инференса в квантованной среде.
  Обратный проход, однако, используется с весами с плавающей запятой,
  что сохраняет точность градиентного спуска
  и позволяет корректировать модель в условиях ограниченной точности.
  
  В процессе обучения модель "учится" компенсировать ошибки,
  вызванные квантованием, что позволяет снизить потери точности,
  наблюдаемые при PTQ.
  QAT требует значительно большего объёма вычислительных ресурсов на этапе обучения,
  так как тренировка должна учитывать квантование всех промежуточных активаций и весов.
  
  При этом необходимо выполнять симуляцию квантования не только для весов,
  но и для входных данных на каждом слое,
  что увеличивает вычислительную сложность модели на этапе тренировки.
  
  Для реализации QAT требуется модификация стандартных слоёв нейронной сети
  таким образом, чтобы они поддерживали низкоразрядные вычисления,
  а также корректная настройка механизмов обратного распространения ошибки.
  
  Применение QAT часто связано с такими задачами,
  как развёртывание на мобильных устройствах,
  где вычислительные ресурсы и память ограничены.
  Поэтому частенько такая архитектура квантования применяется для задач CV,
  когда мы ставим камеру с микропроцессором и ждем чуда детекции...
  
  Как все это работает на практике?
  
  .......
  
  Квантование с дистилляцией и прунингом
  
  Часто процесс квантования проводится совместно с другими методами оптимизация
  - тем же прунингом или дистилляцией.
  
  Pruning - это метод, при котором ненужные или малоактивные нейроны и связи
  удаляются из сети без существенного ущерба для её производительности.
  
  Прореживание может быть выполнено на основе различных критериев,
  таких как величина весов (weights magnitude pruning),
  где удаляются веса, чьи значения минимальны,
  или на основе анализа чувствительности (sensitivity analysis pruning),
  где оценивается вклад каждого нейрона в общую ошибку модели.
  
  В сочетании с квантованием
  pruning может значительно сократить количество вычислений,
  так как после прореживания остаются лишь активные нейроны,
  на которых квантование может быть применено.
  
  Например, после выполнения pruning модель может быть преобразована
  в квантованную версию с меньшим числом параметров,
  что ещё больше снижает её вычислительную сложность.
  
  Практическая реализация pruning с последующим квантованием в TensorFlow
  может выглядеть следующим образом:
  
  ......
  
  Принцип же дистилляции заключается в том,
  что "большая" модель (teacher model) обучает "меньшую" модель (student model),
  передавая ей свои знания в форме предсказаний.
  
  В процессе дистилляции модель-учитель генерирует
  вероятностные распределения классов,
  которые затем используются для обучения модели-ученика.
  
  Эти распределения, также называемые "мягкими метками" (soft labels),
  содержат более полную информацию, чем жёсткие метки (hard labels),
  так как отражают уверенность модели-учителя в каждом классе.
  
  Сразу приводим пример дистилляции с квантованием.
  
  Пример процесса дистилляции в PyTorch может выглядеть следующим образом:
  
  .......
  
  Функция distillation_loss объединяет два компонента:
  //// Это ключевая функция ошибки при обучении методом дистилляции.
  
  soft loss, который вычисляется с использованием
  распределений предсказаний модели-учителя и модели-ученика,
  нормализованных через температуру.
  
  Это помогает передать модели-ученику более детализированную информацию
  о вероятностях классов, а не только о правильном классе (жёсткие метки),
  что делает процесс обучения более информативным.
  
  hard loss - стандартная функция кросс-энтропии,
  которая измеряет расстояние
  между предсказаниями модели-ученика и реальными метками классов.
  
  Комбинация этих двух составляющих (в зависимости от значения параметра ?)
  позволяет модели-ученику лучше учиться на основе предсказаний модели-учителя.
  
  Процесс обучения модели-ученика:
  
  В этом коде цикл обучения модели-ученика выглядит следующим образом:
  
  Для каждой порции данных (мини-батч) выполняется инференс
  как на модели-ученике, так и на модели-учителе.
  
  Предсказания модели-учителя передаются в функцию потерь,
  где они используются для вычисления soft loss.
  
  Функция потерь комбинирует это с традиционной кросс-энтропией (hard loss),
  обучая модель-ученика более эффективно.
  
  Затем выполняется шаг оптимизации,
  и модель-ученик обновляет свои веса
  на основе полученной комбинированной функции потерь.
  
  После обучения модели-ученика с использованием метода дистилляции,
  она может быть квантована с применением стандартных методов,
  таких как динамическое или статическое квантование,
  что ещё больше уменьшит её размеры и потребление ресурсов.
  
  Интеграция всех трёх методов - квантования, pruning и distillation -
  представляет собой мощный подход к сжатию моделей.
  
  В реальных сценариях, таких как мобильные устройства или встроенные системы,
  это позволяет достигать значительных улучшений
  в скорости выполнения модели и её энергоэффективности.
  
  Например, если модель сначала подвергается прореживанию
  для удаления малозначимых связей,
  затем проходит процесс дистилляции для создания облегчённой версии,
  и, наконец, подвергается квантованию,
  можно достичь значительного уменьшения вычислительных затрат,
  не теряя при этом критически важной точности.
  
  Это был краткий гайд по квантованию.
  Надеемся, для некоторых, особенно новичков, он был полезен.
  
  ........
  
  //// Конец цитирования.
  
  В общем, это тот самый случай, когда
  "высокая технология становится практически неотличима от магии".
  Так что не удивляйтесь тому,
  что когда-то Ваша кофеварка с утра будет обращаться к Вам с вопросом:
  "Ну что, вдарим по кофейку?"
  
  
  =======
  
  07.10.2024 12:58
  
  "Множественное вменение" простыми словами.
  В оглавление.
  
  Очень часто приходится делать допущения по недостающим данным,
  но как это лучше сделать, зависит от многих факторов.
  Может быть, техника "множественных включений"
  что-то подскажет для Ваших конкретных задач:
  
  "Работа с неполными данными:
  как используется множественное вменение".
  Автор: andreybrylb
  https://habr.com/ru/articles/848618/.
  07 окт 2024 в 11:17
  
  Автор оригинала: Мэтт фон Хиппель
  https://www.quantamagazine.org/when-data-is-missing-scientists-guess-then-guess-again-20241002/
  
  //// Начало цитирования.
  
  Данные часто бывают неполными.
  В клинических испытаниях пациенты могут выбывать,
  респонденты пропускать вопросы в опросах,
  а школы и правительства - скрывать определённые результаты.
  Когда отсутствуют данные, стандартные статистические методы,
  такие как вычисление средних, становятся неэффективными.
  
  <Мы не можем работать с отсутствующими данными так же,
  как не можем делить на ноль>,
  - поясняет Стеф ван Бюрен, профессор из Университета Утрехта.
  
  Представьте, что вы тестируете препарат для снижения давления.
  Вы собираете данные еженедельно,
  но часть участников уходит из исследования,
  разочарованные отсутствием улучшений.
  Можно исключить этих участников из анализа,
  оставив только тех, кто закончил исследование
  - это называется полным анализом случая.
  Однако это создаёт ошибку:
  исключение недовольных пациентов искажает результаты,
  заставляя лечение выглядеть более эффективным,
  чем оно есть на самом деле.
  
  Избежать такой предвзятости сложно.
  Ранее исследователи применяли разные техники с серьёзными ограничениями.
  Но в 1970-х статистик Дональд Рубин предложил метод,
  который требовал больших вычислительных мощностей.
  Он предположил, что можно сделать несколько догадок о недостающих данных
  и использовать их для анализа.
  И хотя сначала идея вызвала сопротивление,
  она стала основным подходом к работе с неполными данными,
  и её популярность растёт благодаря современным методам машинного обучения.
  
  Вне статистики <вменение> означает возложение ответственности.
  В статистике это относится к присвоению недостающих данных.
  Например, если человек не указал свой рост,
  ему может быть присвоен средний рост его пола.
  Этот метод, известный как однократное вменение,
  появился в 1930-х и стал предпочтительным к 1960-м.
  Рубин изменил этот подход, найдя в нём недостаток:
  чрезмерную уверенность в догадках.
  
  Рис. В 1970-х годах Дональд Рубин изобрёл
  и популяризировал новый статистический метод работы с отсутствующими данными.
  Поначалу он вызывал споры, но сегодня используется во многих научных областях.
  
  Во время учёбы в Гарварде Рубин переключился с психологии на информатику
  и заинтересовался проблемой недостающих данных.
  Он заметил, что однократное вменение создаёт чрезмерную уверенность
  и недооценивает неопределённость.
  Статистики могли исправлять это,
  но решения были сложными и специализированными для каждой ситуации.
  Рубин стремился создать универсальный и точный метод.
  
  После защиты диссертации в 1971 году Рубин начал работать в Принстоне.
  Когда ему поручили анализировать опрос с недостающими данными,
  он предложил многократное вменение
  - сделать несколько копий данных и для каждой из них
  случайно выбирать предположение о недостающих данных.
  Это позволило бы учитывать неопределённость в прогнозах.
  
  Множественное вменение подразумевает создание нескольких версий набора данных
  и заполнение каждой из них случайными значениями из предположений.
  Затем можно анализировать каждую версию и получать разные прогнозы.
  Объединяя их с помощью специальных правил,
  можно получить более точные результаты и оценить неопределённость.
  Этот метод стал важным для регулирующих органов, таких как FDA.
  
  Пример обработки табличных данных
  
  В начале 1970-х множественное вменение встретило скептицизм.
  Учёные задавались вопросом,
  почему они должны выбирать что-то, кроме наилучшего предположения.
  Кроме того, многократное вменение требовало больших вычислительных мощностей,
  что было проблематично в эпоху перфокарт.
  
  Однако Рубин продолжал продвигать свою идею.
  Он консультировал правительственные агентства,
  которые могли себе позволить хранение больших объёмов данных.
  К 1990-м технология продвинулась,
  и множественное вменение стало доступно более широкому кругу исследователей.
  Одним из них был ван Бюрен,
  который выпустил программное обеспечение для использования этого метода.
  
  В 2010 году FDA рекомендовало множественное вменение в медицинских исследованиях,
  сделав его стандартом в этой области. Несмотря на появление других методов,
  множественное вменение остаётся наиболее универсальным
  и применимым в различных ситуациях.
  
  Современные программы, основанные на машинном обучении,
  расширили возможности множественного вменения,
  позволяя работать с более сложными данными.
  Однако некоторые учёные всё ещё сомневаются в строгости этих новых методов.
  
  Тем не менее, подход Рубина остаётся основным инструментом анализа
  недостающих данных в различных областях,
  помогая исследователям точнее интерпретировать результаты
  и избегать искажения фактов.
  
  .......
  
  //// Из комментариев.
  
  niktor_mpt
  1 час назад
  
  Если кратко: ансамблевый подход.
  
  Во всю применяется адептами глобального потепления.
  
  Суть в том, что вместо единичной оценки
  на наиболее вероятных данных,
  делается множественная оценка на различных наборах данных,
  а результаты усредняются с учётом веса исходного набора.
  
  Что повышает уверенность в полученной оценке,
  но не делает её истинной.
  
  ......
  
  //// Конец цитирования.
  
  В общем, идея достаточно понятная:
  нужно рассматривать различные варианты в тех случаях,
  когда нужно использовать какие-то предположения.
  И как-то "суммировать"/"анализировать" полученные выводы.
  И одна из основных проблем в этом случае:
  как избежать "комбинаторного взрыва" если этих предположений
  больше чем одно-два.
  И хотя сейчас это обычно решается методом "грубой силы",
  за счет колоссальных вычилительных ресурсов.
  Но вряд ли это наилучшее/оптимальное решение.
  
  А есть еще и проблема "корреляционной связи" между этими предположениями.
  И тут пока простого подхода как-то вообще не просматривается, подронее см.:
  "Об оценке корреляции временных рядов простыми словами."
  "К вопросу о корреляции разнородных нестационарных процессов."
  
  Но сложность любой задачи,
  можно рассматривать как своеобразный стимул
  для поиска нового или нестандартного подхода.
  
  
  ========
  
  12.10.2024 11:17
  
  Немного о фракталах самыми простыми словами.
  В оглавление.
  
  Если уж зашла речь о фрактальных характеристиках объектов и процессов,
  наверно, надо дать какое-то самое начальное введение
  в эту экзотическую область математики
  и ее связь с нашим многомерным и многоуровневым Мирозданием.
  Тут как раз подоспел такой материал, который и прост, и интересен для чтения,
  тем более, что мне самому помог более конкретно сформулировать мысль,
  которая уже давно крутилось в голове:
  
  "Фракталы, капуста и рок-н-ролл".
  Автор: CatScience (Александр Грибоедов)
  https://habr.com/ru/articles/849860/.
  11 окт 2024 в 16:20
  
  //// Начало цитирования.
  
  Как заметил один неравнодушный читатель,
  математика - это <бред повернутых на абстракциях>.
  Что ж, наверное, он прав, и все математики должны быть немного не в себе,
  чтобы, отказавшись от такой родной и очевидной реальности,
  посвятить свою жизнь формулам и графикам.
  Но если вы все же не <сломали голову на интегралах>
  и знаете, для чего нужно <минус одно яблоко>
  (и вообще понятие отрицательных чисел),
  то заваривайте чаeк и присаживайтесь.
  
  Сегодня мы поговорим о том, что общего у береговой линии
  и барабанщика рок-группы,
  и как сэкономить на аниматорах,
  зная математику.
  
  Бесконечно сложные самоподобные объекты все-таки
  не являются выдумкой математиков-извращенцев,
  и вы можете наблюдать их ежедневно:
  облака, волны, кроны деревьев и горные массивы
  - это все в определенной мере фракталы,
  имеющие повторяющуюся структуру.
  Облака никогда не бывают абсолютно одинаковыми,
  но тем не менее в них присутствует подобие больших и малых частей,
  крупные сосуды кровеносной системы разветвляются на более мелкие,
  затем на капилляры и так далее.
  Очень часто можно увидеть в какой-нибудь статье
  вот такой вилок капусты Романеско,
  форма которой - один из самых узнаваемых фракталов в природе.
  
  Рис. Капуста Романеско
  
  Забавно, но ученые полагают, что конкретно этот сорт
  приобрел свой внешний вид благодаря мутации при одомашнивании,
  а не эволюционным путем.
  Раньше из образовавшихся наростов на капусте, видимо, появлялись цветы,
  но мутация в четырех генах изменила программу развития растения,
  и на месте цветочных бутонов стали расти новые стебли.
  
  Но хватит красивых вступлений про природу,
  нам эта капуста не так уж интересна,
  ведь причудливая внешность фракталов нашла применение не только у огородников,
  но и в технике, а именно в радиоэлектронике.
  Еще в 80-е были опубликованы первые теоретические работы
  по возможному применению фрактальных форм в многополосных антеннах,
  но в их практическую ценность никто особо не верил.
  А зря.
  
  Рис. Фрактальная антенна
  
  В 1995 году американский инженер Натан Коэн,
  чтобы обойти запрет бостонских властей устанавливать на домах наружные антенны,
  замаскировал антенну своей радиостанции под декоративную фигуру,
  выполненную в виде уже знакомой нам снежинки Коха.
  Оказалось, что подобная махинация с формой антенны
  не влияет на ее функциональность,
  а, немного поэкспериментировав,
  Коэн даже добился значительного усиления сигнала.
  
  В англоязычной литературе фрактальные антенны часто называют
  "space-filling antenna" - SFA
  (антенны, заполняющие пространство).
  Вам не кажется это знакомым?
  Помните про дробную размерность
  - как показатель заполняемости кривой пространства?
  Вот-вот, все связано:
  фрактальная геометрия позволяет изогнуть антенну так,
  что она имеет максимальные показатели упаковки на ограниченной площади.
  
  Сегодня теория фрактальных антенн превратилась в самостоятельный,
  довольно развитый аппарат синтеза и анализа ЭМА,
  и несмотря на большое число проведённых исследований,
  она очень мало изучена.
  А Натан Коэн, ныне профессор бостонского университета
  и директор Fractal Antenna Systems,
  до сих пор судится за авторские права на использование его изобретения.
  
  Надо сказать, что фракталы можно воспроизвести не только в графическом формате.
  Вернемся к побережью Байкала.
  Допустим, вы сумели найти линейку (или курвиметр, как вам больше по душе),
  способную вычислять длину берега с точностью до атома,
  и приступили к замерам.
  Но уже на следующий день ваши данные окажутся неверными.
  То же самое будет и через час, и через минуту,
  ведь волны и эрозия непрерывно меняют облик берегов,
  хотя их граница остается такой же сложной, как и была.
  Береговая линия - это пример фрактала, изменяющегося со временем.
  
  Так вот, временные фракталы встречаются не только в природе.
  Игра на ударных Джеффа Поркаро - барабанщика группы Toto -
  считается эталоном виртуозного исполнения,
  и фанаты легко могут отличить его импровизацию от игры другого музыканта.
  В 2015 году ученые сравнили его исполнение
  и ту же партию, идеально воспроизведенную на компьютере,
  и обнаружили, что различия между ними,
  как ни удивительно,
  имеют фрактальный характер.
  То есть - неточность пауз и изменения громкости ударов,
  на первый взгляд совершенно хаотичные,
  складываются в самоподобные паттерны,
  которые присутствуют как в длительных участках партии,
  так и в отдельных тактах.
  
  Фрактальные фигуры уникальны для каждого исполнителя,
  и именно эти неравномерности делают игру человека "человечной".
  Добровольцы, участвующие в экспериментах,
  могли интуитивно отличить партию машины от живого исполнения,
  даже когда компьютер с помощью случайной генерации
  вносил небольшие отклонения от идеального рисунка.
  Сегодня некоторые музыканты активно исследуют новые способы игры,
  используя в том числе фрактальную математику.
  Результат порой бывает очень интересным.
  
  Но самая обширная и самая очевидная область применения фракталов
  - это, разумеется, компьютерная графика.
  В 1978 году Лорен Карпентер - работник компании Boeing
  - занимался визуализацией моделей самолетов и решил разнообразить фон
  своей презентации горным ландшафтом.
  Имея степень бакалавра математики
  и совсем недавно прочитав книгу Бенуа Мандельброта про фракталы
  (привет старым знакомым),
  он был увлечен поиском более быстрого способа получения изображений.
  
  Принцип, который использовал Карпентер,
  возмутительно прост
  и похож на построение кривой Коха в обратном порядке:
  большой треугольник делится на четыре (не равные друг другу),
  а затем действие повторяется много раз для достижения эффекта объема.
  И вот такая незамысловатая схема стала настоящей революцией в мире анимации!
  Представьте, что теперь нет нужны прорисовывать каждый объект и локацию
  и держать огромную базу данных,
  достаточно лишь пакета специально подобранных формул
  - и компьютер сам сгенерирует изображение с заданным уровнем точности,
  причем сложность картинки при необходимости может меняться.
  Например, если игрок находится вдали от гор,
  программа не станет выстраивать их структуру полностью,
  но по мере приближения к скалам
  - она будет постепенно дополнять картинку новыми подробностями.
  Неудивительно, что после презентации своей идеи
  Карпентера тут же пригласили на работу в киноиндустрию
  (в фильме <Звездный путь 2: Гнев Хана>
  - есть целая планета с фрактальным ландшафтом),
  а в последствии он взял и основал всем известную студию... Pixar.
  
  Рис. Визуализация алгоритма Карпентера
  Визуализация алгоритма Карпентера
  
  Вот так от облаков и капусты мы переползли к музыке и мультикам,
  и, прежде чем вы начнете слушать фрактальный фолк,
  хочется все-таки прийти к какому-то небольшому выводу.
  Да, математический аппарат, который используется повсеместно
  - это действительно лишь удобный инструмент для описания мира,
  наш способ познания взаимосвязей вселенной.
  Но математика - не абстракция.
   Она заложена в суть природы,
  в ее фундаментальные законы и константы,
  это уже давно известный факт.
  И главный вопрос на сегодня не <нужна ли нам математика?>,
  а - <почему мир так математичен?>
  
  Рис. Композиция, в основе которой лежит фрактальный принцип
  (если честно, довольно жутковатая вещь).
  
  Автор: Александр Грибоедов
  
  ..........
  
  //// Конец цитирования.
  
  А мысль, которую удалось наконец-то "ухватить", звучит примерно так:
  "Фрактальная структура временнОго процесса является следующим уровнем,
  характеристики уникальности процесса,
  являющимся дальнейшим развитием спектрального подхода".
  Вроде как, мысль не слишком оригинальная,
  но как-то в явном виде при работе с материалами по фракталам
  еще не встречалась.
  А потенциал у нее, похоже, достаточно приличный.
  Теперь бы найти способ визуализации для такого подхода,
  чтобы и спектральную и фрактальную "характеристику" как-то "скомпоновать".
  И тут нужно придумать какой-то способ классификации фрактальных свойств.
  
  
  =======
  
  18.10.2024 10:33
  
  Автоэнкодеры простыми словами.
  В оглавление.
  
  Материал с таким названием и содержанием,
  просто идеально подходит для задач данного модуля.
  Даже ничего от себя добавлять не надо, чистая "копипаста":
  
  "Автоэнкодеры простыми словами".
  Автор: Squirrelfm (Igor Novikov)
  https://habr.com/ru/companies/raft/articles/851548/.
  18 окт 2024 в 8:58
  
  //// Начало цитирования.
  
  Автоэнкодеры являются базовой техникой машинного обучения и искусственного интеллекта,
  на основе которой строятся более сложные модели,
  например, в диффузионных моделях, таких как Stable Diffusion.
  Что же такое автоэнкодер?
  
  Автоэнкодеры потому и называются автоэнкодерами,
  потому что они автоматически учатся кодировать данные
  в более компактное или низкоразмерное представление
  и затем декодировать его обратно в исходную форму.
  Этот термин можно разбить следующим образом:
  
  Авто: означает что процесс является автоматическим.
  Модель учится сама, без необходимости в явных метках или человеческом вмешательстве
  для извлечения признаков.
  Во время обучения она автоматически находит,
  как лучше всего представить данные в низкоразмерной форме.
  
  Энкодер: первая часть модели, энкодер,
  сжимает или кодирует входные данные в меньшую, сжатую форму.
  Этот этап включает уменьшение размерности входных данных,
  фактически обучаясь более компактной версии данных.
  
  Декодер: вторая часть модели, декодер,
  пытается восстановить исходные входные данные из закодированного представления.
  Цель состоит в том, чтобы обеспечить максимальное сходство выходных данных
  с оригинальными входными, показывая,
  что кодирование сохраняет основные признаки.
  
  Итак, прежде всего, автоэнкодер - это тип нейронной сети,
  используемый для обучения без учителя.
  Но не любой, а такой, который может кодировать и декодировать данные,
  подобно ZIP-архиватору, который может сжимать и разжимать данные.
  В машинном обучении он используется для уменьшения размерности
  или сжатия данных, а также для удаления шума с изображений
  (об этом мы поговорим позже).
  
  Однако он делает это умнее, чем ZIP-архиватор.
  Он способен понять самые важные особенности данных
  (так называемые латентные, или скрытые признаки)
  и запоминает их вместо всех данных,
  чтобы затем восстановить что-то близкое к оригиналу
  из приблизительного описания.
  На изображениях, например, он может запомнить очертания объектов
  или относительное положение объектов друг к другу.
  Это позволяет добиться интересного сжатия с потерями.
  Он работает примерно следующим образом:
  
  Рис. .....
  
  Только в латентных признаках значения на самом деле являются дискретными,
  так что процесс ближе к следующему:
  
  Рис. Тут надо указать что то это лишь пример для понимания,
  и что в реальности распознает сеть будет отличаться.
  А так же что ни один осьминог при данных экспериментах не пострадал.
  
  Данный подход важен для диффузионных моделей,
  потому что позволяет им работать в пространстве более низкой размерности
  (так называемом латентном пространстве),
  что гораздо быстрее, чем работа напрямую с изображения высокого разрешения.
  То есть, вместо того чтобы выполнять процесс удаления шума
  непосредственно на пикселях, изображение сначала сжимается
  в латентное пространство с помощью автоэнкодера,
  и диффузионный процесс происходит в этом пространстве меньшей размерности.
  После диффузии декодер восстанавливает изображение высокого разрешения
  из латентного представления.
  Если задуматься, это вполне логично.
  Для работы диффузионной модели нужно знать
  только основные признаки оригинального изображения,
  а не все мельчайшие детали,
  так зачем тратить время и вычислительные ресурсы на них?
  
  За идеей автоэнкодера стоит очень простой трюк.
  Если мы искусственно ограничим количество узлов в сети автоэнкодера
  и обучим её восстанавливать данные из оригинала,
  это заставит сеть научиться сжатому представлению исходных данных
  просто потому, что у неё не будет достаточно узлов,
  чтобы запомнить все признаки данных.
  Ей придётся отбросить большинство несущественных признаков.
  Это, конечно, возможно только в том случае,
  если в данных существует какая-то структура
  (например, корреляции между входными признаками),
  потому что тогда эту структуру можно выучить и использовать,
  когда данные проходят через узкое место сети.
  
  Рис. Создание узкого места в нейронной сети
  
  Эту сеть можно обучить путем минимизации ошибки реконструкции,
  которая измеряет различия между нашими исходными данными
  и восстановленным изображением после декомпрессии.
  
  Вот пример того, как работает этап сжатия:
  
  Рис. Кодирование
  
  На каждом этапе сжатия мы уменьшаем размеры изображения вдвое,
  но удваиваем количество каналов,
  которые сеть может использовать для хранения латентных признаков.
  
  Декодирование работает в обратном порядке:
  
  Рис. Декодирование
  
  Обратите внимание, что в конце мы получаем восстановленное изображение,
  а не оригинал. Они будут похожи, но не идентичны!
  Да, цель процесса обучения - сделать их как можно более похожими
  (то есть минимизировать ошибку реконструкции),
  но некоторые детали будут утрачены.
  
  Идеальная модель автоэнкодера находит баланс между:
  
  1. Достаточной чувствительностью к входным данным
  для их точного восстановления.
  
  2. Достаточной нечувствительностью,
  чтобы избежать простого запоминания или переобучения на тренировочных данных.
  
  В большинстве случаев это достигается путем задания функции потерь
  с двумя компонентами:
  один член, который поощряет модель быть чувствительной к входным данным
  (например, ошибка реконструкции),
  и другой член, который препятствует запоминанию или переобучению
  (например, регуляризационный член).
  Это очень важное наблюдение - важно убедиться,
  что автоэнкодер не просто учится эффективным способом запоминать
  тренировочные данные.
  Мы хотим, чтобы он находил латентные признаки,
  чтобы быть полезным для данных,
  отличных от обучающего набора.
  
  Существуют и другие способы создания узкого места в сети,
  кроме ограничения количества узлов.
  
  Разреженные автоэнкодеры (Sparse autoencoders)
  Мы можем ограничить сеть, ограничивая количество нейронов,
  которые могут активироваться одновременно.
  Это, по сути, заставит сеть использовать отдельные узлы скрытого слоя
  для специфических признаков входных данных
  (идея, несколько похожая на то, как разные области мозга
  обрабатывают разные типы информации).
  
  В разреженных автоэнкодерах применяются методы регуляризации,
  которые поощряют скрытые единицы (нейроны) в сети
  поддерживать определенный уровень разреженности,
  то есть только небольшая их часть должна быть активна
  (т.е. иметь ненулевой выход) в любой момент времени.
  Вот основные типы регуляризации, используемые в разреженных автоэнкодерах:
  
  Регуляризация с помощью KL-дивергенции:
  
  Наиболее распространенный метод регуляризации разреженных автоэнкодеров
  - наложение ограничения на разреженность активаций скрытых единиц
  с использованием дивергенции Кульбака-Лейблера (KL).
  
  Идея состоит в том, чтобы сравнить среднюю активацию скрытой единицы
  с желаемым уровнем разреженности,
  обычно обозначаемым небольшим значением (например, 0.05).
  KL-дивергенция штрафует отклонения от этого желаемого уровня разреженности.
  
  Это достигается путем добавления штрафного терма разреженности
  к общей функции стоимости.
  Функция стоимости становится комбинацией ошибки реконструкции
  и штрафа за разреженность.
  
  Желаемая разреженность часто обозначается как p
  (небольшое значение, например, 0.05).
  Средняя активация скрытой единицы j по тренировочным примерам
  обозначается как pj.
  
  .....
  
  Общая функция стоимости J с регуляризацией через KL-дивергенцию выглядит так:
  
  .....
  
  Где:
  
  J_reconstruction - ошибка реконструкции (например, среднеквадратическая ошибка).
  
  ? - вес для управления силой штрафа за разреженность.
  
  n_h - количество скрытых единиц.
  
  L1-регуляризация:
  
  L1-регуляризация поощряет разреженность, штрафуя абсолютное значение весов,
  что приводит к сдвигу многих весов к нулю.
  
  Добавляя сумму абсолютных значений весов к функции стоимости,
  такая форма регуляризации эффективно поощряет модель
  использовать меньшее количество соединений,
  что ведет к разреженным активациям в скрытом слое.
  
  L2-регуляризация:
  
  L2-регуляризация, также известная как убывание весов (weight decay),
  препятствует большим весам, штрафуя сумму квадратов весов.
  
  Хотя L2-регуляризация не напрямую обеспечивает разреженность,
  она помогает предотвратить переобучение и может дополнять другие методы,
  которые способствуют разреженности,
  такие как KL-дивергенция или L1-регуляризация.
  
  Регуляризация активности:
  
  Этот метод напрямую штрафует активации нейронов.
  К функции потерь добавляется член, который штрафует ненулевые активации,
  часто вычисляемый как L1-норма активаций.
  
  Минимизируя сумму активаций, такая регуляризация поощряет
  большинство нейронов оставаться неактивными.
  
  Автоэнкодеры удаления шума (Denoising autoencoders)
  
  Еще одна идея заключается в добавлении шума к исходному изображению
  и использовании его в качестве входных данных,
  но для расчета ошибки сравнивается с очищенным оригиналом.
  Таким образом, модель учится, как бы, удалять шум с изображения,
  но как побочный эффект, она больше не может просто запомнить входные данные,
  потому что вход и выход не совпадают.
  Вот как выглядит процесс обучения:
  
  Это, как указанно выше, заставляет модель запоминать только важные признаки
  и игнорировать шум (и другие несущественные детали).
  
  Вариационные автоэнкодеры (VAE)
  
  Именно они применяются в диффузионных моделях.
  Основная идея заключается в том, что в обычных автоэнкодерах
  признаки хранятся как дискретные значения в слоях признаков.
  В вариационных автоэнкодерах (VAE) для каждого латентного признака
  используется вероятностное распределение.
  Это позволяет сети реализовать некоторые интересные функции,
  которые я опишу в отдельной статье.
  
  Ограничения
  
  Поскольку автоэнкодеры учатся сжимать данные, выявляя шаблоны и взаимосвязи
  (т. е. корреляции между входными признаками),
  которые проявляются во время обучения, они, как правило,
  эффективно восстанавливают данные,
  похожие на те, которые использовались в процессе обучения.
  
  Также, способность автоэнкодеров сжимать данные сама по себе
  используется нечасто,
  так как обычно они уступают по эффективности вручную созданным алгоритмам,
  предназначенным для конкретных типов данных,
  таких как звук или изображения.
  
  Хотя автоэнкодеры могут использоваться для кодирования текста,
  они менее часто применяются по сравнению с более современными архитектурами,
  такими как трансформеры (BERT, GPT и др.),
  потому что автоэнкодеры могут испытывать трудности
  с обработкой сложных языковых структур или длинных последовательностей,
  особенно без механизмов вроде внимания,
  которые помогают захватывать дальние зависимости.
  
  Заключение
  
  Автоэнкодеры являются фундаментальными строительными блоками
  в области машинного обучения и ИИ,
  предлагая универсальный подход к задачам, таким как сжатие данных,
  уменьшение размерности и удаление шума. Обучаясь кодировать данные
  в компактные, низкоразмерные представления
  и затем декодировать их обратно,
  автоэнкодеры могут эффективно захватывать важные признаки входных данных,
  отбрасывая менее значимые детали.
  Эта способность делает их ценными в приложениях,
  начиная от обработки изображений и заканчивая предобработкой данных,
  а также в качестве компонентов более сложных архитектур,
  таких как латентные диффузионные модели.
  
  ........
  
  //// Конец цитирования.
  
  Все вроде понятно, но "меня постоянно мучает вопрос":
  как именно реализуется/представляется это "магическое сжатие данных",
  выполняемое таким внешне простым механизмом на уровне латента?
  А вот об этом "простыми словами" "почему-то" никто не пишет.
  
  
  ========
  
  26.11.2024 11:23
  
  Генетические алгоритмы простыми словами.
  В оглавление.
  
  Хочу зафиксировать неплохое описание принципов
  одного из эффективных эвристических подходов,
  называемых генетическими алгоритмами:
  
  "Генетический алгоритм:
  природа в действии для оптимизации сложных задач (c примером на java)".
  Автор: iik_812 (Игорь)
  https://habr.com/ru/articles/861334/.
  26 ноя 2024 в 8:38
  
  //// Начало цитирования.
  
  Генетические алгоритмы (ГА)
  - это мощный инструмент для решения задач оптимизации,
  вдохновленный процессами эволюции в природе.
  Подобные алгоритмы применяются в таких областях,
  как маршрутизация, машинное обучение, финансовая аналитика,
  проектирование и многие другие.
  В этой статье я разберу принцип работы ГА
  
  ........
  
  Статья может быть полезна для новичков,
  изучающих алгоритмы для общего развития,
  например, в качестве одно из подходов решения задачи коммивояжера,
  
  .......
  
  Алгоритм основан на модели эволюции Дарвина.
  Его ключевые компоненты:
  
  Инициализация:
  создается начальная популяция случайных решений.
  
  Оценка:
  вычисляется фитнес-функция для каждого индивида.
  
  Селекция:
  выбираются лучшие решения для создания новой популяции.
  
  Кроссовер:
  создаются новые индивиды на основе выбранных родителей.
  
  Мутация:
  небольшие случайные изменения в новых индивидах.
  
  Обновление популяции:
  новая популяция заменяет старую.
  
  Повторение:
  шаги 2-6 повторяются, пока не будут выполнены условия завершения.
  
  Пошаговое применение ГА для задачи коммивояжера
  
  Инициализация
  Случайным образом создается набор маршрутов (хромосом).
  Каждая хромосома - это список городов, представляющий возможный путь.
  
  Фитнес-функция
  Для каждого маршрута вычисляется его длина.
  Чем меньше длина, тем лучше фитнес.
  
  Селекция
  Выбираются лучшие маршруты на основе их фитнеса
  (например, с помощью рулетки или турнира).
  
  Кроссовер
  Два маршрута (родители) комбинируются,
  чтобы создать новый маршрут (ребенок).
  Например, часть маршрута берется от первого родителя,
  а оставшиеся города добавляются из второго.
  
  Мутация
  В маршруте меняются местами два города.
  Это помогает исследовать новые возможные пути.
  
  Обновление
  Формируется новая популяция маршрутов.
  
  Прекращение
  Если количество поколений достигает заданного предела
  или найден маршрут с минимальной длиной,
  алгоритм завершает работу.
  
  На основе одной из самых популярных задач
  - задача "Коммивояжера" разберем применение данного алгоритма
  для нахождения расстояния между городами.
  
  Допустим у нас есть 4 города (A, B, C, D),
  представим расстояние между ними в виде матрицы расстояний:
  
  .....
  
  Вот схематичное пошаговое описание работы генетического алгоритма
  на примере задачи с четырьмя городами (A, B, C, D).
  Используем символы, чтобы изобразить этапы.
  
  1. Инициализация
  
  Случайным образом создаются несколько маршрутов:
  
  Рис. Маршрут 1
  Рис. Маршрут 2
  Рис. Маршрут 3
  Рис. Маршрут 4
  
  2. Фитнес-функция
  
  Для каждого маршрута рассчитывается суммарное расстояние.
  Чем меньше значение, тем лучше фитнес:
  
  Рис. Маршрут 1
  Рис. Маршрут 2
  Рис. Маршрут 3
  Рис. Маршрут 4
  
  3. Селекция
  
  Выбираются лучшие маршруты.
  Например, используем турнирный метод:
  
  Рис. Маршрут 1
  Рис. Маршрут 3
  
  4. Кроссовер
  
  Комбинируются два маршрута (родители) для создания нового:
  
  Рис. Родитель 1
  Рис. Родитель 2
  Рис. Ребенок
  
  Шаги для создания ребёнка
  
  Выбор участка для копирования:
  Случайным образом выбирается участок из первого родителя,
  который будет передан ребёнку.
  Например, из ABCDA выбирается подстрока BCD (с индексами 1-3).
  
  Рис. Родитель 1: A | BCD | A
  Рис. Родитель 2: B | CAD | B
  
  Копирование участка в ребёнка:
  Этот участок сразу помещается на те же позиции в ребёнке.
  
  Ребёнок (на этом этапе): _ | BCD | _
  
  Заполнение оставшихся позиций:
  Города из второго родителя добавляются в порядке их следования,
  начиная с первого города после выбранного участка,
  с пропуском уже добавленных городов.
  
  Из второго родителя: B, C, A, D, B.
  
  Пропускаем B, C, и D (они уже в ребёнке).
  
  Добавим оставшиеся:
  A (первая пустая позиция слева),
  затем А (на последнюю позицию-так как мы спланировали
  всегда возврат в начальный маршрут).
  
  Ребёнок после заполнения: A | BCD | A
  
  5. Мутация
  
  В маршруте случайно меняются местами два города:
  
  Рис. До мутации
  Рис. После мутации
  
  6. Обновление популяции
  
  Формируется новая популяция, включающая детей и лучших родителей. Например:
  
  Рис. Маршрут 1
  Рис. Маршрут 2
  Рис. Маршрут 3
  Рис. Маршрут 4
  
  7. Прекращение
  
  Процесс продолжается, пока не будет найден оптимальный маршрут
  или достигнуто заданное количество поколений.
  Например, после 10 поколений алгоритм выдает результат:
  
  Рис. Оптимальный маршрут. Длина маршрута: 85
  ( Итого: 10 + 20 + 30 + 25 = 85 )
  
  Другие подходы к решению задачи коммивояжера:
  
  Точные алгоритмы (для малых задач, n<=20):
  
  Перебор всех маршрутов (факториальный подход):
  Наивный способ.
  Для n городов сложность O(n!), что не подходит для больших задач.
  
  Динамическое программирование (алгоритм Беллмана-Хелда-Карпа):
  Позволяет уменьшить сложность до O(2^n *n^2).
  Всё ещё сложно для больших n.
  
  Эвристические алгоритмы
  (для средних и больших задач, 20  
  Ближайший сосед (Nearest Neighbor):
  Выбирается ближайший город на каждом шаге.
  Быстро, но не гарантирует оптимальность.
  
  Жадный алгоритм:
  Пытается построить решение, добавляя короткие рёбра, избегая циклов,
  пока маршрут не будет завершён.
  
  Метаэвристики
  (для больших задач, близко к оптимальному решению, 50  
  Генетические алгоритмы:
  Имитация эволюции для поиска оптимального маршрута.
  
  Муравьиные алгоритмы:
  Моделируют поведение муравьёв, находящих оптимальные пути.
  
  Алгоритмы на основе имитации отжига:
  Постепенное улучшение решений,
  допуская временное ухудшение для выхода из локального минимума.
  
  ......
  
  Значения переменных:
  
  .....
  
  в генетическом алгоритме выбираются с учетом характера задачи,
  требований к производительности, размера данных и экспериментов.
  
  1. Число городов (NUM_CITIES)
  
  Значение определяется задачей коммивояжера.
  
  Например, если матрица расстояний задана для 4 городов, то NUM_CITIES = 4.
  
  В реальных задачах число городов может быть большим (десятки, сотни),
  что увеличивает сложность задачи и время вычислений.
  
  2. Размер популяции (POPULATION_SIZE)
  
  Определяет, сколько решений (маршрутов) рассматривается в каждом поколении.
  
  Чем больше популяция, тем выше вероятность найти хорошее решение
  за счет большего разнообразия, но возрастает вычислительная сложность.
  
  Обычно выбирают значение в диапазоне 50-500. Для малых задач достаточно 100.
  
  Рекомендации:
  
  Для небольших задач: 50-100.
  
  Для больших задач: 200-500.
  
  3. Количество поколений (GENERATIONS)
  
  Число итераций алгоритма для улучшения решений.
  
  Выбор зависит от требуемого качества решения
  и допустимого времени работы алгоритма.
  
  Обычно выбирается 100-1000 поколений.
  Для задач с малым числом городов (до 10), 500 поколений обычно достаточно.
  
  Рекомендации:
  
  Наблюдайте за изменением лучшего маршрута.
  Если улучшения прекращаются задолго до достижения лимита поколений,
  можно уменьшить значение.
  
  4. Вероятность мутации (MUTATION_RATE)
  
  Определяет вероятность случайной перестановки городов в маршруте.
  
  Мутация предотвращает преждевременную стагнацию в локальном минимуме.
  
  Обычно выбирают в диапазоне 0.01-0.2.
  
  Рекомендации:
  
  Для задач с малым количеством городов подходит 0.1 (10%).
  
  Для больших задач можно увеличить вероятность мутации до 0.2,
  чтобы усилить разнообразие.
  
  Применяя подходы из эволюционной биологии
  - отбор, кроссовер и мутации -
  мы можем находить решения,
  которые классическими методами требуют огромных вычислительных ресурсов.
  Хотя результат может быть не всегда идеальным,
  подход с генетическими алгоритмами часто оказывается
  достаточно эффективным для практического применения.
  
  ........
  
  //// Конец цитирования.
  
  Вроде как, все понятно, но "дьявол, как всегда, в деталях":
  как именно выбрать "фитнес-функцию", как делать "кроссовер",
  в конкретных и, обычно, очень непростых задачах.
  Например, как обеспечивать при таком подходе
  соблюдение списка каких-то обязательных требований?
  
  
  ========
  
  Шлюп
  
  Шлюп Ликбез. Модель Kandinsky 3.0 нарисовала:  f7985ef4d7ec4f81b3353725323bbeb4_res_00000_image
  
  Шлюп Ликбез. Модель Kandinsky 3.0 нарисовала:  41cba35a8e754141b7741624f34863c1_res_00000_image
  
  Шлюп Ликбез. Модель Kandinsky 3.1 нарисовала:  0ae1961ef39f444fb107266f0cd43070_res_00000_image
  
  Шлюп Ликбез. Модель Kandinsky 3.1 нарисовала:  bc21667c-ace2-423d-a418-12048cd81c94
  Flag Counter
  Free counters!
  Flag Counter
  
 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"