Научная статья на тему 'СОЗДАНИЕ НЕЙРОННОЙ СЕТИ ДЛЯ РЕШЕНИЯ РАЗЛИЧНЫХ ПРИКЛАДНЫХ ЗАДАЧ'

СОЗДАНИЕ НЕЙРОННОЙ СЕТИ ДЛЯ РЕШЕНИЯ РАЗЛИЧНЫХ ПРИКЛАДНЫХ ЗАДАЧ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
517
69
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
НЕЙРОННАЯ СЕТЬ / МАШИННОЕ ОБУЧЕНИЕ / PYTHON / TENSORFLOW / KERAS / DEEP LEARNING

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Качков Михаил Сергеевич

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

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Качков Михаил Сергеевич

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

CREATING A NEURAL NETWORK FOR SOLVING VARIOUS APPLIED PROBLEMS

Neural networks are developing every day, and their impact on our lives is becoming more and more noticeable. The development of neural networks already takes up a large part of the work ofprofessional mathematicians, which becomes extremely important in the hands of every programmer. The ability to work with neural networks allows you to highlight the task not only with the help of «traditional» programming, but also with the help of «machine» learning.

Текст научной работы на тему «СОЗДАНИЕ НЕЙРОННОЙ СЕТИ ДЛЯ РЕШЕНИЯ РАЗЛИЧНЫХ ПРИКЛАДНЫХ ЗАДАЧ»

Цуканов Иван Руслаович, магистр, старший оператор, era_1@mil.ru, Россия, анапа, ФГаУ «ВИТ «ЭРа»,

Азман Андрей Владимирович, магистр, старший оператор, Россия, анапа, ФГаУ «ВИТ «ЭРа»

SOLVED PROBLEMS, ADVANTAGES AND PROSPECTS FOR THE DEVELOPMENT OF STRATOSPHERIC

UNMANNED AERIAL VEHICLES

I.R. Tsukanov, A.V. Azman

The main design features of stratospheric unmanned aerial vehicles of aircraft type and aerostatic type are considered. The main directions of using these devices are considered, a review of the most successful models of devices is made.

Key words: stratospheric unmanned aerial vehicles, solar-powered drones, aerostatic-type drones,

airships.

Tsukanov Ivan Ruslanovich, magister, senior operator, era_1@mil.ru, Russia, Anapa, FGAU «MIT

«ERA»,

Azman Andrey Vladimirovich, magister, senior operator, Russia, Anapa, FGAU «MIT «ERA» УДК 004.032.6

DOI: 10.24412/2071-6168-2023-2-339-343

СОЗДАНИЕ НЕЙРОННОЙ СЕТИ ДЛЯ РЕШЕНИЯ РАЗЛИЧНЫХ ПРИКЛАДНЫХ ЗАДАЧ

М.С. Качков

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

Ключевые слова: нейронная сеть, машинное обучение, Python, tensorflow, keras, deep learning.

Нейронные сети разрабатываются с целью имитации процессов работы человеческого мозга, позволяющих приблизиться, а иногда и преуспеть в решении различных вопросов, которые нельзя запрограммировать «традиционным» способом. Созданием нейронных сетей программисты занимались еще в 50х-60х годах, задолго до того, как нейронные сети заменили значительную долю типичных решений повседневных задач, которые раньше прорабатывались, как казалось, лучшими методами. Например, с возможностью проанализировать большой объем данных (big data) вкладчиков и потребителей, нейронная сеть может определить на основе аналогичных историй прошлых клиентов, является рассматриваемый клиент благонадежным, и стоит ли выдавать ему кредит, и с какой долью вероятности он сможет вернуть его вовремя.

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

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

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

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

Распознавание — в настоящее время, самое широкое применение нейронных сетей. Используется в Google, когда вы ищете фото или в камерах телефонов, когда оно определяет положение вашего лица и выделяет его и многое другое [2].

Главной составляющей нейронных сетей являются нейроны. Нейрон — это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый). В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев, которые ее обрабатывают и выходной слой, который выводит результат. У каждого из нейронов есть 2 основных параметра: входные данные (input data) и выходные данные (output data). В случае входного нейрона:

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

Между двумя нейронами существует связь, называемая синапсом. У синапсов есть 1 параметр — вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. Допустим, есть 3 нейрона, которые передают информацию следующему. Тогда у нас есть 3 веса, соответствующие каждому из этих нейронов. У того нейрона, у которого вес будет больше, та информация и будет доминирующей в следующем нейроне (пример — смешение цветов). На самом деле, совокупность весов нейронной сети или матрица весов — это своеобразный мозг всей системы. Именно благодаря этим весам, входная информация обрабатывается и превращается в результат. Данные веса могут задаваться как программистом, кто проектирует нейронную сеть, так и самой нейронной сетью, исходя из данных, на которых данная сеть обучается. Данный процесс и называется глубоким обучением (deep learning) [2].

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

1) Линейная.

2) Сигмоида (Логистическая).

3) Гиперболический тангенс (ReLU).

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

Для любой нейронной сети необходимо подготовить набор данных (dataset), на котором она будет производить свое обучение. Некоторые готовые наборы данных можно скачать из Интернета, но для более сложных и узконаправленных нейронных сетей, данные подготавливаются специально обученным специалистом, или группой специалистов [3].

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

Для начала необходимо подготовить набор данных для нейронной сети. Фотографии с кошками будут помечаться сочетанием 1 и 0, а собаки 0 и 1. Все изображения сжимаются до одного формата и записываются в массив data, а подписи к данным в массив labels, рис. 1.

ImagePaths = list(paths.list_images("С:V\Users/ta5t\VI>esktap\\Try_neiroset\\Dog5\\"}) random.seed(42)

ImagePaths = ImagePaths + list(paths. listimagesf'C: WUsersWtestWDesktopWTryneirosetWCatsW")) print(len(ImagePaths)) random, shuff_e(InagePaths)

data - [] labels = []

for imagepath in ImagePaths:

image = cv2.imread(imagepath)

image = cv2.resize(image, (32, 32)).flatten()

data.append(image)

label = inagepath.split(os.path.sep)[-j] if label — "Cats":

label = [1,0] else:

label - [3,1] labels.append(label)

print(labels)

data = np.array(data, dtype="float") / 255.в labels - np.array(labels)

Рис. 1. Подготовка данных для нейронной сети

Далее, после загрузки всех данных в массив, необходимо спроектировать структуру нейронной сети. Структура нейронной сети представлена на рис. 2.

После создания структуры нейронной сети, необходимо перейти к её обучению на подготовленном заранее наборе данных. Параметр EPOCHS показывает количество, сколько нейронная сеть будет проходить по одному и тому же набору данных (набору картинок). Также, для обучения установлен checkpointer, который приостанавливает обучение и сохраняет модель с лучшей точностью в текущем

моменте. Показатель batch_size в функции обучения модели указывает на количество элементов, которые одновременно загружаются в модель. На рис. 3 изображен код для обучения нейронной модели [3].

from keras.layers import Coriv2D, Flatten, Dropout, Activation, MaxPooling2D from keras.optimizers import Adam

model = Sequential()

model.add(Conv2D(32, (3,3), padding="same", input_shape=(32, 32, 3))) model.add(Activation("rein"))

model.add(Conv2D{32, (3,3), padding="same", activation="relu")) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), padding="same", aczivation="relu")) model.add(Conv2D(64, (3, 3), padding="same", aczivation="relu")) model.add(MaxPooling2D(pool_size = (2, 2))) model.add(Dropout(0.25))

model.add(FlattenO)

model.add(Dense(512, activation»'relu')) model.add(Dropout{0.5)) model.add(Dense(2, aczivation=1softmax'))

INITLR =0.03

opt = Adam(learnirig_rate=0.001, beta_l=0.9, beta_2=0.999, amsgrad=False)

model.compile{loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) |

Рис. 2. Создание структуры нейронной сети

EPOCHS = 23

checkpointer = ModelCheckpoint{filepath=1С:/Users/test/Desktop/Try_neiroset/point.hS13

verbose = 1, 5ave_best_orily=True) early_stopping = EarlyStopping{monitor=1 val_accuracy", patierice =2, verbose=l) H = model.fit(trainXj trainV, validation_data=(testX, isstYJ, epochs=EPOCHSj ba7ch_5iie=32J shuffle=TrueJ

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

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

predictions = model.predict(testX, batch_size = 32) print(predictions)

print(classification_"eport(testY. argmaj<{axi5=l)

predictions.argmax(axis=l), target_rames=("cats", "dogs")))

U = np.arange<0j EPOCHS) pit.style.use("ggplot") pit,figure()

pit.plot(Nj H , history["loss" ], lalbel = "train_loss") pit.plotfH, H,history["val_loss"], label="val_loss") pit.plot(Nj H.history["accuracy"], label="train_acc") pit.plot(Nj H.history["val_accuracy'], label="val_acc") pit.title("Results") pit ,xlabel{"Epoch #") pit.ylabel{"Loss/Accuracy/") pit,legend{)

pit.savefig("C:/Users/test/Desktop/Try_neiroset/Loss.png") model. save{ "C : /Users/test/Desktop/Try_neiroset:/EasyMet .model")

Рис. 4. Создание графика по разработанной модели

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

Для тестирования полученной нейронной сети, необходимо подготовить тестовые данные, которых нет в наборе тех данных, по которым модель проходила свое обучение, тем самым получатся объективные результаты, иначе как если взять те же исходные данные, модель могла бы «по памяти» подобрать правильный результат для фотографии. Код для тестирования представлен на рис. 6.

Результат работы нейронной сети представлен на рис. 7. Нейронная сеть возвращает результат в виде набора 1 и 0, а программа для удобства пользователя выводит сообщения «Cat» или «Dog».

Results

0.9 ■ 0.8 ■ 0.7 -

0.0 2.5 5.0 7.5 10.0 12.5 15.0 17.5 Epoch #

Рис. 5. График обучения нейронной сети

model = load_model("C://Users//test//Desktop//Try_rieiroset//EasyNet.model")

ImagePaths = list(paths. list_images("C : //Users//test//Desktop//Try_neiroset//Anir(ials")) for imagepath in ImagePaths:

image = cv2.imread(imagepath)

pit.imshow(cv2.с>rtColon(image, cv2.C0L0R_BGR2RGB)) pit.show()

data = cv2.resize(inage, (32, 32) | pred = model.predict([[data]]) prirt(pred)

if pred[e][0]>=pred[0][1]:

print("Cat") else:

print("Dog")

Рис. 6. Программа для проверки тестового набора данных

[[1. е.]] Cat

[[0. 1.]] Dog

Рис. 7. Результаты работы нейронной сети

Точность прогнозов нейронной сети, после обучения на наборе данных из интернета составляет около 75%-80%, что является неплохим результатом для нейронной сети, обученной на около 2000 фотографий. Повышение количества набора данных позволит увеличить точность нейронной сети. Также, повысить точность можно изменив параметры обучения нейронной сети, а конкретно изменив показатели шага обучения (learning rate) и размер загружаемого пакета (batch size) [3].

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

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

1. Чару А. Нейронные сети и глубокое обучение: учебный курс, 2020. 752 с.

2. Бураков М.В. Нейронные сети и нейроконтроллеры: учеб. пособие. СПб.: ГУАП, 2013.

284 с.

3. Learning How To Code Neural Networks - Tproger: 2018. [Электронный ресурс] URL: https://tproger.ru/translations/learning-neural-networks (дата обращения: 07.10.2022).

4. Нейронные сети для начинающих. Часть 1 Habr, 2020. [Электронный ресурс] URL: https://habr.com/ru/post/312450 (дата обращения: 10.10.2022).

Качков Михаил Сергеевич, бакалавр, оператор, era_1@mil.ru, Россия, Анапа, ФГАУ «ВИТ

«ЭРА»

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

CREATING A NEURAL NETWORK FOR SOLVING VARIOUS APPLIED PROBLEMS

M.S. Kachkov

Neural networks are developing every day, and their impact on our lives is becoming more and more noticeable. The development of neural networks already takes up a large part of the work ofprofessional mathematicians, which becomes extremely important in the hands of every programmer. The ability to work with neural networks allows you to highlight the task not only with the help of «traditional» programming, but also with the help of «machine» learning.

Key words: neural network, machine learning, Python, tensorflow, keras, deep learning.

Kachkov Mikhail Sergeevich, bachelor, operator, era_1@mil.ru, Russia, Anapa, FGAU «MIT «ERA» УДК 623.438.4

DOI: 10.24412/2071-6168-2023-2-343-346

СРАВНЕНИЕ МИРОВЫХ АНАЛОГОВ СОВРЕМЕННЫХ САМОХОДНЫХ АРТИЛЛЕРИЙСКИХ УСТАНОВОК

А.А. Пеньков, С.О. Коваленко, А.В. Трегубов

Актуальность данной статьи связана с рассмотрением вариантов самоходных артиллерийских установок, стоящих в настоящее время на вооружении в различных странах. На основе сравнительного анализа выявлены преимущества современного отечественного образца - «Коалиция-СВ 2С35» в отношении аналогов из других стран. В основу методики сравнения характеристик взяты такие параметры как: дальность ведения огня, количество выстрелов в минуту, скорость передвижения и смены огневой позиции, что является важными и перспективными факторами в современной концепции ведения боя.

Ключевые слова: артиллерия, баллистика, САУ, гаубица, артиллерийские установки.

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

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

Самоходные артиллерийские установки (САУ), выдвигаясь на позицию, ведут огонь высокой интенсивности по целям на расстоянии нескольких десятков километров, и прежде чем противник откроет ответный огонь, самоходные орудия должны быстро сменить место дислокации ведения огня. Предназначением современных гаубиц XXI века является ведение кратковременного и высокоинтенсивного огня с быстрой сменой огневой позиции (с временным интервалом до 1 минуты).

С прогрессом автоматизации высокоэффективного управления огнем в современных артиллерийских боях область средств радиолокационной разведки для обнаружения огневых позиций также все больше прогрессирует, соответственно, время безопасного нахождения самоходной артиллерийской техники на огневой позиции значительно сокращается. Эта ситуация подталкивает конструкторов к преодолению описанной выше проблемы путем создания нетрадиционных конструктивных и компоновочных схем, которые должны значительно обеспечить огневую мощь, а также сократить время нахождения САУ на огневой позиции, что хорошо реализовано в современной отечественной разработке нового поколения - «Коалиция-СВ 2С35» (рис.1).

Коалиция-СВ 2С35. Данная САУ является предназначенной для вооружения артиллерии тяжелых механизированных и мотострелковых бригад сухопутных войск для замены 152-мм гаубицы 2С19 «Мста-С». Её корпус разделен на три отделения: боевое, силовое (моторно-трансмиссионное) и отделение управления. Корпус представляет из себя тип по геометрии, основанный на танке Т-90. Отличием от него является передняя часть, которая значительно изменилась внешне из-за расположения в ней отделения управления.

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