Научная статья на тему 'ПОИСК ОПТИМАЛЬНОГО КОЛИЧЕСТВА НЕЙРОНОВ НА СЛОЯХ НЕЙРОННОЙ СЕТИ ИССЛЕДОВАНИЯ РАБОТОСПОСОБНОСТИ ЭЛЕМЕНТОВ КОНСТРУКЦИЙ'

ПОИСК ОПТИМАЛЬНОГО КОЛИЧЕСТВА НЕЙРОНОВ НА СЛОЯХ НЕЙРОННОЙ СЕТИ ИССЛЕДОВАНИЯ РАБОТОСПОСОБНОСТИ ЭЛЕМЕНТОВ КОНСТРУКЦИЙ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
126
17
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
НЕЙРОННЫЕ СЕТИ / НЕЙРОНЫ / СРЕДНЕКВАДРАТИЧНАЯ ОШИБКА / PYTHON / АППРОКСИМАЦИЯ

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

В данной статье предложен метод поиска оптимального количества нейронов на трёх слоях нейронной сети, решающей задачу аппроксимации, на основе метрики среднеквадратичной ошибки (MSE) с использованием языка программирования Python

i Надоели баннеры? Вы всегда можете отключить рекламу.

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «ПОИСК ОПТИМАЛЬНОГО КОЛИЧЕСТВА НЕЙРОНОВ НА СЛОЯХ НЕЙРОННОЙ СЕТИ ИССЛЕДОВАНИЯ РАБОТОСПОСОБНОСТИ ЭЛЕМЕНТОВ КОНСТРУКЦИЙ»

УДК 004.042

Красонцев Н.А.

студент кафедры «Информационные системы в строительстве» Донской государственный технический университет (Россия, г. Ростов-на-Дону)

Ляпин А.А.

д.ф.-м.н., заведующий кафедрой «Информационные системы в строительстве» Донской государственный технический университет (Россия, г. Ростов-на-Дону)

ПОИСК ОПТИМАЛЬНОГО КОЛИЧЕСТВА НЕЙРОНОВ НА СЛОЯХ НЕЙРОННОЙ СЕТИ ИССЛЕДОВАНИЯ РАБОТОСПОСОБНОСТИ

ЭЛЕМЕНТОВ КОНСТРУКЦИЙ

Аннотация: в данной статье предложен метод поиска оптимального количества нейронов на трёх слоях нейронной сети, решающей задачу аппроксимации, на основе метрики среднеквадратичной ошибки (MSE) с использованием языка программирования Python

Ключевые слова: нейронные сети, нейроны, среднеквадратичная ошибка, Python, аппроксимация.

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

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

- получить наилучшую модель;

- представить графики зависимости MSE моделей от числа нейронов. Исследование проводится на основе трёхслойной нейронной сети исследования

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

Разработка происходит на языке программирования Python (интерпретатор версии 2.7) с использованием следующих библиотек:

- keras - библиотека для работы с нейронными сетями;

- numpy - библиотека для работы с массивами данных;

- pandas - библиотека для работы dataframe;

- matplotlib - библиотека для построения графиков. Цель исследования формализуется следующим образом:

где num1, num2, num3 - количество нейронов на первом, втором и третьем слоях соответственно.

Условия, в которых проводится исследование:

1. Значения количества нейронов находятся в диапазоне от 25 до 75 штук:

2. Шаг количества равен 5. Меньший шаг не дает значимого изменения точности:

3. Архитектура моделей предполагается «треугольной» - на каждом последующем слое количество нейронов меньше либо равно количеству нейронов на предыдущем

MSE(num1,num2,num3) = min(MSE)

numl,num2,num3 Е [25; 75]

num[i + 1] — num[i] = 5

слое:

numl > пит2 > питЗ 4. Функция активации нейронов - ELU (а = 1) [2]:

5. Не используются нейроны смещения

6. Инициализатор весов - Glorot Uniform, который назначает случайное начальное значение весов из диапазона:

w б [—

6

Nin + Nout

Nir, + N.

6

]

in ~ L^out

м

где Nin, Nout - количество нейронов на входном и выходном слоях соответственно.

7. Оптимизатор - Adam, функция ошибок - MSE:

Y?-1(Yi — YJ2

MSE = -

n

где n - количество выборок данных;

Yi - вектор данных, получаемый нейронной сетью; Yt - ожидаемый вектор данных.

8. На каждой эпохе обучения происходит перетасовка обучающих данных

9. Между вторым и третьим слоем имеется слой сброса (Dropout) с коэффициентом 0.01

Для решения задачи был реализован тройной вложенный цикл, на каждом этапе ведущий запись значения MSE. Итоговый код представлен ниже [3]: inp_layer=Input(shape=(100,))

hidden1_layer=Dense(num1, activation='elu', use_bias=False, kernel_initializer='glorot_uniform')(inp_layer) hidden2_layer=Dense(num2, activation='elu', use_bias=False, kernel_initializer='glorot_uniform')(hidden1_layer) dropout 1 =Dropout(0. 01 )(hidden2_layer) hidden3_layer=Dense(num3, activation='elu', use_bias=False, kernel_initializer='glorot_uniform')(dropout1) out_layer=Dense( 1 )(hidden3_layer) model=Model(inputs=inp_layer, outputs=out_layer) model.compile(loss='mse', optimizer='adam', metrics=['mse']) scores=model.fit(X_train, Y_train, epochs=1000,

validation_data=(X_test,Y_test),batch_size=5, verbose=0, shuffle=True).history

Результаты заносятся в dataframe со столбцами num1, num2, num3, mse. Графики построены на основе агрегированных данных по каждому столбцу с использованием функции агрегации АУи.

Графики представлены на рисунке 1 ниже

0.06

30 40 50 60 70 30 40 50 6 0 70

пит! пит2

30 40 50 60 70

питЗ в

Рисунок 1 - Зависимости средней величины MSE от количества нейронов на а) первом

слое, б) втором слое и в) третьем слое

В ходе исследования было выяснено, что оптимальное количество на первом, втором и третьем слоях равно 45, 30 и 30 нейронов соответственно, при этом значение MSE равно 0.0002 или 0.02%.

Как можно заметить, наибольшее влияние на величину MSE оказывает количество нейронов на первом слое, наименьшее - на третьем. Связано это с тем, что уже на первом слое отфильтровываются малозначащие сигналы.

Работа выполнена при финансовой поддержке гранта РФФИ № 18-01-00715 а.

Список литературы:

1. Кадомцев, М. Вибродиагностика строительных конструкций / М. Кадомцев, А. Ляпин, Ю. Шатилов// Инженерный вестник Дона - 2012 - №3 (21) - С. 576.

2. Рудой, Г. Выбор функции активации при прогнозировании нейронными сетями/ Г. Рудой // Машинное обучение и анализ данных. M., -2011., № 1. C. 16-39.

3. Keras Documentation // [Официальный сайт фреймворка Keras] URL: https://keras.io (дата обращения: 25.03.2019).

i Надоели баннеры? Вы всегда можете отключить рекламу.