Perceptron — это блок искусственных нейронных сетей (ИНС). ИНС — это вычислительные модели, имитирующие структуру и функционирование человеческого мозга.

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

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

Эта ИНС создается путем объединения нескольких перцептронов, но что такое перцептрон? Это похоже на нейрон в человеческом мозге, посмотрите ниже на рисунке.

Персептрон похож на нейроны

Нейрон человеческого мозга состоит из трех основных частей:

  • Дендриты: Дендриты представляют собой древовидные структуры в нейронах, которые принимают сигналы от других нейронов.
  • Тело клетки: это ядро нейрона, где сигнал от дендритов обрабатывается или суммируется, он поддерживает жизненный процесс клеток.
  • Аксон: длинный хвост переносит электрические импульсы от тела клетки и передает информацию различным нейронам.

Давайте применим ту же аналогию, чтобы понять Perceptron в искусственных нейронных сетях. Персептрон (нейрон) — математическая функция, тесно связанная с функционированием нейронов головного мозга.

Математическая функция означает, что каждый перцептрон в ИНС принимает набор входных данных, набор весов и функцию активации. Затем он преобразует эти входные данные в один выходной. Затем эти выходные данные выбираются другим перцептроном в качестве входных, и этот процесс продолжается.

Ниже представлена математическая модель перцептрона.

Математическая модель Perceptron

Perceptron состоит из пяти вещей:

  • Входные данные: это информация, поступающая в восприятие; в реальном мире его можно определить из набора данных. Например, математически x1, x2,..xn.
  • Веса: веса связаны с входными данными; это похоже на добавление важности к входным данным.
  • Взвешенная сумма: каждый входной сигнал x1 и соответствующий ему вес w1 умножаются на w1 * x1, и каждый продукт суммируется, и это суммированное значение называется взвешенной суммой. Математически это Взвешенная сумма = w1*x1+w2*x2+. . .+ wm * хн.
  • Смещение: Смещение — это значение, добавляемое к взвешенной сумме для повышения точности.
  • Функция активации: применяется к взвешенной сумме, чтобы придать нелинейность перцептрону.

Это функция с пороговыми значениями, если взвешенная сумма превышает пороговое значение, Perceptron активируется и выводит значение 1. В противном случае перцептрон остается деактивированным и выводит значение 0.

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

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

Позвольте мне привести вам реальный пример того, как вы можете связать этот перцептрон с реальной жизнью.

Так что подумайте, как друг по имени Джини, который любит играть в видеоигры. Основываясь на двух факторах, он должен решить, играть ли на улице или оставаться дома: погода(W) и количество имеющихся у него видеоигр (G).

  • Здесь, во входных данных (W и G): W указывает, насколько хорошая погода, солнечная или дождливая, а G — количество видеоигр, которые есть в Geniee.
  • Веса (W_weight и G_weight): Geniee теперь считает, что погода важнее, поэтому он присвоил более высокий вес (W_weight), чем количество видеоигр (G_weight).
  • Взвешенная сумма: Geniee начинает подсчитывать балл, умножая погоду на ее вес и количество видеоигр на ее вес, а затем складывая эти два произведения. Это дает ему взвешенную сумму, например, Взвешенная сумма = W x W_weight + G x G_weight.
  • Функция линейной активации: теперь Geniee устанавливает порог своего решения, или вы можете назвать это границей решения. Если счет превышает порог (границу решения), он решает играть за выходную сторону. В противном случае он останется дома.
    • Этот процесс принятия решения подобен простому переключению: играйте на улице (1), если очков достаточно много, или оставайтесь дома (0), если нет.
  • Предвзятость (B): Иногда Джини может хочется играть на улице или оставаться дома, независимо от погоды или видеоигр. Это чувство является предвзятостью (Б), влияющей на его решение. Если Джини сильно склонен играть на улице, даже если погода не идеальна, он все равно может выйти на улицу.

Если сложить их все вместе, то получим следующее:

Граница принятия решений персептроном

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

Содержание

Как создать

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

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

Если у вас есть корзина с фруктами, вы легко найдете манго, если знаете, как оно выглядит по форме и цвету.

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

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

  • Скорость обучения: Чтобы принять решение, у Geniee есть стратегия, поэтому скорость обучения подобна тому, насколько он корректирует свою стратегию принятия решений каждый раз, когда встречает новый день. Если его скорость обучения высока, он быстро адаптируется к изменениям. Если он низкий, ему может потребоваться больше времени, чтобы приспособиться.
    • Таким образом, скорость обучения аналогична тому, как Geniee обновляет свой подход к принятию решений на основе своего недавнего опыта работы с погодой и своей коллекции видеоигр.
  • Ошибка: Ошибка — это разница между решениями Geniee и оптимальным решением на день. Если Geniee решит поиграть на улице, но идет дождь, возникает высокая ошибка. Если он решит остаться дома, но погода идеальная, это также будет высокая ошибка.
    • Ошибка подобна несоответствию между решением Geniee и наиболее подходящим решением, основанным на реальных погодных условиях.

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

Итак, Geniee со временем корректирует свои предпочтения (веса и предвзятости) в зависимости от того, принял ли он правильные решения.

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

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

Теперь давайте построим перцептрон и обучим его определять, является ли данный фрукт манго. Но убедитесь, что вы знакомы с numpy. Если нет, следуйте руководствам: «Случайное число NumPy», «Скалярное произведение» и «Произведение Cros», а также «Индексирование и нарезка в списке Python».

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

Итак, две характеристики манго — это вес(в граммах) и его цвет(0 — зеленый, 1 — оранжевый):

Создание набора данных

Чтобы создать набор данных, вы можете использовать списки списков или Pandas DataFrame.

Импортируйте панд, как показано ниже.

import pandas as pd

Создайте набор данных, как показано ниже.

dataset = {
 'Weight(grams)': [150, 200, 120, 180, 100],
 'Color(0 = Green, 1 = Yello)': [0, 1, 0, 1, 0],
 'Label(1 = Mango, 0 = Not Mango)': [0, 1, 0, 1, 0]
}

Преобразование в Pandas Datafrem:

df = pd.DataFrame(dataset)

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

df

Создание набора данных

Набор данных содержит три столбца «Вес», «Цвет» и «Метка». Затем используйте следующий код, чтобы определить параметры персептрона, такие как весы, смещение и скорость обучения.

weights = np.random.rand(2)
bias = np.random.rand(1)
learning_rate = 0.1

Мы случайным образом инициализируем веса и смещение с помощью функции np.random.rand(), вес здесь равен 2, потому что в наборе данных есть две функции, а это означает, что персептрон будет учиться на двух функциях.

Смещение также инициализируется одним случайным числом, а начальная скорость обучения равна 0,1. Это параметры Perceptron, которые вам уже известны.

Затем определите функцию активации — простую ступенчатую функцию, показанную ниже.

def activation_function(value):
    return 1 if value >= 0 else 0

Эта функция принимает значение, если значение больше 0, возвращается 1, в противном случае она возвращает 0, если значение меньше 0. Это простая функция активации, есть и другие функции активации, такие как сигмовидная и т. д.

Теперь извлеките объекты и метки из набора данных, как показано ниже.

features = np.array(df)[:, :2]
labels = np.array(df)[:, 2]

Обучение

Используйте приведенный ниже код для обучения Perceptron.

# Training the perceptron
for epoch in range(1000):
    for i in range(len(features)):

        # Extract features and label for each data point
        feature_vector = features[i]
        label = labels[i]

        # Compute the weighted sum
        weighted_sum = np.dot(feature_vector, weights) + bias

        # Apply the activation function on the weihted sum
        prediction = activation_function(weighted_sum)

        # Update the weights and bias based on prediction error
        error = label - prediction
        weights += learning_rate * error * feature_vector
        bias += learning_rate * error

Создание Perceptron

Давайте построчно разберем обучающую часть кода:

  • Обучение начинается с внешнего цикла для эпохи в диапазоне(1000): этот цикл повторяется 1000 раз. Каждая итерация этого цикла называется эпохой. Эпоха обозначала один полный проход по всему набору данных во время обучения.
  • Следующим является внутренний цикл for i in range (len(features)): этот цикл перебирает каждую точку данных в наборе данных. Этот цикл обрабатывает каждую точку данных индивидуально в течение каждой эпохи.
    • После этого объект в наборе данных имеет две вещи: вес и цвет, поэтому функция Feature_vector= Features[i] извлекает вектор объекта (вес, цвет) для текущей точки данных. Затем label=lables[i] извлекает соответствующие метки (1 — манго, 0 — не манго) для текущей точки данных.
    • Следующая строка Weighted_sum = np.dot (feature_vector,weights)+bias вычисляет взвешенную сумму признаков, используя текущие веса и смещение. Это линейная комбинация входов.
    • Затем примените функцию активации к взвешенной сумме, используя предсказание = activation_function (weighted_sum). В данном случае эта функция активации представляет собой ступенчатую функцию, которая определяет, равен ли прогноз 1 или 0, на основе значения знака взвешенной суммы.
    • Прогноз — это значение, которое сравнивается с фактической меткой набора данных, чтобы определить, ближе ли предсказанное значение к фактической метке. Разница между меткой и прогнозом называется ошибкой и вычисляется по формуле error = label – предсказание.
    • Наконец, в следующей строке кода веса += скорость обучения * ошибка * Feature_vector и смещение += скорость обучения * ошибка обновляют значения параметров весов и смещения на основе ошибки прогнозирования.
    • Скорость обучения определяет размер шага обновления. Этот шаг является частью процесса обратного распространения ошибки, в ходе которого перцептрон учится на своих ошибках и корректирует свои параметры для улучшения будущих прогнозов.

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

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

Прогнозы

Теперь давайте предоставим новые точки данных обученному перцептрону, чтобы увидеть, является ли данная точка данных фруктом манго или нет.

Создайте новые точки данных с весами, равными 160, и цветами, равными 1(что означает желтый).

new_fruit = np.array([160, 1])

Вычислили взвешенную сумму, используя приведенный ниже код.

weighted_sum = np.dot(new_fruit, weights) + bias

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

prediction = activation_function(weighted_sum)

Теперь проверьте вывод значения прогноза.

if prediction == 1:
  print("It is an Mango")
else:
  print("Not Mango")

Прогнозирование обученного персептрона

Как вы можете видеть, данная точка данных принадлежит манго, что является правильным прогнозом, поскольку мы знаем, что если вес равен 160, а цвет равен 1, то согласно набору данных это манго.

Давайте изменим значение цвета на 0 и посмотрим, что произойдет.

Прогнозирование обученным персептроном на основе различных точек данных

Он предсказал данную точку данных как «Не манго», что соответствует набору данных.

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

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

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

  • Также помните, что функция активации, которую мы здесь использовали, называется ступенчатой функцией, которая выводит двоичные значения 1 или 0. Это позволяет Perceptron изучать линейные зависимости между точками данных.
  • Однако другие функции активации используются для более сложных задач и вносят нелинейность, позволяя перцептрону изучать нелинейные отношения. Эти функции активации бывают сигмовидной, гиперболической, выпрямленной и т. д.

Заключение

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

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

Добавить комментарий