Введение: Разговор с Эндрю Нг (исследователь и преподаватель искусственного интеллекта Femouse) и Лоуренсом Морони (инструктор курса)
Мы изучаем TensorFlow. Фреймворк глубокого обучения для реализации алгоритмов глубокого обучения и машинного обучения с использованием последовательного API Keres. Алгоритмы обучения сложны для написания программы на основах языков программирования, но с помощью Framework, построенного поверх этих основ, мы можем легко написать реализацию алгоритмов обучения и легко протестировать их производительность.
В нем мы узнаем, как эффективно использовать TensorFlow для реализации сложных алгоритмов машинного и глубокого обучения.
Лоуренс Морони: он является защитником разработчиков в Google и работает над Google AI и TensorFlow. Он также написал около 30 книг по программированию, включая научно-фантастические романы. машинное обучение и глубокое обучение с помощью нейронных сетей. Машинное и глубокое обучение или универсальный искусственный интеллект (ИИ) заключается в том, что технические вещи больше не являются техническими, они ограничиваются только индустрией программного обеспечения, но каждая отрасль может понять, что ей нужно, как автоматизировать свои задачи с использованием алгоритмов обучения.
Внедрение алгоритмов обучения в качестве разработчика предоставляет нам новую парадигму программирования с использованием таких фреймворков, как TensorFlow, Pytorch и т. д. Каковы возможности машинного обучения и искусственного интеллекта? Мы учимся, как
В чем разница между традиционными парадигмами программирования и парадигмами машинного обучения и глубокого обучения?
Как узнать функцию $f(X) = Y$ для заданного набора данных ${X = [x1, x2, …], Y = [y1, y2, …]}$
Чтобы получить блокнот курса на GitHub: DeepLearning.AI и клонируйте репозиторий на свой локальный компьютер, используя:
git clone https://github.com/deeplearning-ai/tensorflow-1-public
. Есть несколько требований для запуска кодов
- Загрузите дистрибутив anaconda, создайте среду Conda и установите следующие пакеты:
tensorflow=>2.7.0
scikit-learn
pandas
matplotlib
seaborn
numpy
Вы также можете запустить Google Collaboratory.
Основы машинного обучения
Кодирование — любимый термин разработчиков, используемый для создания приложений путем разбиения требований задач на составные задачи, которые можно закодировать.
- Приложение, которое вычисляет биржевую аналитику
- Приложение для создания игры
- Распознавание активности, такой как ходьба, бег, езда на велосипеде
Традиционные парадигмы программирования:
Парадигмы программирования машинного обучения:
Основы создания простой нейронной сети для распознавания образов. Нейронная сеть — это расширенная реализация машинного обучения, которое мы называем глубоким обучением. Машинное обучение заключается в том, чтобы заставить компьютеры изучать закономерности в этих данных и делать различия в соответствии с нашими потребностями.
Hello World
глубокого обучения с нейронными сетями
Это даст нам некоторое представление о том, как наш код будет работать в случае создания нейронной сети. для алгоритмов регрессии это изучение взаимосвязи между набором чисел, чтобы найти некоторые правила для прогнозирования любых произвольных значений.
def function(x):
y = (3 * x) + 34
return y
Q-01 : Как обучить нашу нейронную сеть, используя наши данные, чтобы она могла самостоятельно делать прогнозы на невидимых данных. например: $X = [x1, x2, …xn]$ с метками $Y = [y1, y2, y3, … yn]$ таким образом, чтобы можно было узнать взаимосвязь между $X$ и $Y$ как $Y = F(X)$.
Шаг 01: Импорт важных модулей
- Мы собираемся импортировать
tensorflow as tf
и его подмодуль под названием karas sequence API для построения нейронной сети в виде последовательности слоев:from tensorflow import keras
. - Импортируйте библиотеку числовых вычислений под названием numpy для обработки данных в виде массива, который обрабатывается только процессором, а не графическим процессором:
import numpy as np
# import all importent libraries
import tensorflow as tf
import numpy as np
from tensorflow import keras
Шаг 02: Определение и компиляция нейронной сети
- Мы собираемся создать однослойную нейронную сеть с одним нейроном, входная форма также является одним значением. Мы используем функцию
Dense(units='number of neurons', input_shap='dimension of input')
для создания слоя. - Затем представьте этот слой как последовательный, чтобы мы могли построить модель, используя функцию
Sequential()
. - Использование функции
Compile(optimizer='', loss='')
таким образом, что для ее оптимизации требуется функция стоимости с использованием функции оптимизации, называемой алгоритмами стохастического градиентного спуска.
# Build a Artificial neural layer with single neuron
# Dense() used to define a layer of connected neurons
# Here Single layer: Dense = 1
# Units = 1 Single neuron
# shape dimention = 1dim tensor
layer = keras.layers.Dense(units=1, input_shape=[1])
# to define successive layer using the sequential()
# feed the neurons layer into a sequential layer model
model = tf.keras.Sequential([layer])
# Optimizer : Stochastic Gradient Descents and Loss Function : Mean Square Errors
# Compile the model using optimizer algorith with cost function
model.compile(optimizer='sgd', loss='mean_squared_error')
Шаг 03: Предоставление набора данных в соответствующей форме
- Наша модель представляет собой регрессионную модель, поэтому она может обрабатывать данные о реальных значениях. Поэтому мы создаем массив numpy и загружаем его метками в нашу модель, чтобы узнать взаимосвязь между $X$ и $Y$.
# Create data that can be feedable into our model with it's label values
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)
Шаг 04: Обучение нашей модели нейронной сети
- Использование
fit()
для обучения связи между $X$ и $Y$
# Training of Model take place using the fit() function
# Feed data init and define how many time our training loop must run i.e epochs = "each epoch makes a guess and lean it how good or bad guess it make and again make better guess"
# it knows the correct values of our model then compare how good or bad our guess is !
model.fit(xs, ys, epochs=600)
Шаг 05: Сделать прогноз с использованием обученной модели
# After training model it will able to make prediction using predict() function
# give some random value to make prediction what model has learned
print(model.predict([10.0]))
# Print the weight associalted with layer
print("Layer variables look like this: {}".format(layer.get_weights()))
Заключение
Почему наш прогноз: 18,999971, а наше истинное значение: 19
поскольку мы обучили нашу модель, используя только ограниченные данные, поэтому она пытается изучить приблизительную функцию прогнозирования с небольшим отклонением от точного значения функции.