Введение в машинное обучение

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

Машинное обучение включает в себя шаблоны обучения, которые различают разные вещи.

Пример:

Напишите модель, чтобы узнать правила для x→y из данных:

x = [-1.0,  0.0, 1.0, 2.0, 3.0, 4.0]
y = [-3.0, -1.0, 1.0, 3.0, 5.0, 7.0]
import tensorflow as tf
import numpy as np
from tensorflow import keras

# Build a simple Sequential model
model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
# Compile the model
model.compile(optimizer='sgd', loss='mean_squared_error')
# Declare model inputs and outputs for training
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)
# Train the model
model.fit(xs, ys, epochs=500)
# Make a prediction
print(model.predict([10.0]))
# Output : [[18.980131]]

Объяснение кода:

  • Код импортирует необходимые библиотеки: TensorFlow, NumPy и Keras.
  • Последовательная модель определяется с помощью tf.keras.Sequential(), который создает линейный стек слоев.
  • Модель имеет один плотный слой с одним нейроном (units=1) и входной формой с одним значением (input_shape=[1]).
  • Модель скомпилирована с использованием стохастического градиентного спуска (optimizer='sgd') в качестве оптимизатора и среднеквадратичной ошибки (loss='mean_squared_error') в качестве функции потерь.
  • Обучающие данные объявляются с xs, представляющими входные значения, и ys, представляющими соответствующие выходные значения.
  • Модель обучается с использованием model.fit() путем предоставления входных и выходных данных (xs и ys) и указания количества эпох, равного 500.
  • После обучения модель делает прогноз для невидимого входного значения (10.0), используя model.predict().
  • Прогнозируемый вывод выводится на консоль.

Вопрос:

# Make a prediction
print(model.predict([10.0]))
**Imagine that house pricing is as easy as:
A house has a base cost of 50k, and every additional bedroom adds a cost of 50k. This will make a 1 bedroom house cost 100k, a 2 bedroom house cost 150k etc.
How would you create a neural network that learns this relationship so that it would predict a 7 bedroom house as costing close to 400k etc.
Hint: Your network might work better if you scale the house price down. You don't have to give the answer 400...it might be better to create something that predicts the number 4, and then your answer is in the 'hundreds of thousands' etc.**

Код :

import tensorflow as tf
import numpy as np

# GRADED FUNCTION: house_model
def house_model():
 ### START CODE HERE
 
 # Define input and output tensors with the values for houses with 1 up to 6 bedrooms
 # Hint: Remember to explictly set the dtype as float
 xs = np.array([0,1,2,3,4,5,6,7,8,9],dtype = float)
 ys = np.array([0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0],dtype = float)
 
 # Define your model (should be a model with 1 dense layer and 1 unit)
 model = tf.keras.Sequential([tf.keras.layers.Dense(units=1,input_shape=[1])])
 
 # Compile your model
 # Set the optimizer to Stochastic Gradient Descent
 # and use Mean Squared Error as the loss function
 model.compile(optimizer='sgd', loss='mean_squared_error')
 
 # Train your model for 1000 epochs by feeding the i/o tensors
 model.fit(xs, ys, epochs=1000)
 
 ### END CODE HERE

 return model



# Declare model inputs and outputs for training
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)


# Train the model
model.fit(xs, ys, epochs=500)


# Make a prediction
print(model.predict([10.0]))

Источник: https://www.coursera.org/learn/introduction-tensorflow/
Источник кода: https://github.com/ https-deeplearning-ai/tensorflow-1-public/tree/main/C1/W1

Свяжитесь со мной : https://www.linkedin.com/in/yash-bhaskar/
Еще такие статьи: https:// medium.com/@yash9439