Заточка топора: понимание цепочки инструментов машинного обучения, чтобы вы могли начать обучение.

Вы заинтересованы в том, чтобы начать работу с машинным обучением в радиологии? Созвездие новых терминов может быть огромным: Deep Learning, TensorFlow, Scikit-Learn, Keras, Pandas, Python и Anaconda. Перед тем, как приступить к работе, нужно получить огромное количество новой информации.

Лично я хочу иметь возможность использовать возможности машинного обучения (ML) в некоторых моих приложениях для iOS, а также на платформе Apple CoreML. Это означает еще один набор сложностей, с которыми нужно ориентироваться, прежде чем вы действительно сможете приступить к работе. Как только мы настроим наши инструменты правильно, работа станет проще.

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

В Интернете есть огромное количество ресурсов, а также книг, которые помогут вам начать работу (работа для другого поста). Посмотрим, что нам нужно сделать, чтобы сделать первые шаги.

Фото Malte Wingen на Unsplash

«Дайте мне шесть часов, чтобы срубить дерево, а первые четыре я потрачу на то, чтобы точить топор».

- Авраам Линкольн (вероятно, никогда не говорил этого)

Давай поговорим

Самый распространенный язык разработки для машинного обучения - Python. Если вы не знаете Python, многие ресурсы для начинающих машинного обучения начинаются с кратких вступлений к Python.

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

Первое, что вам нужно сделать, это загрузить Python и необходимые инструменты Python для машинного обучения.

Здравствуйте, Unix

Нам нужно использовать интерфейс командной строки для установки и управления нашими инструментами Python.

Достаточно bash, чтобы быть опасным:

В Linux или Mac мы используем Терминал. Вы можете найти программу в Finder ›Приложения› Утилиты ›Терминал.

В Windows мы используем командную строку. Щелкните значок Windows ›Система Windows› Командная строка или щелкните значок Windows и введите cmd.

Перед курсором вы видите строку текста, которая относится к:
machinename: имя пользователя каталога $

Вы печатаете после знака доллара.

Вот несколько общих команд:

Список файлов в текущем каталоге: ls
Показать также скрытые файлы: ls -a
Перейти в новый каталог: cd <directory_path>
Чтобы перейти в домашний каталог: cd ~ или просто введите: cd
Перейти на один уровень вверх: cd ..
Чтобы перейти к последней папке, в которой вы были: cd -

Чтобы показать текущий рабочий каталог: pwd

Стрелка вверх повторно вводит последнюю команду. Вы можете вернуться к предыдущим командам, снова нажав стрелку вверх.

Очистить окно: clear

Откройте файл в текстовом редакторе, например: atom <filename>

Для отмены приложения (например, ping) Ctrl-C

Python

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

В настоящее время доступны две отдельные версии Python: Python 2.7 и Python 3. Срок службы Python 2.7 истечет 1 января 2020 года, а Python 3.x не имеет обратной совместимости. Так зачем вам использовать старую версию? К сожалению, некоторые из фреймворков поддерживают только 2.7, и многие учебники в книгах и в Интернете были написаны специально для этой версии. Как мы с этим справляемся?

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

Существует несколько способов управления различными виртуальными средами Python с помощью virtualenv, Python Environment Wrapper (pew), venv, pyvenv. Самый простой - использовать Conda, которая устанавливается вместе с Python при использовании Anaconda.

Анаконда

Anaconda - это платформа с открытым исходным кодом, которая, возможно, является самым простым способом начать работу с машинным обучением Python в Linux, Mac OS X и Windows. Он помогает вам управлять средой программирования и включает стандартные пакеты Python, используемые в науке о данных. Вы можете скачать дистрибутив для своей платформы по адресу https://www.anaconda.com/distribution/.

После того, как вы установите соответствующую версию Python для своей системы, вам нужно будет настроить некоторые среды.

Конда

Conda - это менеджер пакетов Python и система управления средой, используемая Anaconda. Conda устанавливает большинство, но не все необходимые пакеты. Остальное можно установить через командную строку с помощью pip— подробнее об этом позже.

Чтобы увидеть пакеты в вашей текущей среде:

conda list env

Какая версия Conda у вас установлена:

conda -version

(если ниже 4.1.0 - то вы можете обновить Conda с помощью conda update conda)

Вы можете создать среду с помощью Anaconda Navigator, выбрав «Среды» в левом меню и нажав кнопку «Создать».

Вы также можете создать среду из командной строки. Например, здесь мы создаем среду с именем «py27», используя Python 2.7:

conda create -n py27 python=2.7

Чтобы активировать среду:

conda activate <your_env_name>

Чтобы деактивировать текущую среду:

conda deactivate

Чтобы удалить среду:

conda remove -name <your_env_name> -all

Чтобы перечислить все ваши среды Conda:

conda info --envs

Среда, отмеченная звездочкой, - это текущая активная среда.

Чтобы увидеть пакеты в вашей текущей среде:

conda list env

Какая версия Conda у вас установлена:

conda -version

(если ниже 4.1.0 - то вы можете обновить Conda с помощью conda update conda)

Два основных пакета машинного обучения TensorFlow и Keras следует устанавливать с использованием pip. Для систем машинного обучения Apple также необходимо установить Turi Create.

Научный набор

Существует набор пакетов Python, называемых научным стеком, которые полезны во многих дисциплинах. К ним относятся:

NumPy http://www.numpy.org/ - библиотека для эффективной работы с массивами и матрицами
SciPy https: //www.scipy. org / - набор пакетов с математическими и научными возможностями
matplatlib https://matplotlib.org/ - стандартная библиотека 2D-построения на Python
pandas https://pandas.pydata.org/ - библиотека матричных структур данных, помеченных индексов, функций времени и т. д.
Scikit-learn https: //scikit-learn.org/stable/ - библиотека алгоритмов машинного обучения
Jupyter https://jupyter.org/ - интерактивная оболочка Python в веб-блокноте
Seaborn https://seaborn.pydata.org/index.html - визуализация статистических данных
Боке https: // bokeh. pydata.org/en/latest/ - интерактивная визуализация данных
PyTables https://www.pytables.org/ - оболочка Python для библиотеки HDF5

Вы можете установить эти пакеты и их зависимости с помощью Anaconda. В недавно созданной среде найдите нужный пакет.

Затем вы выбираете их из списка, устанавливая флажок и нажимая «Применить».

Как я упоминал ранее, вы используете pip для установки TensorFlow и KerasTuri Create для CoreML от Apple).

пункт

pip - стандартный менеджер пакетов Python https://pypi.org/project/pip/

pip install — upgrade pip

Чтобы установить пакет с помощью pip:

pip install <package_name>

Редактирование файлов Python

Вы взаимодействуете с python в терминале на Mac или в консоли в Windows. Для написания кода большинство людей используют редактор кода, такой как Atom https://atom.io/ или Sublime Text https://www.sublimetext.com/. За редакторы кода ведутся целые религиозные войны, но жизнь для этого слишком коротка.

Мой любимый (и бесплатный) текстовый редактор - это Atom https://atom.io/ от ребят с GitHub. Интересной особенностью Atom является то, что вы можете расширить приложение такими функциями, как встроенное окно терминала.

После установки вы можете добавить эту функцию, перейдя в «Настройки» / «Установить пакеты» и выполнив поиск по запросу platformio-ide-terminal.

Запуск файлов Python

В командной строке ($ или ›) введите python <filename.py>

Для выхода из Python используйте exit()или Ctrl-D (Ctrl-Z в Windows)

Чтобы узнать, какую версию Python вы используете в настоящее время, введите:

python --version or python -V

Чтобы узнать, где находится установка Python, которую вы используете, введите:

which python

Файлы среды

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

Вы создаете файл, используя:

conda env export -file environment.yaml

Вы воссоздаете среду Conda и ее пакеты, используя:

conda env create -n <conda-env> -f environment.yaml

В некоторых проектах или учебных пособиях вы увидите файл requirements.txt, который используется pip в качестве диспетчера пакетов, а не environment.yaml, используемый Conda.

Они создаются путем замораживания среды:

pip freeze > requirements.txt

Для воссоздания используйте:

pip install -r requirements.txt

Блокноты Jupyter

Jupyter Notebook https://jupyter.org/ - это приложение на основе веб-браузера с открытым исходным кодом. Это позволяет вам запускать код Python непосредственно в более удобной для пользователя среде и шаг за шагом просматривать результаты. Он отлично подходит для обучения, поскольку вы можете добавлять текст и изображения между ячейками кода в ячейках разметки. Приложение является расширяемым, поэтому вы можете добавить много других полезных функций.

Вы также можете установить Jupyter Notebook с помощью Anaconda Navigator:

Введите следующее в приглашении для создания нового приложения Jupyter Notebook в вашем браузере:

jupyter notebook

Чтобы запустить конкретный блокнот:

jupyter notebook <notebook-name>

Кстати, не рекомендуется запускать несколько экземпляров приложения Jupyter Notebook одновременно.

Чтобы запустить ячейку, нажмите кнопку «Выполнить» на панели инструментов Jupyter или введите Shift + Enter.

Чтобы закрыть записную книжку, закройте окно терминала или введите:

jupyter notebook stop

или нажмите Ctrl + C

Хорошо, и что теперь?

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

Вот несколько ссылок, чтобы вас заинтересовали:

Машинное обучение для получения медицинских изображений https://pubs.rsna.org/doi/10.1148/rg.2017160130
Глубокое обучение: учебник для радиологов https://pubs.rsna.org/doi/10.1148/ rg.2017170077

Для более глубокого погружения вот два целых выпуска журнала, посвященных этой теме:

JACR, март 2018 г., том 15, номер 3PB, специальный выпуск «Наука о данных: большие данные, машинное обучение и искусственный интеллект»

JDI, июнь 2018, том 31, номер 3, специальный выпуск по программному обеспечению с открытым исходным кодом

Если вы еще не спите, вот несколько полезных ссылок на GitHub:

Https://github.com/ImagingInformatics/machine-learning

Https://github.com/slowvak/MachineLearningForMedicalImages

Приступим!

Действительно потрясающее введение можно найти в упомянутом выше журнале Digital Imaging, июнь 2018 г .:

Hello World Deep Learning in Medical Imaging JDI (2018) 31: 283–289 Лакхани, Парас, Грей, Дэниел Л., Петт, Карл Р., Надь, Пол, Ши, Джордж

Вместо создания прототипа классификатора Cat v. Dog, вы создаете рентгеновский классификатор груди v. Живота (CXR v. KUB)! Это отличное место для начала вашего пути к искусственному интеллекту.

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

Удачи!