Евгений Сергеевич Штольц

Machine learning – от модели PyTorch до Kubeflow в облаке для BigData


Скачать книгу

енных сетей. Демонстрируется использование в своих сетях уже обученных слов.

      * Масштабирование ML. Приводится примеры подготовки окружения для запуска их в облачной инфраструктуре.

      * Получение данных от BigData. Рассказывается как можно из Jupyter подключаться к различным источникам

      данных, в том числе BigData, для обучения моделей.

      * Подготовка больших данных. В этом разделе описываются BigData технологии, такие как Hadoop и Spark, которые

      являются источниками данных для обучения моделей.

      * ML в промышленной среде. В этом разделе рассказываются о таких системах, как Kubeflow и MLflow.

      Введение Machine learning

      Искусственный интеллект область на стыке многих наук. Один из способов его достичь – машинное обучение, когда мы подаём него данных и на их основе происходит обучение нахождению решений и выявление закономерностей и данных, ранее которых не было. Для обучения могут использоваться статистические алгоритмы, например, на языке R, поиск в глубину на языке Prolog или поиск в ширину на Refal, а также подстраивающиеся структуры – нейронные сети. Нейронные сети, в зависимости от задач, скроются по разным принципам, имеют структуру и по разному обучаются. В последнее время наибольший прорыв получили нейронные сети представления данных (Representation learning), занимающиеся выявлении в информации закономерностей, так как саму информацию из-за её размеров они не могут запомнить. Больших эфект дают глубокие нейронные сети, имеющие множество уровней признаков, признаки на последующих уровнях строются на основании признаков с предыдущих уровней, о них и пойдёт речь в этой главе.

      Под машинным обучением (Machine learning, ML) понимается адаптация преобразования входных данных в выходные в зависимости от истории решений. Такой класс задач решается или алгоритмическим способом, или с помощью нейронных сетей, о том где какое решение и в какой ситуации лучше применять далее и пойдёт речь. Для примера возьмём прописные числа от нуля до девяти, которые мы будет сопоставлять с печатными. Если прописные точно попадают в контур – то всё просто, нам нужно просто перебрать контура печатных и получить подходящий вариант. Такая задача не относится задачам машинного обучения. Теперь усложним задача – числа у нас не точно попадают под шаблон. Если прописные числа немного не вписываются в контур – мы просто находим какое-то отклонение. И тут возникает сложность при категоризации прописного числа на ноль и девятку, когда размер хвостика отделяет небрежное написание нуля от девятки. Другой момент в катогоризации восьмёрки и девятки. Так, если кончик отгибается – это десятка, а если загибается и прикасается – то восьмёрка. Для решения подобной ситуации нужно разделить цифру на области и в зависимости и присвоить им разные коэффициенты. Так, соединение хвостика нижней части имеет очень высокое значение, нежели форма самих окружностей в классификации на восьмёрки и девятки. Определить помогут статистические данные по заранее данной выборки соответствия фигур восьмёркам и девяткам, где исследователь сможет определить, когда уже можно высчитать нижнее кольцо замкнутым и говорить об соответствии восьмёрке фигуры, а когда нет и говорить о соответствии девятке. Но мы может программным способом разделить цифры на сектора и присвоить им коэффициенты.

      Другой сложностью может быть то, что цифра может быть не в наблюдаемой области, а в произвольной, например, в углу. Для анализа самой цифры нам нужно переместить анализирующее окно в то место, где находится цифра. Для простоты пока будем полагать, что габариты анализирующего окна равны габаритам исследуемой цифры. Для решения этой задачи перед сетью ставят анализирующий слой, образующий карту нахождения цифры. Задача этого слоя определить местоположение цифры на картинке. Для простоты возьмём чёрный изображение на белом листе. Нам нужно пройтись анализатором цифры построчно по всему листку и определить местоположения. В качестве индикатора возьмём площадь чёрного цвета на индикаторе. После прохождения по листку бумаги и определения площади мы получим матрицу с цифрами площадей чёрного цвета. Где площадей чёрного цвета больше – в том месте цифра максимально вписалась в индикатор. Преобразование картинки в матрицу площадей называется операцией свёртки, а если это выполняет нейронный слой – свёрточный слой. Нейронные сети, в которых присутствует свёрточный слой (Conv Layers) называются свёрточными нейронными сетями (Convolutional Neural Network, CNN). Такие сети используют при распознавании изображения, ныне их адаптировали для распознования речи. Принцип работы был позаимствован у биологического зрительного нерва.

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