Appearance
Знакомство и работа с GoogleColab
Поговорим о среде «GoogleColab» или «Google Colaboratory». На сегодняшний день это самая популярная среда для работы с системами искусственного интеллекта и машинного обучения среди студентов и разработчиков. Здесь не только учатся, но и работают. Более того, многие крупные компании и университеты, разворачивающие собственные вычислительные мощности для сотрудников или студентов, используют архитектуру, аналогичную «GoogleColab». Освоив «GoogleColab», вы сможете без труда работать в любой компании с подобной архитектурой.
Что такое «GoogleColab»?
Прежде всего, это «Jupyter Notebook», расположенный в облаке. В «Jupyter Notebook» вы сможете писать код на Python, реализовывать свои идеи по новым архитектурам машинного обучения и искусственного интеллекта, а также делиться этими наработками. Помимо центрального процессора, на котором могут выполняться вычисления, «GoogleColab» предоставляет возможность использовать «GPU» и «TPU». Причем существуют процессоры, доступные бесплатно, а также те, что доступны по подписке, предоставляющей практически неограниченные вычислительные мощности. Как облачная технология, «GoogleColab» позволяет нам работать совместно. Вы сможете копировать код, который видели на лекциях, на свой Google Диск и запускать его в той же среде, в которой его исполняли мы. Аналогично, когда вы будете сдавать домашние задания, экзамены и зачёты, мы сможем использовать ссылки на ваши блокноты и запускать ваш код в той же среде, в которой вы его писали. Таким образом, проблем с совместимостью быть не должно: если код работал у вас, он будет работать и у нас, с той же эффективностью.
Для чего обычно используется «GoogleColab»?
Прежде всего, это среда для обучения. Причём не только в области искусственного интеллекта и машинного обучения, но и в других дисциплинах. Вы можете найти блокноты по математике, физике, химии, биологии, истории и многим другим предметам. Это действительно очень удобная среда, в которой можно создавать уроки, делиться ими и работать практически из любой точки земного шара. Второе по популярности применение «GoogleColab» — это исследования и разработки. Несмотря на то, что многие крупные компании и университеты предпочитают иметь собственные вычислительные мощности, схема их работы часто схожа с «GoogleColab». Среди студентов и сотрудников, занимающихся искусственным интеллектом и машинным обучением, «GoogleColab» остаётся самым популярным инструментом во всем мире. Кроме того, «Google Colab» очень удобен для проведения различного рода аналитики и визуализации данных. Теперь давайте перейдём непосредственно к «GoogleColab» и рассмотрим его интерфейс в реальном времени. Под этой лекцией вы найдёте ссылку на «GoogleColab». Для доступа вам понадобится только аккаунт «Google». Итак, интерфейс «notebook» выглядит следующим образом:
Что здесь можно увидеть?
Прежде всего, каждый блокнот может иметь своё название. Вы можете задать любое название по вашему усмотрению. Также в «notebook» доступны два типа ячеек: кодовая ячейка и текстовая ячейка.
Текстовая ячейка предназначена для написания текста, формул, вставки изображений, комментариев и всего, что вам нужно для объяснения кода или данных. Кодовая ячейка используется для написания и выполнения кода на Python. Например, вы можете написать «Привет, мир!», нажать «Исполнить», и получить соответствующий результат.
Теперь давайте посмотрим на левое меню. Оно содержит несколько полезных инструментов. Особенно важна «папка» для работы с файлами.
Для загрузки файла с вашего компьютера достаточно нажать на соответствующую кнопку.
Это откроет доступ к вашим данным,
и вы сможете загрузить файл в «Colab».
Однако каждый раз загружать данные с локальной машины может быть неудобно и неэффективно, поскольку среда облачная. Поэтому мы настоятельно рекомендуем использовать следующий код, чтобы настроить доступ к вашему Google Диску. Сохраните его и используйте в каждом новом «notebook».
Этот код запустит процесс подключения к вашему Google Диску. Если у вас ещё нет доступа, система попросит вас подтвердить свою личность. В зависимости от настроек безопасности, может понадобиться ввод кода, отправленного на мобильный телефон. Просто следуйте инструкциям, и в итоге у вас появится папка с названием «drive».
Открыв эту папку, вы увидите «My Drive» — это ваш Google Диск (Рис.10). Здесь будут отображаться все ваши данные, и вы сможете использовать их в своём коде.
Что ещё может быть полезным в «GoogleColab»?
Например, давайте посмотрим на иконку в виде фигурных скобок.
Нажав на неё, мы получим данные о тех переменных, которые наш блокнот уже видит, и о тех, которые были присвоены или запущены. Мы можем их просмотреть и вернуться обратно в нашу вычислительную среду.
У нас также есть режим «Среда выполнения», где мы можем перезапускать сеанс, если что-то зависло (Рис.13). Такая ситуация бывает крайне редко, и в основном это даже не проблема вашего кода или «Colab», а проблема интернета. Когда возникают проблемы с интернетом, бывает, что код зависает. Тогда мы перезапускаем сеанс, но нужно помнить, что при этом необходимо будет заново выполнить все кодовые ячейки, иначе мы не увидим те переменные, которые использовались ранее.
Нажав на кнопку «Сменить среду выполнения», мы увидим, что наши блокноты работают с Python 3 версии.
Здесь есть возможность переключиться на язык «R», если это необходимо. Также мы можем увидеть, какие аппаратные ускорители используются. Сейчас, например, по умолчанию используется центральный процессор, но можно переключиться на графический процессор T4 или даже на более мощные, которые активируются при наличии платных подписок. Эти процессоры очень мощные и предназначены для сложных вычислений, которые в учебном процессе, скорее всего, не понадобятся.
Что ещё можно делать в блокноте?
Прежде всего, можно писать и запускать различный код, в том числе визуализировать данные и строить графики.
Мы можем работать с текстом: создавать текстовые ячейки, делать заголовки, писать простой текст и добавлять вставки кода (Рис.18).
Вставленный код будет выделяться серым цветом, чтобы его можно было визуально отличить от основного текста. Также можно вставлять изображения и выполнять различные графические процедуры. В «Colab» поддерживается ряд команд из «HTML», что позволяет создавать графику любого уровня, если это потребуется.
Для создания новой ячейки можно нажать на кнопку «+Код»-создастся кодовая ячейка
или «+Текст»-создастся текстовая ячейка
Ещё один способ создания — это навести курсор на границу между двумя ячейками и добавить новую кодовую или текстовую ячейку. В «GoogleColab» каждый элемент в виде текста или кода называется ячейкой нашего блокнота.
Ячейки можно создавать в любом количестве, и удалять при необходимости.
Для редактирования ячейки нужно дважды кликнуть по ней. Чтобы выйти из режима редактирования, нужно нажать на значок перечёркнутого карандаша
а для повторного входа в режим редактирования — на значок обычного карандаша.
Как сделать копию блокнота?
Кроме того, очень важно иметь возможность создания копий блокнотов. Когда вы получили ссылку на блокнот от преподавателя, коллег или нашли её в интернете, вы всегда сможете сделать копию этого блокнота у себя на Google Диске. Обычно в правом верхнем углу появляется кнопка «Сохранить на диск». Но если по каким-то причинам «GoogleColab» не распознал, что вы просматриваете чужой блокнот, вы можете сделать это принудительно. Для этого зайдите в меню «Файл» и выберите опцию «Сохранить копию на Диске».
Процесс сохранения запустится (Рис.27).
И у вас появится копия блокнота с названием «Копия блокнота», после чего можно переименовать её, как вам удобно, дважды щёлкнув по названию.
Как делиться блокнотом?
Чтобы поделиться блокнотом, нажмите кнопку «Поделиться» в правом верхнем углу. В появившемся окне вы сможете выбрать, как хотите поделиться блокнотом. По умолчанию доступ к новым блокнотам ограничен (Рис.29).
Но вы можете выбрать опцию «Все, у кого есть ссылка», скопировать ссылку
и не забыть нажать кнопку «Готово».
Это сохранит выбранный уровень доступа, позволяя другим пользователям получить доступ к вашему блокноту по ссылке.
Перед отправкой ссылки на свой блокнот убедитесь, что он сохранён в облаке. Поскольку работа происходит удалённо, иногда могут возникать проблемы с интернетом. Для сохранения блокнота нажмите на клавиатуре комбинацию «Ctrl+S». В левом нижнем углу экрана появится процесс сохранения.
И после его завершения вы увидите сообщение «Сохранено» (Рис.33).
Теперь вы можете быть уверены, что текущее состояние блокнота сохранено, и те, кто получат ссылку, будут работать именно с этой версией.
Более того, если после отправки ссылки вы внесёте в блокнот какие-то изменения и сохраните их, пользователи, получившие ссылку, будут иметь доступ уже к обновлённой версии блокнота, благодаря технологии облачного хранения.
Чтобы закрепить полученные знания, давайте пройдём по ссылке, находящейся в текстовой ячейке блокнота.
Как видите, текстовые ячейки поддерживают ссылки, что очень удобно.
Познакомимся с генетическими алгоритмами, использующимися в машинном обучении, и для которых «Colab» прекрасно подходит. Вы видите образец блокнота в «Colab» (Рис.35). Когда вы открыли блокнот, появилась кнопка «Копировать на диск». Нажмите её, и процесс копирования начнётся. После его завершения вы окажетесь во вкладке, которая будет называться «Копия блокнота» (Рис.36, 37). Так как браузер не смог открыть страницу, это нужно сделать вручную.
Рис.35
Рис.36
Рис.37
Мы можем вносить те изменения, которые будут гарантированно сохранены, только когда мы копируем чей-то блокнот. Часто новички, которые используют «GoogleColab», получают чью-то ссылку, дополняют её каким-то кодом. Код исполняется, результат получен, блокнот закрыт. Но поскольку этот блокнот был чужой и права на запись у них не было, ничего не сохранится. Поэтому, если вы работаете с чужими блокнотами, сначала сохраните их себе, чтобы они стали вашими. Тогда система будет воспринимать вас как владельца этого блокнота.
Что же такое генетический алгоритм?
Генетические алгоритмы были придуманы Джоном Холландом. Это алгоритмы оптимизации и поиска различных решений, которые были вдохновлены процессом естественного отбора и биологической эволюцией. Мы видим, что можно вставить фотографию, текст, выделить текст жирным шрифтом (Рис.38, Рис.39).
Рис.38
Рис.39
В середине XX века, когда компьютеры начали активно развиваться, стало очевидно, что задачи машинного обучения выходят на передний план. Появилось множество различных направлений, и одним из таких направлений стало копирование генетических процессов с точки зрения алгоритмов машинного обучения. Основная идея, предложенная Холландом, заключалась в том, что если мы возьмём любую задачу и преобразуем её в эволюционную, то есть определим в этой задаче популяцию и целевую функцию — то, чего мы хотим достичь, — и добавим алгоритмически такие процессы, как отбор, случайная мутация и сохранение лучших признаков от нескольких элементов для генерируемых потомков, то мы, по сути, сможем решать практически любую задачу.
Здесь вам приведён код на Python, который вы можете запустить и, собственно, посмотреть, как работает генетический алгоритм (Рис.40, 41, 42, 43, 44).
Рис.40
Рис.41
Рис.42
Рис.43
Рис.44
Ваше домашнее задание — разобрать этот код и предложить свои дополнения, улучшения или изменения. По крайней мере, попробуйте использовать его с другими предложениями. Этот код принимает целевое предложение и, генерируя случайным образом строки, на каждом этапе проводит скрещивание и мутацию, достигая целевой строки на определённом цикле, то есть целевого состояния.
Давайте запустим его и посмотрим, как это происходит. Код представлен достаточно подробно, каждая строчка прокомментирована, и у тех, кто хоть немного знаком с Python, не должно возникнуть проблем. Анализируя происходящее, мы сгенерировали некоторую строку, сравнили её с целевой строкой и начали вносить изменения, уменьшая каждый раз отклонение (Рис. 45).
Рис.45
Иногда несколько циклов проходит без позитивных изменений, а иногда они происходят на каждом шаге (Рис.46, 47).
Рис.46
Рис.47
Тем не менее в рамках генетического алгоритма мы доходим до нашего целевого состояния (Рис.48). Как видите, самое сложное — это угадать последнюю букву. Теперь у нас целевая строка достигнута. Нам потребовалось 229 поколений или 229 циклов обучения.
Рис.48
В чем же суть генетических алгоритмов и для чего их используют?
Прежде всего, генетические алгоритмы позволяют решать задачи, к которым мы даже не знаем, как подступиться, поскольку они основываются, в том числе, на случайных процессах. По сути, мы делаем шаг в определённом направлении и оцениваем, насколько этот шаг приблизил нас к целевому состоянию. Если шаг не привёл к улучшению, мы возвращаемся и пробуем двигаться в другом направлении. Таким образом, мы постепенно находим путь, который позволит достичь желаемого результата.
Генетические алгоритмы особенно полезны при работе с зашумленными или неполными данными. Они очень гибкие, но имеют и свои ограничения.
Во-первых, нет гарантии, что генетический алгоритм найдёт оптимальное решение; он может обнаружить одно из множества возможных решений.
Во-вторых, неизвестно, сколько времени потребуется на нахождение решения, поскольку алгоритм основан на случайных процессах. В отличие от традиционных алгоритмов машинного обучения, которые обычно решают задачу за фиксированное количество итераций, генетические алгоритмы могут требовать различное число шагов.
Тем не менее генетические алгоритмы применяются практически во всех экономически значимых областях: в экономике, робототехнике, нейронных сетях, медицине, финансах, производстве и многих других. Трудно найти область, где данные не преобразовывались и не обрабатывались, или где генетические алгоритмы не могли бы быть полезны, включая беспроводные сети.
В машинном обучении генетические алгоритмы используются для оптимизации существующих алгоритмов.
Также они находят применение в распознавании изображений, инженерном дизайне, маршрутизации трафика, поставках и многих других задачах.
В этом уроке был представлен обзор генетических алгоритмов, чтобы вы поняли принцип их работы и смогли разобраться с простым примером кода на Python, реализующим концепцию генетического алгоритма.