ArbNet

ArbNet
Рейтинг
154
Регистрация
27.10.2019
Программист самоучка
Sly32 #:

Как ты будешь строить паттерн? В твоем кодировании нет никаких связей между кодами слов

Тебе ли задавать такие вопросы. Хотя понимания как работают нейросети у тебя всё таки маловато.

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

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

Sly32 #:
Хочешь, я тебе обьясню буквально в 3-х абзацах, почему это не сработает? Пошли в челлендж тему - тут это лишнее. Помнишь, я тее про мамбу писал.  И если бы ты изучил реально то знал бы, что сейчас воспроизводишь метод кодирования, который  давно уже разрабатывался и прищнан неэффективным  для трансформера. 

Не смеши, с этой мамбой 😁

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

ЗЫ. Что трансформер, что мамба, на каждой итерации просчитываются вероятности всех токенов, у мамба есть скрытое состояние от которого делаются расчёты(балбесы вроде тебя думают, что это ускорение, но на самом деле это не ускорение по большому счёту). Я делаю кодирование слов в числа чтобы не просчитывать тысячи токенов каждый раз, а чтобы по кодам слов находились паттерны и генерировались нужные слова. Не понимаешь же наверное всё равно ничего..

Sly32 #:
я не понимаю зачем что-то писать уровня задач для обучающихся

Я изучил как работают алгоритмы нейросетей. В них слова разбиваются на токены от 2 до нескольких символов в зависимости от частоты наличия в словах. Таких токенов около 50000. Для обучения такой сети нужно очень и очень много данных и времени на обучение и тд. Подход для llm не плохой, но слишком затратный и очень много лишней работы при генерации ответа, то есть надо просчитывать все 50000 на каждой итерации..

Я тестил другой подход. Эти функции это прототипы, 64 это токенов русских букв строчных и заглавных без и́ё. Я кодирую слово в числа, а не разбиваю на части токенов по несколько букв. Подход удачный получился. Потом я стал думать как сделать больше токенов для символов и переделал функции кодировки. Понял, что эти прототипы корявые с неправильной формулой. И это на самом деле не единственный случай. У меня так с ИИ постоянно, всё переписываю по своему.

ЗЫ. Да, ИИшный код можно использовать, но по хорошему если подумать, то лучше не надо, лучше свой написать.

Александр Воробьев #:
ты привел пример это что - уже не простая задача? :)

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

Sly32 #:
начни с математики!

Ты вообще знаешь как 1 и 0 в компе превращаются в числа? А тебе пора бы уже знать как числа хранятся в памяти компьютера.

На каждом разряде увеличивается в двое и не может превышать разряд *2, а разряд*2-1 это максимальное значение всех младших разрядов

Специально для тебя, твой любимый ИИ сделал:

fn main() {
    let mut result: u64 = 0;
    let code_u64: u64 = 63;
    let mut iteration = 0;
    
    println!("Начальное значение: result = {}", result);
    println!("Начинаем вычисления...\n");
    
    loop {
        let current = result;
        let operation = format!("{} * 64 + {}", current, code_u64);
        
        // Пробуем выполнить операцию
        if let Some(new_result) = current.checked_mul(64).and_then(|r| r.checked_add(code_u64)) {
            result = new_result;
            iteration += 1;
            println!("Итерация {:2}: {} = {}", iteration, operation, result);
        } else {
            println!("\n⚠️  ПЕРЕПОЛНЕНИЕ на итерации {}!", iteration);
            println!("   Не удалось выполнить: {}", operation);
            println!("   Текущее значение: {} (максимум для u64: {})", current, u64::MAX);
            break;
        }
    }
    
    println!("\nИтоговый результат: {}", result);
    println!("Всего выполнено итераций: {}", iteration);
}

Итерация  1: 0 * 64 + 63 = 63
Итерация  2: 63 * 64 + 63 = 4095
Итерация  3: 4095 * 64 + 63 = 262143
Итерация  4: 262143 * 64 + 63 = 16777215
Итерация  5: 16777215 * 64 + 63 = 1073741823
Итерация  6: 1073741823 * 64 + 63 = 68719476735
Итерация  7: 68719476735 * 64 + 63 = 4398046511103
Итерация  8: 4398046511103 * 64 + 63 = 281474976710655
Итерация  9: 281474976710655 * 64 + 63 = 18014398509481983
Итерация 10: 18014398509481983 * 64 + 63 = 1152921504606846975

⚠️  ПЕРЕПОЛНЕНИЕ на итерации 10!
   Не удалось выполнить: 1152921504606846975 * 64 + 63
   Текущее значение: 1152921504606846975 (максимум для u64: 18446744073709551615)

На самом деле на 11й переполнение. Да в коде есть ограничение на 10 символов и он рабочий, я тестил нейросеть с этими функциями.

Но они корявые. Здесь просто основание маленькое, сделать побольше и всё.

ЗЫ. Формула должна быть такая result += code_u64 * (64^разряда);

Сергей про е-ком #:
ИИ сама прекрасно находит ошибки

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

ЗЫ. Ещё раз говорю кого устраивает корявость, берите на вооружение. Лично я как писал код сам так и продолжаю писать, мне нужно обязательно понимать как он работает, что делает и тд. и практически любой код который мне генерит ИИ я переделываю по своему, потому что меня раздражает эта корявость..

Александр Воробьев #:
тривиальная задача

Да, с простыми задачами он справляется на ура.

Но лично мне то, что просто сделать, то с помощью ИИ я делать не буду. А то, что для меня сложно, то и ИИ мне в этом мало чем помочь может.

Sly32 #:
Максимально возможное значение result после 10 итераций — это 64^10 - 1
Ты идиот?(риторический)

ЗЫ. На каждой итерации результат умножается на основание!!
Александр Воробьев #:
Какая модель это сгенерила? Ты точно ни чего не правил в коде?
Модель тут не важна. Что там править? Вот самый главный косяк result = result * 64 + code_u64;
KrutE #:

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

Для не понимающего да. А для того кто реально умеет программировать и видит говнокод сгенерированный ИИ, то по старинке делает всё своими мозгами и ручками.

Вот к примеру кое что тестил, ИИ мне написал такие кодировщики слов в числа и обратно по моему запросу

/// Кодирование
pub fn encode(word: &str) -> u64 {
  let mut result: u64 = 0;
  let max_len = 10;
  for (idx, sym) in word.chars().enumerate() {
    if idx >= max_len { break; }
    if let Some(code) = index(sym) {
      let code_u64 = code as u64;
      if result > u64::MAX / 64 {
        break;
      
      result = result * 64 + code_u64;
    }
  }
  result
}
/// Декодирование
pub fn decode(code: u64) -> String {
  let mut code=code;
  let mut syms = Vec::new();
  while code > 0 {
    let tmp = (code % 64) as usize;
    if let Some(sym) = SYMBOLS.chars().nth(tmp) {
      syms.push(sym);
    }
    code /= 64;
  }
  if syms.len()>0 { syms.reverse(); }
  syms.iter().collect()
}

Для того кто не соображает, это идеальный код и он его будет применять.. А фактически это говнокод
при таком кодировании result = result * 64 + code_u64; будет ошибка переполнения. И таких косяков у ИИ очень много. Те кто сами не умеют думать, для них это всё замечательно конечно..

pavlkonst #:
а вот выбрать подрядчика на строительство дома или купить редкую запчасть через чат-бота они не смогут. Транзакционные и коммерческие запросы никуда из классического поиска не денутся

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

Всего: 2497