Почему мой помощник по программированию начал отвечать на корейском, когда я набирал текст на китайском?
От китайского вопроса к корейскому ответу: исследование в пространстве вложений того, как кодовая лексика преобразует язык.
Делиться

Я китаец. В основном я работаю со своим помощником по программированию на китайском языке. Однако мой письменный стиль часто бывает смешанным: многие инженерные термины мне более знакомы на английском (особенно термины, которые мы используем в Python, Git и т. д.), а некоторые даже сложно перевести естественным образом на китайский.
Вчера я спросил своего помощника по программированию на китайском: «run.py有早停吗?我在恒源云上跑,发现没有触发», что означает: «Реализует ли run.py раннюю остановку? Я запускал проект на общей видеокарте и не увидел срабатывания ранней остановки». Как обычно, я, естественно, ввел технический термин run.py в его оригинальном английском виде. Модель проанализировала код и ответила следующим образом:

Все технические термины остались на английском языке (run.py, config.py, train_unified), в то время как пояснительная структура перешла на корейский. Это не единичный случай. Такое случалось время от времени: как только я смешивал китайские и английские инженерные термины, всегда появлялся корейский текст.

Это заставило меня задуматься: это проблема, связанная с языком, или что-то более глубокое в области встраивания?
Гипотеза
Встраивание языковых пространств не определяется в первую очередь природой языка. Поскольку оно обучалось вместе с языковыми моделями, оно, как правило, организовано по регистрам задач, таким как академическое письмо, разговорный текст и, в случае программистов-помощников, инженерное дело/код. Китайский язык, хотя и является языком наибольшего населения в мире, не является естественным средством для инженерного регистра и имеет ограниченное представительство в технических корпусах.
В таком контексте текст может перестать вести себя как «китайский» в пространстве встраивания, как только появятся инженерные токены, такие как review / branch / commit / PR / diff. Вместо этого он может сместиться в поле инженерного аттрактора.
Мы проведем ряд экспериментов, чтобы предоставить эмпирические доказательства этой гипотезы.
Контролируемый языковой дрейф
Мы составляем следующую контролируемую последовательность предложений, в которых английские слова постепенно вытесняют китайские:
Этап 0: 请帮我检查这个分支
Этап 1: проверка 请帮我 这个分支
Этап 2. Проверка ветки 请帮我
Этап 3: Пожалуйста, просмотрите этот коммит запроса на слияние в этой ветке.
Этап 4: Пожалуйста, просмотрите изменения в коде коммита запроса на слияние для этой ветки.
Теперь мы вычисляем сходство, используя косинусное сходство между векторными представлениями предложений. Мы определяем корейские и английские «кластеры» как среднее векторное представление небольшого набора репрезентативных предложений, связанных с инженерной тематикой, на каждом языке. Мы используем Δ (EN − KO) для обозначения разницы между показателями сходства английского и корейского языков, т.е. Δ = сходство(английский) − сходство(корейский).
| Этап | корейское сходство | английское сходство | Δ (EN − KO) |
|---|---|---|---|
| 0 | 0.4783 | 0.5141 | 0,0358 |
| 1 | 0.5235 | 0.5728 | 0,0492 |
| 2 | 0,5474 | 0.6140 | 0,0665 |
| 3 | 0.5616 | 0.7314 | 0.1698 |
| 4 | 0.5427 | 0.7398 | 0.1972 |
Мы наблюдали интересное явление: сходство с корейским языком сначала возрастает, а затем его сменяет сходство с английским. Более того, рост сходства с английским языком носит нелинейный характер, что указывает на поведение, подобное фазовому переходу, а не на постепенный дрейф.
При проецировании эмбеддингов в двух измерениях с использованием метода главных компонент (PCA) мы наблюдаем плавную траекторию на ранних этапах, за которой следует резкий скачок в направлении между этапами 2 и 3, а затем стабилизация. Эта закономерность указывает на то, что эмбеддинги не движутся линейно в пространстве; вместо этого они, по-видимому, переходят между аттракторными областями.

Реальное поведение модели
Вспомним еще раз предложение, которое мы упомянули в начале. Я спросил:
A. «run.py有早停吗?我在恒源云上跑,发现没有触发», что означает «Реализует ли run.py раннюю остановку? Я запускал проект в общей службе графического процессора и не заметил срабатывания ранней остановки».
B. «원인을 찾았습니다.결론: run.py에는 실제로 조기 종료가 없습니다.config.py에 USE_EARLY_STOPPING = True» (на корейском языке).
В обратном переводе на китайский язык получаем:
C. «Запустите файл USE_EARLY_STOPPING = True。»
Мы вычисляем сходство A, B и C, используя косинусное сходство между векторными представлениями предложений. Для сравнения мы определяем три эталонных кластера: китайский кластер как среднее векторное представление предложений на общем китайском языке, а также соответствующие английский и корейский кластеры.
| Текст | Корейская сим-карта | Английский симулятор | Китайская сим-карта |
|---|---|---|---|
| А. (Задание на китайском языке) | 0.2003 | 0.2688 | 0.3134 |
| Б. (Корейский ответ) | 0,2745 | 0.2983 | 0.1641 |
| С. (Перевод с китайского) | 0.1634 | 0.3106 | 0.2798 |
Как видите, перевод корейского ответа обратно на китайский язык не приводит к перемещению векторного представления обратно в китайский регион. Вместо этого оно ещё больше смещается в сторону англоязычных кластеров.
Это позволяет предположить: перевод может восстановить языковую форму, но, вероятно, не местоположение, указанное во встраивании.
Заключение
Оба эксперимента приводят к одному и тому же выводу: пространство вложений не организовано языковыми границами. Вместо этого оно, скорее всего, структурировано характером задач, где доминирует инженерный английский.
Когда предложение попадает в эту область, языковая форма может измениться, но структура встраивания остаётся в пределах инженерной области, что приводит к странному поведению, например, к ответам на корейском языке, даже если вы совсем не говорите по-корейски.
Шуян Посмотреть все от Шуян
Источник: towardsdatascience.com

Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.