Привет ребята,

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

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

Что такое машинное обучение?

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

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

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

Возьмем быстрый простой пример,

Здесь я покажу вам калькулятор ИМТ, закодированный человеком, с использованием Python.

# height input as "h" and weight in as "w"
h = float(input("Please Enter Your Height in cm: "))
w = float(input("Please Enter Your Weight in kg: "))
BMI = w / (h/100)**2

Как и в приведенном выше коде, мы можем рассчитать индекс ИМТ каждого человека и дать отзыв об их входных данных следующим образом.

print(f"You BMI Index is {BMI}")
if BMI <= 18.4:
    print("You are slightly underweight.")
elif BMI <= 24.9:
    print("You are pretty healthy.")
elif BMI <= 29.9:
    print("You are slightly overweight.")
elif BMI <= 34.9:
    print("You are severely overweight.")
elif BMI <= 39.9:
    print("You are obese.. -_-")
else:
    print("You are severely obese... Get Some Help")

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

Итак, как объясняют предыдущие диаграммы, мы учим компьютеры, что это ИМТ и как рассчитать ИМТ, это BAI, как рассчитать это, используя данные примера и выходные данные. Таким образом, они станут ответами и данными в соответствии с нашими предыдущими диаграммами. что происходит внутри, так это то, что компьютер изучает структуру данных и ответов, используя алгоритмы машинного обучения. Так что это открыло новые горизонты в мире информатики и науки о данных.

Дорожная карта машинного обучения

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

Обучение с учителем и линейная регрессия

Классификация и логистическая регрессия

Дерево решений и случайный лес

Наивный байесовский метод и метод опорных векторов

Обучение без учителя

Обработка естественного языка и анализ текста

Введение в глубокое обучение

Анализ временных рядов

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

Прогнозирование простого числового шаблона с использованием нейронных сетей

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

Глубокое обучение — это более сложная продвинутая тема машинного обучения, но с помощью нейронных сетей проще выполнять простое распознавание образов с использованием внешних библиотек Python, таких как NumPy, Pandas и Tensorflow.

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

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

x = -1, 0, 1, 2, 3, 4

y = -3, -1, 1, 3, 5, 7

так что отношения,

y = 2x-1

В нашем уме вы могли бы понять, что между -1 и 3 есть разница в 2, а между 0 и -1 есть разница в 1. поэтому может быть кратно x с 2 и + или - некоторого значения.

Итак, давайте реализуем это на языке программирования Python.

Ваааааааааааааааааааааааааааааааааа!!! Почему питон? Python прост и последователен, уже имеет широкую поддержку сообщества по всему миру, имеет множество библиотек и фреймворков для машинного обучения и обработки данных (NumPy, Pandas, Matplotlib, Seaborn для анализа и визуализации данных, TensorFlow, Keras, Scikit-learn для машинного обучения, OpenCV, Pillow для компьютерного зрения, NLTK, spaCy для обработки естественного языка)

Давайте погрузимся в наш первый код,

Сначала мы импортируем Keras API (интерфейс прикладного программирования) из TensorFlow.

Здесь keras упрощает задачу благодаря набору функций для нейронных сетей. В этой строке кода мы реализовали максимально простые нейроны. «Плотный» определяет связанные нейроны. поскольку здесь только один плотный слой, здесь только один слой нейронов. И входная форма этого слоя также является самой простой формой с одним значением.

import keras

model = keras.Sequential([keras.layers.Dense(units=1,input_shape[1])])

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

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

Затем мы реализуем функцию потерь и оптимизатор. Функция потерь угадывает связь между x и y и предоставляет измеренные данные результата (хорошие или плохие, сколько потерь или близко) оптимизатору, чтобы сделать следующее предположение. Оптимизатор определяет точность предположения, сделанного функцией потерь. Оптимизаторы — это методы или подходы, которые регулируют свойства вашей нейронной сети, такие как веса и скорость обучения, для уменьшения потерь. Основная логика здесь заключается в том, чтобы каждое предположение, сделанное функцией потерь, было лучше, чем предыдущее.

model.compile(optimizer="sgd", loss='mean_squared_error')

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

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

import numpy as np

затем мы реализуем два плоских массива для значений x и y.

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)

В следующей ячейке мы выясняем, как эти значения xs соответствуют значениям ys, реализуя метод model.fit 500 раз. epochs = 500 означает, что обучающий цикл будет делать в 500 раз больше предположений.

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

И вывод выглядит так

Эпоха 1/500
6/6 [==============================] — 0с 36мс/шаг — потери : 12,7812
Эпоха 2/500
6/6 [=============================] — 0 с 524 мкс/шаг — потери: 10,2833

…….

6/6 [=============================] — 0 с 157 мкс/шаг — потери: 3.9143e-05
Эпоха 499/500
6/6 [==============================] — 0 с 185 мкс/шаг — потеря: 3.8338e-05
Эпоха 500/500
6/6 [=========================== ==] — 0 с 255 мкс/шаг — потери: 3,7551e-05

Это называется обучением модели. После выполнения 500 обучающих циклов вы увидите, что потери становятся меньше. поэтому затем мы делаем прогнозирование нашего пользовательского номера для X, используя метод прогнозирования.

print(model.predict([10.0]))

и вывод должен быть близок к 19, но вместо этого он показал

[[18.982122]]

Это происходит из-за недостаточности обучающих данных.

если мы обучим модель с 1000 циклами, ответ будет выглядеть так.

[[18.999987]]

Таким образом, с модельным обучением это становится близким к реальному ответу.

Вы можете найти исходный код для этого здесь.

Простое прогнозирование цен на жилье с использованием основ нейронных сетей и Tensorflow

Здесь мы собираемся создать реальный сценарий для создания нейронной сети с использованием TensorFlow.

Вот простая формула для предсказания

Цена дома с одной спальней = 100к

Цена дома с одной спальней = 150к

Соответственно, цена домов увеличивается на количество спален.

Здесь мы собираемся построить нейронную сеть для прогнозирования цен на дома в соответствии с их спальнями.

вот два данных x и y для этого

x = 1, 2, 3, 4, 5, 6, 7

y = 1, 1.5, 2, 2.5, 3, 3.5, 4

И давайте начнем с импорта необходимых библиотек для этого.

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

Затем мы реализуем целые методы, такие как функция потерь, оптимизация и определение числовых массивов, определение циклов обучения (Здесь 1000 эпох) внутри базовой функции Python с именем house_model и возвращаемой модели с пустым аргументы.

def house_model():
    xs = np.array([1.0,2.0,3.0,4.0,5.0,6.0], dtype=float)
    ys = np.array([1.0,1.5,2.0,2.5,3.0,3.5],dtype=float)
    model = tf.keras.models.Sequential([tf.keras.layers.Dense(units=1,input_shape=[1])])
    model.compile(optimizer = 'sgd', loss = 'mean_squared_error')
    model.fit(xs,ys,epochs=1000)
    return model

Затем мы присваиваем количеству коек значение new_y, используем метод прогнозирования и выполняем house_model.

new_y = 10.0
model = house_model()
prediction = model.predict([new_y])[0]

После обучения данных 1000 раз прогноз будет напечатан следующим образом

print(prediction)

[5.5149393]

Так что вы можете найти исходный код здесь.

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

Посетите Курсера

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

Спасибо.