Занимаясь многолетним научно-техническим переводом все чаще приходится сталкиваться с ситуациями, когда терминологическая идиоматика источника идет вразрез с принятыми у нас в обиходе понятиями, и что для того чтобы сохранить идиоматику источника нетронутой с целью донести до читателя смысл и стилистику неискаженными в том виде, в котором данный предмет изложения воспринимается за рубежом, приходится преодолевать кучу барьеров, главный из которых можно услышать из уст редактора издательства:
В таком виде мы книгу не продадим.
Ниже приведено несколько показательных примеров. Возможно, они кому-то помогут лучше разобраться в терминологии информатики и ИТ в целом.
Идиоматика ИИ
-
Термин «machine learning»
Усвоение (learning) - это процесс приобретения новых знаний, смыслов и поведения. Способностью усваивать знания обладают люди, животные и некоторые машины. Достижения в области machine learning в немалой степени опираются на многолетние исследования в области теорий усвоения знаний (learning theories), предметом изучения которых является процесс формирования и усвоения знаний животными (animal learning) и человеком (human learning).
Искусственные нейронные сети и целое направление под названием «reinforcement learning» - яркие тому примеры. Уоррен МакКаллок и Уолтер Питтс создавали свой персептрон по принципу сети нервных клеток организма, а Ричард Саттон строил свой алгоритм reinforcement learning, моделируя усвоение знаний путем проб и ошибок, заимствовав идею подкрепления из бихейвиористской психологии, где оно означает стимул, побуждающий ученика приспосабливать свое поведение в окружающей среде.
Таким образом, практическая подобласть ИИ под названием «machine learning», в отличие от теорий усвоения знаний, нацелена на отыскание методов, с помощью которых машины могли бы усваивать знания автоматически без вмешательства человека, что и следует из классического определения данного термина:
дисциплина, ориентированная на строительство приложений, которые усваивают закономерности из данных и с течением времени повышают свою точность, не будучи для этого программируемыми
Из всего вышесказанного непосредственно вытекает один важный терминологический вывод. Говоря machine learning, мы имеем в виду именно усвоение знаний машиной. И поэтому, судя по всему, указанный термин должен переводиться как машинное усвоение.
Интересно, что в некоторых европейских языках термин «machine learning» так и переводится. В испанском языке он звучит как aprendizaje automático или aprendizaje automatizado, то есть автоматическое или автоматизированное усвоение. И такой подход отражает суть, так как в основе модели лежит алгоритм усвоения (learning algorithm), aka искатель минимумов (или максимумов) для надлежащим образом сформулированной математической функции. Добавив прилагательное machine, получим «алгоритм автоматического усвоения», или, в более общем контексте (поменяв algorithm на model) «модель автоматического усвоения», а не как в общепринятом ныне варианте. И эту тонкость очень важно понимать, так как она меняет «знак» смысла на противоположный и правильный, то есть на автоматическое усвоение машиной закономерностей.
Например, нередко можно услышать, что специалисты, дескать, «обучают» модели. Однако, профессионалы так не говорят, по крайней мере, за рубежом. Они говорят, что они их тренируют (train), так как для них причина очевидна - все тот же алгоритм машинного усвоения, лежащий в их основе. Очень жаль, но у исследователя данных нет никакого ореола демиурга. Никто никого не обучает :-(. Как раз наоборот. Учитывая заложенный в модель математический каркас, совершенно очевидно, что она в силу своей особенности учится сама, обновляя свои параметры, а роль исследователя данных (data scientist) в целом сводится к тому, чтобы подавать в модель предобработанные исторические данные и тренировать ее делать предсказания на новых данных. Математический каркас (framework) модели перелопачивает «тонны» данных и статистически (и не только) учится на них отыскивать неразличимые для человека закономерности, регулярности и шаблоны, то есть то, что в английском называется patterns, и, разумеется, делать предсказания (predictions) в отношении ранее не встречавшихся (unseen) данных.
Поразительно, но целая передовая практическая дисциплина до сих пор не имеет правильного названия!
Вот еще несколько кратких примеров в подтверждение такому пониманию. Одним из направлений МУ является «representation learning», которое и по форме и по смыслу есть «автоматическое усвоение представлений данных». Крайне важный для МУ гиперпараметр «learning rate» должен переводится, как «скорость усвоения», так как обозначает темп, с которой модель усваивает задачу. А методика «transfer learning», которая основывается на идее преодоления парадигмы изолированности знаний и улучшает усвоение моделью решаемой задачи за счет переноса знаний из родственной задачи, должна переводится как «трансферное усвоение».
Возвращаясь к reinforcement learning, здесь речь идет о гедонистической самообучающейся системе усвоения путем проб и ошибок, которая адаптирует свое поведение с целью максимизировать подкрепление со стороны окружающей среды. Говоря проще, тут будет уместна аналогия с ослом и морковкой, где учеником является осел, а стимулом со стороны среды - морковка :). И тогда по идее данный термин должен переводиться как «усвоение стимула» или «усвоение подкрепления».
А теперь бинго! Поскольку никто никого не обучает, то нет и учителя, а есть один единственный ученик, который учится самостоятельно, и тогда все три направления в машинном усвоении должны звучать так: контролируемое усвоение (supervised learning) , то есть он учится, сверяясь с предопределенными метками, неконтролируемое усвоение (unsupervised learning), то есть, когда меток нет, и стимулируемое усвоение (reinforcement learning), то есть усвоение путем проб и ошибок под воздействием среды.
-
Термин «precision»
Прецизионность - это мера глубины, в сущности показывающая «мелкозернистость» или разрешающую способность результатов измерений. В отличие от нее метрика точности (accuracy) - это мера широты, или близости результатов измерений к истинному значению. Аналогичным образом, в классификационной задаче машинного усвоения антитеза между прецизионностью (precision) и полнотой (recall) в сущности означает глубину охвата и ширину охвата. В переводе термин «прецизионность» следует использовать как есть.
-
Термин «scaling»
В переводе следует проводить различие между ситуациями, когда указанный термин обозначает охват пространства или величину объема, и в этом случае он переводится как «масштабирование», и когда он обозначает приведение (сплющивание или растяжение) числового ряда к некому интервалу, и тогда он переводится как «шкалирование». В таких случаях вариант перевода зависит от контекста. Стоит отметить, что это один из тех случаев, когда приходится отступать от принципа терминологического единообразия в научно-техническом переводе.
-
Термин «overfitting»
Не следует выдавать этот термин за пресловутое «переобучение». В машинном усвоении такого понятия как «переобучение» нет вообще от слова совсем. К тому же, вы уже надеюсь поняли, что никто никого не обучает. Переподгонка, а именно так этот термин должен переводиться, возникает, когда модель машинного усвоения слишком плотно прилегает к тренировочным данным и поэтому не способна давать точные предсказания на ранее невстречавшихся данных. Здесь неплохой аналогией является визит к портному: переподгонка - это когда костюм подогнан слишком плотно, и попытка почесать затылок приводит к расхождению швов на спине, а недоподгонка - когда наоборот, и рукава свисают до пола ;-)
-
Термин «bias»
В общем смысле указанный термин означает непропорциональный вес в пользу или против идеи или предмета, обычно в форме искаженности, предвзятости или необъективности, тогда как в узком смысле он означает статистически обусловленную искаженность, именуемую систематической смещенностью, и по сути аналогичен коэффициенту сдвига по оси Y в регрессии, который соответствует точке на этой оси, где прямая пересекает эту ось. В переводе следует использовать оба варианта, причем смещенность в контексте компромисса между смещенностью и дисперсией и в контексте нейронных сетей, а искаженность в контексте перекоса, вносимого в наборы данных людьми в силу своего понимания или взглядов.
-
Термин «performance»
В зарубежной информатике указанный термин обозначает и производительность (то есть создание некого продукта за единицу времени, по сути скорость работы), и результативность работы (то есть некое достижение после исполнения задачи, измеряемое стандартными метриками). Применительно к моделям машинного усвоения указанный термин обозначает результативность работы, измеряемую метриками точности, прецизионности и др., за исключением случаев, когда речь идет о скорости работы модели и аппаратного обеспечения в рамках инфраструктур обслуживания запросов. В переводе следует использовать оба варианта в зависимости от контекста.
Далее следуют несколько терминов информатики и программирования, важных для понимания их идиоматики.
Общая идиоматика
-
Термин «building»
В зарубежной информатике принят ряд метафор и противопоставлений, которые встречаются из текста в текст еще с конца 50-х годов прошлого века. И прежде всего, это метафора строительства программно-информационного обеспечения. Вот выдержка из культовой книги Фредерика Брукса «Мифический человеко-месяц»:
До сих пор помню озарение, которое я испытал в 1958 году, когда впервые услышал, как товарищ говорит не о написании программы, а о ее строительстве. В мгновение ока он расширил мое представление о программно-информационном процессе. Метафорический сдвиг был мощным и точным. Сегодня мы понимаем, насколько похожи другие строительные процессы на строительство программно-информационного обеспечения, и мы свободно используем другие элементы данной метафоры, такие как спецификации, сборка компонентов и возведение строительных лесов.
В переводе следует использовать этот термин во всех словоформах.
-
Термин «implementation»
В зарубежной информатике проводится четкое различие в фазах инженерии программно-информационного обеспечения: архитектура, имплементация и реализация (это можно найти и в той же книги Брукса, в частности). Под архитектурой, или архитектурным дизайном, понимается создание плана-схемы программно-информационного продукта с использованием архитектурных шаблонов. Под имплементацией - воплощение шаблонов архитектурного дизайна в структурах данных, классах, объектах, функциях, интерфейсах и т.п. Под реализацией - воплощение дизайна в готовом инструменте или законченном продукте. В переводе следует использовать этот термин во всех словоформах.
-
Термин «exploration»
В зарубежной информатике глагол «explore» выполняет очень важную познавательную роль и часто используется в противопоставлении с глаголом exploit. Разведывание, разведка (exploration) - это поиск новых идей или новых стратегий. Эксплуатация (exploitation) - это использование существующих идей и стратегий, которые оказались успешными в прошлом. Вот что об этом пишет Дэн Саймон в своей культовой книге по эволюционным алгоритмам Evolutionary Optimization Algorithms:
Разведывание сопряжено с высоким риском; многие новые идеи приводят к пустой трате времени и тупикам. Тем не менее, разведывание также может приносить высокую отдачу; много новых идей окупаются способами, которые мы не могли себе представить. Разумный человек использует то, что он знает и что имеет, вместо того, чтобы постоянно изобретать колесо. Но разумный человек также открыт для новых идей и готов пойти на просчитанный риск. Интеллект включает в себя надлежащий баланс разведывания и эксплуатации. Правильный баланс разведывания и эксплуатации зависит от того, насколько регулярна наша окружающая среда. Если наша окружающая среда быстро меняется, то наши знания быстро устаревают, и мы не можем во многом полагаться на эксплуатацию. Однако, если наша окружающая среда весьма последовательна, то наше знание является надежным, и, возможно, не будет иметь смысла в том, чтобы испытывать слишком много новых идей.
В переводе не следует подменять этот термин и его словоформы другими словами.
-
Термин «workflow»
В зарубежной информатике под термином «рабочий поток» понимается не один процесс, а именно последовательность рабочих процессов, которые выполняются стык-в-стык или с наложением, в частности производственных, административных или других процессов, через которые часть работы проходит от начала до завершения. В переводе лучше всего использовать вариации «рабочий поток», «рабочий поток процессов чего-либо» либо «последовательность рабочих процессов».
-
Термин «image»
Применительно к машинному усвоению и к информатике в целом, говоря об изображениях, речь почти всегда идет о цифровом снимке, представляемым матрицей пиксельных значений, и технических приемах его обработки на компьютере (ср. satellite image, X-ray image, images of cats and dogs). Выбор этого более конкретного варианта перевода еще обусловлен и тем, что слово «снимок» не является отглагольным существительным как слово «изображение» и поэтому не вносит двусмысленность, а также тем, что оно может использоваться атрибутивно как определение (ср. «снимковые данные»). В переводе следует использовать указанный вариант.
-
Термин «thread»
В зарубежной информатике под указанным термином понимается «нить исполнения». Иными словами, вычислительный процесс сплетается из нитей (ср. нить рассуждения, нить дискуссии). Многозадачная операционная система способна обрабатывать сразу несколько процессов, при этом процесс может состоять из нескольких нитей исполнения, являющихся главной инфраструктурной единицей планирования заданий в операционной системе.
Каждая нить исполняет свою собственную операцию (псевдо)одновременно. Приставка «псевдо» означает, что «одновременность» достигается за счет того, что процессор переключается между нитями при помощи планировщика, порождая, запуская, приостанавливая и терминируя нити. Нить может обращаться к совместному ресурсу, причем она делает это конкурентно (concurrently) с использованием замка (lock), временно перекрывающего доступ к совместному ресурсу, пока тот занят. В переводе следует использовать термины «нить исполнения», «конкурентный» и «замок» (замковый механизм).
-
Термин «concurrent»
Указанный термин не следует путать с термином параллельный. Последний означает равноудаленность в любой точке пространства, тогда как «конкурентный» означает схождение в одном месте или в одно время. Слово concurrent складывается из приставки con (вместе) и основы occurrence (появление). К примеру в лингвистике существует термин co-occurence (коокуррентность, co-возникновение) и его разновидность concurrence, которыми обозначается частота появления двух или более слов вместе в словарном корпусе. Конкурентная программа допускает синхронизованную обработку ветвей кода, сходящихся в одной временной точке при обращении к совместным данным, тогда как параллельная программа исполняется одновременно на разных процессорах, в разных ядрах или нитях эквидистантно, не пересекаясь.
-
Термин «lock»
Указанный термин следует переводить как «замок» или «замковый механизм». В информатике замок представляет собой механизм контроля доступа к данным с целью их защиты. В программировании замки часто используются для того, чтобы несколько программ или нитей исполнения могли использовать ресурс совместно - например, обращаться к файлу для его обновления - на поочередной основе . Иными словами, замки являются механизмом синхронизации, абстракцией, которая позволяет не более чем одной нити владеть им одновременно. Владение замком – это то, как одна нить говорит другим нитям: «я модифицирую этот элемент, и поэтому прямо сейчас не трогайте его». Приобретение замка позволяет нити иметь эксклюзивный доступ к совместным данным, охраняемым этим замком, заставляя другие нити блокировать свою работу.
-
Термин «service»
Указанный термин в переводе как «служба» появился еще со времен ОС Windows 3.0 примерно в 1990 году, когда она стала многозадачной (и живет в Windows по сей день - нажмите CTRL+ALT+DEL, чтобы попасть в Диспетчер задач и взгляните на последнюю вкладку). В те годы Интернет только зарождался, а о веб-службах не было еще и речи. Сегодня термин «служба» (не пресловутый «сервис») широко принят в русскоязычной документации среди таких гигантов ИТ как Microsoft и Google, а также IBM, HP и многих других, поэтому нет причин вводить термин-однодневку. В книгах, посвященных новейшей технологии, именуемой MLaaS («Машинное усвоение как служба»), в которой модели машинного усвоения выставляются в качестве служб для обслуживания запросов, поступающих со стороны конечных пользователей, на получение модельных предсказаний, термин «serving» нередко встречается свернуто как «обслуживание», но следует помнить, что под ним подразумевается именно модельное обслуживание запросов, aka доставка предсказаний конечным пользователям.
-
Термин «software»
Указанный термин за рубежом понимается, как программы и операционная информация, необходимые компьютеру (ср. https://en.wikipedia.org/wiki/Software), поэтому, по-видимому, его следует переводить точнее, как программно-информационное обеспечение, так как программа состоит из логики и данных.
Выводы
К сожалению, приходится констатировать, что вынесенное в заголовок поста утверждение близко к реальности - у нас до сих пор нет четких и выверенных терминологических стандартов. Переводы бывают переполнены англицизмами типа паттернов, разные термины источника переводятся одним термином или один термин источника в разных местах переводится по-разному, и оттого они похожи на наукообразный и полу-понятный хайп. Издательствам же приходится приспосабливаться, выбирая хайп вместо точности. Поразительно, но целая передовая практическая дисциплина до сих пор не имеет правильного названия!
Подытоживая, приведенный выше перечень ни в коем случае не является исчерпывающим и служит для того, чтобы привлечь внимание к данной проблематике специалистов в области ИТ и информатики в целом, а также инженеров ИИ, которые строят системы машинного усвоения, то есть то, что в английском языке носит название «machine learning systems».
Автор: capissimo