«Зрительная система человека - одно из чудес света ...»

Что такое нейронная сеть?

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

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

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

Что такое искусственные нейронные сети?

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

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

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

Учебный пример

Теперь мы подгоним модель нейронной сети в R. В этой статье мы используем подмножество набора данных о зерновых, совместно используемого Kaggel. Цель состоит в том, чтобы спрогнозировать рейтинг переменных зерновых, таких как калории, белки, жиры и т. д. Сценарий R предоставлен рядом и снабжен комментариями для лучшего понимания пользователем. Данные представлены в формате .csv, их можно скачать, нажав → крупы.

Значение -1 для питательных веществ указывает на отсутствие наблюдения.

Количество наблюдений 77 и имена переменных:

  • Название: названия злаков
  • mfr: Производитель зерновых, где A = American Home Food Products; G = General Mills; K = Келлоги; N = Набиско; P = Сообщение; Q = Quaker Oats; R = Ральстон Пурина
  • тип: холодный или горячий
  • калории: калорий на порцию
  • белок: граммы белка
  • жир: граммы жира
  • натрий: миллиграммы натрия
  • клетчатка: граммы пищевых волокон
  • углевод: граммы сложных углеводов
  • сахара: граммы сахаров
  • калий: миллиграммы калия
  • витамины: витамины и минералы - 0, 25 или 100, что указывает на типичный процент от рекомендованного FDA
  • полка: полка-витрина (1, 2 или 3, считая от пола)
  • вес: вес в унциях одной порции
  • чашки: количество чашек в одной порции
  • рейтинг: рейтинг злаков (возможно, из Consumer Reports?)

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

Автор хочет оценить ранжирование данных о зерновых продуктах, поэтому правильным методом является искусственная нейронная сеть. Если вы все еще спрашиваете, зачем использовать искусственную нейронную сеть? , потому что эти 10 переменных состоят из 9 независимых переменных и 1 зависимой переменной, которая представляет собой рейтинговую переменную, которая влияет на производство зерновых для получения наилучшей оценки, поэтому количество исходных данных (независимых переменных) для получения одного результата (зависимая переменная) является отличительной чертой метода искусственной нейронной сети. Допущение, используемое для обобщения заключения по исследуемому случаю, является независимой переменной.

Искусственные нейронные сети в R

Разделяем данные на обучающий и тестовый набор. Обучающий набор используется для поиска взаимосвязи между зависимыми и независимыми переменными, в то время как тестовый набор оценивает производительность модели. Мы используем 60% набора данных в качестве обучающего набора. Присвоение данных обучающему и контрольному набору выполняется с использованием случайной выборки. Мы выполняем случайную выборку для R с помощью функции sample(). Мы использовали set.seed() , чтобы каждый раз генерировать одну и ту же случайную выборку и поддерживать согласованность. Мы будем использовать переменную index при настройке нейронной сети для создания обучающих и тестовых наборов данных. Сценарий R выглядит следующим образом:

# Read the Data
data = read.csv("...\\cereal.csv", header=T)
View(data)
# Random sampling
samplesize = 0.60 * nrow(data)
set.seed(80)
index = sample( seq_len ( nrow ( data ) ), size = samplesize )
# Create training and test set
datatrain = data[ index, ]
datatest = data[ -index, ]

Теперь мы подгоняем нейронную сеть к нашим данным. Для анализа мы используем библиотеку neuralnet. Первым шагом является масштабирование набора данных по зерновым. Масштабирование данных важно, потому что в противном случае переменная может иметь большое влияние на переменную прогноза только из-за своего масштаба. Использование немасштабированных данных может привести к бессмысленным результатам. Распространенными методами масштабирования данных являются: нормализация минимум-максимум, нормализация Z-балла, медиана и MAD, а также оценки tan-h. Нормализация min-max преобразует данные в общий диапазон, тем самым устраняя эффект масштабирования для всех переменных. В отличие от нормализации Z-оценки, медианы и метода MAD, метод min-max сохраняет исходное распределение переменных. Мы используем минимальную и максимальную нормализацию для масштабирования данных. Сценарий R для масштабирования данных выглядит следующим образом.

## Scale data for neural network
max = apply(data , 2 , max)
min = apply(data, 2 , min)
scaled = as.data.frame(scale(data, center = min, scale = max - min))

Основным математическим расчетом в методе искусственной нейронной сети является расчет min-max и медианы. Затем масштабированные данные используются для соответствия нейронным сетям. Мы визуализируем нейронные сети с весами для каждой переменной. Сценарий R выглядит следующим образом.

## Fit neural network 
# install library
install.packages("neuralnet")
# load library
library(neuralnet)
# creating training and test set
trainNN = scaled[index , ]
testNN = scaled[-index , ]
# fit neural network
set.seed(2)
NN = neuralnet(rating ~ calories + protein + fat + sodium + fiber + carbo + sugars + potass + vitamins, trainNN, hidden = 5 , linear.output = T )
NN
# plot neural network
plot(NN)

После построения нейронной сети мы оцениваем ранг с помощью модели нейронной сети. Читатель должен помнить, что прогнозируемый рейтинг будет масштабироваться, и я должен изменить его, чтобы сравнить с фактическим рейтингом. Мы также сравниваем прогнозируемые рейтинги с фактическими рейтингами с помощью визуализации. RMSE для модели нейронной сети составляет 6,05. Сценарий R выглядит следующим образом.

## Prediction using neural network
predict_testNN = compute(NN, testNN[,c(1:9)])
predict_testNN = (predict_testNN$net.result * (max(data$rating) - min(data$rating))) + min(data$rating)
predict_testNN
plot(datatest$rating, predict_testNN, col='red', pch=16, 
     ylab = "Predicted Rating NN", xlab = "real rating", main="Real Rating vs Predict NN")
abline(0,1)
# Calculate Root Mean Square Error (RMSE)
RMSE.NN = (sum((datatest$rating - predict_testNN)^2) / nrow(datatest)) ^ 0.5
RMSE.NN

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

«Перекрестная проверка - это процедура повторной выборки, используемая для оценки моделей машинного обучения на ограниченной выборке данных»

Перекрестная проверка в основном используется в прикладном машинном обучении для оценки навыков модели машинного обучения на невидимых данных. То есть использовать ограниченную выборку, чтобы оценить, как модель, как ожидается, будет работать в целом, когда она используется для прогнозирования данных, не используемых во время обучения модели. Это популярный метод, поскольку он прост для понимания и обычно приводит к менее предвзятой или менее оптимистичной оценке навыков модели, чем другие методы, такие как простое разделение на поезд / тест. Таким образом, этот метод снижает зависимость производительности от разделения обучения и уменьшает разброс показателей производительности. Крайний случай k-кратной перекрестной проверки произойдет, когда k равно количеству точек данных. Это означает, что модель прогнозирования обучается для всех точек данных, кроме одной точки данных, которая играет роль набора тестов. Этот метод оставляет одну точку данных в виде набора тестов, известного как перекрестная проверка исключения по одному.

Теперь мы выполним k-кратную перекрестную проверку модели нейронной сети, которую мы построили в предыдущем разделе. Количество элементов в обучающем наборе, j, варьируется от 10 до 65, и для каждого j из набора данных рисуется 100 выборок. Остальные элементы в каждом случае закреплены за тестовым набором. Модель обучается на каждом из 5600 обучающих наборов данных, а затем тестируется на соответствующих наборах тестов. Мы вычисляем RMSE каждого набора тестов. Значения RMSE для каждого набора хранятся в матрице [100 X 56]. Этот метод гарантирует, что в наших результатах нет систематической ошибки выборки, и проверяет надежность нашей модели. Мы используем вложенный цикл for. Сценарий R выглядит следующим образом:

## Cross validation of neural network model
# install relevant libraries
install.packages("boot")
install.packages("plyr")
# Load libraries
library(boot)
library(plyr)
# Initialize variables
set.seed(50)
k = 100
RMSE.NN = NULL
List = list( )
# Fit neural network model within nested for loop
for(j in 10:65){
  for (i in 1:k) {
    index = sample(1:nrow(data),j )
    
    trainNN = scaled[index,]
    testNN = scaled[-index,]
    datatest = data[-index,]
    
    NN = neuralnet(rating ~ calories + protein + fat + sodium + fiber + carbo + sugars + potass + vitamins, trainNN, hidden = 3, linear.output= T)
    predict_testNN = compute(NN,testNN[,c(1:9)])
    predict_testNN = (predict_testNN$net.result*(max(data$rating)-min(data$rating)))+min(data$rating)
    
    RMSE.NN [i]<- (sum((datatest$rating - predict_testNN)^2)/nrow(datatest))^0.5
  }
  List[[j]] = RMSE.NN
}
Matrix.RMSE = do.call(cbind, List)
Matrix.RMSE

Анализ

Результаты исследования питания по 80 зерновым продуктам, которые были проанализированы позже. Модели, которые имеют 5 нейронов в скрытых слоях с 9 входами и 1 выходом, получают график нейронной сети следующим образом:

Черная линия на рисунке 1 показывает связь с весом. Вес рассчитывается с использованием алгоритма обратного распространения, описанного ранее. Синяя линия - это появление термина "предвзятость".

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

Результаты прогнозирования ранжирования с использованием искусственных нейронных сетей, полученные на диаграмме разброса реального рейтинга по сравнению с прогнозом, который имеет положительную корреляцию, на что указывает прогнозируемый рейтинг, который будет расти, если реальный рейтинг повышается, так что прогнозируемый рейтинг может успешно прогнозировать данные потому что это дает небольшую ошибку. Из полученных результатов значение среднеквадратичной ошибки (RMSE) составляет 3,074454819, что является довольно небольшим значением, которое показывает расстояние, близкое к точке данных линии регрессии.

«Среднеквадратичная ошибка (RMSE) - это стандартное отклонение остатков (ошибок прогнозирования). Остатки - это мера того, насколько далеко от точек данных линии регрессии; RMSE - это мера того, насколько разбросаны эти остатки. Другими словами, он показывает, насколько сконцентрированы данные вокруг линии наилучшего соответствия ». Черная линия на рисунке 1 показывает связь с весом. Вес рассчитывается с использованием алгоритма обратного распространения, описанного ранее. Синяя линия - это появление термина "предвзятость" ".

## Prepare boxplot
boxplot(Matrix.RMSE[,56], ylab = "RMSE", main = "RMSE BoxPlot (length of traning set = 65)", col="green")

Коробчатая диаграмма на рисунке 3 показывает, что медиана RMSE в 100 выборках, когда продолжительность обучения установлена ​​на 65, составляет 1,70. В следующей визуализации мы изучаем изменение RMSE в зависимости от продолжительности обучающей выборки. Мы вычисляем медианное RMSE для каждой длины обучающего набора и строим их, используя следующий сценарий R.

## Variation of median RMSE 
install.packages("matrixStats")
library(matrixStats)
med = colMedians(Matrix.RMSE)
med
X = seq(10,65)
X
plot (med~X, type = "l", xlab = "Length of Training Set", ylab = "Median RMSE", 
      main = "Variation of RMSE with Length of Training Set", col="blue",lwd=2)

Результаты графика на рисунке 4 показывают, что модель среднего RMSE уменьшается с увеличением длины обучающего набора, что является важным результатом. Читатели должны помнить, что точность модели зависит от длины обучающей выборки. Производительность моделей нейронных сетей чувствительна к сплит-тестам.

Заключение

  • Точность метода можно увидеть по небольшому значению среднеквадратичной ошибки (RMSE) и графику разброса реального рейтинга по сравнению с прогнозом, который имеет положительный результат. Значение среднеквадратичной ошибки (RMSE) составляет 3,074454819, что является довольно небольшим. значение, указывающее расстояние, которое близко к точке данных линии регрессии.
  • Количество параметров в этом случае исследования, таких как: количество шаблонов исследования, делит набор данных на два подмножества, тесты и перекрестные проверки, типы функций активации скрытых единиц (и выходы) и количество нейронов в каждой скрытой слой. Все эти параметры также становятся точностью используемого метода.
  • При перекрестной проверке мы исследуем вариации точности модели, поскольку продолжительность обучения установлена. Мы рассматриваем обучающие наборы длиной от 10 до 65. Для каждой длины произвольно выбираются 100 выборок и вычисляется медиана RMSE. Мы показываем, что точность модели увеличивается при больших обучающих выборках. Перед использованием модели для прогнозирования важно изучить устойчивость производительности с помощью перекрестной проверки.

Ссылка

R-скрипт искусственной нейронной сети здесь !!!