Skip to content

Знакомство и работа с 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» выглядит следующим образом:

img.png

Что здесь можно увидеть?

Прежде всего, каждый блокнот может иметь своё название. Вы можете задать любое название по вашему усмотрению. Также в «notebook» доступны два типа ячеек: кодовая ячейка и текстовая ячейка.

img_1.png

Текстовая ячейка предназначена для написания текста, формул, вставки изображений, комментариев и всего, что вам нужно для объяснения кода или данных. Кодовая ячейка используется для написания и выполнения кода на Python. Например, вы можете написать «Привет, мир!», нажать «Исполнить», и получить соответствующий результат.

img_2.png

Теперь давайте посмотрим на левое меню. Оно содержит несколько полезных инструментов. Особенно важна «папка» для работы с файлами.

img_3.png

Для загрузки файла с вашего компьютера достаточно нажать на соответствующую кнопку.

img_4.png

Это откроет доступ к вашим данным,

img_5.png

и вы сможете загрузить файл в «Colab».

img_6.png

Однако каждый раз загружать данные с локальной машины может быть неудобно и неэффективно, поскольку среда облачная. Поэтому мы настоятельно рекомендуем использовать следующий код, чтобы настроить доступ к вашему Google Диску. Сохраните его и используйте в каждом новом «notebook».

img_7.png

Этот код запустит процесс подключения к вашему Google Диску. Если у вас ещё нет доступа, система попросит вас подтвердить свою личность. В зависимости от настроек безопасности, может понадобиться ввод кода, отправленного на мобильный телефон. Просто следуйте инструкциям, и в итоге у вас появится папка с названием «drive».

img_8.png

Открыв эту папку, вы увидите «My Drive» — это ваш Google Диск (Рис.10). Здесь будут отображаться все ваши данные, и вы сможете использовать их в своём коде.

img_9.png

Что ещё может быть полезным в «GoogleColab»?

Например, давайте посмотрим на иконку в виде фигурных скобок.

img_10.png

Нажав на неё, мы получим данные о тех переменных, которые наш блокнот уже видит, и о тех, которые были присвоены или запущены. Мы можем их просмотреть и вернуться обратно в нашу вычислительную среду.

img_11.png

У нас также есть режим «Среда выполнения», где мы можем перезапускать сеанс, если что-то зависло (Рис.13). Такая ситуация бывает крайне редко, и в основном это даже не проблема вашего кода или «Colab», а проблема интернета. Когда возникают проблемы с интернетом, бывает, что код зависает. Тогда мы перезапускаем сеанс, но нужно помнить, что при этом необходимо будет заново выполнить все кодовые ячейки, иначе мы не увидим те переменные, которые использовались ранее.

img_12.png

Нажав на кнопку «Сменить среду выполнения», мы увидим, что наши блокноты работают с Python 3 версии.

img_13.png

img_14.png

Здесь есть возможность переключиться на язык «R», если это необходимо. Также мы можем увидеть, какие аппаратные ускорители используются. Сейчас, например, по умолчанию используется центральный процессор, но можно переключиться на графический процессор T4 или даже на более мощные, которые активируются при наличии платных подписок. Эти процессоры очень мощные и предназначены для сложных вычислений, которые в учебном процессе, скорее всего, не понадобятся.

img_15.png

Что ещё можно делать в блокноте?

Прежде всего, можно писать и запускать различный код, в том числе визуализировать данные и строить графики.

img_16.png

Мы можем работать с текстом: создавать текстовые ячейки, делать заголовки, писать простой текст и добавлять вставки кода (Рис.18).

img_17.png

Вставленный код будет выделяться серым цветом, чтобы его можно было визуально отличить от основного текста. Также можно вставлять изображения и выполнять различные графические процедуры. В «Colab» поддерживается ряд команд из «HTML», что позволяет создавать графику любого уровня, если это потребуется.

img_18.png

Для создания новой ячейки можно нажать на кнопку «+Код»-создастся кодовая ячейка

img_19.png

или «+Текст»-создастся текстовая ячейка

img_20.png

Ещё один способ создания — это навести курсор на границу между двумя ячейками и добавить новую кодовую или текстовую ячейку. В «GoogleColab» каждый элемент в виде текста или кода называется ячейкой нашего блокнота.

img_21.png

Ячейки можно создавать в любом количестве, и удалять при необходимости.

img_22.png

Для редактирования ячейки нужно дважды кликнуть по ней. Чтобы выйти из режима редактирования, нужно нажать на значок перечёркнутого карандаша

img_23.png

а для повторного входа в режим редактирования — на значок обычного карандаша.

img_24.png

Как сделать копию блокнота?

Кроме того, очень важно иметь возможность создания копий блокнотов. Когда вы получили ссылку на блокнот от преподавателя, коллег или нашли её в интернете, вы всегда сможете сделать копию этого блокнота у себя на Google Диске. Обычно в правом верхнем углу появляется кнопка «Сохранить на диск». Но если по каким-то причинам «GoogleColab» не распознал, что вы просматриваете чужой блокнот, вы можете сделать это принудительно. Для этого зайдите в меню «Файл» и выберите опцию «Сохранить копию на Диске».

img_25.png

Процесс сохранения запустится (Рис.27).

img_26.png

И у вас появится копия блокнота с названием «Копия блокнота», после чего можно переименовать её, как вам удобно, дважды щёлкнув по названию.

img_27.png

Как делиться блокнотом?

Чтобы поделиться блокнотом, нажмите кнопку «Поделиться» в правом верхнем углу. В появившемся окне вы сможете выбрать, как хотите поделиться блокнотом. По умолчанию доступ к новым блокнотам ограничен (Рис.29).

img_28.png

Но вы можете выбрать опцию «Все, у кого есть ссылка», скопировать ссылку

img_29.png

и не забыть нажать кнопку «Готово».

img_30.png

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

Перед отправкой ссылки на свой блокнот убедитесь, что он сохранён в облаке. Поскольку работа происходит удалённо, иногда могут возникать проблемы с интернетом. Для сохранения блокнота нажмите на клавиатуре комбинацию «Ctrl+S». В левом нижнем углу экрана появится процесс сохранения.

img_31.png

И после его завершения вы увидите сообщение «Сохранено» (Рис.33).

img_32.png

Теперь вы можете быть уверены, что текущее состояние блокнота сохранено, и те, кто получат ссылку, будут работать именно с этой версией.

Более того, если после отправки ссылки вы внесёте в блокнот какие-то изменения и сохраните их, пользователи, получившие ссылку, будут иметь доступ уже к обновлённой версии блокнота, благодаря технологии облачного хранения.

Чтобы закрепить полученные знания, давайте пройдём по ссылке, находящейся в текстовой ячейке блокнота.

img_33.png

Как видите, текстовые ячейки поддерживают ссылки, что очень удобно.

Познакомимся с генетическими алгоритмами, использующимися в машинном обучении, и для которых «Colab» прекрасно подходит. Вы видите образец блокнота в «Colab» (Рис.35). Когда вы открыли блокнот, появилась кнопка «Копировать на диск». Нажмите её, и процесс копирования начнётся. После его завершения вы окажетесь во вкладке, которая будет называться «Копия блокнота» (Рис.36, 37). Так как браузер не смог открыть страницу, это нужно сделать вручную.

img_34.png Рис.35

img_35.png Рис.36

img_36.png Рис.37

Мы можем вносить те изменения, которые будут гарантированно сохранены, только когда мы копируем чей-то блокнот. Часто новички, которые используют «GoogleColab», получают чью-то ссылку, дополняют её каким-то кодом. Код исполняется, результат получен, блокнот закрыт. Но поскольку этот блокнот был чужой и права на запись у них не было, ничего не сохранится. Поэтому, если вы работаете с чужими блокнотами, сначала сохраните их себе, чтобы они стали вашими. Тогда система будет воспринимать вас как владельца этого блокнота.

Что же такое генетический алгоритм?

Генетические алгоритмы были придуманы Джоном Холландом. Это алгоритмы оптимизации и поиска различных решений, которые были вдохновлены процессом естественного отбора и биологической эволюцией. Мы видим, что можно вставить фотографию, текст, выделить текст жирным шрифтом (Рис.38, Рис.39).

img_37.png Рис.38

img_38.png Рис.39

В середине XX века, когда компьютеры начали активно развиваться, стало очевидно, что задачи машинного обучения выходят на передний план. Появилось множество различных направлений, и одним из таких направлений стало копирование генетических процессов с точки зрения алгоритмов машинного обучения. Основная идея, предложенная Холландом, заключалась в том, что если мы возьмём любую задачу и преобразуем её в эволюционную, то есть определим в этой задаче популяцию и целевую функцию — то, чего мы хотим достичь, — и добавим алгоритмически такие процессы, как отбор, случайная мутация и сохранение лучших признаков от нескольких элементов для генерируемых потомков, то мы, по сути, сможем решать практически любую задачу.

Здесь вам приведён код на Python, который вы можете запустить и, собственно, посмотреть, как работает генетический алгоритм (Рис.40, 41, 42, 43, 44).

img_39.png Рис.40

img_40.png Рис.41

img_41.png Рис.42

img_42.png Рис.43

img_43.png Рис.44

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

Давайте запустим его и посмотрим, как это происходит. Код представлен достаточно подробно, каждая строчка прокомментирована, и у тех, кто хоть немного знаком с Python, не должно возникнуть проблем. Анализируя происходящее, мы сгенерировали некоторую строку, сравнили её с целевой строкой и начали вносить изменения, уменьшая каждый раз отклонение (Рис. 45).

img_44.png Рис.45

Иногда несколько циклов проходит без позитивных изменений, а иногда они происходят на каждом шаге (Рис.46, 47).

img_45.png Рис.46

img_46.png Рис.47

Тем не менее в рамках генетического алгоритма мы доходим до нашего целевого состояния (Рис.48). Как видите, самое сложное — это угадать последнюю букву. Теперь у нас целевая строка достигнута. Нам потребовалось 229 поколений или 229 циклов обучения.

img_47.png Рис.48

В чем же суть генетических алгоритмов и для чего их используют?

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

Генетические алгоритмы особенно полезны при работе с зашумленными или неполными данными. Они очень гибкие, но имеют и свои ограничения.

Во-первых, нет гарантии, что генетический алгоритм найдёт оптимальное решение; он может обнаружить одно из множества возможных решений.

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

Тем не менее генетические алгоритмы применяются практически во всех экономически значимых областях: в экономике, робототехнике, нейронных сетях, медицине, финансах, производстве и многих других. Трудно найти область, где данные не преобразовывались и не обрабатывались, или где генетические алгоритмы не могли бы быть полезны, включая беспроводные сети.

В машинном обучении генетические алгоритмы используются для оптимизации существующих алгоритмов.

Также они находят применение в распознавании изображений, инженерном дизайне, маршрутизации трафика, поставках и многих других задачах.

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

Contacts: teffal@mail.ru