Как сделать нейронную сеть в excel?

Как сделать нейронную сеть в excel?

BINARY = 0 ‘ вход / выход = 0/1

If BINARY = 1 Or BINARY = 2 Then

Error = 3 ‘ заданная ошибка обучения

Error = 0.03 ‘ ## ВОТ ЗДЕСЬ МЕНЯТЬ ЗАДАННУЮ ОШИБКУ ОБУЧЕНИЯ.

Worksheets(list).Activate ‘ активируем ли ст с вх одными и выходными данными

Function CreateNet( ) As Integer

‘ Создание сети (многослойный персептрон)

ReDim Matrix1( NEU, inp)

ReDim Matrix2( OUT, NEU)

ReDim InpVector( inp)

ReDim OutVector( OUT)

ReDim RealOut( OUT)

ReDim Layer1_ out( NEU)

‘ определяем количество нейронов в слоях

num_layers = UBound( GNeuro)

For i = 0 To num_layers Step 1 ‘ ищем максимальную размерность в количестве нейронов

If GNeuro( i) > Mx Then

ReDim GMatrix( num_layers — 1, Mx, Mx) ‘ задаем глобальный массив весов

ReDim GOut(num_layers — 1, Mx) ‘ выходные значения внутренних слоев

ReDim GSum(num_layers — 1, Mx) ‘ входные значения внутренних слоев

ReDim GDelta(num_layers — 1, Mx) ‘ значения дельт по слоям

ReDim GError( GNeuro(num_layers))

For i = 0 To num_layers — 1 Step 1 ‘ слоев на один меньше, чем размерность GNeuro

For j = 0 To GNeuro( i + 1) — 1 Step 1

For z = 0 To GNeuro( i) — 1 Step 1

GMatrix( i, j, z) = tmp * 2 — 1

‘ Если тестовый сигнал

If TEST_SIGNAL = True Then

For i = 0 To num_layers — 1 Step 1 ‘ слоев на один меньше, чем размерность GNeuro

For j = 0 To GNeuro( i + 1) — 1 Step 1

For z = 0 To GNeuro( i) — 1 Step 1

GMatrix( i, j, z) = 1

Function SetIO( num As Integer)

‘ для ускорения работы сети можно предварительно массив валидационной выборки готовить

If BINARY = 1 Then ‘ входы выходы 0 и 1

For i = 0 To sz Step 1

If LINE_SIGNAL = False Then

tmp = Cells(num, GInputs(i)).Value — Cells(num — 1, GInputs(i)).Value

tmp = Cells(num, GInputs(i)).Value

For i = 0 To sz Step 1

If LINE_SIGNAL = False Then

tmp = Cells(num — 1, GOutputs(i)).Value — Cells(num — 2, GOutputs(i)).Value

tmp = Cells(num — 1, GOutputs(i)).Value

ElseIf BINARY = 0 Then ‘ вход выход = float

For i = 0 To sz Step 1

If LINE_SIGNAL = False Then

InpVector( i) = (Cells(num, GInputs(i)).Value — Cells(num — 1, GInputs(i)).Value) / MaxValue

InpVector( i) = Cells(num, GInputs(i)).Value / MaxValue

For i = 0 To sz Step 1

If LINE_SIGNAL = False Then

OutVector( i) = (Cells(num — 1, GOutputs(i)).Value — Cells(num — 2, GOutputs(i)).Value) / MaxValue

OutVector( i) = Cells(num — 1, GOutputs(i)).Value / MaxValue

ElseIf BINARY = 2 Then ‘ вход = float, выход = 0/1

For i = 0 To sz Step 1

If LINE_SIGNAL = False Then

InpVector( i) = (Cells(num, GInputs(i)).Value — Cells(num — 1, GInputs(i)).Value) / MaxValue

InpVector( i) = Cells(num, GInputs(i)).Value / MaxValue

For i = 0 To sz Step 1

If LINE_SIGNAL = False Then

tmp = Cells(num — 1, GOutputs(i)).Value — Cells(num — 2, GOutputs(i)).Value

tmp = Cells(num — 1, GOutputs(i)).Value

If TEST_SIGNAL = True Then

Function Calc( num As Integer) As Double

‘ вычисляем выход сети по примеру num

Dim temp As Double

‘ Считаем по GMatrix

For i = 0 To num_layers — 1 Step 1 ‘ слоев на один меньше, чем размерность GNeuro

For j = 0 To GNeuro( i + 1) — 1 Step 1

For z = 0 To GNeuro( i) — 1 Step 1

temp = temp + GMatrix(i, j, z) * InpVector(z)

temp = temp + GMatrix(i, j, z) * GOut(i — 1, j)

GSum( i, j) = temp ‘ то что входит в нейрон

If TANGENSOID = 0 Then ‘ порог

GOut( i, j) = Porog(temp)

ElseIf TANGENSOID = 1 Then ‘ тангенсоида

GOut( i, j) = Tang(temp)

GOut( i, j) = Sigm(temp)

‘ Алгоритм обратного распространения ошибки (BackProp, Back Propogation Algorithm)

If BINARY > 0 Or TANGENSOID = 0 Then

num_error = Mx + 10 ‘ номер строки в 0м листе куда выводить ошибку

ttt = 0 ‘ смещение столбцов с ошибкой по вертикали, если количество примеров больше длины листа

For i = 0 To MaxStep Step 1

num = Rnd * learning_number_example + end_valid_pos

tmp = GDeltaToNull() ‘ обнуляем матрицы дельт

‘ писать все НЕ ПОД ОДИН ВЫХОД, под GNeuro(num_layers).

‘ считаем дельту для выходного слоя

For j = 0 To GNeuro( num_layers) — 1 Step 1

GError( j) = GOut(num_layers — 1, j) — OutVector(0)

GDelta( num_layers — 1, j) = GError(j) * Derivative(GSum(num_layers — 1, j)) ‘ отсчет в GDelta от последнего к первому по первому измерению

‘ изменяем веса последнего слоя

For j = 0 To GNeuro( num_layers) — 1 Step 1

For z = 0 To GNeuro( num_layers — 1) — 1 Step 1

GMatrix( num_layers — 1, j, z) = GMatrix(num_layers — 1, j, z) — Nu1 * GDelta(num_layers — 1, j) * GOut(num_layers — 2, z)

If Abs( GMatrix(num_layers — 1, j, z)) > 2 Then

GMatrix( num_layers — 1, j, z) = tmp * 2 — 1

‘ считаем дельту слоев кроме последнего и изменяем веса соотвествующих матриц

For j = num_layers — 2 To 0 Step -1 ‘ цикл по слоям

For z = 0 To GNeuro(j + 1) — 1 Step 1 ‘ цикл по количеству нейронов в непосчитанных слоях

For k = 0 To GNeuro(j + 2) — 1 Step 1 ‘ цикл по последующему слою

GDelta(j, z) = GDelta(j, z) + GDelta(j + 1, k) * Derivative(GSum(j, z)) ‘ посчитали дельты j-го слоя

For z = 0 To GNeuro( j) — 1 Step 1

For k = 0 To GNeuro( j + 1) — 1 Step 1

GMatrix( j, k, z) = GMatrix(j, k, z) — Nu1 * GDelta(j, k) * GOut(j — 1, z)

GMatrix( j, k, z) = GMatrix(j, k, z) — Nu1 * GDelta(j, k) * InpVector(z)

If Abs( GMatrix(j, k, z)) > 2 Then

GMatrix( j, k, z) = tmp * 2 — 1

num_error = num_error + 1 ‘ номер строки куда ошибку выводить

If num_error > 63000 Then

num_error = Mx + 10

Worksheets( «0»).Cells(num_error, ttt + 1).Value = i

Worksheets( «0»).Cells(num_error, ttt + 2).Value = num

Worksheets( «0»).Cells(num_error, ttt + 3).Value = CurError

‘str1 = «» ‘ выводим то что подавалось в сеть

‘For w = 0 To UBound( InpVector) — 1 Step 1

‘ str1 = str1 + CStr( Round(InpVector(w), 4)) + » «

‘Worksheets( «0»).Cells(num_error, ttt + 5).Value = str1

‘ расчет ошибки на выходах нейросети

If BINARY = 1 Or BINARY = 2 Then ‘ выходы бинарные

CurError = 10 ‘ если выходы бинарные, то наоборот отнимаем, т к считаем количество правильно угаданных примеров

CurError = 0 ‘ если выходы float то как обычно плючуем ошибку

If end_valid_pos > 0 Then

end_point = end_valid_pos ‘ конечная точка если валидационной выборки нет, то есть проверяется на всем наборе примеров

For k = 0 To GNeuro( num_layers) — 1 Step 1 ‘ по всем выходам

For i = start_valid_pos To end_point Step 1 ‘ цикл по примерам валидационной выборки

If BINARY = 1 Or BINARY = 2 Then ‘ выходы бинарные

If GOut( num_layers — 1, k) > 0 And OutVector(0) > 0 Then

CurError = CurError — 1

ElseIf GOut( num_layers — 1, k) = 0 And OutVector(0) = 0 Then

CurError = CurError — 1

CurError = CurError + Abs( GOut(num_layers — 1, k) — OutVector(0))

CurError = CurError / (end_point — start_valid_pos)

Function Tang( sea As Double) As Double

Tang = ( Exp( Alpha * sea) — Exp((-1) * Alpha * sea)) / (Exp(Alpha * sea) + Exp((-1) * Alpha * sea))

Function Sigm( sea As Double) As Double

Sigm = 1 / (1 — Exp( (-1) * Alpha * sea))

Function Porog( sea As Double) As Double

Function Derivative( inp As Variant) As Double

If TANGENSOID = 1 Then ‘ гиперболический тангенс

Derivative = (1 — inp * inp)

ElseIf TANGENSOID = 2 Then ‘ сигмоида

Derivative = inp / (1 — inp)

sm = 0 ‘ смещение между выводом матриц

For i = 0 To num_layers — 1 Step 1 ‘ слоев на один меньше, чем размерность GNeuro

For j = 0 To GNeuro( i + 1) — 1 Step 1

For z = 0 To GNeuro( i) — 1 Step 1

Cells( j + 1, z + 1 + sm).Value = GMatrix(i, j, z)

sm = sm + GNeuro(i) + 1 ‘ +1 чтобы разрыв между матрицами был

For i = 0 To inp — 1 Step 1

Cells( i + 1, sm).Value = InpVector(i)

For i = 0 To GNeuro( num_layers) — 1 Step 1

Cells( i + 1, sm).Value = OutVector(i)

Cells( i + 1, sm + 1).Value = GOut(num_layers — 1, i)

Cells( i + 1, sm + 2).Value = GError(i)

‘ выводим GOut скрытых слоев

For i = 0 To num_layers — 2 Step 1

For j = 0 To GNeuro( i + 1) Step 1

Cells(j + Mx + 4, 14 + i + k).Value = GSum(i, j) ‘ первый столбец то, что до функции активации

Cells(j + Mx + 4, 15 + i + k).Value = GOut(i, j) ‘ то что после функции активации

Cells( j + Mx + 4, 16 + i + k).Value = GDelta(i, j) ‘ GDelta

‘ очищаем нулевой лист

ReDim GDelta(num_layers — 1, Mx) ‘ значения дельт по слоям

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

For i = start_valid_pos To end_valid_pos + learning_number_example Step 1

For j = 0 To sz Step 1

If LINE_SIGNAL = False Then

tmp = Abs(Cells(i, GInputs(j)).Value — Cells(i — 1, GInputs(j)).Value)

tmp = Cells(i, GInputs(j)).Value

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

For i = start_valid_pos To end_valid_pos Step 1 ‘ печатаем валидационную выборку

For k = 0 To GNeuro( num_layers) — 1 Step 1 ‘ по всем выходам

pos1 = Mx * 2 + i * ll + k

Worksheets( «0»).Cells(pos1, 19) = i

Worksheets( «0»).Cells(pos1, 20).Value = OutVector(k)

Worksheets( «0»).Cells(pos1, 21).Value = GOut(num_layers — 1, k)

Worksheets( «0»).Cells(pos1, 22).Value = OutVector(k) — GOut(num_layers — 1, k)

‘ печатаем те примеры, которые сеть вообще не видела

For i = start_test To end_test Step 1 ‘ печатаем валидационную выборку

For k = 0 To GNeuro( num_layers) — 1 Step 1 ‘ по всем выходам

Worksheets( «0»).Cells(pos1 + k, 19) = i

Worksheets( «0»).Cells(pos1 + k, 20).Value = OutVector(k)

Worksheets( «0»).Cells(pos1 + k, 21).Value = GOut(num_layers — 1, k)

Worksheets( «0»).Cells(pos1 + k, 22).Value = OutVector(k) — GOut(num_layers — 1, k)

pos1 = pos1 + GNeuro( num_layers)

k = 1 ‘ счетчик выведенных строк в savelist

Cells( k, 1).Value = «Sheet»

Cells(k, 2).Value = list ‘ лист откуда брались данные по обучению

Cells( k, 1).Value = «Alpha»

Cells( k, 2).Value = Alpha ‘ коэффициент в тангенсоиде и сигмоиде

Cells( k, 1).Value = «Type_fa» ‘ тип функции активации

Cells( k, 2).Value = TANGENSOID

Cells( k, 1).Value = «IO type»

Cells( k, 2).Value = BINARY

Читайте также  Как сделать файл vcf из excel?

s = UBound( GInputs)

Cells(k, 1).Value = «Inputs»

Cells(k, 2).Value = s + 1 ‘ указываем реальное количество слоев, без учета 0-го элемента

For i = 0 To s Step 1

Cells( k, 2).Value = GInputs(i)

s = UBound( GOutputs)

Cells( k, 1).Value = «Outputs»

Cells( k, 2).Value = s + 1

For i = 0 To s Step 1

Cells( k, 2).Value = GOutputs(i)

s = UBound( GNeuro)

Cells( k, 1).Value = «Layers»

Cells( k, 2).Value = s + 1

For i = 0 To s Step 1

Cells( k, 2).Value = GNeuro(i)

sm = 0 ‘ смещение между выводом матриц

For i = 0 To num_layers — 1 Step 1 ‘ слоев на один меньше, чем размерность GNeuro

For j = 0 To GNeuro( i + 1) — 1 Step 1

For z = 0 To GNeuro( i) — 1 Step 1

Cells( k + j + 1 + sm, z + 1).Value = GMatrix(i, j, z)

sm = sm + GNeuro(i + 1) + 1 ‘ +1 чтобы разрыв между матрицами был

‘ функция загрузки параметров уже обученной сети

k = 0 ‘ позиция последней прочитанной строки

list = Cells(1, 2).Value

Alpha = Cells( 2, 2).Value

TANGENSOID = CInt( Cells(3, 2).Value)

BINARY = CInt( Cells(4, 2).Value)

s = Cells( 5, 2).Value

ReDim GInputs(s — 1)

For i = 0 To s — 1 Step 1

GInputs( i) = Cells(6 + i, 2).Value

s = Cells( k, 2).Value

ReDim GOutputs(s — 1)

For i = 0 To (s — 1) Step 1

GOutputs( i) = Cells(k, 2).Value

‘ слои и количество нейронов в них

s = Cells( k, 2).Value

ReDim GNeuro(s — 1)

For i = 0 To (s — 1) Step 1

GNeuro( i) = Cells(k, 2).Value

‘ читаем матрицы весов

sm = 0 ‘ смещение между выводом матриц

num_layers = UBound( GNeuro)

For i = 0 To num_layers — 1 Step 1 ‘ слоев на один меньше, чем размерность GNeuro

For j = 0 To GNeuro( i + 1) — 1 Step 1

For z = 0 To GNeuro( i) — 1 Step 1

GMatrix( i, j, z) = Cells(k + j + sm, z + 1).Value

sm = sm + GNeuro(i + 1) + 1 ‘ +1 чтобы разрыв между матрицами был

learning_number_example = 150 ‘ количество примеров для обучения

If BINARY = 1 Or BINARY = 2 Then

Error = 3 ‘ заданная ошибка обучения

For i = 0 To num_layers Step 1 ‘ ищем максимальную размерность в количестве нейронов

If GNeuro( i) > Mx Then

ReDim GOut( num_layers — 1, Mx) ‘ выходные значения внутренних слоев

ReDim GSum( num_layers — 1, Mx) ‘ входные значения внутренних слоев

ReDim GDelta(num_layers — 1, Mx) ‘ значения дельт по слоям

ReDim GError( GNeuro(num_layers))

Нейросети (много взято у Шумского и Короткого).

Нейронная сеть для прогнозирования котировок forex, акций.
Нейросети (основная страница)

Источник:
http://apsheronsk.bozo.ru/Neural/NN.htm

Neural Excel

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

Области применения

Финансовые операции:

Прогнозирование поведения клиента

Прогнозирование и оценка риска предстоящей сделки

Прогнозирование возможных мошеннических действий

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

Прогнозирование движения наличности, объемов оборотных средств

Прогнозирование экономических параметров и фондовых индексов

Бизнес-аналитика и поддержка принятия решений:

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

Анализ работы филиалов компании

Сравнительный анализ конкурирующих фирм

Планирование работы предприятия:

Прогнозирование объемов продаж

Прогнозирование загрузки производственных мощностей

Прогнозирование спроса на новую продукцию

Другие приложения:

Оценка стоимости недвижимости

Контроль качества выпускаемой продукции

Системы слежения за состоянием оборудования

Проектирование и оптимизация сетей связи, сетей электроснабжения

Прогнозирование потребления энергии

Функциональные возможности программы

Neural Excel выполнена в виде надстройки Microsoft Excel, что дает возможность очень простой установки. Программа позволяет конфигурировать и обучать многослойные нейронные сети непосредственно в Microsoft Excel, начиная с 2007 версии.

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

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

Обученные нейронные сети могут быть также сохранены в файл, а учитывая, что в комплекте с программой поставляются компоненты Delphi (а в ближайшее время будут добавлены и компоненты для Visual Studio) с исходными кодами, то пользователь имеет возможность интегрировать сети в свои собственные приложения буквально несколькими строчками кода.

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

Источник:
http://www.neurotechlab.ru/software/neural-excel

Небольшая нейронная сеть в Эксель на VBA

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

Книга с одним листом, в котором настройки нейронной сети, обучающая выборка и веса.

прямая, обучение методом обратного распространения ошибки;

активационная функция- биполярная сигмоида;

формат входов- подаются данные (1;-1)

слоев- 2 (один скрытый слой);

нейронов в скрытом слое- до 100;

Файл старался сделать наиболее простым и понятным.

Для запуска сети необходимо ввести следующие данные:

— примеры для обучения и указать их количество в настройках;

— количество нейронов в скрытом слое;

— сколько эпох обучать сеть

Нажать кнопку «Старт»

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

Если есть вопросы или идеи по применению пишите в комментариях или на электронную почту Petrov210217@yandex.ru

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

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

Можно заточить под какую то задачу

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

Допустим она должна узнавать собак на фото — дадим ей 1000 фоток с собаками и подписью «собака», и 5000 фоток без собак с подписью «не собака». Нейросеть посмотрит фотки, подгонит свои параметры под примеры, и сможет отвечать на вопрос есть ли собака на фото.

Да, но он немного вводит в заблуждение. Все не так просто и результат будет не совсем таким.

Скажите в чем и можно будет подправить.

Хуевый ответ, потому что нейронную сеть строят изначально под задачу, а не строят какую-нибудь «не умеющую ничего», а потом «затачивают под задачу»

В случае примера с картинками логично использовать сверточные нейронные сети, которые строятся по-другому. У ТСа многослойный перцептрон для задачи классификации с двумя классами или регрессии, т.е. предсказания значения целевой функции по параметрам. Причем основную часть создания сети, а именно препроцессинг данных, ТС благополучно скипнул, использовав какие-то непонятные данные из какой-то узкоспециальной задачи для обучения нейронки. Ей можно разве что подтереться.

У вас зато был бы пиздатый, если бы не говно, которое хлыщет через край.

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

Небольшая нейронная сеть в Экселе и небольшой искусственный интеллект в Paint )))

Месье знает толк.

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

Посылать член бОльшему количеству девушек.

Ну значит активнее. тщательнее, или оформите его как-то по-художественнее.

Хуй в цветочках.

А что, заманчиво, заодно и понюхать можно.

Если что это я инструкцию для девушек составляю xD

Какие от этого будут плюсы?

Нейруха в таблицах в Ворде.

Вот, что нужно. Плюсы полетят

Y это выходные данные

Y это правильный ответ. Выходные это out

Попробую потестить. Есть у меня база с информацией по товару. И есть инвойс, где по 400-500 товаров ходит. И ВПР с этим справляется крайне неудобно. Макросами тыкался и прочие танцы с бубнами — фигня получалась, не хватило мозгов автоматизировать автоматическое проставление нужной информации сразу с использованием сцепки и/или выделением каких-то моментов.

Если эта сеть сможет, то я шляпу пред автором сниму.

А зачем нейросеть для вычисления соответствий?

Могу попробовать Вам помочь.

Это пример. Оставьте

Да я не Вам как автору писал, я писал тому, кто оставил комментарий что использование ВПР не помогает

Скинул. Если не секрет, какие задачи хотите решать? Возникнут вопросы, обращайтесь через почту.

Через час скину, как до работы доеду

Пришёл с Планеты))

Тут будет перепись планетян?

For epohy = 1 To ep Step 1

Range(«E10»).Value = epohy
Даёт ошибку-попытка изменить данные за запароленой таблице

Да, защиту надо снять, пароль 123 и ошибка пропадет

Спасибо за проявленный интерес. За несколько часов файл скачали около сотни человек!)

Запостил ваш труд на профильный форум

ссылку сюда так же указал.

Не знаешь МАТАН — пойдешь на метан!

А ты по-моему неплохо знаешь Эксель, а как складывать ячейки?

А собственно почему? Я код не смотрел, поэтому не спорю, спрашиваю.

Почему нет? Если она может перемножать матрицы и векторы, и обучаться методом обратного распространения ошибки — вполне себе нейронная сеть. Так-то нет разницы — на VBA она или на Python + CUDA.

Читайте также  Как вставить название над таблицей в формате Excel?

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

Это не обязательные критерии нейронной сети

Почему это не нейросеть?

тут не особо «сложна»

можно ее научить выигрывать в крестики-нолики?

У меня есть бот для крестиков-ноликов. То же в экселе, ходит при нажатии кнопки «ход бота». Эту сеть нельзя научить играть в крестики нолики. Нужна сеть с 9-ю выходами, если поле игры 3*3

Это и есть смысл в нейронной сети. Она анализирует ВСЕ возможные варианты и на пробах и ошибках подбирает оптимальный вариант.

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

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

Мне этот подход не нравится, но, как говорится, «практика — критерий истины». Раз так делают, значит это реально выгоднее.

Слышал шутки про датасаенсов за 300к/нс?)

нет, напишите, поржем.

Не знаю как в твоей сети, в других одного выхода более чем достаточно. Выход от 0 до 0.9, с шагом 0.1

Попробую на неделе сделать.

Я пробовал с 9ю выходами, обучалась, но долго. Если с одним выходом, то и эту можно обучить, только от 1 до -1 с шагом 0.2. Биполярная сигмоида учится быстрее, мое личное мнение

Могу бота выложить. Правда он ходит первый.

Написать, чтобы бот адекватно играл вторым ходом не было времени.

так и что она умеет то?

Отличное предложение. Достойно комментария дня

И платить не надо.

Нейронные сети. Градиентный спуск: как учатся нейронные сети

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

Мы подготовили долгожданное продолжение лекций по нейросетям. Градиентный спуск: как учатся нейронные сети.

Благодарим за участие в выпуске:

Редакторов – Дмитрия Титова, Михаила Коротеева, Дмитрия Мирошниченко;

Корректора – Дмитрия Мирошниченко;

Дикторов – Никифора Стасова, Дарью Яговкину;

Монтажера – Олега Жданова.

Нейросеть — определитель птиц по фотографии

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

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

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

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

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

Таких фоток мало, потому что кто будет выкладывать такое?

Собственно, я хочу обратиться к Силе Пикабу, ребята, если у вас есть фотки птиц, где вы точно знаете, что это за птица, но не стали бы выкладывать это в интернет, отправьте эти фотке мне, плиз. Или, если вы знаете, где достать такие фотографии, подскажите. Мне нужно ОЧЕНЬ много фотографий. Фотки можно кидать на почту: kolodkinmv@yandex.ru

На данный момент я использовал 3500 фотографий, нейросеть знает 30 видов птиц, поиграться с ней можно тут: https://teachablemachine.withgoogle.com/models/Td7tfvks/

Список известных видов видно там же. Определяет она иногда хорошо, иногда не очень. Причины: использовано маловато изображений и маловато именно «не очень качественных» изображений.

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

Комментарии, критика и пожелания приветствуются 🙂

Источник:
http://pikabu.ru/story/nebolshaya_neyronnaya_set_v_yeksel_na_vba_7175038

Проектирование нейронной сети в табличном процессоре MS Excel Текст научной статьи по специальности «Компьютерные и информационные науки»

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Денисов Д. П., Касымова О. К.

Разработан алгоритм распознавания чисел с эмуляцией нейронной сети на основе использования стандартных функций табличного процессора MS Excel. Информация может быть полезной для специалиста и слушателя в плане изучения проблем нейронной сети.

Похожие книги на litres.ru

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Денисов Д. П., Касымова О. К.

Текст научной работы на тему «Проектирование нейронной сети в табличном процессоре MS Excel»

Д. П. Денисов, О. К. Касымова Омская гуманитарная академия

ПРОЕКТИРОВАНИЕ НЕЙРОННОЙ СЕТИ В ТАБЛИЧНОМ ПРОЦЕССОРЕ MS EXCEL

Разработан алгоритм распознавания чисел с эмуляцией нейронной сети на основе использования стандартных функций табличного процессора MS Excel. Информация может быть полезной для специалиста и слушателя в плане изучения проблем нейронной сети.

Ключевые слова: нейронная сеть, алгоритм распознавания чисел.

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

Под образом понимается структурированное описание изучаемого объекта, процесса или явления, представленное вектором признаков, выражаемых количественно. В результате идентификации объектов осуществляется их классификация, позволяющая выявлять закономерности и выполнять прогнозы [1].

Нейронная сеть проектируется для решения узкоспециализированных задач в различных сферах [3]. Наиболее популярные и доступные приложения, позволяющие создавать нейронную сеть и управлять ее структурой — «Deductor Studio Akademic», «NeuroEmulator», «NeuroView» и др., алгоритм обработки данных установлен разработчиками.

С целью наглядного отражения принципа работы нейронной сети спроектирован алгоритм распознавания знаков с использованием стандартных функций табличного процессора MS Excel. Решение компактно размещается на одной странице электронной книги (рисунок), обозримо без применения скроллинга [2] и позволяет ознакомиться с основными элементами и режимами работы нейронной сети в интерактивном режиме.

Системе предлагается распознать образы знаков десятичной системы (0, 1, 2, . 9), построенные с помощью горизонтальных, вертикальных и наклонных штрихов (коротких линий):

Внешний вид рабочего листа задания

выглядят табло индикаторных устройств, шаблоны почтовых

выполнен при помощи двух горизонтальных и

Например, образ знака «О» четырех вертикальных штрихов.

Для идентификации образов полного набора (10 знаков) потребуется составить таблицу обучения нейронной системы по четырем признакам (видам штрихов), т. е. вектор 1-го эталона Х< будет иметь следующие компоненты:

хц — количество вертикальных штрихов; Х12 — количество горизонтальных штрихов;

Х13 — количество наклонных штрихов нижних;

х;4 — количество наклонных штрихов верхних.

Таблица эталонов располагается на листе MS Excel в виде матрицы (массив B5:E14).

Рассмотрим, как работает система.

Информация, поступающая с виртуального сканирующего устройства, представляет собой поток действительных чисел (Xi’).

Рецептор (ячейка «B18») воспринимает (пропускает) числа по модулю

Источник:
http://cyberleninka.ru/article/n/proektirovanie-neyronnoy-seti-v-tablichnom-protsessore-ms-excel

Как сделать нейронную сеть в excel?

Пакет Excel Neural Package разработан фирмой «НейрОК» (119899, Москва, Воробьевы горы, Научный Парк МГУ, 5 — 529, e-mail: info@neurok.ru, адрес в Интернет, www neurok ru, демонстрационную версию программы можно получить на сервере www.download.ru в разделе «Образование, наука, техника — Научно-технические программы») и расширяет функциональные возможности Excel, предоставляя в распоряжение пользователя алгоритмы обработки данных на основе теории нейронных сетей Технически семейство продуктов реализовано как набор надстроек

(add-ins) над Microsoft Excel и не предъявляет особых требований к оборудованию.

Excel Neural Package состоит из двух независимых компонентов: Winnet и Kohonen Мар.

Программа Winnet реализует многослойный персептрон и предназначена для поиска и моделирования скрытых зависимостей в больших массивах численных данных, для которых в явном виде аналитические зависимости не известны. Характеристики Winnet 3.0 приведены в табл. 5.2.

Таблица 5.2 (см. скан) Основные характеристики Winnet 3.0

Winnet 3.0 имеет удобный графический интерфейс и обладает хорошими возможностями контроля за процессом обучения:

• отображение в процессе обучения графиков ошибок обучения и обобщения;

• отображение диаграмм рассеяния «реальное значение — предсказанное нейронной сетью» для каждого выхода сети;

• выбор тестового множества;

• остановка обучения по достижении различных критериев останова.

Kohonen Мар представляет собой программный инструмент для построения и анализа самоорганизующихся карт Кохонена. Среди основных применений следует выделить задачи кластеризации и визуализации многомерной информации. Пользователь

может представить весь массив данных в виде двумерной цветной карты и визуализировать на ней интересующие его характеристики. Характеристики Kohonen Мар 1.0 приведены в табл. 5.3.

Таблица 5.3 (см. скан) Основные характеристики Kohonen Мар 1.0

5.8.2. Установка нейропакета

Установка пакета требует выполнения следующих действий.

1) Создать директорию для файлов пакета. Например: C:Program FilesMicrosoft OfficeENP.

2) Скопировать в эту директорию все файлы из директории . Neural tools package.

3) Запустить Excel.

4) Выбрать Меню/Сервис/Надстройки. В всплывающем окне Надстройки нажать кнопку Обзор. Далее в открывшемся окне выбрать в созданной папке файл NPackage.xIa и нажать кнопку ОК.

5) В списке окна Надстройки появится новый пункт Neural tools Package. Выбрать его и нажать кнопку ОК.

Читайте также  Как сделать список в excel по возрастанию?

6) В открывшемся далее окне Authorization checker в поле ввода ввести персональный код (который содержится, например, в файле pwd) и нажать кнопку ОК.

7) В левом верхнем углу экрана появится панель инструментов Neural Analysis, на которой расположены кнопки доступных в данной версии Excel Neural Package нейроинструментов.

5.8.3. Работа с пакетом

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

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

• загрузить данные из книги Excel в систему;

• определить, что является входной информацией, а что -выходной;

• предобработать данные, т. е. осуществить их нормировку;

• оценить значимость входов для выходной информации и, если необходимо, изменить (удалить/добавить) входы;

• создать нейронную сеть;

• обучить нейронную сеть на заданном множестве примеров и оценить работу на тестовом множестве;

• сохранить предсказанные (обработанные) данные в книге

• сохранить обученную нейронную сеть для дальнейшей работы.

Разберем эти действия по шагам.

1) Для работы с данными выделите область на листе книги Excel. Данные на листе располагаются следующим образом: входы и выходы — столбцы, строки — обучающие примеры.

2) Щелкните мышью по кнопке с изображением нейрона на панели инструментов Neural Analysis. Появится диалоговое окно Select data source, предлагающее уточнить параметры области данных для работы (рис. 5.75).

3) В случае согласия с параметрами ввода нажмите ОК.

4) Откроется основное окно Winnet 3.0. Оно содержит 4 табулированных листа Data, Network, Training и Output, ассоциированных с общими этапами работы (рис. 5.76).

5) Открывшийся лист Data позволяет определить и предобработать данные для последующего использования. Кроме того, с этого листа можно сохранить обученную нейронную сеть (Save Project . ) или загрузить уже сохраненный в прошлом проект (Load Project. ). Первое, что нужно сделать, это определить входы, для чего следует нажать кнопку Select Inputs.

6) В открывшемся диалоговом окне Select Inputs/All Data выберете необходимые входы и с помощью кнопки » переведите

Источник:
http://scask.ru/p_book_ins.php?id=49

Обучающие наборы данных для нейронных сетей: как обучить и проверить нейросеть на Python

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

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

Что такое обучающие данные?

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

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

Каждая строка – это то, что я называю одной обучающей выборкой, и в ней четыре столбца: три из них (цвет, форма и плотность) являются столбцами входных данных, а четвертый – целевым выходным значением.

Рисунок 1 – Связь между данными в Excel и параметрами нейросети

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

Оценка обучающих данных

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

Для формы вы можете присвоить каждому помидору значение от –1 до +1, где –1 представляет собой идеальную сферу, а +1 означает крайне вытянутую форму. Что касается вкусовых качеств, вы можете оценивать каждый помидор по пятибалльной шкале от «несъедобного» до «восхитительного», а затем использовать унитарный код для сопоставления этих оценок с выходным вектором из пяти элементов.

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

Рисунок 2 – Унитарный код для выходных значений нейросети

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

Рисунок 3 – График логистической функции

Таким образом, мы не хотим создавать эту нейросеть с одним выходным узлом, а затем предоставлять обучающие выборки, которые имеют выходные значения 0, 1, 2, 3 или 4 (или, если вы хотите оставаться в диапазоне от 0 до 1, это будут 0, 0,2, 0,4, 0,6 или 0,8), поскольку логистическая функция активации выходного узла будет устойчиво придерживаться минимального и максимального выходных значений.

Нейронная сеть просто не понимает, насколько нелепым было бы сделать вывод, что все помидоры либо несъедобны, либо восхитительны.

Создание набора обучающих данных

Нейронная сеть на Python, о которой мы говорили в части 12, импортирует обучающие выборки из файла Excel. Обучающие данные, которые я буду использовать для этого примера, организованы следующим образом:

Рисунок 4 – Обучающие данные в таблице Excel

Наш текущий код для перцептрона ограничен одним выходным узлом, поэтому всё, что мы можем сделать, – это выполнить классификацию типа «истина/ложь». Входные значения – это случайные числа от –5 до +5, сгенерированные по формуле Excel:

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

Таким образом, выходное значение равно true , только если input_0 больше нуля, input_1 больше нуля, а input_2 меньше нуля. В противном случае выходное значение равно false .

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

Обучение нейросети

Вам нужно установить входную размерность на три ( I_dim = 3, если вы используете мои имена переменных). Я настроил нейросеть так, чтобы в ней было четыре скрытых узла ( H_dim = 4), и выбрал скорость обучения 0,1 ( LR = 0,1).

Найдите инструкцию training_data = pandas.read_excel(. ) и введите название своей таблицы (если у вас нет доступа к Excel, библиотека Pandas также может читать файлы ODS). Затем просто нажмите кнопку «Run». Обучение с 5000 выборками занимает всего несколько секунд на моем ноутбуке.

Если вы используете полную программу « MLP_v1.py », которую я включил в часть 12, валидация(смотрите следующий раздел) начинается сразу после завершения обучения, поэтому перед тем, как приступить к обучению нейросети, вам необходимо подготовить данные валидации.

Валидация нейросети

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

В следующем фрагменте кода показано, как выполнить базовую валидацию:

Я использую стандартную процедуру прямого распространения для вычисления сигнала постактивации выходного узла, а затем использую оператор if / else для применения порогового значения, который преобразует значение постактивации в классификационное значение true / false .

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

Помните, что если вы закомментировали инструкцию np.random.seed(1) , при каждом запуске программы веса будут инициализироваться различными случайными значениями, и, следовательно, точность классификации будет меняться от одного запуска к следующему. Я выполнил 15 отдельных запусков с параметрами, указанными выше, 5000 обучающих выборок и 1000 проверочных выборок.

Самая низкая точность классификации составила 88,5%, самая высокая – 98,1%, а средняя – 94,4%.

Заключение

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

Источник:
http://radioprog.ru/post/792