Фьючерсы
Доступ к сотням фьючерсов
TradFi
Золото
Одна платформа мировых активов
Опционы
Hot
Торги опционами Vanilla в европейском стиле
Единый счет
Увеличьте эффективность вашего капитала
Демо-торговля
Введение в торговлю фьючерсами
Подготовьтесь к торговле фьючерсами
Фьючерсные события
Получайте награды в событиях
Демо-торговля
Используйте виртуальные средства для торговли без риска
Запуск
CandyDrop
Собирайте конфеты, чтобы заработать аирдропы
Launchpool
Быстрый стейкинг, заработайте потенциальные новые токены
HODLer Airdrop
Удерживайте GT и получайте огромные аирдропы бесплатно
Launchpad
Будьте готовы к следующему крупному токен-проекту
Alpha Points
Торгуйте и получайте аирдропы
Фьючерсные баллы
Зарабатывайте баллы и получайте награды аирдропа
Инвестиции
Simple Earn
Зарабатывайте проценты с помощью неиспользуемых токенов
Автоинвест.
Автоинвестиции на регулярной основе.
Бивалютные инвестиции
Доход от волатильности рынка
Мягкий стейкинг
Получайте вознаграждения с помощью гибкого стейкинга
Криптозаймы
0 Fees
Заложите одну криптовалюту, чтобы занять другую
Центр кредитования
Единый центр кредитования
Всё начинается с простого вопроса: как машина может понимать текст? Когда вы обучаете модель отличать спам от нормальных сообщений или определять тональность отзывов, под капотом происходит кое-что интересное. Модель должна как-то преобразовать буквы и слова в числа, потому что нейросети работают только с цифрами.
Первый наивный подход - просто пронумеруем каждое уникальное слово. Good = 6, bad = 26, awesome = 27. Выглядит логично, но вот беда: числа 26 и 27 близки друг к другу, поэтому модель подумает, что bad и awesome похожи. В реальности же awesome и good семантически ближе. Вот такой подвох.
Попробовали One Hot Encoding - каждому слову даём вектор размером со весь словарь, где только одна единица указывает на нужное слово, остальное нули. Проблема ранжирования исчезла, но появилась новая: если словарь из 20 тысяч слов, каждый вектор будет 20-тысячемерным. Памяти жрёт огромное количество, да и семантику слов модель не ловит.
Потом пришли Bag of Words и N-граммы - считаем, сколько раз слово встречается в тексте. Добавляет контекст, но опять же - большие разреженные векторы и модель не понимает глубокие связи между словами. Если в предложении "The librarian loves books" слова librarian и book не соседствуют, N-граммы не схватят, что они связаны.
Вот здесь-то и приходит на помощь правильное кодирование через embedding. Идея в том, что похожие слова должны лежать близко друг к другу в векторном пространстве. Представьте двумерную плоскость: на одной оси размер животного, на другой - опасность. Тигр и лев будут рядом (крупные и опасные), а хомяк отдельно (мелкий и безопасный). Вот это и есть embedding - плотный вектор, который хранит смысл слова в n-мерном пространстве.
Самое крутое: с такими векторами можно делать математику. Возьмёте вектор "сына", вычтете "мужчину" и добавите "женщину" - получите вектор близкий к "дочери". Или: Мадрид + Германия - Испания = Берлин. Работает, потому что модель улавливает отношения между понятиями.
Как же обучают такие embedding? Google предложила Word2Vec с двумя подходами. В CBOW вы берёте контекстные слова и предсказываете центральное слово. Skip-Gram делает наоборот - от центрального слова предсказываете соседей. Обе техники хорошо работают для обучения word embedding.
В современных моделях типа GPT или BERT всё немного иначе. Слой embedding там не берут готовым, а обучают вместе с самой моделью. Сначала текст разбивается на токены, потом простая нейросеть создаёт embedding для каждого токена. Веса этого слоя - обучаемые параметры, которые учатся представлять слова в нужном пространстве. Потом эти embedding проходят через блоки декодера и попадают в выходной слой, который выдаёт вероятности для следующего токена.
Одна маленькая деталь - позиционное кодирование. Трансформер обрабатывает все токены параллельно, в отличие от RNN. Поэтому нужно как-то сказать модели, в каком порядке идут слова. Берут позиционный вектор и добавляют его к embedding вектору. Получается комбо: смысл слова + информация о его позиции в тексте.
После позиционного кодирования embedding поступает в механизм внимания - вот это уже сердце всех больших языковых моделей. Embedding ловит семантику отдельных слов, но контекст понимает именно attention. Поэтому слово "ключ" в разных контекстах получит разные контекстуальные представления.
Вот так, комбинируя простые идеи - токенизацию, подсчёт слов, правильное кодирование через embedding - постепенно приходишь к трансформерам и ChatGPT. Эмбеддинги сейчас везде: в рекомендательных системах, в поиске похожих картинок, в основе всех современных LLM. Если хотите разбираться в NLP по-настоящему, нужно понимать, как работают CBOW, Skip-Gram и вся эта архитектура. Это база, с которой начинается.