Пацаны из отдела распознавания речи жалуются, что люди нарочно коверкают грамматику, чтобы компьютер их понял. Например, говорят телефону "набрать Петя" вместо "набрать Петю". В результате нейронная сеть обучается неправильной грамматике и тупеет, показывая потом пользователям неправильные переводы фраз и т.п. Или внезапно в сети обнаруживается слово "кдкдкд" после того, как она наслушалась, как люди озвучивают в разговоре движущийся поезд.
Проблема упрощения языка не нова. Например, американский английский зарождался иммигрантами из разных стран, и чтобы они могли как-то понимать друг друга, они упрощали протокол общения. При этом больше всего пострадали слова, обозначающие абстрактные идеи и конструкции. Например, в американском языке всего несколько матерных слов, тогда как во многих других языках их гораздо больше. А вы попробуйте объяснить иностранцу разницу между "хуевый" и "охуенный".
В современных интернетах проще обучить компьютер "албанскому", чем классическому русскому. Конечно, алгоритмам скармливают и классиков, и профессиональные статьи, но язык развивается довольно быстро и ИИ, который говорит правильно, будет выглядеть старомодным и не будет понимать подростков. Т.е. алгоритмы, которые учатся у людей, с легкостью обучаются и всем их недостаткам. Как дети, которые нуждаются в чутком воспитании. Поэтому приходится решать нелегкую задачу распознавания неправильной грамматики.
Как отучить сеть от "плохих" слов? Если брать аналогию с ребенком (а она здесь уместна, т.к. сети обучаются по похожему принципу - на примерах из жизни), то взрослые могут ему просто объяснить, что плохие слова употреблять не стоит (а также понять причину, почему он начал ругаться, но чаще всего она лежит в области человеческой психологии и не применима к компьютерам. По крайней мере, пока такие термины как самоутверждение, месть и т.п. к машинам не применимы). Но нейронные сети часто обучаются без учителя, и объяснить им, какие слова плохие, а какие хорошие, просто некому. Они растут как беспризорники и легко впитывают как хорошее, так и плохое.
Один из подходов может заключаться в использовании неких фильтров, которые не пропускают плохие слова на вход сети. Но на практие это работает плохо, потому что слово в одном контексте может иметь плохое значение, а в другом - хорошее (типа "козел"). Другой способ, который можно тут применить - это перезагрузить нейронную сеть и скормить ей на вход данные, которые не содержат плохих слов. Научиться с нуля проще, чем переучиться - этот жизненный принцип применим и к компьютерам. Т.к. алгоритм, заложенный в модель сети, тот же, то сеть научится всему тому же, что знала и раньше. Но в условиях активно поступающих данных мы можем просто не успевать заново тренировать сеть. Заставить же сеть забыть плохое слово тоже вряд ли удастся: мы должны подобрать такой входной сигнал, который дезактивирует влияние плохого слова, но т.к. нейронная сеть для нас работает по принципу черного ящика (мы не можем обычно объяснить, какие нейроны и связи за какие умения и знания отвечают), это будет практически невозможно. И чем чаще и дольше сеть сталкивается с употреблением плохого слова, тем крепче она будет его запоминать и переиспользовать.
Проблема упрощения языка не нова. Например, американский английский зарождался иммигрантами из разных стран, и чтобы они могли как-то понимать друг друга, они упрощали протокол общения. При этом больше всего пострадали слова, обозначающие абстрактные идеи и конструкции. Например, в американском языке всего несколько матерных слов, тогда как во многих других языках их гораздо больше. А вы попробуйте объяснить иностранцу разницу между "хуевый" и "охуенный".
В современных интернетах проще обучить компьютер "албанскому", чем классическому русскому. Конечно, алгоритмам скармливают и классиков, и профессиональные статьи, но язык развивается довольно быстро и ИИ, который говорит правильно, будет выглядеть старомодным и не будет понимать подростков. Т.е. алгоритмы, которые учатся у людей, с легкостью обучаются и всем их недостаткам. Как дети, которые нуждаются в чутком воспитании. Поэтому приходится решать нелегкую задачу распознавания неправильной грамматики.
Как отучить сеть от "плохих" слов? Если брать аналогию с ребенком (а она здесь уместна, т.к. сети обучаются по похожему принципу - на примерах из жизни), то взрослые могут ему просто объяснить, что плохие слова употреблять не стоит (а также понять причину, почему он начал ругаться, но чаще всего она лежит в области человеческой психологии и не применима к компьютерам. По крайней мере, пока такие термины как самоутверждение, месть и т.п. к машинам не применимы). Но нейронные сети часто обучаются без учителя, и объяснить им, какие слова плохие, а какие хорошие, просто некому. Они растут как беспризорники и легко впитывают как хорошее, так и плохое.
Один из подходов может заключаться в использовании неких фильтров, которые не пропускают плохие слова на вход сети. Но на практие это работает плохо, потому что слово в одном контексте может иметь плохое значение, а в другом - хорошее (типа "козел"). Другой способ, который можно тут применить - это перезагрузить нейронную сеть и скормить ей на вход данные, которые не содержат плохих слов. Научиться с нуля проще, чем переучиться - этот жизненный принцип применим и к компьютерам. Т.к. алгоритм, заложенный в модель сети, тот же, то сеть научится всему тому же, что знала и раньше. Но в условиях активно поступающих данных мы можем просто не успевать заново тренировать сеть. Заставить же сеть забыть плохое слово тоже вряд ли удастся: мы должны подобрать такой входной сигнал, который дезактивирует влияние плохого слова, но т.к. нейронная сеть для нас работает по принципу черного ящика (мы не можем обычно объяснить, какие нейроны и связи за какие умения и знания отвечают), это будет практически невозможно. И чем чаще и дольше сеть сталкивается с употреблением плохого слова, тем крепче она будет его запоминать и переиспользовать.