Почему с нуля? Потому что могу, потому что люблю программировать и потому что хочу насколько это возможно разобраться во всех (не во всех, но в самых основных) ньюансах. Писать буду на языке Kotlin. Юайки при необходимости будут делать на Compose Desktop.
Цель, как уже говорил, генерация художественного текста на русском языке. Полученная модель будет запускать на мобилках и на десктопе как часть большого приложения.
Предварительный план такой: - матричные операции - структура и веса сети, сохранение в файл и загрузка - обучение нейронки - простейший классификатор с юаем (чтобы убдеиться что всё работает) - классифицируем ирисы (ещё раз убедимся что всё работает) - краулер для сбора текстов - составления словаря токенов, написание токенайзера - обучение модели ... PROFIT!
Параллельно можно поболтать за ойти, математику и пограммирование.
Если ты надеешься что у тебя получится в результате что-то уровня чатгпт, то забудь. Там нужны колоссальные вычисления. На котлине это значит на ЦПУ тренировать собрался? Это еще х100 фактор замедления.
>>745865 Да, цпу, насчёт этого я не замарачваюсь. Конечно я представляю масштабы промышленных разработок. Там не только огромные вычислительные мощности, там ещё куча скиловых и не очень людей. Например там целые команды занимаются подготовкой и очисткой данных. Очевидно что у меня ничего из этого нет. Я думаю у меня получится что-то типа Порфирича. Будет успехом если моя модель будет сколько-то грамотно подсталять слова. Опять же, я это делаю потому что по кайфу.
Я кстати говоря пару лет работал датасатанистом (правда до нейронок мы тогда так и не добрались, максимум что у нас было это иксгэбуст). На собственно опыте я убедился что улучшение качества данных даёт больший прирост метрик, чем усложнение модели.
Посмотри видос Карпатого, он очень хорошо объясняет принципы и код: https://youtu.be/kCc8FmEb1nY Ещё у него на канале ещё есть про бэкпроп, где он с нуля его пишет. На питоне, конечно, но принцип тот же.
Короче говоря сделал я матричные вычисления и прямой проход нейронки (на самом деле я это сделал ещё до создания треда). Что бы как-то это визализировать, решил взять канвас и цвет каждого пикселя определить нейронкой со случайными весами. То есть на вход (x,y) на выходе (r,g,b). Внезапно получилось годно. Рейт мой дигитал эй-ай арт, анончик. Как думаешь, если это распечатать в хайрезе на холсте, это будут покупать?
Самый большой заёб пока что с индексами в матричных оперпциях, всё время что-то путаю. Пришлось написать необходимый минимум тестов. Сейчас вроде всё как надо. На очереди самая мякотка - алгоритм бек пропагейшен.
Как же я люблю синтаксический сахар, хоспади. У меня уже синтаксический диабет. Например матрицу я могу объявить как пикрил 1 или как пикрил 2. Как думаешь, анон, как лучше?
Я набухался и релишил переписать матричные операции, а то некрасиво.
>>746337 Я между прочим математик по образованию. Правда за столько лет я уже всё забыл. Но база-то всё равно есть, я когда слышу про например производную или градиент то сразу понимаю о чём речь.
Как думаешь, анон, вектор лучше представить отдельной сущностью (тогда делать ли отдельно вектор-столбец и вектор-строку?) или пусть вектора будут частным случаем матрицы (1 х n или n х 1)
Ещё я решил передалть хранение весов. Раньше я хранил матрицу для каждого слоя. Теперь я думаю переделать на мапу, где ключом будет i,j, а значением - вес. И для нейронов сделать сквозную нумерацию. Так конечно вырастут требования к памяти (jvm будет создавать ещё больше объектов), но я просто заебался с индексами.