Машинное обучение и искусственный интеллект в последнее время были на волне, и о них было много интересных новостей. С такими ИИ, как GPT3.5, GPT4, Bard, Bert, Alpaca, Llama и т. д., эти модели отлично подходят для множества задач, GPT4 — лучший из всех, поскольку он хорошо справляется с многозадачностью из-за большого объема данных. на котором обучались. Но как они справляются с африканскими языками, понимают ли они йоруба?

Давайте начнем с объяснения того, как эти модели ИИ понимают текст.

Упрощенное объяснение того, как работает AI/LLM.

Представьте себе супер-умный компьютер, который может разговаривать с людьми так же, как и вы! Но этот компьютер, называемый «большой языковой моделью» или LLM, не понимает слова так, как мы. Вместо этого он мыслит цифрами, как секретные коды в шпионском фильме. Итак, чтобы научить его говорить, как мы, нам нужен специальный транслятор, называемый токенизатором. Этот токенизатор превращает наши обычные слова в те секретные коды, которые понимает компьютер. Аккуратно, верно?

Таким образом, LLM (большая языковая модель) полагается на нечто, называемое токенизаторами, для преобразования необработанных текстов в числа, которые модель затем может использовать для обучения, поскольку компьютеры распознают только числа, а не тексты, поэтому должен быть способ преобразования текстов в числа.

Когда мы хотим чему-то научить LLM, мы даем ему прочитать кучу историй. Но помните, он не может читать слова, только числа. Итак, токенизатор берет истории и разбивает их на крошечные части (подслова), как блоки LEGO. Каждому фрагменту присвоен номер. Затем LLM узнает, что означает каждое число, что-то вроде изучения правил новой игры. Теперь, когда мы даем ему больше историй, он использует эти числа для создания своих собственных историй. Умно, да?

Только когда языковая модель способна правильно представлять текст, она сможет правильно его обрабатывать.

Проблема с языками:

Большинство токенизаторов обучаются в основном английским словам (что имеет смысл, потому что именно они в основном доступны в Интернете), поэтому они плохо работают, когда пытаются понять другие языки, например, йоруба. Таким образом, когда LLM понимает йоруба, это все равно, что говорить на йоруба с мужчиной-игбо, который всю свою жизнь прожил в своей деревне и, вероятно, слышал йоруба несколько раз и ожидал, что он поймет.

Когда вы загружаете предложение в LLM (опять же, LLM — это модель ИИ для текстовых/языковых задач), LLM разбивает предложение на подслова, которые он понимает, с помощью токенизатора, затем преобразует их в числа и т. д. (это очень удобно). заманчиво объяснить, как работает весь процесс, но я не хочу утомлять вас подробностями). Просто знайте, что он берет предложение, преобразует его в подслова, преобразует подслово в числа (токены), а затем эти числа в другой набор чисел, понятный LLM (векторные вложения).

Я попытался токенизировать свою лучшую попытку перевода фразы «Hello World» на йоруба, что означает «eku ijoko gbogbo omo agbaye», используя различные модели ИИ из открытых источников. Вот результаты.

#########Результат

['э', 'ку', 'и', 'дж', 'око', 'г', 'б', 'ог', 'бо', 'ом', 'о', 'аг', ' б', 'да']

######### Я удалил «_» в результате, который сообщает модели, что подслово является началом каждого токена в тексте.

Вы можете быстро увидеть, что эта модель не понимает йоруба, потому что она разбивает текст на подслова, которые сами по себе не имеют значения. Таким образом, любой LLM, который использует этот токенизатор, не сможет преобразовывать предложения в подслова, которые имеют смысл, поэтому модель также не будет иметь смысла, когда она выдает выходные данные.

Поэтому я попробовал GPT2 (потому что GPT3 не с открытым исходным кодом).

#########Результат

['эк', 'у', 'и', 'дж', 'око', 'г', 'б', 'ог', 'бо', 'о', 'мо', 'аг', ' залив', 'е']

######### Я удалил «Ġ» в результате, который сообщает модели, что подслово является началом каждой лексемы в тексте.

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

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

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

#########Результат

['эку', 'идж', 'око', 'гбогбо', 'омо', 'агб', 'ае']

######### Я удалил «Ġ» в результате, который сообщает модели, что подслово является началом каждой лексемы в тексте.

Вы можете видеть, что моя модель, которую я назвал «берторо» (все еще задаюсь вопросом, что это означает на языке йоруба), разбивает предложение на подслова, которые на самом деле имеют смысл сами по себе, поэтому, когда модель машинного обучения (LLM) использует это, она будет иметь контекстуальный смысл. понимание каждого подслова и работать лучше, что означает «он будет понимать йоруба».

ChatGPT, который является полной моделью, с собственным токенизатором, борется с йоруба, посмотрите на результат от него.

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

Ну, в любом случае, мы создали токенизатор, который отлично работает и токенизирует/разбивает наше предложение йоруба на значимые подслова, которые имеют смысл в йоруба, дальше нужно обучить нашу собственную модель, такую ​​как GPT3.5, которая понимает йоруба, которая может иметь много приложений, перевод является одним из них.