Привет ребята,
Здесь мы собираемся построить базовые модели распознавания образов с помощью нейронных сетей. Нейронные сети — это более продвинутая тема машинного обучения, относящаяся к глубокому обучению, но в этом базовом вводном примере мы используем внешние библиотеки, чтобы немного упростить задачу.
Во-первых, у вас должны быть некоторые базовые предпосылки машинного обучения.
Что такое машинное обучение?
Да, как говорится в теме, машины учатся. Машинное обучение — это то, как машины учатся и как мы учим машины учиться. В ближайшем будущем машины смогут учиться и делать то, что делаем мы, люди.
С точки зрения компьютерного программирования, традиционно мы пишем компьютерные программы, сами определяя правила и данные для компьютера. Как показано на следующей диаграмме, пользователь задает правила, данные и ответы.
Но в сценарии машинного обучения мы даем ответы и данные машине, компьютеру, и он создает правила, связь между ответами и сами данные. По сути, здесь происходит то, что мы отдаем компьютеру существующие примеры, которые не можем понять, как это происходит, и через машину распознает, как это происходит по правилам.
Возьмем быстрый простой пример,
Здесь я покажу вам калькулятор ИМТ, закодированный человеком, с использованием 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 по глубокому обучению, подав заявку на финансовую помощь.
Посетите Курсера
Итак, я считаю, что это руководство могло бы стать базовым введением в то, как машинное обучение и искусственный интеллект применяются через нейронную сеть.
Спасибо.