📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Everything About Machine Learning Explained Slowly (For Sleep)

Cosmo Explains2:07:14

Transcription

Итак, вот о чем стоит подумать, когда вы сегодня вечером устроитесь поудобнее. Каждый день, даже не осознавая этого, вы делаете тысячи крошечных предсказаний. Вы выглядываете в окно и предсказываете, понадобится ли вам зонт. Вы слышите, как двигатель автомобиля издает странный шум, и предсказываете, серьезно ли это или ничего. Вы смотрите на лицо человека через комнату и за доли секунды предсказываете, счастлив он или расстроен. Вы занимаетесь этим всю свою жизнь. И самое удивительное то, что никто никогда не сажал вас и не давал вам свода правил для всего этого. Никто не вручил вам инструкцию, в которой говорилось бы: «Когда облака выглядят так, пойдет дождь. Когда двигатели звучат так, порвался ремень ГРМ». Вы просто выяснили это из опыта, из наблюдения за достаточным количеством пасмурных небес и достаточным количеством выражений лиц, чтобы начали появляться закономерности, и эти закономерности стали чем-то, на что вы могли полагаться, даже не задумываясь об этом. В самом фундаментальном смысле это и есть машинное обучение. Это идея, что вместо того, чтобы программировать компьютер явными правилами для каждой возможной ситуации, вместо того, чтобы записывать каждую отдельную инструкцию, вы даете компьютеру примеры, множество примеров, и позволяете ему самому находить закономерности. Вы позволяете ему учиться так, как учились вы. Не точно так же, конечно. Механизмы разные, но основная идея — учиться на опыте, а не на правилах. Это сердцебиение всей области. И сегодня мы проследим, как эта идея возникла. Как она началась как философский вопрос, стала математическим курьезом, превратилась в настоящую инженерную дисциплину и, в конечном итоге, выросла во что-то, что затрагивает почти каждую часть вашей жизни прямо сейчас, сегодня вечером. Даже когда вы лежите здесь и слушаете это, мы будем идти медленно. Мы пройдемся по историям людей, которые строили эту вещь по частям, десятилетие за десятилетием. О некоторых из них вы, вероятно, слышали. О большинстве, вероятно, нет. И это часть того, что делает это интересным. Но давайте начнем с самого начала. А начало — это вовсе не компьютер. Начало — это вопрос, который люди задают веками. Может ли машина думать? Теперь этот вопрос звучит современно, не так ли? Он звучит как что-то из научно-фантастического фильма, но люди борются с ним уже удивительно долгое время. Древние греки рассказывали истории о Талосе, гигантском бронзовом автомате, построенном Гефестом, богом ремесленников, для охраны острова Крит. В 13 веке каталонский философ по имени Раммон Лулл разработал то, что он назвал Ars Magna, систему бумажных дисков, которые можно было вращать для комбинирования концепций и механического создания новых идей. Это не был компьютер в каком-либо значимом смысле, но амбиции были. Мечта о том, что рассуждение может быть механизировано, что логика может быть превращена в своего рода механизм. Перенесемся на несколько сотен лет вперед, и вы дойдете до Готфрида Вильгельма Лейбница, немецкого математика и философа. Лейбниц — одна из тех фигур, которые опередили свое время настолько, что это почти жутко. В конце 1600-х годов он построил один из первых механических калькуляторов, устройство с шестернями и колесами, которое могло складывать, вычитать, умножать и делить. Но Лейбниц хотел большего, чем арифметика. У него было это грандиозное видение, которое он назвал calculus ratiocinator, по сути, универсальная машина для рассуждений. Он представлял себе будущее, где все человеческие споры могли бы быть разрешены, сказав: «Давайте посчитаем». Если бы логику можно было закодировать в формальной системе, он верил, то машина могла бы рассуждать за вас. Он, конечно, не достиг этого. Технологии его эпохи не могли даже близко поддержать эту мечту, но семя было посеяно, и оно пролежало в земле очень долго. Следующий большой скачок произошел в 1830-х и 1840-х годах с двумя выдающимися людьми. Первый — Чарльз Бэббидж, блестящий и печально известный раздражительный английский математик, который разработал, хотя и никогда полностью не построил, машину под названием аналитическая машина. Эта штука поражала своими амбициями. У нее был мельница для вычислений и хранилище для памяти. Ее можно было программировать с помощью перфокарт, заимствованных из ткацкого станка Жаккарда, который уже использовался в текстильном производстве. Теоретически, аналитическая машина могла выполнять любое вычисление при правильном наборе инструкций. Это был концептуально универсальный компьютер, разработанный за 100 лет до создания первых электронных компьютеров. А затем есть Ада Лавлейс, которая увидела в машине Бэббиджа то, чего, возможно, даже сам Бэббидж не полностью осознал. Ада Байрон. Она была дочерью лорда Байрона, поэта, что является замечательным столкновением миров. Она написала обширные заметки об аналитической машине. И в этих заметках она описала то, что многие историки считают первой компьютерной программой, подробную последовательность операций для вычисления машиной чисел Бернулли. Но вот что действительно замечательно. Ада также размышляла о пределах машины. Она писала, что машина не претендует на то, чтобы что-либо порождать. Она могла делать только то, что ей было приказано делать. Она не могла думать. Она не могла учиться. Она не могла творить. И это наблюдение, иногда называемое возражением леди Лавлейс, будет эхом отдаваться в следующем веке дебатов об искусственном интеллекте. Может ли машина делать только то, что мы ей явно говорим делать? Или она может как-то выйти за рамки своего программирования? Этот вопрос, по сути, является центральным напряжением машинного обучения. Потому что все обещание машинного обучения заключается в том, что да, на самом деле машина может находить в данных то, что ни один человек явно не программировал ее находить. Но мы забегаем вперед. Давайте перейдем к началу 20-го века, потому что именно здесь математические основы действительно начинают складываться. И человек, о котором нам нужно поговорить, — это Алан Тьюринг. Тьюринг известен многим вещам. Взлом кода «Энигма» во время Второй мировой войны, будучи основоположником компьютерных наук, и его трагическая личная история. Но для наших целей сегодня ключевым моментом является 1936 год, когда Тьюрингу было всего 23 года, и он опубликовал статью под названием «Невычислимые числа». В этой статье он описал абстрактную машину, теперь называемую машиной Тьюринга, которая могла бы в принципе вычислять все, что вычислимо. Это было теоретическое устройство, бесконечно длинная лента, разделенная на ячейки, считывающая головка, которая могла двигаться влево или вправо, и набор правил, управляющих действиями на основе текущего состояния и текущего символа на ленте. Вот и все. Это вся машина. И все же, из этой захватывающе простой установки Тьюринг доказал нечто глубокое. Он показал, что любую проблему, которую можно решить, следуя четко определенной процедуре, любой алгоритм, любое вычисление, можно решить с помощью этой простой машины. Что в глубоком смысле означает, что все компьютеры фундаментально эквивалентны. Ваш ноутбук, ваш телефон, огромный серверный кластер — все они делают то же самое, что и машина Тьюринга, просто быстрее и с большей памятью. Эта универсальность — вот что делает возможным всю область. Но Тьюринг также думал об интеллекте. В 1950 году он опубликовал еще одну знаковую статью. Эта называлась «Вычислительные машины и интеллект». И она начинается почти игривой строкой. Я предлагаю рассмотреть вопрос: могут ли машины думать? Он знал, что вопрос был сложным, поэтому уклонился от философии и предложил вместо этого что-то практическое. Тест Тьюринга. Идея проста. Если человек-судья ведет беседу с машиной и не может надежно определить, разговаривает ли он с человеком или с компьютером, то для всех практических целей машина думает. Или, по крайней мере, делает что-то настолько близкое к мышлению, что различие перестает иметь значение. Теперь Тьюринг не строил обучающуюся машину, но он писал о такой возможности. Он размышлял о том, что он назвал «машиной-ребенком», программой, которая начинала бы с очень малым знанием и училась бы на опыте, как ребенок. Он даже предположил, что вместо того, чтобы пытаться симулировать разум взрослого, может быть проще симулировать разум ребенка, а затем обучать его. И эта идея — начинать просто, учиться на данных, становиться лучше со временем — это, по сути, план машинного обучения. Тьюринг предвидел это. У него не было инструментов, чтобы построить это, но он видел его очертания. Примерно в то же время через Атлантику плелась другая нить. В 1943 году нейрофизиолог по имени Уоррен Мак-Каллок и логик по имени Уолтер Питтс опубликовали статью, которая тихо изменила все. Они предложили математическую модель биологического нейрона. Их искусственный нейрон был невероятно прост. Он принимал набор бинарных входов, единиц и нулей, применял к ним веса, суммировал их, и если сумма превышала определенный порог, он срабатывал. Выход — единица. Если нет, выход — ноль. Подумайте, что это значит. Они взяли что-то из биологии, нейрон, основной строительный блок мозга, и превратили это в математику. И они показали, что сети этих простых искусственных нейронов могли бы в принципе вычислять любую логическую функцию. Любую логическую операцию, которую вы можете себе представить — И, ИЛИ, НЕ, комбинации этих — можно было бы представить правильной организацией нейронов Мак-Каллока-Питтса. Теперь их модель была ограничена. Веса были фиксированы. Обучения не было. Вам приходилось проектировать сеть вручную, чтобы получить желаемое поведение. Но концептуальный прорыв был огромен. Он говорил: возможно, интеллект — это не магия. Возможно, это вычисление. Возможно, мозг на каком-то уровне — это машина, которая обрабатывает информацию по правилам. И, возможно, мы можем построить что-то, что работает по схожим принципам. Эта идея воспламенила людей. И она подготовила почву для того, что последовало дальше. Летом 1956 года небольшая группа исследователей собралась в Дартмутском колледже в Ганновере, Нью-Гэмпшир, для семинара, который дал бы всей области ее название. Организаторами были Джон Маккарти, молодой математик из Дартмута, Марвин Мински, который был в Гарварде, Натаниэль Рочестер из IBM и Клод Шеннон, легендарный теоретик информации из Bell Labs. Маккарти придумал термин «искусственный интеллект» для предложения и семинара. Хотя это было скорее неформальное летнее собрание, возможно, 10-15 человек в любое время, оно стало основополагающим моментом ИИ как признанной дисциплины. Дартмутский семинар был движим экстраординарным оптимизмом. Само предложение с уверенностью, которая почти очаровательна в ретроспективе, гласило, что каждый аспект обучения или любая другая особенность интеллекта может быть в принципе настолько точно описан, что машина может быть сделана для его симуляции. Они думали, что это займет лето, может быть, несколько лет. Они соберут небольшую группу умных людей и разберутся с интеллектом. Они, конечно, не справились. Не за то лето, не за несколько лет, не за несколько десятилетий. Проблема оказалась непостижимо сложнее, чем кто-либо мог себе представить. Но Дартмутский семинар действительно создал сообщество. Он связал людей, которые думали над этими проблемами в изоляции, и дал им общий язык и общие амбиции. И одной из самых важных идей, возникших в ту эпоху, не из самого Дартмута, а из брожения идей вокруг него, был перцептрон. В 1957 году психолог из Корнелла по имени Фрэнк Розенблатт построил нечто замечательное. Перцептрон был, по сути, нейроном Мак-Каллока-Питтса, который мог учиться. Вместо того чтобы его веса устанавливались вручную, перцептрон имел обучающий алгоритм. Вы показывали ему пример, скажем, изображение буквы, и говорили правильный ответ. Если он давал неправильный ответ, он немного корректировал свои веса, подталкивая их в направлении, которое привело бы к правильному ответу. Покажите ему достаточно примеров, скорректируйте веса достаточно раз, и перцептрон научится классифицировать вещи, которые он никогда раньше не видел. Розенблатт был харизматичен и амбициозен, и он делал смелые заявления о том, что может сделать перцептрон. В 1958 году газета New York Times опубликовала статью, в которой сообщалось, что ВМС США представили устройство, которое в конечном итоге сможет ходить, говорить, видеть, писать, самовоспроизводиться и осознавать свое существование. Это было, мягко говоря, преувеличение. Но основное достижение было реальным. Перцептрон был первой машиной, которая действительно училась на данных. Он не следовал сценарию. Он адаптировался. Он совершенствовался. И правило обучения — корректировка весов на основе ошибки — это идея, которая в более сложных формах до сих пор движет машинным обучением. Но вот где история принимает поворот, потому что не все были впечатлены. И самым заметно не впечатленным был Марвин Мински, один из основателей области, который сам построил одну из первых машин нейронных сетей еще в 1951 году, устройство под названием Snark. Мински отошел от нейронных сетей и стал все более скептически относиться к тому, чего они на самом деле могут достичь. И в 1969 году он и математик по имени Сеймур Паперт опубликовали книгу под названием «Перцептроны», которая бросила долгую тень на всю область. Что они показали с математической строгостью, так это то, что однослойный перцептрон, тот, который построил Розенблатт, не мог решить некоторые, казалось бы, простые проблемы. Самый известный пример — XOR, функция исключающего ИЛИ. Если у вас есть два одинаковых входа, выход — ноль. Если они разные, выход — единица. Один перцептрон не может этого выучить. Он не может провести правильную границу. Теперь вот что делает эту историю сложной и немного грустной. Мински и Паперт были технически правы относительно однослойных перцептронов, но вывод, который многие люди сделали из книги, что нейронные сети в целом — это тупик, был ошибочным. Многослойные сети могли решать XOR и многое другое. Сам Розенблатт обсуждал многослойные сети, но ущерб был нанесен. Финансирование иссякло. Исследователи перешли к другим подходам, а Фрэнк Розенблатт погиб в результате несчастного случая на лодке в 1971 году в возрасте всего 43 лет, так и не увидев, как его идеи были оправданы. Область вступила в то, что историки теперь называют первой «зимой ИИ». И в течение этого долгого, холодного периода горстка упрямых, блестящих людей продолжала работать над идеями, от которых все остальные отказались. Они продолжали копаться в нейронных сетях в безвестности, убежденные, что в этих взвешенных связях скрывается что-то важное, если бы только они могли выяснить, как их правильно обучать. И это слово «обучать» на самом деле является ключом ко всему, что последует дальше. Потому что проблема никогда не заключалась в том, могут ли нейронные сети работать в теории. Дело было в том, как научить многослойную сеть учиться на своих ошибках. Подумайте об этом так. В однослойном перцептроне Розенблатта обучение было относительно простым. Вы показываете ему вход. Он делает предположение. Вы говорите ему, было ли предположение правильным или неправильным, и он соответствующим образом корректирует свои веса. Существует прямая связь между выходом и весами, которые его произвели. Вы точно знаете, какие ручки повернуть и в каком направлении. Но в тот момент, когда вы добавляете скрытый слой, слой нейронов, расположенный между входом и выходом, все становится мутным. Если сеть дает вам неправильный ответ, конечно, вы можете скорректировать веса, соединяющие скрытый слой с выходом. Но как насчет весов, соединяющих вход со скрытым слоем? Как вы узнаете, какие из них способствовали ошибке? Как вы назначите вину, так сказать, нейронам, которые погребены глубоко внутри сети? Нейронам, чей вклад косвенен и запутан со всем остальным. Это проблема назначения кредита, и она преследовала исследования нейронных сетей десятилетиями. Это красивая проблема, на самом деле, если думать о ней в повседневных терминах. Представьте, что вы управляете большой кухней ресторана. Блюдо возвращается от клиента. Оно ужасно. Вы знаете, что финальная подача была в порядке, но где-то в цепочке поваров-заготовщиков, соусников и поваров на линии что-то пошло не так. Как вы выясните, кто накосячил и насколько? Это, по сути, то, что многослойная нейронная сеть должна решать каждый раз, когда она учится на примере. И годами ни у кого не было по-настоящему чистого, эффективного способа сделать это. Теперь вот где история становится интересной. Потому что решение, когда оно наконец появилось в форме, на которую люди обратили внимание, не пришло из одного момента «Эврика». Это было скорее идея, которая постоянно независимо открывалась, игнорировалась, вновь открывалась и снова игнорировалась, пока, наконец, область не была готова слушать. Основная математическая техника называется обратным распространением ошибки, сокращенно обратным распространением ошибок. И основная идея такова. Вы работаете назад через сеть, начиная с ошибки на выходе, и используете правило цепи из исчисления, чтобы выяснить, какой вес в каждом слое внес вклад в эту ошибку. Правило цепи, вы, возможно, помните это из математического класса, или, возможно, милосердно не помните, — это просто принцип, который позволяет вам вычислить, как изменение одной переменной влияет на другую, когда они связаны через промежуточные шаги. Если A влияет на B, а B влияет на C, правило цепи говорит вам, как A влияет на C. Сложите достаточно таких вместе, и вы сможете проследить влияние любого веса, независимо от того, насколько глубоко он находится в сети, вплоть до конечного выхода. Математика этого на самом деле была разработана в различных формах несколькими людьми. Пол Вербос, американский исследователь, описал версию этого в своей докторской диссертации 1974 года в Гарварде. Он работал над этим в контексте общей оптимизации, а не конкретно нейронных сетей, но связь была. Сеппо Леинмаа, финский математик, опубликовал базовую технику автоматического дифференцирования еще раньше, в 1970 году, и были и другие, но эти вклады были разбросаны по разным областям и разным журналам, и сообщество нейронных сетей, то, что от него осталось во время «зимы ИИ», не полностью их усвоило. Человек, который действительно привлек внимание к обратному распространению ошибки в более широком мире, — это Джеффри Хинтон. И если есть одно имя, которое вы должны знать в истории современного машинного обучения, один человек, чье упрямое упорство сформировало эту область больше, чем почти кто-либо другой, — это Хинтон. Родившийся в Лондоне в 1947 году, он происходил из семьи выдающихся ученых. Он был правнуком Джорджа Буля, математика, который изобрел булеву алгебру, ту самую логику, которая лежит в основе всех цифровых вычислений. В этой родословной есть что-то почти поэтическое, как будто вселенная готовила очень длинную шутку. Хинтон изучал экспериментальную психологию в Кембридже, затем заинтересовался искусственным интеллектом и в конце концов переехал в Соединенные Штаты, чтобы получить докторскую степень в Эдинбургском университете, а затем постдокторскую работу в различных американских учреждениях. И на протяжении всей «зимы ИИ», когда нейронные сети были глубоко немодными, Хинтон продолжал работать над ними. Он описывал это как веру в то, во что все остальные считали ерундой. Финансирование было трудно получить. Рецензенты были скептичны. Доминирующей парадигмой в ИИ в 1970-х и начале 1980-х годов был символический ИИ — системы, основанные на явных правилах и логических рассуждениях, а не на обучении на данных. Если вы работали над нейронными сетями в тот период, вы, по мнению многих ваших коллег, тратили время впустую. Но Хинтон был не одинок. Было небольшое разрозненное сообщество верующих. Дэвид Румельхарт, когнитивный психолог из Калифорнийского университета в Сан-Диего, был еще одной ключевой фигурой, и Рональд Уильямс, который работал с Румельхартом. Вместе в 1986 году Румельхарт, Хинтон и Уильямс опубликовали статью в журнале Nature, которая изменила все. Статья называлась «Обучение представлений путем обратного распространения ошибок». И она представила обратное распространение ошибки как практический, эффективный метод обучения многослойных нейронных сетей. Они не изобрели математику с нуля. Как я уже упоминал, ее части существовали уже много лет, но они четко упаковали ее, убедительно продемонстрировали и опубликовали в одном из самых престижных научных журналов в мире. И на этот раз люди слушали. Вот что сделало статью такой мощной. Они показали, что когда вы обучаете многослойную сеть с использованием обратного распространения ошибки, скрытые слои спонтанно обучают полезные внутренние представления данных. Сеть не просто запоминает входы и выходы. Она развивает свои собственные внутренние концепции, свой собственный способ организации информации. Никто явно не программирует эти представления. Они возникают из самого процесса обучения. И это глубокая вещь. Подумайте, что это значит. Сеть, в некотором смысле, сама выясняет, какие признаки важны, какие закономерности важны. Она не просто следует правилам, которые ей дали. Она обнаруживает структуру в данных, которую даже дизайнеры могли не предвидеть. Это был ответ на возражение Ады Лавлейс более чем столетней давности. Что машины никогда не могут ничего порождать, что они могут делать только то, что мы им говорим делать. Ну вот машина, которая в значимом смысле порождала свои собственные внутренние категории, свой собственный взгляд на мир. Не потому, что кто-то запрограммировал эти категории, а потому, что математика градиентного спуска и коррекции ошибок, применяемая к тысячам обучающих примеров, сформировала веса в конфигурации, которые уловили что-то реальное в лежащих в основе закономерностях. Теперь позвольте мне замедлиться на секунду и убедиться, что механика этого ясна, потому что обратное распространение ошибки — это действительно один из самых важных когда-либо изобретенных алгоритмов. И стоит понять, как это на самом деле ощущается сетью, проходящей через это. Представьте, что у вас есть сеть с входным слоем, двумя скрытыми слоями и выходным слоем. Вы подаете обучающий пример, скажем, изображение кошки, представленное в виде значений пикселей. Сигнал проходит вперед через сеть. Каждый нейрон в первом скрытом слое принимает взвешенную сумму своих входов, применяет математическую функцию для сжатия результата в полезный диапазон и передает свой выход следующему слою. Это снова происходит во втором скрытом слое. И, наконец, выходной слой выдает прогноз — возможно, число от нуля до единицы, где единица означает кошку, а ноль — не кошку. Допустим, сеть выдает 0,3, а правильный ответ — 1. Ошибка составляет 0,7. Теперь вступает в действие обратное распространение ошибки. Вы вычисляете, какой вклад внес каждый вес в выходном слое в эту ошибку, и подталкиваете эти веса в направлении, которое уменьшило бы ошибку. Затем вы распространяете этот сигнал ошибки назад ко второму скрытому слою, используя правило цепи, чтобы выяснить вклад каждого веса. Затем назад к первому скрытому слою. Каждый отдельный вес во всей сети получает крошечную корректировку. Все рассчитано так, чтобы выход сети был немного ближе к правильному ответу. И затем вы делаете это снова со следующим обучающим примером, и снова, и снова. Тысячи раз, миллионы раз. Каждая отдельная корректировка крошечная, толчок, а не прыжок. Но за множество примеров веса устанавливаются в конфигурацию, которая улавливает истинные статистические закономерности в данных. Это как эрозия. Одна капля дождя не вырезает каньон, но дайте ей достаточно времени, и вода формирует камень. Статья 1986 года вызвала то, что люди иногда называют коннекционистским возрождением, всплеск интереса к нейронным сетям, который продлился до конца 1980-х и начала 1990-х годов. Внезапно снова появилось финансирование. Проводились конференции. Исследователи, которые трудились в безвестности, оказались в центре нового захватывающего движения. Исследовательская группа по параллельной распределенной обработке в Калифорнийском университете в Сан-Диего под руководством Румельхарта и Джеймса МакКлелланда опубликовала в 1986 году очень влиятельный двухтомник, который подробно изложил коннекционистскую программу: как сети простых единиц, обучающиеся путем обратного распространения ошибки, могут объяснить все — от обработки языка до памяти и управления движением. И результаты были действительно впечатляющими. Одной из знаковых демонстраций стала работа исследователя по имени Терренс Синовски, который вместе с аспирантом Чарльзом Розенбергом создал в 1987 году систему под названием Net Talk. Net Talk была нейронной сетью, которая научилась произносить письменный английский текст. Вы подавали ей буквы, и она выдавала фонемы, звуки речи. Английское произношение печально нерегулярно. Подумайте о словах «though», «through», «tough», «thought» — и основанные на правилах системы годами боролись с этим. Но Net Talk, обученный на примерах текста, сопоставленных с правильными произношениями, научился справляться с большинством этих нерегулярностей. Когда они проигрывали записи вывода сети во время обучения, вы могли слышать, как она переходила от бессмысленного бормотания к чему-то, что звучало все более похоже на связную английскую речь. Это было жутко и чудесно. Но вот что важно в этот период возрождения, и это важно для понимания того, почему история не заканчивается просто здесь, когда все живут счастливо до конца своих дней. Сети конца 1980-х и начала 1990-х годов по современным меркам были все еще относительно небольшими. У них было, возможно, несколько сотен или несколько тысяч нейронов. Их обучение было медленным, потому что компьютеры были медленными. И когда исследователи пытались сделать сети глубже, добавляя больше скрытых слоев для улавливания более сложных закономерностей, они столкнулись с разочаровывающей проблемой. Градиенты, эти сигналы ошибки, распространяющиеся назад через сеть во время обратного распространения ошибки, имели тенденцию либо сжиматься почти до нуля, либо взрываться до огромных значений, проходя через множество слоев. Это называлось проблемой исчезающего градиента и ее аналогом — проблемой взрывающегося градиента. Практически это означало, что глубокие сети было невероятно трудно обучать. Слои, ближайшие к входу, почти ничего не учились, потому что к тому времени, когда сигнал ошибки достигал их, он был умножен через так много промежуточных шагов, что фактически испарился. Таким образом, у вас была эта разочаровывающая ситуация, когда теоретически более глубокие сети должны быть более мощными. Больше слоев означает большую способность изучать сложные иерархические признаки. Но на практике вы не могли их эффективно обучать. Сети с одним или двумя скрытыми слоями работали достаточно хорошо. Сети с пятью или десятью скрытыми слоями просто не сходились. Веса почти не двигались или дико колебались, и сеть никогда не приходила в полезную конфигурацию. И в то время как нейронные сети боролись с этой проблемой глубины, совершенно другая ветвь машинного обучения тихо давала результаты, которые во многих практических приложениях были такими же хорошими или даже лучше. Это были методы, которые пришли из мира статистики и оптимизации, а не из вдохновленного нейробиологией коннекционизма. И самым важным из них, тем, который доминировал в машинном обучении почти два десятилетия, было нечто под названием метод опорных векторов. Он был разработан в начале 1990-х годов Владимиром Вапником, русским математиком, который иммигрировал в Соединенные Штаты и работал в Bell Labs в Нью-Джерси. И история о том, как идеи Вапника затмили нейронные сети и что это означало для области, является одним из тех увлекательных эпизодов, когда технически элегантное решение преобладает над биологически вдохновленным, по крайней мере, на время. Потому что подход Вапника имел то, чего нейронные сети в то время не могли предложить. Сильные математические гарантии того, насколько хорошо модель будет работать на данных, которые она никогда раньше не видела. И это различие между подгонкой имеющихся данных и прогнозированием данных, с которыми вы еще не сталкивались, оказывается одной из самых важных идей во всем машинном обучении. Итак, давайте остановимся на этом на мгновение. Подумайте об этом так. Представьте, что вы учитель и даете своим ученикам набор практических задач перед экзаменом. Один ученик идеально запоминает каждую практическую задачу и ее ответ, слово в слово. Другой ученик изучает основные принципы, понимает закономерности, возможно, допускает несколько ошибок в практических задачах, но искренне постигает логику, стоящую за ними. Теперь, когда придет настоящий экзамен с новыми задачами, которые они никогда не видели, какой ученик, по вашему мнению, справится лучше? Почти всегда это второй. Первый ученик запомнил обучающие данные, так сказать, но на самом деле не выучил лежащую в основе структуру. В машинном обучении это называется переобучением. Ваша модель прекрасно подгоняется под обучающие данные, улавливает каждую мелочь, шум и случайные флуктуации в этом конкретном наборе данных, но затем она рушится, когда вы показываете ей что-то новое. И это была именно та проблема, к которой были склонны нейронные сети в конце 1980-х и начале 1990-х годов. Вы могли обучить нейронную сеть, и она достигала бы впечатляющей точности на вашем обучающем наборе, а затем вы тестировали бы ее на свежих данных, и производительность была бы разочаровывающей. Сеть запомнила, а не научилась. Что Вапник привнес в эту область, так это строгую математическую основу для осмысления этой проблемы. Он назвал это теорией статистического обучения и фактически разрабатывал основные идеи с 1960-х и 1970-х годов в Советском Союзе, работая с коллегой по имени Алексей Червоненкис. Вместе они разработали то, что теперь называется VC-теорией, теорией Вапника-Червоненкиса, которая дает вам способ количественно оценить емкость обучающей модели. Насколько она сложна? Сколько различных закономерностей она может потенциально подогнать? И вот ключевое прозрение: чем сложнее ваша модель, тем больше закономерностей она может подогнать. Конечно, но тем выше риск, что она подгоняет шум, а не сигнал. VC-теория давала вам фактические математические границы разрыва между производительностью на обучении и производительностью на тестировании. Она говорила вам точным, доказуемым способом, насколько вы должны доверять производительности вашей модели на новых данных, основываясь на сложности модели и количестве обучающих данных, которые у вас были. Теперь это может звучать абстрактно, но практическое следствие было огромным, потому что Вапник не просто разработал теорию. Он использовал ее для создания конкретного типа обучающей машины, которая, в некотором смысле, была оптимально разработана для избежания переобучения. Это был метод опорных векторов. Идея, лежащая в основе SVM, прекрасно геометрична. Представьте, что у вас есть точки данных, разбросанные по плоской поверхности. Некоторые — красные точки, некоторые — синие точки, и вы хотите провести линию, которая разделяет красные от синих. Может быть много возможных линий, которые вы могли бы провести, правильно разделяющих все точки. Но какая линия лучшая? Ответ Вапника: выберите линию, имеющую максимальный зазор. Зазор — это расстояние между линией и ближайшими точками данных с каждой стороны. Вы хотите максимально широкий зазор, максимально широкую буферную зону между двумя классами. Точки данных, которые находятся прямо на краю этого зазора, ближайшие к разделяющей линии, называются опорными векторами. Это критические точки, которые фактически определяют, где проходит граница. Все остальное, в некотором смысле, не имеет значения. И вот что здесь действительно умно. Максимизируя зазор, вы, по сути, встраиваете форму осторожности. Вы не просто находите любую границу, которая разделяет данные. Вы находите границу, которая наиболее надежна, наиболее вероятно будет работать правильно, когда появятся новые точки данных, которые немного отличаются от того, что вы видели раньше. И Вапник мог математически доказать, что этот подход максимального зазора приводит к хорошей обобщающей способности, не просто эмпирически, не просто кажется, что он хорошо работает на практике, а доказуемо с теоретическими гарантиями. Теперь вы можете подумать: хорошо, но что насчет данных, которые нельзя разделить прямой линией? Что, если красные и синие точки перемешаны в каком-то сложном узоре? Вот где появляется другая элегантная идея. Нечто под названием «трюк с ядром». Вместо того чтобы пытаться найти сложную кривую границу в исходном пространстве, где живут ваши данные, вы математически проецируете данные в гораздо более высокоразмерное пространство. Иногда бесконечно высокоразмерное, где данные могут быть разделены плоской поверхностью, гиперплоскостью. И прекрасное в этом то, что вам на самом деле не нужно вычислять координаты данных в этом высокоразмерном пространстве. Вам нужно только вычислить расстояния между парами точек данных в этом пространстве, что можно сделать с помощью функции ядра, относительно простой математической операции. Таким образом, вы получаете мощь работы в фантастически сложном пространстве, не неся вычислительных затрат на фактическое перемещение туда. Это как математический ярлык, червоточина через геометрию. И результаты были впечатляющими. В 1990-х годах SVM начали выигрывать соревнования, превосходя нейронные сети в одном эталонном тесте за другим. Распознавание рукописного текста, классификация текста, категоризация изображений. SVM были конкурентоспособны или превосходили во всех областях. И у них были практические преимущества, помимо точности. Они обучались быстрее, чем нейронные сети. У них было меньше гиперпараметров, с которыми нужно было возиться. Вам не нужно было мучительно решать, сколько скрытых слоев использовать, сколько нейронов в каждом слое, какую скорость обучения, какой импульс. Оптимизационная задача в основе SVM была выпуклой, что означает, что существует единственная глобальная оптимальная точка. Вам гарантировано найти лучшее решение, а не просто довольно хорошее, на которое вы случайно наткнулись. Сравните это с нейронными сетями, где ландшафт потерь испещрен локальными минимумами и седловыми точками, а обучение включает в себя много надежд, молитв и корректировок. Таким образом, к середине 1990-х годов интеллектуальный центр тяжести в машинном обучении решительно сместился от нейронных сетей к этим статистическим методам. SVM были звездой, но они были не одни. Были также ансамблевые методы, такие как случайные леса, разработанные Лео Бриманом в Беркли, которые использовали другой, но столь же умный подход. Вместо того чтобы строить одну очень сложную модель, вы строите сотни или тысячи простых моделей, деревьев решений, каждая из которых обучена на немного отличающемся случайном подмножестве данных, а затем вы позволяете им голосовать. Мудрость толпы. По сути, каждое отдельное дерево может быть посредственным, но совокупный прогноз всего леса удивительно точен и надежен. Бриман опубликовал свою статью о случайных лесах в 2001 году, и она стала одной из самых цитируемых статей во всем машинном обучении. Эти методы были практичными, надежными, интерпретируемыми, и они работали. И это период примерно с середины 1990-х до середины 2000-х годов, который иногда называют второй «зимой ИИ» для нейронных сетей, хотя это не совсем точно. Дело не в том, что исследования нейронных сетей полностью прекратились. Скорее, они стали глубоко немодными. Финансирование иссякло. Рецензенты на ведущих конференциях почти рефлекторно отклоняли статьи о нейронных сетях. Если вы были аспирантом и сказали своему научному руководителю, что хотите работать над нейронными сетями, вы, вероятно, получили бы обеспокоенный взгляд и несколько мягких карьерных советов. Область двинулась дальше. Теория статистического обучения была строгой. SVM имели гарантии. Нейронные сети считались капризными, ненадежными, теоретически мутными черными ящиками, которые даже нельзя было правильно обучить, если сделать их глубже, чем на пару слоев. Но небольшая группа исследователей отказалась отказаться от идеи нейронных сетей. И самым выдающимся, самым упрямым, самым неустанно оптимистичным из них был кто-то, кого мы уже встречали, Джеффри Хинтон. На протяжении всего периода пустыни Хинтон продолжал работать над нейронными сетями. Он продолжал публиковаться, продолжал обучать студентов, продолжал настаивать на том, что подход, вдохновленный мозгом, был фундаментально правильным, что проблемы были инженерными, а не концептуальными тупиками. И он был не одинок. Ян Лекун, французский ученый-компьютерщик, который учился у одного из пионеров исследований нейронных сетей в Париже, переехал в Bell Labs, те же Bell Labs, где работал Вапник, что является замечательной иронией, и делал замечательные вещи с определенным типом нейронной сети, называемой сверточной нейронной сетью. Сверточные сети Лекуна были напрямую вдохновлены зрительной корой. В конце 1950-х и начале 1960-х годов два нейробиолога по имени Дэвид Хьюбел и Торстен Визель провели новаторские эксперименты на кошках, вставляя электроды в зрительную кору и показывая кошкам различные визуальные стимулы. Они обнаружили, что нейроны в зрительной коре организованы иерархически. Некоторые нейроны реагируют на простые признаки, например, края под определенным углом. Другие реагируют на более сложные комбинации этих простых признаков. Зрительная система строит понимание того, что она видит, слой за слоем, от простого к сложному. Хьюбел и Визель получили Нобелевскую премию за эту работу в 1981 году. Лекун взял это биологическое понимание и превратил его в инженерную архитектуру. В сверточной нейронной сети первый слой учится обнаруживать простые признаки: края, углы, цветовые градиенты. Следующий слой комбинирует эти простые признаки в немного более сложные закономерности, возможно, изгиб буквы или текстуру поверхности. Следующий слой комбинирует их в еще более сложные представления и так далее. Каждый слой применяет небольшие фильтры, маленькие детекторы закономерностей, которые скользят по входу, ища свою конкретную особенность везде на изображении. Это скольжение, это совместное использование одного и того же фильтра в разных положениях — это свертка, и именно это делает эти сети такими эффективными. Вместо того чтобы каждый нейрон был подключен к каждому входному пикселю, что потребовало бы астрономического количества соединений, у вас есть небольшой набор обученных фильтров, которые повторно используются по всему изображению. К концу 1990-х Лекун построил сверточную сеть под названием LeNet-5, которая могла считывать рукописные цифры, почтовые индексы на конвертах, номера на чеках с удивительной точностью. AT&T фактически развернула ее. Она считывала что-то вроде 10-20% всех чеков, депонированных в американских банках к концу 1990-х годов. Миллионы чеков каждый день считывались нейронной сетью. И большинство людей понятия не имели. Вот эта якобы устаревшая технология тихо выполняла реальную работу в реальном мире, в то время как академический мейнстрим был занят SVM и методами ядра. А затем был Йошуа Бенжио, канадский ученый-компьютерщик, работающий в Монреале, который занимался проблемой применения нейронных сетей к последовательным данным, языку, временным рядам, всему, где важен порядок входов. Бенжио глубоко интересовался проблемой обучения представлений слов, поиска способов уловить смысл языка в векторах чисел. Он опубликовал статью в 2003 году о нейронных вероятностных языковых моделях, которая в ретроспективе посеяла семена, которые не расцветут полностью еще лет 15. Эти трое — Хинтон, Лекун и Бенжио — позже станут известны как крестные отцы глубокого обучения, и они разделят премию Тьюринга в 2018 году. Но в начале 2000-х они плыли против течения, работая в уголке области, который большинство их коллег считали тупиком. И то, что изменит все, то, что оправдает их упрямство и преобразует не только машинное обучение, но и весь технологический ландшафт, было слиянием трех факторов, которые ни один из них не мог полностью предвидеть. Первым был взрыв доступных данных. Вторым была неожиданная революция в компьютерном оборудовании, а третьим — серия умных алгоритмических инноваций, которые наконец решили проблему обучения глубоких сетей. Та самая проблема исчезающего градиента, которая была фундаментальным барьером с конца 1980-х годов. История о том, как эти три нити сплелись и что произошло, когда они это сделали, начинается с кажущегося несвязанным развития в мире видеоигр. В частности, мир трехмерных видеоигр и ненасытный спрос на более быструю и красивую отрисовку графики на экране. Потому что в конце 1990-х и начале 2000-х годов компания Nvidia вела ожесточенную конкуренцию с соперниками, такими как ATI и 3DFX, за создание самых быстрых графических процессоров (GPU) для игрового рынка. И дело в том, что для отрисовки кадра видеоигры вам нужно выполнить одну и ту же относительно простую математическую операцию. Умножить некоторые числа, сложить их, сделать это снова для миллионов пикселей одновременно. Вы не решаете одну сложную проблему. Вы решаете миллионы простых проблем одновременно. Поэтому разработчики GPU создавали чипы, которые принципиально отличались от традиционных ЦП. ЦП — это как блестящий профессор, который может решить любую проблему, которую вы ему предложите, но он решает их по одной. Или, возможно, по несколько. GPU больше похож на стадион, полный старшеклассников-математиков. Каждый из них способен только на базовую арифметику, но их тысячи. И все они работают параллельно. Для игр эта архитектура была идеальной. Для машинного обучения она оказалась бы революционной, но никто этого не планировал. Вот что делает эту часть истории такой чудесно случайной. Связь между GPU и нейронными сетями сначала не была очевидной, но подумайте, что происходит, когда вы обучаете нейронную сеть. На каждом слое вы берете набор входов, умножаете каждый из них на вес, суммируете их и пропускаете результат через функцию активации. Затем вы делаете это снова на следующем слое. И вы делаете это для каждого обучающего примера, потенциально миллионы раз. Это одна и та же базовая операция — умножение и накопление — повторяющаяся снова и снова для тысяч или миллионов искусственных нейронов. Это почти точно та же рабочая нагрузка, для которой были разработаны GPU. Математика нейронных сетей и математика рендеринга полигонов в видеоигре на глубоком уровне — это одна и та же математика. Матричные умножения. Массивные параллельные матричные умножения. Человек, который действительно продвинул эту связь в массы, был исследователем из Стэнфорда по имени Эндрю Ын вместе со своими соавторами. Примерно в 2009 году Ын и его команда продемонстрировали, что нейронные сети можно обучать значительно быстрее на GPU, чем на традиционных ЦП. Мы говорим об ускорении в 10 раз, 50 раз, иногда даже в 100 раз. То, что раньше занимало недели, теперь могло занять дни. То, что раньше занимало дни, могло занять часы. И это меняет все. Потому что в исследованиях скорость — это не просто удобство. Скорость — это разница между попыткой одной идеи в месяц и попыткой 10 идей в неделю. Это разница между мертвой областью и живой. Но история GPU была лишь одной нитью. Давайте поговорим о взрыве данных, потому что это происходило одновременно и имело такое же значение. В 2000 году общий объем хранимых в мире данных оценивался примерно в 6,2 эксабайт. К 2007 году он составлял около 295 эксабайт. К 2010 году он перешел в диапазон зеттабайт. Зеттабайт — это тысяча эксабайт или триллион гигабайт. Интернет делал то, что делает интернет. Люди загружали фотографии, писали электронные письма, кликали по ссылкам, покупали вещи, оставляли отзывы, публиковали в социальных сетях. Каждое из этих действий генерировало данные, и компании хранили все это. Это была эпоха, когда Google индексировал миллиарды веб-страниц, Facebook накапливал миллиарды помеченных фотографий, Amazon отслеживал каждую покупку и каждый шаблон просмотра. И вот почему это важно для машинного обучения. Помните, эти алгоритмы учатся на примерах. Чем больше примеров вы им дадите, тем лучше они станут. Но есть загвоздка, и она тонкая, которая возвращает нас к разговору о переобучении. Простые модели, такие как SVM или логистическая регрессия, могут приносить пользу от большего количества данных только до определенного момента. У них ограниченная емкость, ограниченная выразительность. Как только они извлекли все закономерности, которые позволяет их архитектура, больше данных уже не сильно помогает. Но глубокие нейронные сети с миллионами или миллиардами параметров чрезвычайно выразительны. Они голодны до данных. Им нужно огромное количество данных, чтобы полностью раскрыть свой потенциал. И без достаточного количества данных они ужасно переобучаются. Таким образом, десятилетиями глубокие сети находились в своего рода замкнутом круге. Им требовалось больше данных, чем существовало, чтобы продемонстрировать свое превосходство. И никто не собирался собирать больше данных для технологии, которая, казалось, не работала. Интернет разорвал этот замкнутый круг. Внезапно данные просто появились. Теперь третья нить, алгоритмические прорывы, и вот здесь Хинтон снова возвращается в историю в большом масштабе. В 2006 году Джеффри Хинтон, работая с Саймоном Оиндерео и Йи Т в Университете Торонто, опубликовал статью, которая вызвала шок в сообществе машинного обучения. Статья была посвящена так называемым глубоким сетям доверия. И ключевым прозрением стала умная стратегия обучения. Вместо того чтобы пытаться обучать все слои глубокой сети одновременно, где проблема исчезающего градиента вас бы раздавила, Хинтон предложил обучать сеть слой за слоем снизу вверх, используя неконтролируемый метод. Каждый слой учился моделировать статистическую структуру слоя под ним, и вы складывали эти предварительно обученные слои друг на друга, строя сеть по частям. Только после этого послойного предварительного обучения вы бы донастраивали все с помощью обратного распространения ошибки. Это было похоже на строительство дома, тщательно закладывая фундамент каждого этажа, прежде чем ставить следующий этаж сверху, вместо того чтобы пытаться построить всю конструкцию сразу и надеяться, что она не рухнет. Результаты были поразительными. Глубокие сети, обученные таким образом, работали значительно лучше, чем мелкие. Статья называлась «Быстрый алгоритм обучения для глубоких сетей доверия», и ее часто называют моментом, когда действительно началось возрождение глубокого обучения. Хинтон, который работал над этими идеями более 20 лет к этому моменту, который видел, как область отвернулась от нейронных сетей, который сохранил веру в течение долгой «зимы ИИ» 1990-х годов. Хинтон наконец получил результат, который заставил людей снова обратить на него внимание. И вот что прекрасно во времени. Хинтону было 60 лет, когда вышла эта статья. Он провел, по сути, всю свою карьеру над идеей, которую большинство его коллег считали ошибочной. Подумайте, какое упорство для этого требуется. Подумайте о том, чтобы сидеть на заседаниях факультета, подавать заявки на гранты, наблюдать, как ваши студенты изо всех сил пытаются найти работу, потому что они работали над нейронными сетями, а приемные комиссии хотели людей, которые занимались SVM. И все же он продолжал. Есть цитата, приписываемая ему, я перефразирую, где он сказал что-то вроде: «Либо я был невероятно неправ, либо все остальные были». И в 2006 году стрелка наконец начала двигаться в его направлении. Но статья 2006 года, какой бы важной она ни была, не была моментом полного оправдания. Это произошло через несколько лет и произошло благодаря соревнованию, буквальному соревнованию. В 2009 году группа Хинтона участвовала в конкурсе распознавания речи и показала, что глубокие нейронные сети могут превосходить традиционные методы, которые доминировали в этой области в течение 30 лет. Эти традиционные методы были основаны на так называемых скрытых марковских моделях в сочетании с гауссовыми смешанными моделями. Звучит сложно, я знаю, но суть в том, что это была устоявшаяся технология, отраслевой стандарт, то, что лежало в основе каждой системы распознавания речи, от предков Siri до автоматических телефонных меню. И нейронные сети Хинтона превзошли их. Не с небольшим отрывом, а со значительным. Это привлекло внимание крупных технологических компаний. Microsoft, Google, IBM — все они начали очень внимательно прислушиваться. К 2012 году глубокие нейронные сети фактически захватили распознавание речи во всех крупных технологических компаниях. Уровень ошибок резко снизился. Если вы когда-либо замечали, что голосовые помощники заметно улучшились примерно в 2012 или 2013 году, то вот почему. Это было не постепенное улучшение. Это был скачок, внезапный прыжок, вызванный глубоким обучением, заменившим старые статистические модели. Но настоящий землетрясение, событие, на которое большинство людей в этой области указывают как на момент, когда все изменилось, произошло в октябре 2012 года. И это произошло из-за кошек. Ну, не совсем из-за кошек, но оставайтесь со мной. Каждый год с 2010 года проводился конкурс под названием ImageNet Large-scale Visual Recognition Challenge. ImageNet — это огромный набор данных, содержащий более 14 миллионов помеченных изображений, организованных в более чем 20 000 категорий: собаки, машины, грибы, мосты, все, что вы можете себе представить. Задача заключалась в том, чтобы создать систему, которая могла бы посмотреть на фотографию, которую она никогда раньше не видела, и правильно определить, что на ней изображено. В 2010 и 2011 годах лучшие системы показывали уровень ошибок около 25 или 26%. Они использовали тщательно разработанные вручную признаки. Такие вещи, как детекторы краев и цветовые гистограммы, подаваемые в традиционные классификаторы, такие как SVM — достойные результаты, но далеко не на уровне человеческого исполнения. Затем в 2012 году команда из Университета Торонто представила свою работу. Это были Алекс Крижевский, Илья Суцкевер и их научный руководитель Джеффри Хинтон. Их система называлась AlexNet, и это была глубокая сверточная нейронная сеть. Помните сверточные сети Лекуна из 1990-х? Та же основная идея, но больше, глубже и обученная на GPU. AlexNet имела около 60 миллионов параметров, распределенных по восьми слоям. И Крижевский реализовал ее для работы на двух

Видеокарты Nvidia GTX 580, игровые GPS-навигаторы, такие, какие вы бы купили для игры в шутеры от первого лица. Они обучили ее на 1,2 миллионах изображений из ImageNet. AlexNet не просто выиграла конкурс 2012 года, она уничтожила конкуренцию. Ее процент ошибок составил около 15% по сравнению с более чем 25% у занявшего второе место. Этот разрыв, примерно в 10 процентных пунктов, был огромен. В области, где ежегодные улучшения обычно измерялись долями процента, AlexNet представляла собой скачок, которого никто не ожидал. И это была нейронная сеть, глубокая нейронная сеть, обученная с помощью обратного распространения ошибки, работающая на игровом оборудовании, питаемом огромными объемами данных. Все три составляющие: данные, оборудование, алгоритмы — сошлись в одной системе, и результат был неоспорим. Реакция в сообществе машинного обучения была близка к шоку. Исследователи, которые посвятили свою карьеру ручному проектированию признаков и методам ядер, внезапно столкнулись с тем фактом, что нейронная сеть, якобы мертвая технология, только что уничтожила все остальное. В течение года почти каждая конкурентоспособная заявка в ImageNet представляла собой глубокую нейронную сеть. В течение 2 лет старые подходы фактически исчезли из списка лидеров. Это был один из самых быстрых сдвигов парадигмы в истории компьютерных наук. И вот что действительно интересно в том, чему научилась AlexNet, потому что это связано с чем-то фундаментальным о том, как работают нейронные сети. Когда исследователи заглянули внутрь сети, чтобы увидеть, чему научились разные слои, они обнаружили нечто прекрасное. Ранние слои, ближайшие к входному изображению, научились обнаруживать простые признаки: края, углы, градиенты цвета. Средние слои объединяли эти простые признаки в более сложные узоры: текстуры, части объектов, кривые, а более глубокие слои собирали эти узоры в узнаваемые объекты: лица, колеса, мех, текст. Сеть спонтанно организовалась в иерархию все более абстрактных представлений. Никто не говорил ей сначала искать края, а потом объекты. Она сама это выяснила посредством обратного распространения ошибки, благодаря простому давлению попытки минимизировать свои ошибки на миллионах обучающих примеров. И если эта иерархия звучит знакомо, то так и должно быть. Она удивительно похожа на то, что Хаббл и Визель обнаружили в зрительной коре кошек в 1960-х годах. Те же исследования, которые изначально вдохновили сверточные сети Лакуна. Простые клетки, обнаруживающие края, сложные клетки, объединяющие края в формы, гиперсложные клетки, реагирующие на конкретные объекты. Искусственная система, получив достаточно данных и достаточную глубину, сошлась на чем-то, что очень напоминало биологическое решение. Является ли это совпадением или глубокой истиной о природе визуальной обработки, это вопрос, который люди до сих пор обсуждают, и это увлекательный спор.

Теперь успех AlexNet открыл шлюзы. Внезапно все захотели строить более глубокие сети. Если восемь слоев могли сделать это, что могли сделать 20 слоев? А как насчет 100? И вот здесь мы снова сталкиваемся с нашим старым врагом — проблемой исчезающего градиента. Потому что даже с уловками предварительного обучения и лучшими функциями активации, которые люди начали использовать, называемыми ReLU или выпрямленными линейными единицами, что сильно помогло. Обучение очень глубоких сетей по-прежнему было чрезвычайно трудным. Градиенты все еще затухали или взрывались, когда вы пытались протащить сигналы через десятки или сотни слоев. И человек, который нашел, возможно, самое элегантное решение этой проблемы, был молодой исследователь из Microsoft Research в Пекине. И решение было настолько простым, что казалось почти обманом. Его звали Киминг Хе. И в 2015 году он и его коллеги опубликовали статью, в которой представили то, что они назвали остаточными соединениями, и сеть, которую они построили с их помощью. ResNet изменила все. Итак, позвольте мне объяснить, что такое остаточное соединение, потому что это одна из тех идей, которые заставляют вас сказать: «Подождите, это все? Это весь трюк». А затем вы думаете об этом минуту и понимаете, насколько это на самом деле глубоко. Представьте, что у вас есть глубокая сеть, десятки слоев, расположенных друг над другом, и каждый слой должен изучить некоторое преобразование данных. Возьмите входные данные, сделайте с ними что-то полезное, передайте результат следующему слою. Проблема, как мы уже говорили, заключается в том, что когда вы пытаетесь обучить эту штуку с помощью обратного распространения ошибки, сигнал градиента, этот маленький толчок, говорящий каждому слою, как корректироваться, становится все слабее и слабее, когда он проходит назад через все эти слои. К тому времени, когда он достигает ранних слоев, это, по сути, шепот. Эти ранние слои не могут учиться. Они застряли. И вот что придумал Киминг Хе: вместо того, чтобы просить каждый слой изучить полное преобразование от входа к выходу, что, если вы просто попросите его изучить разницу, остаток? Вы берете входные данные для слоя, позволяете слою делать свое дело, а затем добавляете исходные входные данные обратно к выходу. Вот и все. Вы создаете ярлык, пропускное соединение, маленькое шоссе, которое позволяет сигналу полностью обойти слой, если это необходимо. Подумайте, почему это так умно. Если слой не должен ничего делать, если лучшее, что он мог сделать, — это просто передать данные без изменений, то все, что ему нужно изучить, — это ноль. Остаток равен нулю. Пропускное соединение обрабатывает все. Это гораздо, гораздо проще изучить, чем пытаться изучить всю функцию тождества с нуля. И, что более важно, эти пропускные соединения дают градиенту прямой путь назад через сеть. Градиенту больше не нужно просачиваться через каждый отдельный слой. Он может перепрыгивать по ярлыкам, оставаясь сильным, достигая самых ранних слоев. Это похоже на строительство экспресс-полосы на шоссе, забитом трафиком. Информация по-прежнему может использовать местные дороги, если хочет, но у нее также есть возможность двигаться вперед. И результаты были ошеломляющими. ResNet выиграла конкурс ImageNet в 2015 году с сетью глубиной 152 слоя. 152 слоя. Помните, у AlexNet было восемь. И ResNet не просто стала глубже. Она фактически работала лучше по мере углубления, что было противоположно тому, что происходило раньше. До остаточных соединений исследователи обнаружили, что добавление большего количества слоев в сеть фактически ухудшит ее после определенного момента. Не из-за переобучения, а потому, что оптимизация просто развалилась. Сеть не могла учиться. ResNet полностью прорвала этот барьер. Процент ошибок на ImageNet упал примерно до 3,6%, что было лучше, чем средняя производительность человека в этой конкретной задаче. Дайте себе минуту, чтобы это осмыслить. Всего за 3 года, с AlexNet в 2012 году до ResNet в 2015 году, распознавание изображений превратилось из проблемы, где компьютеры были смехотворно плохи по сравнению с людьми, в проблему, где компьютер, возможно, был лучше. Это экстраординарный темп прогресса. И это произошло благодаря сочетанию вещей, которые мы отслеживали. Больше данных, более быстрое оборудование и эти решающие архитектурные инновации, такие как остаточные соединения.

Теперь есть кое-что, на что я хочу, чтобы вы обратили внимание, потому что это закономерность, которая снова и снова появляется в истории машинного обучения. Остаточное соединение — это не сложная идея. Это не какое-то глубокое математическое прозрение, которое потребовало многолетней теоретической работы. Это инженерный трюк, архитектурный выбор, небольшое изменение в том, как вы соединяете сеть. И все же, это открыло возможности, которых никто не мог достичь без него. Это повторяющаяся тема. Прорывы в глубоком обучении часто были удивительно простыми идеями, которые просто улучшали оптимизацию. Функции активации ReLU, Dropout для регуляризации, пакетная нормализация, пропускные соединения. Каждую из них легко объяснить в нескольких предложениях, но каждая из них была преобразующей. И я думаю, что это часть того, что делает эту область такой интересной и такой смиренной. Трудная часть — это не придумывание сложной математики. Трудная часть — это поиск правильной простой идеи.

К середине 2000-х годов революция глубокого обучения набирала обороты в компьютерном зрении. Но была и другая область, где должно было произойти нечто столь же драматичное. И это область, которая в конечном итоге приведет к системам искусственного интеллекта, о которых большинство людей думают сегодня, когда слышат слова «искусственный интеллект». Я говорю о языке: понимании языка, генерации языка, переводе между языками, ответах на вопросы, написании текстов. И история о том, как глубокое обучение покорило язык, в некотором смысле даже более увлекательна, чем история о зрении, потому что язык так сильно отличается от изображений. Изображение — это сетка пикселей. Оно имеет фиксированный размер, четкую пространственную структуру. Язык последователен, переменной длины, полон дальних зависимостей, где слово в начале предложения может полностью изменить значение слова в конце. Он неоднозначен так, как изображения редко бывают. Традиционный подход к обработке последовательностей в нейронных сетях назывался рекуррентной нейронной сетью или RNN. Идея восходит к 1980-м годам, и она довольно интуитивна. Вместо того, чтобы обрабатывать весь ввод одновременно, вы обрабатываете его по одному элементу за раз, по одному слову за раз, скажем, и на каждом шаге сеть поддерживает скрытое состояние, своего рода память, которая переносит информацию из предыдущих шагов. Таким образом, когда сеть читает слово «банк», она может теоретически использовать свою память о предыдущих словах в предложении, чтобы выяснить, говорите ли вы о берегу реки или о финансовом банке. Теоретически, на практике RNN имели ужасные проблемы с дальними зависимостями. Если соответствующий контекст был 20 или 30 слов назад, сеть обычно забывала его. Информация распадалась по мере прохождения через все эти последовательные шаги, что на самом деле является проблемой исчезающего градиента, снова проявляющейся в другом обличье. Были улучшения. В 1997 году Сепхайтер и Юрген Шмид Хубер опубликовали статью, представляющую сети с долгой краткосрочной памятью (LSTM). Это были более сложные типы рекуррентных сетей с явными механизмами вентиляции, маленькими обучаемыми переключателями, которые контролировали, какую информацию сохранять, какую забывать и какую выводить на каждом шаге. Представьте, что вы даете сети блокнот, куда она может намеренно записывать вещи и стирать их, вместо того, чтобы просто надеяться, что она запомнит. LSTM были огромным улучшением по сравнению с обычными RNN, и они доминировали в моделировании последовательностей почти два десятилетия. Они обеспечивали первые действительно хорошие системы машинного перевода, распознавания речи, генерации текста. Google использовал LSTM в своем сервисе перевода. Apple использовала их в Siri. Они были рабочей лошадкой обработки естественного языка в эпоху глубокого обучения. Но у LSTM было фундаментальное ограничение, которое становилось все более болезненным по мере того, как люди пытались масштабировать их. Поскольку они обрабатывали последовательности шаг за шагом, они были по своей сути последовательными. Вы не могли распараллелить их так, как могли распараллелить сверточную сеть, обрабатывающую изображение. Каждый шаг должен был ждать завершения предыдущего шага, потому что ему требовалось это скрытое состояние. на этих мощных GPU, которые делали все остальное быстрее. LSTM не могли полностью использовать возможности параллельной обработки. Обучение их на очень больших наборах данных было медленным. И оставался вопрос, действительно ли эта последовательная память, даже с изящными механизмами вентиляции, была лучшим способом обработки дальних зависимостей. Ответ пришел в 2017 году от команды из восьми исследователей Google в статье с одним из самых значительных названий в истории компьютерных наук. «Внимание — это все, что вам нужно». И представленная ими архитектура, трансформер, является основой практически каждой крупной системы искусственного интеллекта, о которой вы слышали с тех пор. GPT, BERT, PaLM, Claude, Llama — все они трансформеры. Абсолютно все.

Итак, что такое внимание и почему оно все изменило? Позвольте мне попытаться медленно построить интуицию, потому что это стоит понять. Основная идея внимания на самом деле циркулировала пару лет до статьи о трансформере. Она использовалась как дополнение к RNN, особенно для машинного перевода. Идея заключалась в следующем. Когда вы переводите предложение, скажем, с французского на английский, и генерируете следующее английское слово, не каждое слово во французском предложении одинаково релевантно. Некоторые слова очень важны для этого конкретного выходного слова, а другие практически не имеют значения. Внимание — это механизм, который позволяет сети научиться фокусироваться на релевантных частях ввода. Он присваивает вес и оценку внимания каждому входному элементу. И эти веса обучаются. Они динамичны. Они меняются в зависимости от того, что сеть пытается сделать в данный момент. Вот аналогия, которая может помочь. Представьте, что вы находитесь на многолюдной вечеринке, и одновременно происходят десятки разговоров. Вы слышите все это как своего рода фоновый гул. Но когда кто-то через комнату произносит ваше имя, ваше внимание приковывается к этому разговору. Вы избирательно усиливаете этот сигнал и подавляете все остальное. Примерно так работает внимание в нейронной сети. Оно позволяет модели динамически решать для каждой части вывода, которую она генерирует, на каких частях ввода следует сосредоточиться. Что Васуани и его соавторы сделали в статье о трансформере, так это взяли этот механизм внимания и сделали его всей архитектурой. Они полностью отказались от рекуррентности. Больше никакой обработки по одному слову за раз. Больше никаких последовательных скрытых состояний. Вместо этого трансформер рассматривает всю входную последовательность одновременно. И он использует внимание, чтобы выяснить, как каждый элемент в последовательности связан с каждым другим элементом. Каждое слово может напрямую обращать внимание на каждое другое слово независимо от расстояния. Слово в начале предложения и слово в конце могут взаимодействовать напрямую за один шаг, без необходимости передачи информации через цепочку промежуточных состояний. И поскольку нет последовательной обработки, все это можно распараллелить. Вы можете запустить его на GPU и обрабатывать каждую позицию в последовательности одновременно. Обучение стало значительно быстрее, и модель могла легко обрабатывать дальние зависимости, потому что не было цепочки шагов, через которые информация могла бы распадаться. Каждое соединение было прямым. Конкретный механизм, который они использовали, называется масштабированным скалярным произведением внимания, и он работает через три обучаемых преобразования ввода, которые они назвали запросами, ключами и значениями. Представьте это как библиотечную систему. Каждое слово генерирует запрос: «Что я ищу?» А также ключ: «Что я содержаю?» И значение: «Какую информацию я должен передать, если кто-то меня ищет?» Оценка внимания между любыми двумя словами вычисляется путем сравнения запроса одного слова с ключом другого. Если они хорошо совпадают, оценка внимания высока, и значение привлеченного слова получает сильный вес в выводе. Это элегантно, это дифференцируемо, поэтому вы можете обучать его с помощью обратного распространения ошибки, и оно прекрасно масштабируется. Они также представили нечто под названием многоголовое внимание, где модель запускает несколько механизмов внимания параллельно. Каждый из них учится фокусироваться на различных типах отношений. Одна голова может научиться отслеживать синтаксические отношения, согласование подлежащего и сказуемого. Другая может изучать семантические отношения, какие слова относятся к одной теме. Другая может изучать позиционные отношения. Модель выясняет, какие типы паттернов внимания полезны, полностью самостоятельно посредством обучения. И вот что действительно замечательно в трансформере. Когда вы глубоко складываете эти слои внимания, а в оригинальной статье использовалось шесть слоев, но современные модели используют десятки или даже более сотни, сеть строит все более абстрактные представления языка таким образом, что это жутко напоминает то, что мы видели со сверточными сетями в изображениях. Ранние слои захватывают локальные паттерны, такие как структура фраз и словесные ассоциации. Более глубокие слои захватывают все более глобальные абстрактные отношения, такие как повествовательная связность, логические следствия, фактические ассоциации. Иерархия возникает из обучения так же, как детекторы краев и детекторы лиц возникли в AlexNet. Статья о трансформере 2017 года была посвящена машинному переводу, и она достигла передовых результатов. Но настоящий взрыв произошел, когда люди начали задавать другой вопрос. Что, если вместо обучения трансформера для конкретной задачи, такой как перевод, вы просто обучите его предсказывать следующее слово в огромном объеме текста, просто сырого текста из интернета, из книг, отовсюду. Без меток, без человеческой аннотации, без конкретной задачи. Просто, учитывая все слова до сих пор, что идет дальше? Эта идея, языковое моделирование как предварительное обучение, имела корни, восходящие к работе Бенджио 2003 года и далее. Но трансформер сделал ее практичной в масштабе, который никто раньше не пробовал. И результаты изменят все.

Итак, давайте поговорим о том, что произошло, когда люди действительно это сделали, потому что идея звучит почти слишком просто, верно? Просто предскажи следующее слово. Это обучающий сигнал. Это все, что модель пытается сделать. Учитывая последовательность слов, угадай, что идет дальше. Ошибись, скорректируй веса, попробуй снова. Миллиарды раз на миллиардах слов. И вопрос, на который никто не мог дать полный ответ заранее, заключался в том, что на самом деле изучает модель, когда вы обучаете ее таким образом в огромном масштабе. Она просто запоминает распространенные фразы? Она изучает грамматику? Она изучает что-то более глубокое? Первый крупный ответ пришел от группы OpenAI в 2018 году с моделью, которую они назвали GPT, генеративный предварительно обученный трансформер. И само название говорит вам всю философию. Генеративный, означающий, что он производит текст. Предварительно обученный, означающий, что вы сначала обучаете его на огромном объеме сырого текста, прежде чем показывать ему конкретную задачу. И трансформер, потому что это архитектура под ним. Идея была прямолинейной. Возьмите большой трансформер, обучите его на огромном корпусе текста, в данном случае на наборе данных книг, используя только предсказание следующего слова. Никаких размеченных данных, никаких человеческих аннотаций, говорящих, что это предложение положительное или этот абзац о науке. Просто сырой текст и простая цель предсказания следующего слова. А затем, после того, как вы выполнили это предварительное обучение, вы берете модель и донастраиваете ее для конкретных задач. Анализ настроений, ответы на вопросы, текстовое логическое следствие, все, что вам нужно. И вот что было удивительно. Эта предварительно обученная модель, даже несмотря на то, что ее никогда явно не учили ни одной из этих задач, оказалась удивительно хороша во всех них после небольшого количества донастройки. Как будто процесс обучения предсказанию следующего слова заставил модель развить глубокое общее понимание языка, грамматики, семантики, знаний о мире, моделей рассуждений — все это как побочный продукт этой одной простой цели. Подумайте, что это значит на секунду. Никто не садился и не программировал правила английской грамматики в эту модель. Никто не давал ей базу знаний о фактах о мире. Никто не учил ее логике. Она изучила все это или, по крайней мере, полезные приближения к ним, просто читая текст и пытаясь угадать, что идет дальше. И если вы подумаете об этом, в этом есть определенная элегантность, потому что предсказание следующего слова в предложении на самом деле является невероятно сложной задачей, если вы хотите сделать это хорошо. Чтобы предсказать, что столица Франции — Париж, вам нужно усвоить факт географии. Чтобы предсказать следующее слово в сложном логическом аргументе, вам нужно что-то, что функционирует как рассуждение. Обучающая цель проста, но ее высокоуровневое удовлетворение требует, чтобы модель развивала сложные внутренние представления.

Примерно в то же время, фактически всего через несколько месяцев, в конце 2018 года, команда Google выпустила модель под названием BERT, что означает двунаправленные представления кодировщика из трансформеров. И BERT использовал немного другой подход, который стоит понять. В то время как GPT читает текст слева направо, предсказывая следующее слово, BERT обучался смотреть на текст с обеих сторон одновременно. Его обучающая задача также была другой. Вместо предсказания следующего слова BERT использовал так называемое маскированное языковое моделирование. Вы берете предложение, случайным образом скрываете некоторые слова, маскируете их и просите модель предсказать, каким должно быть пропущенное слово, используя весь окружающий контекст с обеих сторон. Так что, если у вас есть «кот сидел на маске», модель может использовать как «кот сидел на» и все, что идет после, чтобы выяснить, что пропущенное слово, вероятно, «коврик» или «ковер» или «пол». Этот двунаправленный подход дал BERT другой тип понимания. Он был особенно хорош в задачах, где вам нужно глубоко понимать фрагмент текста: отвечать на вопросы по отрывку, определять, связаны ли два предложения, классифицировать тональность отзыва. Когда был выпущен BERT, он установил новые рекорды по 11 различным бенчмаркам обработки естественного языка одновременно. 11. Это не модель, которая хороша в чем-то одном. Это модель, которая изучила что-то действительно общее о том, как работает язык. И вот где история становится действительно интересной. Потому что то, что произошло дальше, было, по сути, гонкой вооружений в масштабе. Исследователи из OpenAI, Google и других лабораторий начали спрашивать: «Что произойдет, если мы просто сделаем эти модели больше? Больше параметров, больше обучающих данных, больше вычислений». GPT имел около 117 миллионов параметров. Это звучит много, но GPT2, выпущенный в начале 2019 года, имел 1,5 миллиарда параметров. Он был обучен на гораздо большем наборе данных, около 40 ГБ текста, собранного из интернета, отфильтрованного по качеству путем включения только страниц, на которые ссылались с Reddit с как минимум тремя голосами «за», что было умным способом использования человеческой курации в масштабе без фактической оплаты кого-либо за курацию. И GPT2 мог делать то, что искренне поразило людей. Он мог генерировать связный, беглый текст длиной в несколько абзацев. Вы могли дать ему подсказку, несколько предложений на любую тему, и он продолжал писать так, что часто было удивительно убедительно. OpenAI фактически приняла необычное решение изначально не выпускать полную модель, ссылаясь на опасения по поводу потенциального злоупотребления для генерации фейковых новостей или спама. Это решение было спорным, и в конечном итоге они его выпустили. Но сам факт того, что они даже рассматривали возможность его не выпускать, говорит вам кое-что о том, насколько способной модель чувствовали люди, которые ее создали. Но вот что было действительно диким. По мере того, как эти модели становились больше, они не просто постепенно улучшались в одном и том же. Они начали демонстрировать возможности, для которых их никто явно не обучал. GPT2 мог выполнять элементарный перевод, хотя его никогда не обучали задаче перевода. Он мог выполнять базовые арифметические операции. Он мог отвечать на викторины. Эти способности, казалось, возникали из-за чистого масштаба обучения, из-за обработки такого большого объема текста, что модель усвоила закономерности и знания, выходящие далеко за рамки простого предсказания следующего слова. Исследователи начали называть эти возникающие возможности, и они были одновременно захватывающими и немного тревожными, потому что это означало, что вы не всегда могли предсказать, что модель сможет сделать, просто взглянув на ее обучающую цель. Затем появился GPT3 в 2020 году, и масштаб снова резко увеличился. 75 миллиардов параметров, обученных на наборе данных, включающем большие части интернета, книги и Википедию. И GPT3 представил нечто, что действительно изменило то, как люди думали об этих моделях. Оказалось, что GPT3 мог выполнять многие задачи без какой-либо донастройки. Вам не нужно было переобучать его на размеченных примерах анализа настроений, чтобы он выполнял анализ настроений. Вы могли просто описать задачу простым английским языком как часть подсказки. Вы могли написать что-то вроде: «Классифицируйте следующий отзыв о фильме как положительный или отрицательный. Этот фильм был шедевром повествования. Настроение». И модель выдавала бы «положительный». Это называлось обучением с несколькими примерами (few-shot learning) или даже обучением с нулевыми примерами (zero-shot learning), и это была фундаментально отличающаяся парадигма от всего, что было раньше. Подумайте, что здесь происходит. Вместо обучения отдельной модели для каждой задачи — одной модели для перевода, одной для суммаризации, одной для ответов на вопросы — у вас есть одна модель, которую можно направить для выполнения различных задач, просто изменяя инструкции, которые вы ей даете на естественном языке. Интерфейс к модели — это сам язык. И это глубокий сдвиг, потому что это означает, что способность использовать эти модели больше не ограничена инженерами машинного обучения, которые знают, как обучать нейронные сети. Любой, кто может описать, что он хочет, словами, в принципе, может заставить модель попытаться это сделать.

Теперь давайте замедлимся на мгновение и подумаем о том, что на самом деле происходит внутри этих больших языковых моделей, потому что это действительно один из самых увлекательных и наименее понятных вопросов в современном компьютерном мире. Когда модель, такая как GPT3, обрабатывает вашу подсказку и генерирует ответ, что она делает? На механическом уровне мы точно знаем, что она делает. Она выполняет вычисления трансформера: слои внимания, умножение матриц, функции softmax — все это. Мы можем проследить каждое число через каждый слой. Но понять, что означают эти вычисления, какие представления модель построила внутри, что она знает и как она это знает, гораздо сложнее. Теперь существует целое поле под названием «механистическая интерпретируемость», которое пытается ответить на эти вопросы, пытаясь реконструировать внутренние представления больших языковых моделей, так же, как нейробиолог мог бы попытаться понять мозг. И некоторые из выводов замечательны. Исследователи обнаружили отдельные нейроны и схемы внутри этих моделей, которые соответствуют конкретным концепциям. Нейроны, которые активируются, когда модель обрабатывает текст о конкретной теме. Схемы, которые реализуют нечто, похожее на логическое рассуждение. Внутренние представления, которые, похоже, кодируют фактические отношения в структурированном виде. Но мы все еще находимся на ранних стадиях понимания этого. Модели работают намного лучше, чем предсказывают наши теории. И никто не может дать полного объяснения, почему масштабирование, простое увеличение размера модели и предоставление ей большего количества данных, приводит к таким драматическим улучшениям в возможностях. Этот разрыв между тем, что мы можем построить, и тем, что мы можем объяснить, на самом деле является повторяющейся темой в инженерии. Если подумать, веками люди строили мосты и соборы, которые работали, используя эмпирические правила и интуицию, задолго до того, как у них появилась формальная теория строительной механики. Практика опережала теорию. И нечто подобное происходит сейчас с большими языковыми моделями. Мы можем их построить. Мы видим, что они работают. Мы можем измерить их возможности. Но глубокое теоретическое понимание того, почему они работают так хорошо, все еще отстает.

И это подводит нас к тому, что начало происходить примерно в 2020-2021 годах, что действительно расширило сферу возможностей машинного обучения, потому что исследователи начали спрашивать: если этот подход так хорошо работает для языкового предварительного обучения большой модели на огромном объеме данных с простой целью, может ли та же философия работать для других типов данных? Можем ли мы построить одну модель, которая понимает не только текст, но и изображения, аудио, видео, код, и, возможно, все это одновременно? Ответ, как оказалось, был «да». И путь к этому включал в себя некоторые действительно умные идеи о том, как преодолеть разрыв между различными типами информации. Одна из самых важных из этих идей пришла из связи языка и зрения. И она началась с модели, которая имела обманчиво простое название: CLIP. Она расшифровывалась как Contrastive Language-Image Pre-training (Контрастное предварительное обучение языка и изображений) и появилась в OpenAI в январе 2021 года. И основная идея CLIP была настолько элегантной, что, услышав ее, вы задаетесь вопросом, почему никто не попробовал ее раньше. Вот что они сделали. Они собрали огромный набор данных, около 400 миллионов пар изображений и текстовых описаний, собранных из интернета. Подумайте, что это значит. Каждый раз, когда кто-то публикует фотографию в Интернете с подписью или пишет альтернативный текст для изображения, или создает описание продукта с изображением и названием, это пара: изображение и предложение, которое его описывает. Интернет буквально переполнен этими парами. И OpenAI собрала сотни миллионов из них. Теперь обучающая цель была прекрасно прямолинейной. Вы берете пакет пар «изображение-текст». Вы пропускаете каждое изображение через модель зрения, нейронную сеть, предназначенную для обработки изображений, и получаете компактное числовое представление — вложение для каждого изображения. Одновременно вы пропускаете каждое текстовое описание через языковую модель и получаете вложение для каждого фрагмента текста. А затем вы обучаете систему так, чтобы вложение изображения и вложение его соответствующего текстового описания оказались близко друг к другу в этом общем математическом пространстве, в то время как вложения несоответствующих пар отталкиваются. Вот и все. В этом вся идея. Вы учите модель согласовывать визуальное понимание и лингвистическое понимание в единое общее пространство, где изображения и слова могут быть напрямую сравнены. Подумайте, что это значит на секунду. Как только вы обучили эту модель, вы можете сделать нечто замечательное. Вы можете взять любое изображение, изображение, которое модель никогда раньше не видела, и сравнить его вложение с вложениями произвольных текстовых описаний. Вы хотите классифицировать изображение, вам не нужен предопределенный набор категорий, на которых обучалась модель. Вы просто пишете любые категории, которые хотите, простым английским языком: «фотография собаки», «фотография кошки», «фотография заката над океаном», и модель говорит вам, какое описание лучше всего соответствует изображению. Это классификация изображений с нулевыми примерами. Никакой донастройки, никаких специфических для задачи обучающих данных, никаких размеченных примеров. Вы просто описываете, что ищете словами, и модель находит это. И CLIP был на удивление хорош в этом. По многим стандартным бенчмаркам классификации изображений. Он соответствовал или приближался к моделям, которые были специально обучены на этих точных наборах данных с миллионами размеченных примеров. Модель, которая никогда не видела ни одного размеченного примера из ImageNet, могла конкурировать с моделями, которые были обучены на 1,2 миллионах тщательно размеченных изображений ImageNet. Это был действительно поразительный результат.

Но вот что действительно дико в CLIP. Это было не просто классификация, потому что модель научилась общему соответствию между визуальными концепциями и языком. Она была невероятно устойчива. Традиционные классификаторы изображений хрупки таким образом, что иногда смущает. Вы обучаете модель распознавать автомобили, и она прекрасно работает на фотографиях, на которых она обучалась. Чистые, хорошо освещенные, стандартные углы. Но покажите ей набросок автомобиля или игрушечный автомобиль или автомобиль на картине, и производительность часто резко падает. У CLIP не было такой проблемы в значительной степени, потому что он не изучал автомобиль как конкретный узор пикселей. Он изучил глубокую, гибкую ассоциацию между визуальной концепцией автомобиля и лингвистической концепцией автомобиля на сотнях миллионов разнообразных примеров из грязного, разнообразного интернета. Наброски, фотографии, картины, мультфильмы. Он видел их все в паре с текстом. Эта идея соединения модальностей, связывания различных типов информации в общем пространстве представлений, оказалась одной из самых мощных идей в современном машинном обучении. И она открыла дверь к тому, что было мечтой десятилетиями: генерация изображений по текстовым описаниям. Потому что, если у вас есть модель, которая понимает связь между языком и зрением, вы можете начать представлять себе обратный процесс. Вместо того, чтобы идти от изображения к тексту, вы идете от текста к изображению. И именно это произошло в серии прорывов, которые произошли на удивление быстро. В январе 2021 года, в том же месяце, когда был анонсирован CLIP, OpenAI также представила DALL-E, названную в честь игривого сочетания художника Сальвадора Дали и робота Pixar Валл-И. DALL-E мог генерировать изображения по текстовым подсказкам. Вы могли ввести «кресло в форме авокадо», и он создаст изображение именно этого, а не найдет существующее изображение, а создаст новое, которого никогда раньше не существовало. Ранние результаты были впечатляющими, но с шероховатостями. Изображения часто были размытыми или искаженными, явно искусственными. Но затем, в апреле 2022 года, появился DALL-E 2, и скачок качества был драматическим. Изображения были четкими, детализированными, креативными, иногда по-настоящему красивыми. И DALL-E 2 использовал изученное CLIP понимание связи между языком и зрением как часть своей архитектуры. Он опирался на это общее пространство представлений.

Теперь сам механизм этих моделей генерации изображений стоит понять хотя бы на высоком уровне, потому что он включает в себя технику, называемую диффузией, которая является просто великолепным куском инженерии. Основная идея на самом деле исходит из физики, из изучения того, как частицы диффундируют через среду. Вот интуиция. Представьте, что у вас есть четкая фотография. Теперь представьте, что вы постепенно добавляете к ней случайный шум. Немного статики, затем больше, затем больше, пока, наконец, изображение полностью не будет уничтожено, и все, что у вас останется, — это чистый случайный шум, как статика на старом телевизоре. Это прямой процесс. Переход от четкого изображения к чистому шуму шаг за шагом. Теперь вот хитрая часть. Что, если вы сможете обучить нейронную сеть обратить этот процесс вспять? Взять слегка зашумленное изображение и предсказать, как оно будет выглядеть с меньшим количеством шума. Если вы можете это сделать, если вы можете научиться уменьшать шум шаг за шагом, то вы можете начать с чистого случайного шума и постепенно, шаг за шагом, уменьшать его до связного изображения. На каждом шаге модель смотрит на текущий зашумленный беспорядок и слегка подталкивает его к чему-то более структурированному, более осмысленному. После сотен или тысяч крошечных шагов из статики появляется узнаваемое изображение. Это почти медитативно, когда думаешь об этом. Порядок, возникающий из хаоса, шаг за шагом. И текстовое условие, часть, где вы говорите модели, что генерировать, работает, направляя процесс уменьшения шума. На каждом шаге модель не просто уменьшает шум случайным образом. Она уменьшает шум в направлении, соответствующем текстовой подсказке, используя это общее понимание языка и зрения, которое установили CLIP и подобные модели. Так что, если ваша подсказка гласит: «Маяк на скале на закате», каждый шаг уменьшения шума подталкивает шум в направлении изображения, соответствующего этому описанию. Этот подход диффузии, который был усовершенствован исследователями из нескольких учреждений. Джаша Сол Дикштейн из Google Brain представил основную математическую основу еще в 2015 году, а затем Джонатан Хо, Эй Джей Джейн и Питер Эйл из Беркли опубликовали знаковую статью в 2020 году, показывающую, что диффузионные модели могут генерировать изображения, конкурирующие с лучшими предыдущими подходами. Эта структура стала основой почти каждой крупной системы генерации изображений. Stable Diffusion от Stability AI, выпущенная в августе 2022 года как модель с открытым исходным кодом, фактически мгновенно предоставила эту технологию миллионам людей. Midjourney построила чрезвычайно популярный сервис на основе аналогичных идей. Google разработал Imagen. Эта область взорвалась, и внезапно за период около 18 месяцев мир перешел от «ИИ может довольно хорошо классифицировать изображения» к «ИИ может создавать фотореалистичные изображения практически всего, что вы можете описать словами». Скорость этого перехода застала врасплох почти всех, включая многих исследователей в этой области.

Но изображения были только началом. Та же мультимодальная философия: предварительное обучение на огромных данных, обучение связыванию различных типов информации, применялась повсюду. Whisper от OpenAI, выпущенный в сентябре 2022 года, был моделью распознавания речи, обученной на 680 000 часах многоязычного аудио из интернета. Он мог транскрибировать речь на десятки языков с точностью, приближающейся к человеческому уровню. Подход был тем же шаблоном, который мы продолжаем видеть: огромный набор данных, простая обучающая цель, огромная модель, замечательная возникающая способность. А затем появились модели, которые могли одновременно обрабатывать несколько модальностей. GPT4, выпущенный в марте 2023 года, мог принимать как текст, так и изображения в качестве ввода. Вы могли показать ему фотографию содержимого вашего холодильника и попросить предложить рецепт. Вы могли дать ему набросок макета веб-сайта и он мог сгенерировать код для его создания. Вы могли показать ему график из научной статьи и попросить объяснить тенденции. Границы между пониманием языка и визуальным пониманием растворялись. Эта конвергенция, это слияние ранее разрозненных возможностей в унифицированные системы является одной из самых значительных тенденций в современном машинном обучении. И это отражает то, что повторяется в истории технологий. Подумайте о смартфоне. До выхода iPhone в 2007 году у вас были отдельные устройства для совершения звонков, фотографирования, просмотра интернета, воспроизведения музыки, навигации. Смартфон не обязательно делал что-то из этого лучше, чем специализированные устройства, по крайней мере, не сразу. Но, объединив их в одну интегрированную систему, он создал нечто качественно иное, нечто, что изменило повседневную жизнь людей так, как никто полностью не предвидел. Нечто подобное, похоже, происходит и с этими мультимодальными системами ИИ. Когда модель может читать, писать, видеть, слушать и генерировать изображения в рамках одного разговора, диапазон задач, с которыми она может помочь, значительно расширяется. И взаимодействие между этими возможностями создает возможности, которых ни одна из них не предложила бы по отдельности.

Но это быстрое расширение возможностей также принесло с собой растущий набор проблем, с которыми поле боролось годами. Но которые внезапно стали гораздо более актуальными. Потому что, когда эти модели были академическими курьезами, которые могли классифицировать цветы или играть в игры Atari, ставки были относительно низкими. Но когда они могли генерировать убедительный текст, создавать реалистичные изображения несуществующих людей, писать функциональный код и вести тонкие разговоры, когда сотни миллионов людей использовали их ежедневно. Вопросы безопасности, предвзятости, злоупотребления и социального воздействия стали невозможно игнорировать. И это не абстрактные философские проблемы. Это, в очень реальном смысле, инженерные проблемы. Подумайте о предвзятости. Языковая модель, обученная на тексте из интернета, неизбежно усвоит предвзятости, присутствующие в этом тексте. Стереотипы о расе, поле, профессии, национальности. Не потому, что кто-то намеренно запрограммировал эти предвзятости, а потому, что обучающие данные отражают мир таким, какой он есть, включая его предубеждения. И когда эти модели используются для отбора заявок на работу, помощи в диагностике заболеваний или помощи судьям в оценке рисков при вынесении приговоров по уголовным делам — все это было предложено или реализовано — эти усвоенные предвзятости могут причинить реальный вред реальным людям. Задача сделать эти системы справедливыми, безопасными и соответствующими человеческим ценностям, возможно, является самой важной инженерной проблемой нашего времени. И это проблема, у которой нет чисто технического решения, потому что она не чисто техническая. Она включает в себя вопросы о том, что мы ценим, чьи точки зрения имеют значение, какое будущее мы хотим построить. Инженеры, работающие над согласованием, над тем, чтобы эти системы делали то, что мы действительно хотим, а не просто то, что мы буквально попросили, борются с одними из самых глубоких вопросов на стыке технологий и человеческих ценностей. И именно на этом стыке все становится по-настоящему трудным, потому что на протяжении большей части истории инженерии проблемы были ограничены. Вы строите мост, и критерии успеха ясны. Он должен выдерживать такой-то вес, перекрывать такое-то расстояние, противостоять таким-то ветровым нагрузкам. Вы можете протестировать его, измерить, сертифицировать. Но как протестировать, справедлива ли система ИИ? Справедлива по отношению к кому? По чьему определению? Это вопросы, на которые инженерам никогда не приходилось отвечать раньше. И инструменты традиционной инженерии — испытания на прочность, запасы прочности, резервирование — не совсем подходят для системы, поведение которой возникает из закономерностей в данных, которые никто полностью не понимает.

Давайте остановимся на этом на мгновение, потому что стоит оценить, насколько сильно эта проблема отличается от всего, что было раньше. Когда мы говорили ранее о разрыве между теорией и практикой в глубоком обучении, о том, как эти сети работают удивительно хорошо, но мы не всегда можем объяснить почему. Этот разрыв приобретает совершенно иной характер, когда на кону жизни и средства к существованию людей. Одно дело сказать: «Ну, мы не до конца понимаем, почему этот классификатор изображений настолько точен, но он дает правильный ответ в 97% случаев, так что давайте его использовать». Совсем другое — сказать: «Мы не до конца понимаем, почему система рекомендовала отказать кому-то в условно-досрочном освобождении или почему она отметила этого пациента как низкорискового, когда на самом деле ему требовалась немедленная помощь». И вот что делает согласование такой сложной инженерной проблемой. Это не просто предотвращение очевидных сбоев. Речь идет о тонких сбоях, о тех, которые на поверхности выглядят как успехи, но тихо оптимизируют не то. Существует концепция в безопасности ИИ под названием Закон Гудхарта, заимствованный из экономики, который гласит, что когда мера становится целью, она перестает быть хорошей мерой. Подумайте, что это значит для машинного обучения. Вы обучаете систему оптимизировать некоторую метрику, скажем, вовлеченность пользователей на платформе социальных сетей. Система становится чрезвычайно хороша в максимизации этой метрики. Но вовлеченность, как оказывается, легче всего максимизировать, показывая людям контент, который вызывает у них гнев или страх, потому что эти эмоции «липкие». Они заставляют вас прокручивать. Таким образом, система делает именно то, что вы ее просили. Это технический успех. И одновременно это делает миллионы людей несчастными и поляризует целые общества. Система не сломана. Цель была сломана. И спецификация правильной цели, которая отражает то, что вы на самом деле хотите, включая все нюансы, крайние случаи и вещи, которые вы забыли упомянуть, потому что они казались очевидными, оказывается чрезвычайно сложной. Это иногда называют проблемой согласования. И исследователи, такие как Стюарт Рассел из Калифорнийского университета в Беркли, утверждают, что это центральная задача создания все более способных систем ИИ. Формулировка Рассела, которую он изложил в своей книге 2019 года «Совместимый с человеком», элегантна. Он говорит, что проблема не в том, что мы создадим злобные машины. Проблема в том, что мы создадим компетентные машины, но преследующие цели, которые не совсем соответствуют нашим намерениям. И чем компетентнее машина, тем больший ущерб может нанести это небольшое несоответствие. Это как если бы у вас был очень, очень эффективный помощник, и вы сказали ему, чтобы вы никогда не опаздывали на встречи. И он настолько эффективен в этом, что начинает отменять все ваши другие обязательства, перестраивать ваши отношения, и в конце концов вы понимаете, что ваша жизнь была полностью реорганизована вокруг одной цели, которую вы упомянули вскользь. Вы получили то, что просили. Вы просто не попросили правильную вещь.

Теперь над этим серьезно работают, строго, с реальной инженерной дисциплиной. Один подход, привлекший большое внимание, — это обучение с подкреплением на основе обратной связи от человека (RLHF), которое было ключевой частью того, как обучался ChatGPT. Основная идея заключается в том, что после предварительного обучения большой языковой модели на тексте из интернета, вы затем донастраиваете ее, используя обратную связь от людей-оценщиков. Вы показываете результаты модели людям. Они ранжируют, какие ответы более полезны, более точны, менее вредны, и вы используете эти ранжирования для обучения модели вознаграждения, которая затем направляет языковую модель к созданию ответов, которые люди действительно предпочитают. Это умный подход, и на практике он работает удивительно хорошо. OpenAI опубликовала свою работу над этим с системой под названием InstructGPT в [прочищает горло] начале 2022 года, и она показала, что относительно небольшая модель, донастроенная с помощью RLHF, может быть предпочтительнее для людей-оценщиков, чем гораздо большая модель, которая не была донастроена таким образом. Но у RLHF есть свои ограничения, и исследователи, работающие над ним, первыми это признают. Люди-оценщики привносят свои собственные предубеждения. Модель вознаграждения является приближением человеческих предпочтений, а не реальной вещью. И языковая модель может научиться использовать особенности модели вознаграждения, производя ответы, которые хорошо оцениваются по прокси, но на самом деле не лучше. Это иногда называют «взломом вознаграждения», и это, по сути, закон Гудхарта, проявляющийся на один уровень глубже. Вы пытались решить проблему согласования, добавив человеческую обратную связь, и теперь у вас есть новая проблема согласования между моделью и моделью вознаграждения. В некотором смысле, это черепахи до самого низа. И все же прогресс реален. Системы, которые у нас есть сегодня, значительно безопаснее и полезнее, чем они были бы без этой работы. Anthropic, компания по безопасности ИИ, основанная бывшими исследователями OpenAI Дарио и Даниэлой Амодей, разработала методы, которые они называют конституционным ИИ, где модель обучается оценивать свои собственные выходные данные по набору принципов, своего рода письменной конституции, и пересматривать их. DeepMind вложила значительные средства в масштабируемый надзор, пытаясь выяснить, как люди могут эффективно контролировать системы ИИ, которые в конечном итоге могут быть более способными, чем любой отдельный человек в определенных областях. Это не решенные проблемы. Это активные исследовательские рубежи, и люди, работающие над ними, первыми скажут вам, что мы далеки от завершения.

Но позвольте мне отойти от технических деталей на мгновение, потому что я думаю, есть над чем поразмыслить, когда мы приближаемся к концу этой истории. Мы прошли долгий путь сегодня вечером. Мы начали с древних мечтаний о мыслящих машинах, механического турка, заметок Ады Лавлейс об аналитической машине Бэббиджа, тихого гения Алана Тьюринга, сидящего в своем кабинете в Блетчли-парке и спрашивающего, могут ли машины думать. Мы наблюдали, как небольшая группа оптимистичных исследователей собралась в Дартмуте летом 1956 года, убежденная, что они смогут разгадать интеллект за одно лето. Мы видели, как перцептрон Фрэнка Розенблата осветил первую полосу New York Times. А затем мы наблюдали, как критика Мински и Паперса отправила все поле в зиму. Мы следили за долгой, терпеливой работой таких людей, как Джеффри Хинтон, Ян Лекун и Йошуа Бенджио, которые продолжали верить в нейронные сети, когда почти никто другой не верил. В 80-е, в 90-е, годы отклоненных статей и скептических рецензентов, мы стали свидетелями случайного совпадения GPU и больших данных, что сделало глубокое обучение внезапно взрывоопасно практичным. Мы видели, как AlexNet шокировала сообщество компьютерного зрения в 2012 году, а затем ResNet превзошла человеческий уровень точности всего через 3 года. Мы следили за архитектурой трансформера от одной статьи в 2017 году до основы систем, которыми сейчас ежедневно пользуются сотни миллионов людей. И вот что поражает меня во всей этой дуге. На каждом этапе прорывы приходили от людей, которые были готовы ошибаться в течение долгого времени. Хинтон десятилетиями занимался идеей, которую большинство его коллег считали тупиковой. Хук Райтер и Шмид Хубер опубликовали LSTM в 1997 году, и потребовалось почти 15 лет, прежде чем появились оборудование и данные, чтобы показать, на что действительно способны эти архитектуры. Исследователи, разработавшие трансформер, не пытались построить чат-бота. Они пытались сделать машинный перевод более параллелизуемым. Почти ни один из крупных достижений в этой области не планировался так, как вы бы спланировали мост или шоссе. Они возникли из любопытства, из упрямства, из людей, которые следовали нитям, казавшимся интересными, даже когда они не могли оправдать практическую ценность. И это то, что стоит запомнить, я думаю, потому что разговор об ИИ сейчас доминируют две крайности. С одной стороны, вы имеете захватывающую дух шумиху, утверждения о том, что общий искусственный интеллект уже не за горами, что эти системы решат все проблемы человечества, что мы на пороге технологической сингулярности. С другой стороны, вы имеете экзистенциальный страх. Страх, что ИИ отнимет у нас все рабочие места, что он будет использоваться как инструмент наблюдения и контроля, что мы строим что-то, что не можем сдержать. И обе эти истории содержат зерна истины, но ни одна не отражает полную картину. Полная картина более беспорядочна и, честно говоря, более интересна. Эти системы действительно замечательны. Большая языковая модель может писать стихи, отлаживать код, объяснять квантовую механику и переводить между десятками языков. Но она также может уверенно заявлять вещи, которые совершенно ложны. Она не знает, что знает. У нее нет постоянной памяти, нет целей, нет понимания в том смысле, в каком понимаем мы с вами. Это движок сопоставления закономерностей исключительной сложности, обученный на большем количестве текста, чем любой человек мог бы прочитать за тысячу жизней. И он производит выходные данные, которые часто неотличимы

от человеческого письма. Но механизм, стоящий за этими результатами, принципиально отличается от человеческого познания. Имеет ли это различие значение, означает ли это, что эти системы никогда не смогут по-настоящему мыслить, или это просто другой путь к тому же пункту назначения — это один из величайших открытых вопросов нашего времени. И, честно говоря, у нас пока нет ответа. Что мы знаем, так это то, что инженерные задачи впереди огромны и увлекательны. Как сделать эти системы достаточно надежными, чтобы доверять им критические решения? Как сделать их достаточно прозрачными, чтобы, когда что-то пойдет не так, вы могли понять, почему? Как обеспечить, чтобы преимущества этой технологии распределялись широко, а не концентрировались в руках нескольких компаний или стран? Как сохранить человеческую свободу действий и творчество в мире, где машины могут создавать текст, изображения, музыку и код в больших масштабах? Это инженерные проблемы, да, но это также социальные проблемы, политические проблемы, философские проблемы, и они потребуют лучшего мышления из всех этих областей, а не только из компьютерных наук.

Знаете, в истории инженерии происходит прекрасное явление, и мы видели его снова и снова сегодня вечером. Кто-то строит что-то, что работает, но не совсем правильно. Кто-то другой выясняет, почему. Третий человек находит умное решение. Четвертый человек масштабирует его. Пятый человек обнаруживает совершенно неожиданное применение. И медленно, благодаря всем этим коллективным усилиям, благодаря спорам и неудачам, бессонным ночам и счастливым случайностям, появляется что-то по-настоящему новое, что-то, что ни один человек не мог бы построить в одиночку. Так мы прошли от простой математической нейронной сети МакКаллока и Питтса в 1943 году до систем, которые могут вести беседы и создавать фотореалистичные изображения через 80 лет. Не благодаря одному гениальному прорыву, а благодаря тысячам маленьких, наложенных друг на друга. Каждый из них строился на том, что было раньше. И этот процесс не закончен. Он едва начался.

На самом деле, люди, работающие сегодня над машинным обучением, исследователи, инженеры, специалисты по этике, политики пишут следующую главу истории, которая разворачивается десятилетиями. И если история — хоть какой-то ориентир, то самые важные разработки — это те, которые мы пока не можем предсказать. Трансформер не был предсказан. Эффективность масштабирования не была предсказана. Эмерджентные возможности, которые появляются в больших моделях, не были предсказаны. Следующий прорыв может прийти от аспиранта, работающего над чем-то, что кажется совершенно несвязанным, или от идеи, которая связывает две области, которые никто не думал связывать раньше.

Итак, пока вы лежите там, возможно, то погружаясь в сон, то ловя каждое слово, или, возможно, просто позволяя звуку омывать вас, вот что я хотел бы вам оставить. Машинное обучение по своей сути заключается в поиске закономерностей. Это попытка взять хаотичный, сложный, прекрасный хаос мира, все изображения, слова, звуки и данные и найти скрытую в нем структуру. И в некотором смысле, это то, что мы тоже делаем каждый день, не задумываясь об этом. Ваш мозг — это оригинальный механизм сопоставления закономерностей, тот, который вдохновил все эти искусственные системы, пусть и неточно, несовершенно. Каждый раз, когда вы узнаете лицо, понимаете предложение, ловите мяч или чувствуете, что что-то не так, но не можете объяснить почему. Вы делаете то, что самые мощные компьютеры в мире только начинают приближать.

И сегодня вечером, когда ваши мысли замедляются, а края дня смягчаются, ваш мозг все еще выполняет эту работу, сортируя закономерности дня, откладывая вещи, устанавливая связи, которые вы заметите только завтра, на следующей неделе или в следующем году. Это тихая работа, и она происходит без усилий. Так же, как происходит дыхание, так же, как бьется ваше сердце. Самая сложная обучающая система, когда-либо созданная. Работает прямо там, за вашими закрытыми глазами, делая то, что она умеет лучше всего. Просто позвольте ей делать свое дело. Вы достаточно думали на сегодня. Закономерности все еще будут там в