Введение в TensorFlow: начало работы с машинным обучением 丨 Google Developers Conference 2018

Google машинное обучение TensorFlow программист

Google Developer Days (GDD) – это глобальное мероприятие, на котором демонстрируются новейшие продукты и платформы Google для разработчиков, призванные помочь вам быстро разрабатывать высококачественные приложения, расширять и сохранять активную пользовательскую базу, а также использовать инструменты для получения большего дохода. Конференция разработчиков Google 2018 прошла в Шанхае 20 и 21 сентября. ?Конференция разработчиков Google, 2018 г., самородки

20 сентября 2018 г. Лоуренс Морони (инженер по продвижению технологий Google для разработчиков) и Фу Ичжэнь (инженер-программист Google Brain) выступили с речью «Введение в TensorFlow: введение в технологию машинного обучения». В этой статье будет сделан обзор речи.

Машинное обучение против традиционного программирования

TensorFlow — это программная библиотека с открытым исходным кодом для числовых вычислений с использованием графов потоков данных. Узлы (Nodes) представляют собой математические операции в графе, а линии (ребра) в графе представляют многомерные массивы данных, то есть тензоры, которые связаны между собой между узлами. Его гибкая архитектура позволяет выполнять вычисления на различных платформах, таких как один или несколько процессоров (или графических процессоров) в настольных компьютерах, серверах, мобильных устройствах и т. д. Первоначально TensorFlow был разработан исследователями и инженерами из группы Google Brain (часть Исследовательского института машинного интеллекта Google) для исследований в области машинного обучения и глубоких нейронных сетей, но универсальность системы делает ее широко доступной и для других вычислений.

Лоуренс Морони описывает пережитую им трансформацию:

  • Веб-революция С точки зрения программиста, Интернет изменил все. Через Интернет программисты могут писать программы, которые охватывают сотни миллионов пользователей. Это изменение привело к появлению новых бизнес-моделей, таких как Google, Baidu, Taobao и т. д.
  • Смартфоны также произвели революцию, как и коммерческий опыт, такой как Didi и Uber.
  • Мы стоим перед следующей революцией, революцией машинного обучения.

Как показано на диаграмме выше, Лоуренс Морони рассматривает ИИ как нечто среднее между триггером технологического развития и пиком завышенных ожиданий.

Сцена приложения обнаружения движения

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

  • скорость
  • 4
  • скорость > 12 определяется как езда на велосипеде.

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

традиционное программированиеЭто установить правила и данные, чтобы дать ответ. Правила написаны на таких языках, как Java, Python и C++, и после ввода некоторых данных они упаковываются и компилируются в программу, и дается ответ.Так реализовано простое приложение обнаружения движения.

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

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

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

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

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

Практика Кодекса (преподает Фу И Аллах)

отношения между числами

Ниже два столбца чисел,XиYМежду ними есть отношения. Числа даются машине, и ожидается, что машина будет учиться подобно человеческому мозгу, тем самым определяя взаимосвязь между числами.
Студенты с определенной математической базой должны быть в состоянии датьXиYОтношения между:2x - 1 = y. После того, как мы увидим эти числа, мозг попытается найти какие-то правила, использовать имеющийся у нас математический опыт, сделать догадки, и результат проверки догадки окажется верным, вот мы и получим это уравнение. Так как же это можно сделать с помощью машинного обучения?

from tensorflow import keras
import numpy as np

model = keras.Sequential([keras.layers.Dense(units = 1, input_shape = [1])])
model.compile(optimizer = 'sgd', loss = 'mean_squared_error')

xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype = float)
ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype = float)

model.fit(xs, ys, epochs = 500)

print(model.predict([10.0]))

Результат выглядит следующим образом:

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

Определите различную одежду

На картинке выше 8 разных видов одежды, так как мы, люди, можем различать тип каждой одежды. Может ли это сделать машина?

Fashion-MNIST — это набор данных изображений, который заменяет набор рукописных цифр MNIST. Он предоставляется исследовательским подразделением Zalando, немецкой компании, занимающейся технологиями моды. Он охватывает в общей сложности 70 000 различных изображений лицевой стороны продукта из 10 категорий. Размер, формат и разделение обучения/тестирования Fashion-MNIST точно такие же, как и у оригинального MNIST. Разделение обучающих и тестовых данных 60000/10000, изображения в градациях серого 28x28.

пройти черезFashion-MNISTНабор данных, нашу модель можно обучать и постоянно оптимизировать, тем самым повышая точность распознавания.

import tensorflow as tf
from tensorflow import keras
import numpy as np

# Import the Data
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, teat_labels) = fashion_mnist.load_data()

# Normalize the data 
train_images = train_images / 255.0
test_images = test_images / 255.0

#Define the model
model = keras.Sequential([
    keras.layers.Flatten(inport_shape = (28,28)),
    keras.layers.Dense(128, activation = tf.nn.relu),
    keras.layers.Dense(10, activation = tf.nn.softmax),
])

model.compile(oprimizer = tf.train.AdadeltaOptimizer(),loss = 'sparse_categorical_crossentropy',metrics=['accuracy'])

#Train the model
model.fit(train_images, train_labels, epochs = 5, verbose = 2)

predictions = model.predict(test_images)

print(test_images[4560])
print(np.argmax(predictions[4560]))

Результаты приведены ниже:

При установке 5 итераций вероятность успеха этой модели составляет 71%. Нейронные сети можно больше обучать, тем самым повышая их точность.

Выше приведено все содержание этого выступления, надеюсь, оно будет вам полезно. Узнайте больше о технических материалах Google Developers Conference 2018