Ответы пользователя по тегу Нейронные сети
  • Fine-tuning опенсорсного LLM новому языку?

    Maksim_64
    @Maksim_64
    Data Analyst
    Приблизительно все ваши вопросы, не связаны с реальностью.

    1. Машинное обучение это НЕ детерминистический процесс, то есть нельзя даже предположить что и сколько займет времени, пока не начал решать абсолютно конкретную задачу посредством абсолютно конкретного инструмента.

    2. Все процессы настройки моделей отличаются для конкретных задач и совпадают только делом случая. Есть данные и есть конкретная задача и конкретное решение, а не некий общий кейс.

    3. https://github.com/Hannibal046/Awesome-LLM чего из open source там нет?
    Ответ написан
    7 комментариев
  • Нейросеть для получения информации из документа?

    Maksim_64
    @Maksim_64
    Data Analyst
    Нейронная сети, актуальны для задач где присутствует ВАРИАТИВНОСТЬ. Вы имеете входные данные обозначим их Х вы имеете функцию которая сопоставляет эти данные с выходными данными (извлечь ИНН и другие пункты договора) обозначим их y. Так вот если вариативность отсутствует то данная задача f(X) = y, решается парсингом документа, а не нейронными сетями. Если задача имеет вид f(X) = y + E, где E это случайная ошибка, то нейронная сеть это один из возможных алгоритмов МИНИМИЗАЦИИ этой ошибки, но НЕ полного ее исключения. Так что надо иметь ввиду что 100 процентной точности не добиться. И ответить себе а допустимо ли это.

    Что касается твоих вопросов, ну например пункт номер два это целый раздел в машинном обучении. Который содержит в себе несколько подпунктов. И дело это инженерное - а не вот какой то метод решит все мои проблемы. Пункт номер три обе могут быть использованы. Пункт четвертый, а потянешь с нуля. А готовые модели они решат частный кейс твоей проблемы? Откуда нам знать, с какой точностью готовые модели будут извлекать данные. Ну а первый вопрос, это всего лишь api для моделей и выбирать надо ту с которой имеешь опыт работы, какой то лучшей нет.
    Ответ написан
    1 комментарий
  • Как подобрать начальные входные весовые коэффициенты (веса) для нейронной сети?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну это инженерное решение, тут единственного правильного подхода нет. Случайная выборка, как от 0 до 1 например или случайная выборка от -1 до 1. Или по формулам разным Случайная выборка осуществляется из равномерного распределения или из нормального.

    В общем вот маленькая статья что бы не повторятся, там от простой выборки и до выборок по формулам в зависимости от функции активации, заодно там и пару коротеньких примеров на python имеется.
    Ответ написан
    Комментировать
  • Как преобразовать массив чисел который возвращается функцией model.predict в нормальный вид?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну надо конечно догадываться что вы имеете ввиду под нормальным видом, данные в массиве представлены в научном виде. Например 1e-02 = 1*10^(-2) = 1/100. Соответственно, например 1.3135763e-05 = 1.3135763 * 10^(-5).

    Можно принудить конечно numpy отображать маленькие числа в "обычном виде" например
    np.set_printoptions(suppress=True)
    особо маленькие числа он будет показывать, как ноль, что бы преодолеть и это у вас -10 самая большая степень, можно добавить форматтер.
    np.set_printoptions(suppress=True, formatter={'float_kind':'{:0.10f}'.format})

    в обоих случаях при печати numpy массива он будет в том что вы называете "нормальным видом".
    Ответ написан
    Комментировать
  • Как реализовать классификатор на датасете рукописных цифр?

    Maksim_64
    @Maksim_64
    Data Analyst
    По этой ссылке репозитарий с реализацией вашей задачи на чистом numpy (python библиотека), которая предоставляет векторизованный массив. (все функции написаны вручную) не каких ML алгоритмов из коробки не используется.

    Реализуйте на том языке на котором вам необходимо. Я думаю иметь готовый код без ML библиотек это хорошее начало для решения вашей проблемы.

    Так же автор репозитария написал статью на https://towardsdatascience.com/ вы можете зарегистрироваться там они дают по моему три бесплатные статьи в месяц и изучить его статью, как весь процесс организовать и т.д. Название статьи "MNIST Handwritten digits classification from scratch using Python Numpy".
    Ответ написан
    Комментировать
  • Пытаюсь научиться работе с нейросетями, столкнулся с такой ошибкой, что делать?

    Maksim_64
    @Maksim_64
    Data Analyst
    Внимательно посмотрите на ваш кусочек, а это как должно быть.
    W1 = np.random.randn(IND, HD)
    b1 = np.random.randn(HD)
    W2 = np.random.randn(HD, OUTD)
    b2 = np.random.randn(OUTD)

    И код заработает, вы перезаписываете переменные, что в итоге делает невозможным операции из линейной алгебры в силу несоответствия размерности объектов.
    Ответ написан
    1 комментарий
  • Какой тип нейроной сети выбрать для прогнозирования цен на жилье (академическая задача)?

    Maksim_64
    @Maksim_64
    Data Analyst
    Я бы точно не использовал нейронку для такой задачи . Классические алгоритмы ML предпочтительнее. Ну если хочется именно нейронку то эту проблему можно классифицировать как regression problem. Какой то разницы между нейронками подходящими для решения задач регрессии не будет. гуглишь neural network for regression problem. и выбираешь. Например вот. Пример В примере используется нейросеть которая будет прогнозировать стоимость дома (похожа на твой). Плюс там не только код и ссылка имеется на google colab notebook, со всем кодом (python) так что изучай.
    Ответ написан
  • Какой тип нейронной сети лучше подходит для работы с числовыми входными параметрами разной длины?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Все сети работают с числами, если входные данные не числа то они кодируются (разными методами в зависимости от типа).
    2. А почему не использовать стандартные алгоритмы классификации? Multinomial Logistic Regression, Random Forest Classifier и.тд. Основная работа она все равно ляжет трансформации и манипуляции с данными.
    3. Что касается размера входного вектора. То я бы работал с фиксированным размером. Потому что чем больше предикторов ввел пользователь тем точнее должен быть результат. Насчет заполнения нулями не уверен. Я бы провел анализ важности предикторов установил бы веса и заполнял бы не нулями а например вес умножить на среднее значение по предиктору в тренировочном сете. (Но это как один из возможных сценариев) Заполнение данных большая работа особенно для такой задачи, где они по условию будут. Просто нулями где максимум 12 а минимум три. Что может алгоритм предсказать если у него будет вектор где в худшем случае только 3 компонента не нули. Каким образом это будет работать? Я бы однозначно заполнял данные не введенные пользователем. ВЕС предиктора * на какую нибудь агрегирующую статистику по предиктору.

    Я бы использовал, scikit-learn здесь.
    1. Провел бы анализ важности предикторов каждого в отдельности. (получил бы веса).
    2. Посмотрел бы что за дистрибуции у каждого предиктора в отдельности (что бы понимать какой статистикой заполнять когда на входе этот предиктор отсутствует).
    3. Возможно нормализовал или стандартизировал предикторы. (по выбору)
    4. Затем начал бы работать с моделями (смотрел бы что получается)
    5. Если что то получается тюнил бы параметры если нет менял бы трансформации данных.

    Вообще мысли такие, ну это мысли а так начни делать появятся конкретика, ее здесь пока мало.

    И да пункты не воспринимай буквально (там нету разбиения на тренировочную выборку и тестировочную выборку ) И много чего еще нету. Это не инструкция (конкретики мало), а общая картинка возможного решения проблемы.
    Ответ написан
    Комментировать
  • Как нейросети обрабатывают текстовую информацию?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вы правы каждое слово кодируется. Существует огромное количество методов кодирования для NLP (Natural Language Processing). Основной метод кодирования это представления слова в виде вектора где самая важная часть (что делает NLP возможным) при создании такого вектора слова которые используются в схожих контекстах имеют схожее но не одинаковое векторное представление. Векторная схожесть может быть подсчитана разными способами ну например Евклидово расстояние. В таком случае например вы будете иметь уникальный вектор для каждого слова где вектора с близкими Евклидовыми расстояниями будут означать слова которые используются в схожих контекстах. Что касается формата данных которые получит нейронная сеть, то каждый вектор трансформируется где каждое число трансформируется в число 0 до 1. Существует опять таки несколько техник. самая простая формула (x - min(X)) /(max(X) - min(X)), где x это каждый элемент вектора, ну и соответственно min(X) - минимальный элемент вектора max(X) максимальный элемент вектора. подобная трансформация применяется к каждому элементу каждого вектора. Это примитивный пример, для понимания идеи. Данный вопрос глубокий различные техники кодирования могут быть очень сложны и существуют не мало разных подходов для решения подобных задач. Что касается двоичного входа для нейронных сетей то ответ нет. Нейронные сети могут в том числе получать двоичные значения, но не ограничены этим, также они могут получать дискретные (целые) или числа с плавающей запятой.
    Ответ написан
    Комментировать