Главная страница

Перевод 1. Мы живем в эпоху алгоритмов. Всего лишь одно или два поколения назад упоминание слова алгоритм вызвало бы недовольство у большинства людей. Сегодня алгоритмы есть во всех уголках цивилизации


Скачать 26.02 Kb.
НазваниеМы живем в эпоху алгоритмов. Всего лишь одно или два поколения назад упоминание слова алгоритм вызвало бы недовольство у большинства людей. Сегодня алгоритмы есть во всех уголках цивилизации
Дата24.04.2023
Размер26.02 Kb.
Формат файлаdocx
Имя файлаПеревод 1.docx
ТипДокументы
#1086981

Мы живем в эпоху алгоритмов. Всего лишь одно или два поколения назад упоминание слова «алгоритм» вызвало бы недовольство у большинства людей. Сегодня алгоритмы есть во всех уголках цивилизации. Они вплетены в ткань повседневной жизни. Они не только в вашем мобильном телефоне или ноутбуке, но и в машине, доме, бытовой технике и игрушках. Ваш банк представляет собой гигантский клубок алгоритмов, в котором люди поворачивают ручки то тут, то там. Алгоритмы планируют полеты, а затем управляют самолетами. Алгоритмы управляют фабриками, торгуют и отправляют товары, обналичивают выручку и ведут записи. Если бы все алгоритмы внезапно перестали работать, это был бы конец света в том виде, в каком мы его знаем.

Алгоритм - это последовательность инструкций, указывающих компьютеру, что делать. Компьютеры состоят из миллиардов крошечных переключателей, называемых транзисторами, и алгоритмы включают и выключают эти переключатели миллиарды раз в секунду. Самый простой алгоритм: нажмите выключатель. Состояние одного транзистора - это один бит информации: один, если транзистор включен, и ноль, если он выключен. Один бит где-то в компьютерах вашего банка сообщает, перерасход средств на вашем счету или нет. Еще кое-что где-то в компьютерах Управления социального обеспечения сообщает, жив ты или мертв. Второй простейший алгоритм: объединить два бита. Клод Шеннон, более известный как отец теории информации, был первым, кто понял, что то, что делают транзисторы, когда они включаются и выключаются в ответ на другие транзисторы, является рассуждением. (Это была его магистерская диссертация в Массачусетском технологическом институте - самая важная магистерская диссертация всех времен.) Если транзистор A включается только тогда, когда транзисторы B и C включены, это приводит к небольшому логическому рассуждению. Если A включается при включении B или C, это еще одна крошечная логическая операция. И если A включается, когда B выключен, и наоборот, это третья операция. Вы не поверите, но любой алгоритм, каким бы сложным он ни был, можно свести только к этим трем операциям: И, ИЛИ и НЕ. Простые алгоритмы могут быть представлены в виде диаграмм с использованием различных символов для операций И, ИЛИ и НЕ. Например, если лихорадка может быть вызвана гриппом или малярией, и вам следует принимать Тайленол от лихорадки и головной боли, Его можно выразить следующим образом.

Комбинируя множество таких операций, мы можем проводить очень сложные цепочки логических рассуждений. Люди часто думают, что все в компьютерах - это числа, но это не так. Все компьютеры связаны с логикой. Числа и арифметика состоят из логики, как и все остальное в компьютере. Хотите сложить два числа? Для этого есть комбинация транзисторов. Хотите победить человеческую опасность! чемпион? Для этого тоже есть комбинация транзисторов (естественно, намного больше).

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

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

С другой стороны, следующий алгоритм игры в крестики-нолики:

Если у вас или у вашего оппонента две карты подряд , играйте на оставшейся площади.

В противном случае, если есть ход, который создает две линии из двух подряд, сыграйте это.

В противном случае, если центральный квадрат свободен, играйте там.

В противном случае, если ваш противник играл в углу, играйте в противоположном углу.

В противном случае, если есть пустой угол, играйте там.

В противном случае играйте на любом пустом квадрате.

У этого алгоритма есть замечательное свойство, которое он никогда не теряет! Конечно, по-прежнему не хватает многих деталей, например, как доска представлена ​​в памяти компьютера и как это представление изменяется при движении. Например, у нас может быть два бита для каждого квадрата, со значением 00, если квадрат пуст, которое изменяется на 01, если оно имеет ноль, и на 10, если оно имеет крест. Но он достаточно точный и недвусмысленный, чтобы любой грамотный программист мог восполнить пробелы. Также помогает то, что нам действительно не нужно самостоятельно определять алгоритм вплоть до отдельных транзисторов; мы можем использовать уже существующие алгоритмы в качестве строительных блоков, и их огромное количество на выбор.

Алгоритмы - это строгий стандарт. Часто говорят, что вы действительно чего-то не понимаете, пока не сможете выразить это в виде алгоритма. (Как сказал Ричард Фейнман: «То, что я не могу создать, я не понимаю».) Уравнения, хлеб с маслом для физиков и инженеров, на самом деле представляют собой особый вид алгоритма. Например, второй закон Ньютона, возможно, самое важное уравнение всех времен, говорит вам вычислить чистую силу, действующую на объект, умножив его массу на его ускорение. Он также неявно сообщает вам, что ускорение - это сила, деленная на массу, но явное определение этого само по себе является алгоритмическим шагом. В любой области науки, если теория не может быть выражена в виде алгоритма, это не совсем строго. (Не говоря уже о том, что вы не можете использовать компьютер для решения этой проблемы, что действительно ограничивает то, что вы можете с ним делать.) Ученые создают теории, а инженеры создают устройства. Ученые-информатики создают алгоритмы, которые являются одновременно теориями и устройствами.

Разработать алгоритм непросто. Подводных камней предостаточно, и ничего нельзя принимать как должное. Некоторые из ваших интуиций окажутся ошибочными, и вам придется найти другой способ. Помимо разработки алгоритма, вы должны записать его на языке, понятном компьютерам , например, Java или Python (в этот момент он называется программой). Затем вам нужно отладить его: найти каждую ошибку и исправить ее, пока компьютер не запустит вашу программу без сбоев. Но если у вас есть программа, которая делает то, что вы хотите, вы действительно можете поехать в город. Компьютеры без жалоб выполнят ваши приказы миллионы раз на сверхвысокой скорости. Каждый в мире может использовать ваше творение. Стоимость может быть нулевой, если вы так решите, или достаточной, чтобы сделать вас миллиардером, если проблема, которую вы решили, достаточно важна. Программист - тот, кто создает алгоритмы и кодирует их - это второстепенный бог, создающий вселенные по своему желанию. Можно даже сказать, что сам Бог Бытия - программист: язык, а не манипуляции, является его инструментом творчества. Слова становятся мирами. Сегодня, сидя на диване со своим ноутбуком, вы тоже можете быть богом. Представьте себе вселенную и воплотите ее в реальность. Th е законы физики не являются обязательными.

Со временем компьютерные ученые опираются на результаты работы друг друга и изобретают алгоритмы для новых вещей. Алгоритмы комбинируются с другими алгоритмами, чтобы использовать результаты других алгоритмов, что в свою очередь дает результаты для еще большего числа алгоритмов. Каждую секунду миллиарды транзисторов в миллиардах компьютеров переключаются миллиарды раз. Алгоритмы образуют экосистему нового типа, которая постоянно растет, по богатству сравнимая только с самой жизнью.

Однако в этом Эдеме неизбежно появляется змей. Это называется монстром сложности. Подобно Гидре, сложный монстр имеет множество голов. Одна из них - пространственная сложность: количество битов информации, которое алгоритм должен хранить в памяти компьютера. Если алгоритму требуется больше памяти, чем может предоставить компьютер, он бесполезен и должен быть отброшен. Затем есть злая сестра, временная сложность: сколько времени требуется для выполнения алгоритма, то есть сколько шагов по использованию и повторному использованию транзисторов он должен пройти, прежде чем он даст желаемые результаты. Если это дольше, чем мы можем ждать, алгоритм снова бесполезен. Но самое страшное лицо сложного монстра - это человеческая сложность. Когда алгоритмы становятся слишком сложными для понимания нашим бедным человеческим мозгом, когда взаимодействия между различными частями алгоритма становятся слишком многочисленными и слишком сложными, появляются ошибки, мы не можем их найти и исправить, а алгоритм не работает. что мы хотим. Даже если мы каким-то образом заставим его работать, он окажется излишне сложным для людей, использующих его, и не будет хорошо работать с другими алгоритмами, откладывая проблемы на потом.

Каждый компьютерный ученый каждый день сражается с монстром сложности. Когда компьютерные ученые проигрывают битву, сложность проникает в нашу жизнь. Вы, наверное, заметили, что многие битвы проиграны. Тем не менее, мы продолжаем строить нашу башню алгоритмов с все большей и большей трудностью. Каждое новое поколение алгоритмов должно быть построено на основе предыдущих и должно иметь дело с их сложностями в дополнение к своей собственной. Башня становится все выше и выше и покрывает весь мир, но при этом становится все более хрупкой, как карточный домик, ожидающий своего обрушения. Одна крошечная ошибка в алгоритме - и взорвется ракета на миллиард долларов, или миллионы отключатся. Алгоритмы взаимодействуют неожиданным образом, и фондовый рынок рушится.

Если программисты - второстепенные боги, то монстром сложности является сам дьявол. Мало б у мало, он выигрывает войну.

Там должен быть лучший путь.

У каждого алгоритма есть вход и выход: данные поступают в компьютер, алгоритм делает с ними то, что он будет делать, и выдает результат. Машинное обучение меняет ситуацию: вводятся данные и желаемый результат, а на выходе получается алгоритм, который превращает одно в другое. Алгоритмы обучения, также известные как обучающиеся, - это алгоритмы, которые создают другие алгоритмы. Благодаря машинному обучению компьютеры пишут свои собственные программы, поэтому нам не нужно.

Компьютеры пишут свои собственные программы. Это мощная идея, может быть, даже немного пугающая. Если компьютеры начнут программировать себя, как мы будем их контролировать? Оказывается, мы можем довольно хорошо их контролировать, как мы увидим. Более непосредственное возражение состоит в том, что, возможно, это звучит слишком хорошо, чтобы быть правдой. Несомненно, написание алгоритмов требует интеллекта, творчества, навыков решения проблем - вещей, которых у компьютеров просто нет? Чем машинное обучение отличается от магии? Действительно, на сегодняшний день люди могут писать множество программ, которым компьютеры не могут научиться. Но что еще более удивительно, компьютеры могут изучать программы, которые люди не могут написать. Мы умеем водить машины и расшифровывать почерк, но эти навыки подсознательны; мы не можем объяснить компьютеру, как это сделать. Однако, если мы дадим учащемуся достаточное количество примеров каждого из них, он с радостью поймет, как делать их самостоятельно, и в этот момент мы сможем избавиться от него. Вот так почтовое отделение считывает почтовые индексы, и поэтому уже едут малолитражные машины.

Сила машинного обучения, возможно, лучше всего объясняется аналогией с низкими технологиями: сельским хозяйством. В индустриальном обществе товары производятся на заводах, а это означает, что инженеры должны точно выяснить, как собирать их из частей, как изготавливать эти части и так далее - вплоть до сырья. Работы много. Компьютеры - это самые сложные товары, когда-либо изобретенные, и проектирование их, фабрик, которые их производят, и программ, которые на них работают, - это огромная работа. Но есть другой, гораздо более старый способ, которым мы можем получить кое-что из того, что нам нужно: позволить природе создавать их. В сельском хозяйстве мы сажаем семена, следим за тем, чтобы в них было достаточно воды и питательных веществ, и собираем урожай. Почему технологии не могут быть более похожими на это? Может, и это обещание машинного обучения. Алгоритмы обучения - это семена, данные - это почва, а изученные программы - это выращенные растения. Эксперт по машинному обучению похож на фермера, который сеет семена, орошает и удобряет почву и следит за состоянием урожая, но в противном случае не мешает.

Когда мы смотрим на машинное обучение с этой точки зрения, сразу бросаются в глаза две вещи. Во-первых, чем больше у нас данных, тем больше мы можем узнать. Нет данных? Нечего учиться. Большие данные? Есть чему поучиться. Вот почему машинное обучение стало появляться повсюду благодаря экспоненциально растущим горам данных. Если бы машинное обучение можно было купить в супермаркете, его машина говорила бы: «Просто добавьте данные».

Во-вторых, машинное обучение - это меч, которым можно победить монстра сложности. При наличии достаточного количества данных обучающая программа, состоящая всего из нескольких сотен строк, может легко создать программу с миллионами строк, и она может делать это снова и снова для различных задач. Снижение сложности для программиста феноменально. Конечно, как и у Гидры, у сложного монстра появляются новые головы, как только мы отрезаем старые, но они начинаются меньше и вырастают через некоторое время , так что мы все равно получаем большую ногу.

Мы можем думать о машинном обучении как о инверсии программирования, точно так же, как квадратный корень является обратным квадрату, а интегрирование - обратным дифференцированию. Так же, как мы можем спросить: «Какое число в квадрате дает 16?» или «Какая функция имеет производную x + 1?» мы можем спросить: «Какой алгоритм производит этот результат?» Скоро мы увидим, как превратить это понимание в конкретные алгоритмы обучения.

Некоторые учащиеся получают знания, а некоторые - навыки. «Все люди смертны» - это часть знания. Езда на велосипеде - это навык. В машинном обучении знания часто представлены в форме статистических моделей, потому что большая часть знаний - это статистика : класс = "подчеркивание": все люди смертны, но только 4 процента - американцы. Навыки часто имеют форму процедур: если дорога поворачивает налево, поверните колесо налево; если перед вами прыгнет олень, нажмите на тормоза. (К сожалению, на момент написания этой статьи в беспилотных автомобилях Google все еще путают взорванные ветром пластиковые пакеты с оленями.) Часто процедуры довольно просты, а сложными являются их знания. Если вы можете определить, какие электронные письма являются спамом, вы знаете, какие из них нужно удалить. Если вы можете сказать, насколько хороша позиция на доске в шахматах, вы знаете, какой ход сделать (один ход ведет к лучшей позиции).

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

Машинное обучение иногда путают с искусственным интеллектом (или сокращенно ИИ). Технически машинное обучение - это подразделение ИИ, но оно стало настолько большим и успешным, что теперь затмевает своего гордого родителя. Цель ИИ - научить компьютеры делать то, что люди в настоящее время делают лучше, и обучение, возможно, является самой важной из этих вещей: без него ни один компьютер не сможет угнаться за человеком ; с ним следует остальное.

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

Эксперты по машинному обучению (также известные как машинное обучение) являются элитным священником даже среди компьютерных ученых. Многие компьютерные ученые, особенно представители старшего поколения, не понимают машинное обучение так хорошо, как им хотелось бы. Это связано с тем, что информатика традиционно строилась на детерминированном мышлении, но машинное обучение требует мышления статистически. Если правило, скажем, помечает электронные письма как спам с точностью 99%, это не значит, что оно содержит ошибки; это может быть лучшее, что вы можете сделать, и достаточно хорошее, чтобы быть полезным. Это различие в мышлении - большая часть того, почему Microsoft гораздо труднее догнать Google, чем Netscape. В конце концов, браузер - это просто стандартное программное обеспечение, но поисковая машина требует другого мышления.

Еще одна причина, по которой машинное обучение так сильно увлечено, состоит в том, что в мире их гораздо меньше, чем нужно, даже по и без того ужасным стандартам информатики. По словам технического гуру Тима О'Рейли, «специалист по данным» - самая популярная должность в Кремниевой долине. По оценкам McKinsey Global Institute, к 2018 году только Соединенным Штатам потребуется на 140-190 тысяч больше экспертов по машинному обучению, чем будет доступно, и на 1,5 миллиона больше менеджеров, разбирающихся в данных. Применение машинного обучения стало слишком быстрым, чтобы образование могло успевать за ним, и оно имеет репутацию сложного предмета. Учебники могут вызвать расстройство желудка по математике. Однако эта трудность более очевидна, чем реальна. Все важные идеи машинного обучения можно выразить без математики. Читая эту книгу, вы, возможно, даже изобретаете свои собственные алгоритмы обучения, не обращая внимания ни на какое уравнение.

Промышленная революция автоматизировала ручную работу, а информационная революция сделала то же самое с умственной работой, но машинное обучение автоматизирует саму автоматизацию. Без него программисты становятся узким местом, сдерживающим прогресс. С этим темп прогресса ускоряется. Если вы ленивый и не слишком сообразительный компьютерный ученый, машинное обучение - идеальное занятие, потому что алгоритмы обучения делают всю работу, но позволяют вам взять на себя все заслуги. С другой стороны, алгоритмы обучения могут лишить нас работы, что было бы лишь поэтической справедливостью.

Поднимая автоматизацию на новый уровень, революция машинного обучения вызовет обширные экономические и социальные изменения, как это сделали в свое время Интернет, персональный компьютер, автомобиль и паровой двигатель. Одна из областей, где эти изменения уже очевидны, - это бизнес.

Почему предприятия используют машинное обучение

Почему Google стоит намного больше, чем Yahoo? Оба они зарабатывают деньги на показе рекламы в Интернете, и оба являются популярными направлениями. Оба используют аукционы для продажи рекламы и машинное обучение, чтобы предсказать, насколько вероятно, что пользователь нажмет на объявление (чем выше вероятность, тем ценнее реклама). Но алгоритмы обучения Google намного лучше, чем у Yahoo. Конечно, это не единственная причина разницы в их рыночной капитализации, но она большая. Каждый прогнозируемый клик, которого не происходит, - это упущенная возможность для рекламодателя и упущенная выгода для веб-сайта. При годовом доходе Google в 50 миллиардов долларов каждый 1 процент улучшения предсказания кликов потенциально означает для компании еще полмиллиарда долларов в банке каждый год. Неудивительно, что Google - большой поклонник машинного обучения, а Yahoo и другие стараются наверстать упущенное.

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

По мере роста компании проходят три фазы. Во-первых, они все делают вручную: владельцы семейных магазинов лично знают своих клиентов, соответственно заказывают, демонстрируют и рекомендуют товары. Это хорошо, но не масштабируется. На втором и наименее удачном этапе компания становится достаточно большой, чтобы использовать компьютеры. Приходят программисты, консультанты и менеджеры баз данных, а также пишутся миллионы строк кода для автоматизации всех функций компании, которые можно автоматизировать. Обслуживается гораздо больше людей, но решения принимаются не так, как welclass = "underline", на основе грубых демографических категорий, а компьютерные программы слишком жесткие, чтобы соответствовать бесконечной универсальности людей.

Спустя какое-то время программистов и консультантов для выполнения всего необходимого просто не хватает, и компания неизбежно обращается к машинному обучению. Amazon не может точно закодировать вкусы всех своих клиентов в компьютерной программе, а Facebook не знает, как написать программу, которая будет выбирать лучшие обновления для показа каждому из своих пользователей. Walmart продает миллионы товаров, и каждый день у него есть миллиарды вариантов выбора; если бы программисты из Walmart попытались написать программу, которая бы их создавала, они бы никогда не закончили. Вместо этого эти компании отвлекают алгоритмы обучения от гор накопленных данных и позволяют им угадывать, чего хотят клиенты.

Алгоритмы обучения - это сватовство: они находят производителей и потребителей друг для друга, преодолевая информационную перегрузку. Если они достаточно сообразительны, вы получите лучшее из обоих миров: широкий выбор и низкую стоимость большого масштаба с индивидуальным подходом к маленькому. Учащиеся не идеальны, и последний шаг в принятии решения обычно остается за людьми, но учащиеся разумно сводят свой выбор к тому, чем может управлять человек.


написать администратору сайта