Найти в Дзене

Как я создал первую в своей жизни нейросеть

Пару лет назад я впервые услышал об искусственном интеллекте. К слову, я уже до этого понял, что меня тянет к технологиям, электронике и изобретениям. Мне очень хотелось исследовать, создавать, но у меня не было нужных инструментов для этого. И вот я узнал об ИИ. Не помню, как это произошло, но помню, что я точно захотел изучить эту сферу и работать в ней. Стоит сказать, что у меня управленческое и экономическое образование и к IT-сфере я имел лишь косвенное отношение в рамках университетских курсов, связанных с аналитикой или построением несложных математических моделей, подготовки презентаций в Power Point, наконец. И примерно, с 2018 года я начал погружение в компьютерные технологии. Я изучал, как работает компьютер, изучал HTML, CSS, SQL, blockchain и криптовалюты (даже диссертацию о них написал), сделал несколько простых сайтов на Wordpress, поработал асессором-тестировщиком в Яндекс, перешел на работу тестировщиком в банк. Программирование я изучал на примере языка Python, так к

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

Стоит сказать, что у меня управленческое и экономическое образование и к IT-сфере я имел лишь косвенное отношение в рамках университетских курсов, связанных с аналитикой или построением несложных математических моделей, подготовки презентаций в Power Point, наконец. И примерно, с 2018 года я начал погружение в компьютерные технологии.

Я изучал, как работает компьютер, изучал HTML, CSS, SQL, blockchain и криптовалюты (даже диссертацию о них написал), сделал несколько простых сайтов на Wordpress, поработал асессором-тестировщиком в Яндекс, перешел на работу тестировщиком в банк.

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

Python. С него все началось. Источник: Яндекс картинки
Python. С него все началось. Источник: Яндекс картинки

Примерно, полтора года я изучал теорию об искусственном интеллекте. Причем это была очень верхнеуровневая теория: что такое ИИ и МО, для чего они нужны, как они работают и т.д. У меня было несколько попыток сесть и начать углубляться, писать код, но не хватало уверенности в себе. Но в 2020 году я все-таки прошел курс по введению в Data science и ML и прошел хороший курс по Python, прочитал пару книг.

Хорошая книга для начала. Источник: Яндекс картинки
Хорошая книга для начала. Источник: Яндекс картинки

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

К настоящему времени я уже изучил работу с прикладными библиотеками, такими как Pandas, Numpy, Seaborn, Matplotlib, Scipy, Librosa. Также изучил некоторые важные разделы математики и сейчас прохожу анализ данных и параллельно начинаю изучать разработку нейросетей и машинное обучение.

И сегодня будет простая, тренировочная нейросеть. Первый шаг в мире разработки нейросетей. Эта нейросеть распознает изображения с цифрами. Начнем.

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

from keras.datasets import mnist

from keras import models

from keras import layers

from tensorflow.keras.utils import to_categorical

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

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

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

train_images = train_images.reshape((60000, 28*28))

train_images = train_images.astype('float32')/255

test_images = test_images.reshape((10000, 28*28))

test_images = test_images.astype('float32')/255

train_labels = to_categorical(train_labels)

test_labels = to_categorical(test_labels)

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

network.compile(optimizer='rmsprop',

loss='categorical_crossentropy',

metrics=['accuracy'])

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

network = models.Sequential()

network.add(layers.Dense(512, activation='relu', input_shape=(28*28,)))

network.add(layers.Dense(10, activation='softmax'))

И финальный этап - обучение нейросети. Сделаем это с помощью функции fit.

network.fit(train_images, train_labels, epochs=5, batch_size=128)

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

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