Разум, который мы создали

- -
- 100%
- +
Перед нами тысячи фотографий.
На одних — кошки.
На других — собаки.
Мы хотим, чтобы компьютер научился различать их.
На первый взгляд задача кажется элементарной.
Человек обычно узнаёт кошку почти мгновенно. Мы обращаем внимание на форму головы, глаза, уши, шерсть, тело, движения — иногда даже тогда, когда видим животное всего несколько секунд.
Но если попытаться объяснить компьютеру, что именно делает кошку кошкой, задача неожиданно становится сложной.
Какие должны быть глаза?
Какой длины уши?
Обязательно ли наличие усов?
Что делать с бесшёрстной кошкой?
А если животное сидит спиной?
А если фотография размыта?
А если кошка лежит в траве и видна только половина её тела?
Можно написать сотни правил.
Но рано или поздно появится фотография, для которой этих правил окажется недостаточно.
И тогда возникает другая идея.
Вместо того чтобы объяснять машине каждое правило, можно показать ей множество примеров.
Представим, что мы даём системе десять тысяч изображений.
На каждом изображении заранее указано, что находится перед ней:
кошка.
собака.
Система начинает сравнивать изображения.
Она ещё не знает, какие признаки важны.
Не знает, что такое уши.
Не знает, что такое морда.
Не знает, что перед ней вообще животное.
Она получает данные и пытается найти в них закономерности, которые помогут отличать один класс изображений от другого.
Сначала результаты будут плохими.
Система может ошибаться снова и снова.
Но после каждой ошибки можно изменить её внутренние параметры так, чтобы следующий результат оказался немного лучше.
Именно здесь появляется фундаментальная идея машинного обучения:
система не получает готовое описание решения — она изменяет себя в процессе обучения так, чтобы лучше соответствовать данным и поставленной задаче.
Это принципиально отличается от обычной программы.
В традиционном программировании человек формулирует правила, а компьютер выполняет их.
В машинном обучении человек задаёт структуру процесса обучения, предоставляет данные и определяет, что считать хорошим результатом.
Но конкретные значения огромного количества внутренних параметров система настраивает сама.
Можно представить это очень упрощённо.
У системы есть огромное количество внутренних чисел — параметров.
В начале их значения подобраны так, что система почти ничего не умеет.
Она получает изображение.
Делает предсказание.
Сравнивает его с правильным ответом.
Возникает ошибка.
Затем алгоритм вычисляет, как изменить параметры, чтобы уменьшить эту ошибку.
После этого система получает следующий пример.
И снова делает предсказание.
Снова ошибается.
Снова корректирует параметры.
Так происходит не десятки и не сотни раз.
В современных системах обучение может включать огромное количество примеров и вычислений.
Постепенно параметры изменяются.
Система начинает находить устойчивые закономерности.
И если обучение прошло успешно, она способна работать не только с теми изображениями, которые уже видела, но и с новыми.
Это называется обобщением.
Именно здесь происходит одна из самых важных вещей.
Система не просто запоминает ответы.
Она должна научиться использовать найденные закономерности на новых данных.
Но что именно она находит?
Это уже гораздо интереснее.
Представьте, что мы смотрим на фотографию кошки.
Человек может сказать:
«Я вижу глаза, уши, нос, шерсть и форму тела».
Но нейронная сеть не обязана представлять изображение таким образом.
На первых уровнях обработки она может реагировать на простые структуры изображения — например, на границы, контраст и определённые комбинации пикселей.
На следующих уровнях могут формироваться более сложные представления.
Линии объединяются в формы.
Формы — в более сложные структуры.
А сложные структуры могут становиться частью представления целого объекта.
Это очень упрощённая картина того, что происходит в глубокой нейронной сети.
Но она помогает понять главное:
система не получает от человека готовую карту того, какие признаки искать.
Эта карта формируется в процессе обучения.
Именно поэтому нейронные сети стали настолько важны.
Их устройство частично вдохновлено тем, как мы описываем работу биологических нейронных систем, хотя современные искусственные нейронные сети значительно отличаются от человеческого мозга.
Вместо одного огромного вычислительного механизма они состоят из множества связанных элементов, организованных в слои.
Каждый элемент выполняет относительно простое математическое преобразование.
Но когда таких элементов становится очень много и они соединены определённым образом, система способна моделировать чрезвычайно сложные зависимости.
Название «нейронная сеть» звучит почти биологически.
Но важно помнить: это математическая модель.
Она не является цифровой копией человеческого мозга.
И она не обязана работать так же, как человеческий разум.
Это самостоятельный способ построения вычислительной системы.
С изображениями эта идея уже была мощной.
Но затем перед исследователями возникла другая задача.
Язык.
На первый взгляд текст должен быть проще фотографии.
Он уже состоит из отдельных символов и слов.
Но смысл языка оказывается намного сложнее.
Возьмём слово «ключ».
Это может быть ключ от двери.
Ключ к задаче.
Ключ как источник воды.
Или ключ музыкальный.
Само слово остаётся одинаковым.
Меняется контекст.
Человек почти автоматически учитывает слова вокруг него и понимает, какое значение здесь подходит.
Для машины это необходимо было превратить в вычислительную задачу.
Система должна была учитывать не только отдельные слова, но и отношения между ними.
И чем длиннее становился текст, тем важнее становилось понимать, какая часть контекста связана с какой другой частью.
Здесь произошёл один из наиболее важных сдвигов в развитии современных языковых моделей.
В 2017 году исследователи представили архитектуру Transformer.
Её ключевой механизм — attention, или механизм внимания, — позволял модели эффективнее учитывать связи между различными элементами последовательности.
Если очень упростить, модель получила способ оценивать, на какие другие части входного текста стоит обратить больше внимания при обработке конкретного элемента.
Это особенно важно для языка.
Потому что смысл одного слова может зависеть от слов, находящихся далеко от него.
Предложение может начинаться с одной идеи, продолжаться несколькими уточнениями, а завершаться словом, смысл которого становится понятным только после всего предыдущего контекста.
Transformer позволил обрабатывать такие зависимости значительно эффективнее, чем многие предыдущие подходы.
И эта архитектура стала одним из фундаментальных компонентов современного развития языковых моделей.
Но архитектура сама по себе не создаёт интеллект.
Нужны данные.
Нужны вычислительные ресурсы.
Нужен процесс обучения.
И здесь возникает масштаб, который трудно представить интуитивно.
Современная модель может содержать огромное количество параметров.
Во время обучения эти параметры многократно изменяются.
Система получает последовательности данных, делает предсказания, вычисляет ошибку и корректирует параметры.
Для языковой модели одной из фундаментальных задач может быть предсказание следующего элемента последовательности.
Например:
«Солнце взошло над…»
Система должна оценить, какое продолжение наиболее вероятно.
На первый взгляд это может показаться слишком простым.
Но если повторить подобный процесс на огромном количестве текстов, задача становится значительно сложнее.
Чтобы хорошо предсказывать следующий фрагмент текста, модели приходится учитывать грамматику, структуру предложений, устойчивые выражения, отношения между словами и множество других закономерностей языка.
А при достаточно большом масштабе в процессе обучения начинают формироваться представления, позволяющие выполнять гораздо более широкий круг задач.
И здесь появляется важное различие между запоминанием и обобщением.
Если система просто запоминает огромное количество примеров, она может прекрасно работать с тем, что уже встречала.
Но настоящая ценность обучения проявляется тогда, когда система сталкивается с новым примером и всё же способна применить ранее найденные закономерности.
Именно поэтому исследователи так внимательно изучают способность моделей обобщать.
Модель не должна просто помнить.
Она должна использовать приобретённые представления в новых ситуациях.
Но здесь возникает и проблема.
Система может найти закономерность, которая хорошо работает на обучающих данных, но плохо работает за их пределами.
Она может уловить случайную зависимость.
Может переобучиться.
Может дать уверенный ответ там, где данных недостаточно.
Поэтому способность модели выдавать убедительный результат ещё не означает, что этот результат правильный.
Это одна из причин, по которой современные системы необходимо проверять.
И всё же масштаб меняет характер происходящего.
Когда модель имеет огромное количество параметров, обучается на огромных массивах данных и получает достаточно вычислительных ресурсов, она может демонстрировать способности, которые не были вручную прописаны разработчиком в виде отдельных правил.
Это не означает, что программист создал внутри неё маленького человека.
Не означает, что система обладает сознанием.
И не означает автоматически, что она понимает мир так же, как понимаем его мы.
Но означает кое-что важное.
Человек перестал вручную описывать каждую закономерность, которую должна использовать машина.
Мы создаём процесс.
Предоставляем данные.
Определяем цель.
Настраиваем архитектуру.
Запускаем обучение.
А затем наблюдаем за тем, какие внутренние представления и способности возникают в результате.
Именно здесь современные системы становятся особенно интересными.
Потому что мы уже не всегда можем объяснить их поведение простым списком правил.
Представим теперь, что мы обучили систему не различать кошек и собак, а работать с научными данными.
Она получает результаты экспериментов.
Научные статьи.
Измерения.
Математические зависимости.
Описание известных веществ.
Результаты предыдущих исследований.
Мы можем поставить перед ней конкретную задачу.
Но мы не обязательно заранее знаем, какие связи она обнаружит внутри этих данных.
И тогда возникает новая возможность.
Машина может стать не только исполнителем заранее известных инструкций.
Она может стать инструментом поиска в пространстве возможностей, которое слишком велико для ручного перебора.
Но здесь начинается совершенно другая проблема.
Если система предлагает результат, которого мы не ожидали, откуда мы знаем, что она действительно обнаружила что-то важное?
Может быть, она нашла настоящую закономерность.
Может быть, случайную зависимость.
Может быть, использовала скрытый признак, которого исследователь не заметил.
А может быть, просто ошиблась.
Поэтому способность генерировать результат — это только начало.
Следующий вопрос гораздо сложнее:
может ли машина найти не просто ответ, а что-то новое, чего мы сами не искали?
Именно здесь заканчивается история о том, как машина учится
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.



