Sly32

Рейтинг
367
Регистрация
29.03.2012
plab #:
Но зачем?

Если ты до сих пор не понял, то для

plab #:
экономя свое время и ресурсы,

Но вот этот перл обьясняет все:

plab #:
На вскидку без вникания в то

Это догма твоего подхода ко всему. И очередная просьба - не засорять тему. Она для тех, кому интересно разобраться а не плюнуть. Продолжай мыть пол грязной тряпкой ручками. 

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

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

Что бы вам не гуглить:

Це́пь Ма́ркова — последовательность случайных событий с конечным или счётным числом исходов, где вероятность наступления каждого события зависит только от состояния, достигнутого в предыдущем событии[1]. 

Еще проще - на основе имеющихся данных высчитывается вероятность появления следующего символа. 
Как это работает.
Возьмем конечный набор данных:

words = ["apple", "banana", "orange", "grape", "melon", "kiwi", "peach", "ananas", "grapefruit", "pepper", "melon", "watermelon", "potatoes", "pineapple", "coconut"]

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

for word in words:
    for i in range(len(word)):
        key = word[max(0, i - 1):i + 1]  # use two symb
        next_letter = word[i + 1] if i + 1 < len(word) else None

        if key not in transitions:
            transitions[key] = {}

        if next_letter:
            transitions[key][next_letter] = transitions[key].get(next_letter, 0) + 1

Результат:

{'a': {'n': 1, 'p': 1},
'ac': {'h': 1},
'an': {'a': 4, 'g': 1},
'ap': {'e': 2, 'p': 2},
'as': {},
'at': {'e': 1, 'o': 1},
'b': {'a': 1},
'ba': {'n': 1},
'c': {'o': 1},
'ch': {},
'co': {'c': 1, 'n': 1},
'ea': {'c': 1, 'p': 1},
'ef': {'r': 1},
'el': {'o': 3},
'ep': {'p': 1},
'er': {'m': 1},
'es': {},
'fr': {'u': 1},
'g': {'r': 2},
'ge': {},
'gr': {'a': 2},
'in': {'e': 1},
'it': {},
'iw': {'i': 1},
'k': {'i': 1},
'ki': {'w': 1},
'le': {},
'lo': {'n': 3},
'm': {'e': 2},
'me': {'l': 3},
'na': {'n': 2, 's': 1},
'ne': {'a': 1},
'ng': {'e': 1},
'nu': {'t': 1},
'o': {'r': 1},
'oc': {'o': 1},
'oe': {'s': 1},
'on': {'u': 1},
'or': {'a': 1},
'ot': {'a': 1},
'p': {'e': 2, 'i': 1, 'o': 1},
'pe': {'a': 1, 'f': 1, 'p': 1, 'r': 1},
'pi': {'n': 1},
'pl': {'e': 2},
'po': {'t': 1},
'pp': {'e': 1, 'l': 2},
'ra': {'n': 1, 'p': 2},
'rm': {'e': 1},
'ru': {'i': 1},
'ta': {'t': 1},
'te': {'r': 1},
'to': {'e': 1},
'ui': {'t': 1},
'ut': {},
'w': {'a': 1},
'wa': {'t': 1},
'wi': {}}

Обратите внимание, что для 15 базовых слов мы получили словарь из 57 элементов. Дальше поймете, почему я это отметил.
Но это пока еще сырой список. Нам же нужно понимать вероятность появления следующей буквы, поэтому несложным путем высчитаем ее:

for letter, next_letters in transitions.items():
    total = sum(next_letters.values())
    for next_letter in next_letters:
        next_letters[next_letter] /= total

В результате наш псеводнейрон уже выглядит так:

{'a': {'n': 0.5, 'p': 0.5},
'ac': {'h': 1.0},
'an': {'a': 0.8, 'g': 0.2},
'ap': {'e': 0.5, 'p': 0.5},
'as': {},
'at': {'e': 0.5, 'o': 0.5},
'b': {'a': 1.0},
'ba': {'n': 1.0},
'c': {'o': 1.0},
'ch': {},
'co': {'c': 0.5, 'n': 0.5},
'ea': {'c': 0.5, 'p': 0.5},
'ef': {'r': 1.0},
'el': {'o': 1.0},
'ep': {'p': 1.0},
'er': {'m': 1.0},
'es': {},
'fr': {'u': 1.0},
'g': {'r': 1.0},
'ge': {},
'gr': {'a': 1.0},
'in': {'e': 1.0},
'it': {},
'iw': {'i': 1.0},
'k': {'i': 1.0},
'ki': {'w': 1.0},
'le': {},
'lo': {'n': 1.0},
'm': {'e': 1.0},
'me': {'l': 1.0},
'na': {'n': 0.6666666666666666, 's': 0.3333333333333333},
'ne': {'a': 1.0},
'ng': {'e': 1.0},
'nu': {'t': 1.0},
'o': {'r': 1.0},
'oc': {'o': 1.0},
'oe': {'s': 1.0},
'on': {'u': 1.0},
'or': {'a': 1.0},
'ot': {'a': 1.0},
'p': {'e': 0.5, 'i': 0.25, 'o': 0.25},
'pe': {'a': 0.25, 'f': 0.25, 'p': 0.25, 'r': 0.25},
'pi': {'n': 1.0},
'pl': {'e': 1.0},
'po': {'t': 1.0},
'pp': {'e': 0.3333333333333333, 'l': 0.6666666666666666},
'ra': {'n': 0.3333333333333333, 'p': 0.6666666666666666},
'rm': {'e': 1.0},
'ru': {'i': 1.0},
'ta': {'t': 1.0},
'te': {'r': 1.0},
'to': {'e': 1.0},
'ui': {'t': 1.0},
'ut': {},
'w': {'a': 1.0},
'wa': {'t': 1.0},
'wi': {}}

И собственно, уже все готово для генерации слова. 

Как это происходит? Запускаем код и вводим первые 2 буквы, из которых мы хотим сгенерировать слово, например "pe" В словаре находим сочетания для него:

'pe': {'a': 0.25, 'f': 0.25, 'p': 0.25, 'r': 0.25},

Недалекий фрефоркер увидел в коде random, не удосужился почитать, что это за функция. А random.choice выбирает не случайную букву из последоваиельности, а на основе весов. В данном случае веса одинаковы, значит выбирается первая буква. Получаем "pea". Помним, что наш алгоритм использует 2 последних буквы. Значит ищем следующее сочетние для "ea":

'ea': {'c': 0.5, 'p': 0.5},

Получаем: "peac", продолжаем поиск для "ac":

'ac': {'h': 1.0},

Тут  уже без вариантов.  Получаем: "peach"
Ищем для "ch":

'ch': {},

Вариантов нет, генерация закончена, полученное слово - персик) Можно еще добавить проверку на наличие слова в словаре исходном и останавливать генерацию при совпадении.

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

Почему я в начале привел длины исходного списка и результирующего словаря? Это почему алгоритмы, известные в начале прошлого века, получилось реализовать только сейчас. Я использую только 15 исходных слов и для генерации беру последних 2 буквы. А попробуйте создать словарь, например из 100 слов и анализировать 4 буквы? Надеюсь все знают что такое декартово множество и смогут посчитать результирующий словарь. 
А это самый простой и понятный механизм. Тензор использует более сложные алгоритмы для исключения ошибок, например. 

Поэтому все это полезно в образовательных целях. На практике нужно учиться использовать LLMs и механизмы работы со своими данными.

plab #:
Он не может равномерно убирать, если на полу стоят столы, стулья. Там вычисления идут геометрии. Не идеальные. Переезжает с места на место, в это время трет середину. Или у тебя запоминает, в каком метре уже потер и поднимает тряпку?

Слушай, ты хоть раз видел-то робот пылесос? Понимаешь как он работает? что он у тебя там трет? 

plab #:
Одна из главных проблем робототехники - аккумулятор. Массу твоего смартфона создают почти полностью.

Боюсь спросить - как вопрос аккумуляторов относиться к работе/полезности ИИ? Попробуешь перечитать тему топика? 

Как раз сегодня в магазе смотрел новые модели пылесосов. Модели с ИИ уже появились, надо брать) Подключу его к форуму, все умнее будет фом неверующих и контекст лучше сгенерирует)

plab #:
Которые, специальные для данной модели, производитель продает по завышенной цене. Если многоразовые, то стирать отдельно. 

Копеечный и хватает месяца на три. Понятно что это не для нищебродов.

plab #:
Перед этим надо с пола убрать/поднять, ограничить чтобы где не навернулся. Роботы-пылесосы неплохи для больших хат, в среднестатистических - нет. Он обходит все объекты, это да. Но тогда сильно увеличивается время уборки, сажается зарядка. Замена зарядки регулярна, замена колес, может застрять под диваном.

А ты когда убираешь, моешь пол прямо по грязным трусам, которые перед этим на пол кинул? У меня 64 квадрата хата, мне хватает на 2-3 уборки одной зарядки. Для больших домов более чем тоже.

plab #:
Центр он тебе до дыр дотрет. Не вопрос.

Каких дыр, ты вообще хоть раз видел робот-пылесос? Равномерно убирает.

plab #:
Определись. Ты ему задаешь расписание программно или у него поведенческий инстинкт как у собаки выработался в результате наблюдения за людьми.

Можно програмно, можно по обучению. Так же как в автомобиле, если я с утра в будни выезжаю - он предложит мне маршрут на работу, если вечером - то в зависимости от дня - домой или в спортзал.

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


plab #:

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

У вас есть/был робот-пылесос? Ерундистика. За 10 лет существования этой ниши ума ему  вы так и не прибавили. Как было проще и надежней орудовать обычным и тряпкой, так и осталось. 

И ты 30+ страниц пытаешься упорно этот опиум разоблачить? Лично я вот не пишу в темах, которые мне неинтересны. 

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

А ИИ такая бесперспективная вещь, что его уже скоро в утюги будут внедрять)

plab #:
создам проект "Ограниченные возможности ИИ для особо одаренных наполеонов", изучу все его технологии и разнесу ваш искусственный разум в пух и прах.

Не создашь и не изучишь. Ты за 30 страниц топика не смог понять о чем он, а нашему искусственному разуму понадобиться пара секунд, что понять твой уровень знаний.

ArbNet #:

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

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

ЗЫ. А ещё мне тут втирал про дифференциалы и интегралы..

Уже даже и не знаю, плакать или смеяться с твоей ограниченности... Ты хоть прочитал, то что я написал, прежде чем создавать свой "осмысленный " текст? Приведенный алгоритм - Цепь Маркова, не являющийся в полной мере реализацией нейросети, но позволяющий получать результат на основе предыдущих состояний. Ты не понимаешь, зачем там рандомизация? Ты не в курсе что и полноценные нейросети не создают "осмысленный " текст, а высчитывают вероятность, в данном случае следующей буквы на основе полученных данных? Если входной слой будет содержать ошибочные или бессмысленные данные то и на выходе будет набор букв, а не слово. Ровно как и в твоем случае - генерируешь тупость, вместо того, чтобы прочитать и вникнуть. Реализация тензора - сложнее, но там уже можно использовать несколько скрытых слоев для повышения точности выходного слоя. Жалко тратить время даже на тебя. Читать сначала научись, потом в умные дискуссии лезь.

leoseo #:
А рубль уже начал укрепляться :

А я все ждал, когда же патриоты начнут радоваться))) курсу в 109)))
5 ноября тоже было укрепление:

leoseo #:
Уже 97,5. А было 99. Пошло снижение! Действительно удивляться не стоит, потому что экономика России крепка и рубль не так уж и слабая валюта, чтобы стоить 99 руб. за доллар.

11 ноября:

leoseo #:
Курс доллара уже 95 . А индекс Мосбиржи каждый день открывается ГЭПом вверх. ВСЁ ЗАШИБИСЬ РЕБЯТА !!

22 октября:

leoseo #:
Уже 95, потихоньку началось снижение: 

Все зашибись))) 

Реализовал еще два варианта нейросети- подбора слов. С помощью numpy - либы пайтона для  числовых расширений. Ну и классика с помощью Tensorflow.

Вывод все тот же - это начинает работать на огромных обьемах данных, поэтому практического смысла не имеет в принципе особого. Гораздо продуктивнее  работать с LLM+RAG. Можно создавать справочники, документацию, чатботы  для хелпдеск...

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

Смотрю, скоро любитель бриджа и выпускник Бауманки снова сможет сдавать доллары по 120... Графики на бирже какие-то угрожающие...
Всего: 7119