ИИ

Тема в разделе "WASM.BEGINNERS", создана пользователем Filthmw, 23 апр 2024.

  1. Filthmw

    Filthmw New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2024
    Сообщения:
    4
    В 2011 году читал книгу про ЭВМ времён СССР,не могу вспомнить название. В ней был показан принцип работы современных микропроцессоров на примере очень маленькой микросхеме и ещё там был раздел про нейронные сети и там также просто была показана суть их работы на примере небольшой схемы.
     
  2. Research

    Research Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    120
  3. CaptainObvious

    CaptainObvious Member

    Публикаций:
    1
    Регистрация:
    18 янв 2024
    Сообщения:
    87
    Истина и ложь заменяются значениями функции на отрезке от 1 до 0(концепция частичной правды), которая позволяет уйти от однозначного ответа на вопрос
     
  4. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    446
    а есть ли вопрос
    и его производная...
     
  5. Research

    Research Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    120
    Сколько страниц было в этой книге? 50, 100, 300?
     
  6. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    446
    надо ISBN
     
  7. Research

    Research Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    120
     
  8. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    446
    ппц ленина увидел в 3-м ряду студентов!!
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.787
     
  10. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    446
  11. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    457
    У Onigiri очень неплохое есть затравочное видео:

    Правда оно очень многое оставляет за кадром.
    Если первые минуты про сеть с двумя нейронами посмотреть, то работавшему с трёхмерной графикой может стать очевидно, что сия нейросеть реализует ничто иное как умножение двумерного вектора на матрицу 2x2.
    А значит она просто проводит афинное преобразование точки со входов (как он сам их трактует) - а это комбинация из сжатий/растяжений/поворотов которая как то "выворачивает" входную точку превращая её в выходную.
    И весь цимес в том, чтобы развернуть её в пространстве таким образом, что если она голубая, то чтобы у неё координата X стала больше (сигнал на первом выходе), а если красная, то координата Y стала больше (сигнал на втором выходе).
    Собственно что он делает на виртуальном холсте - это красит двумерное пространство входных точек в цвета какая из координат на выходе станет больше по логике деления между синими и красными точками (эта нейросеть как раз старается понять красной точка является или синей на основе входного массива заданных им точек).
    Это чистое линейное преобразование довольно бесхитростное и так можно эффективно разделить точки только когда они действительно в исходном пространстве легко делятся на две отдельные хорошо отстоящие друг от друга группы.
    Однако да, возникает проблема с центром координат - нам еще надо не только сжимать/вращать, но и сдвигать центр координат.
    Опять таки знакомые люди с 3D-графикой понимают, что смещение в матрицы вводится увеличением размерности матрицы на одно измерение куда засядет линейная операция смещения независимая от X и Y что он и делает вводом единичного нейрона.
    Следующим шагом он вводит второй слой тоже из двух нейронов.
    Вот тут человек опять таки знакомый с трёхмерной графикой может опешить. Дело в том, что это будет просто второе умножение на матрицу. Но комбинацию из двух умножений матриц всегда можно заменить на одну. Это легко понять проследив все пути из выходов на входы и поняв что их можно просто заранее просуммировать слепив из двух слоёв один единственный. Это действительно так. Но почему тогда оно как то помогло и придало сети нелинейность?
    И вот этот момент он тоже совсем не озвучил - дело в том, что да, слои нейросетей из-за этого факта "усложняют" вводя функцию активации. Если его сорцы глянуть на которые есть ссылка под видео, то это вот эта строчка:
    Код (Text):
    1.  
    2. l1.neurons[j] = activation.apply(l1.neurons[j]);
    3.  
    Выходы слоёв на самом деле подвергаются преобразованию нелинейной функцией которая и называется функцией активации и таким образом в линейное афинное матричное умножение вводится существенная нелинейность которая ломает принцип "перемножение нескольких матриц можно заменить одной матрицей" и собственно приводит к существенному обогащению тех результатов что может теперь выдавать нейросеть - появляются изгибы, пространство уже не просто смещается/растягивается/вращается, но еще и перекручивается и взбивается венчиком нелинейности более сложным образом.
    Итого: повышая число нейронов в слое мы повышаем размерность пространства вариантов и сложность первичного афинного преобразования, а повышая число слоёв и играясь с функцией активации мы усугубляем нелинейность преобразования и повышаем изощрённость того каким замысловатым веером нейросеть может раскидать точки на выходе.
    Обучение в принципе своём это алгоритм градиентного спуска - алгоритм оптимизации который подбирает веса нейросети для достижения лучшего результата пользуясь математикой - ему нужно чтобы функции активации были дифференцируемыми и тогда он может считать аналитически как лучше подкручивать коэффициенты чтобы улучшать результат. Принципы зиждутся на том же на чём в старших классах школы нас заставляли искать минимумы/максимумы функций поиском того где их производные обращаются в ноль. Но это уже тема гораздо более глубокая и я сам уже почти всё забыл.
     
  12. Research

    Research Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    120
    aa_dav, чем-то похоже на это:
     
  13. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    457
    Да то же самое.
    У Onigiri только принцип выходов нейросети "какой больше, тот считается ответом" из двух ответов. Нетрудно при этом опять таки понять, что это функция X>Y и она разбивает двумерное пространство линией под 45 градусов к осям координат. А значит и классифицирующее афинное преобразование точек просто должно исходные повернуть и отмасштабировать так чтобы они удачно попали по разные стороны от этой разделяющей линии и без операции смещения это не всегда возможно сделать.
    На этом же видео один единственный выход уровень которого считается ответом, но геометрически если трактовать это уравнение a*X+b*Y=z где z после пропуска через функцию активации ужмётся в интервал [0,1]. А уравнение a*X+b*Y это не что иное как уравнение прямой проходящей через центр координат. А уравнение произвольной прямой на плоскости имеет вид a*X+b*Y+c=0. Вот этот "c" задающий смещение относительно начала координат и добавляет нейрон смещения, т.к. он всегда 1, то уравнение принимает вид a*X+b*Y+c*1=0, что то же самое что нам нужно. При этом выход z как число это там где должно быть 0 в уравнении прямой - там где он от 0 отличается это значит, что точка не лежит на прямой, а отстоит от неё на _знаковом_ расстоянии z. Расстояние со знаком, то есть отрицательное значит по одну выделенную сторону, а положительное - по другую выделенную сторону. Функция активации смещает это дело к [0;1] и серединой деления становится 0,5. А технически ровно та же геометрия в эн-мерных пространствах. И бинарная классификация это по сути рассечение облака точек какой то гиперповерхностью (в простейших случаях какие тут видны - гиперплоскостью/прямой) и определение с какой стороны они лежат.
     
    Последнее редактирование: 25 апр 2024
  14. Research

    Research Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    120
    aa_dav, а что делать если надо распределить на 3 класса данных, или например на 15?
    Самый цимес был бы в том, если алгоритм мог бы сам определить колличество классов
     
    Последнее редактирование: 25 апр 2024
  15. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    457
    Классический подход для трёх классов - на выходе стоит три нейрона и чей сигнал больше, тот и принимается за детект. При этом как понятно можно оценивать "уверенность" нейросети в результате. Там где Onigiri на видео выше тестирует нейронку на распознавании цифр прекрасно видно 10 выходных нейронов. При этом мы начинаем говорить о том, что выходное пространство результата 10-мерное и по сути геометрически мы ищем в какую из "пирамид" с центром в центре координат попадает точка - если её координата вдоль оси K больше всех других, то она попадает в пирамиду вдоль оси K. Опять таки геометрически мы говорим о таком преобразовании исходных точек чтобы оно максимально достоверно разбросало их по этим пирамидам в конечном пространстве выходов нейросети. При этом надо помнить, что размерность пространства исходных точек уже сильно отличается от размерности выходных точек - ведь мы анализируем на входах в нейросеть уже множество пикселей картинки - каждый станет измерением входного слоя и его гиперпространства.
    Так или иначе де-факто нейросети это геометрические преобразователи пространств точек посредством смеси афинных и нелинейных преобразований. Чистая аналитическая геометрия.
     
    Mikl___ нравится это.
  16. CaptainObvious

    CaptainObvious Member

    Публикаций:
    1
    Регистрация:
    18 янв 2024
    Сообщения:
    87
    aa_dav, спасибо за развёрнутое описание ваших мыслей
     
  17. Filthmw

    Filthmw New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2024
    Сообщения:
    4
    Хорошо такой вопрос.А что если дать волю ИИ над всем что творится внутри микропроцессора над каждым транзистором.Что бы он нашёл какой то свой способ (всех мнемоник,чипсетов,драйверов и ТД).Я уверен он всё перепишет.
     
  18. CaptainObvious

    CaptainObvious Member

    Публикаций:
    1
    Регистрация:
    18 янв 2024
    Сообщения:
    87
    Filthmw, нейросеть это обычная математическая формула, её не то что на микропроцессоре, её на листке бумаги можно запустить. Нужно взять у deepmind коэффициенты, которые они насчитали для нейросети
     
    Filthmw нравится это.
  19. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    155
    https://naked-science.ru/community/954608

     
  20. Research

    Research Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    120
    А что должно получиться в результате? :)