В последние годы искусственный интеллект (ИИ) приобрел значительную популярность.
Если вы инженер-программист, ученый-компьютерщик или энтузиаст науки о данных в целом, то вы, вероятно, заинтригованы удивительными приложениями обработки изображений, распознавания образов и обнаружения объектов, предоставляемых этой областью.
Самая важная область ИИ, о которой вы, вероятно, слышали, — это глубокое обучение. Эта область фокусируется на мощных алгоритмах (инструкциях компьютерных программ), смоделированных по функциональным возможностям человеческого мозга, известным как Нейронные сети.
В этой статье мы рассмотрим концепцию нейронных сетей и способы построения, компиляции, подгонки и оценки этих моделей с использованием Питон.
Нейронные сети
Нейронные сети, или НС, представляют собой серию алгоритмов, смоделированных по образцу биологической активности человеческого мозга. Нейронные сети состоят из узлов, также называемых нейронами.
Набор вертикальных узлов известен как слои. Модель состоит из одного входа, одного выхода и ряда скрытых слоев. Каждый слой состоит из узлов, также называемых нейронами, в которых происходят вычисления.
На следующей диаграмме кружки представляют узлы, а вертикальный набор узлов представляет слои. В этой модели три слоя.
Узлы одного уровня подключены к следующему слою через линии передачи, как показано ниже.
Наш набор данных состоит из помеченных данных. Это означает, что каждому объекту данных присвоено определенное значение имени.
Таким образом, для набора данных классификации животных у нас будут изображения кошек и собак в качестве наших данных с «кошкой» и «собакой» в качестве наших меток.
Важно отметить, что метки должны быть преобразованы в числовые значения, чтобы наша модель имела смысл, поэтому наши метки животных становятся «0» для кошки и «1» для собаки. И данные, и метки передаются через модель.
Learning
Данные подаются в модель по одному объекту за раз. Эти данные разбиваются на фрагменты и передаются через каждый узел модели. Узлы выполняют математические операции над этими фрагментами.
Вам не нужно знать математические функции или расчеты для этого руководства, но важно иметь общее представление о том, как работают эти модели. После серии вычислений на одном уровне данные передаются на следующий уровень и так далее.
После завершения наша модель предсказывает метку данных на выходном слое (например, в задаче классификации животных мы получаем предсказание «0» для кошки).
Затем модель продолжает сравнивать это прогнозируемое значение с фактическим значением метки.
Если значения совпадают, наша модель примет следующий ввод, но если значения различаются, модель рассчитает разницу между обоими значениями, называемую потерями, и скорректирует расчеты узлов, чтобы в следующий раз получить совпадающие метки.
Фреймворки глубокого обучения
Чтобы построить нейронные сети в коде, нам нужно импортировать Фреймворки глубокого обучения известные как библиотеки, использующие нашу интегрированную среду разработки (IDE).
Эти фреймворки представляют собой набор предварительно написанных функций, которые помогут нам в этом руководстве. Мы будем использовать платформу Keras для построения нашей модели.
Keras — это библиотека Python, которая использует серверную часть глубокого обучения и искусственного интеллекта, называемую Tensorflow легко создавать НС в виде простых последовательных моделей.
Keras также поставляется со своими собственными уже существующими моделями, которые также можно использовать. В этом уроке мы будем создавать нашу собственную модель с помощью Keras.
Вы можете узнать больше об этой платформе глубокого обучения из Сайт Кераса.
Построение нейронной сети (учебник)
Давайте перейдем к созданию нейронной сети с использованием Python.
Постановка задачи
Нейронные сети — это тип решения проблем, основанных на искусственном интеллекте. В этом уроке мы рассмотрим данные о диабете индейцев пима, которые доступны здесь.
UCI Машинное обучение скомпилировало этот набор данных и содержит медицинскую карту индийских пациентов. Наша модель должна предсказать, будет ли у пациента начало диабета в течение 5 лет или нет.
Загрузка набора данных
Наш набор данных представляет собой единый CSV-файл под названием «diabetes.csv», которым можно легко манипулировать с помощью Microsoft Excel.
Перед созданием нашей модели нам нужно импортировать наш набор данных. Используя следующий код, вы можете сделать это:
импорт панд в виде pd
данные = pd.read_csv('диабет.csv')
х = data.drop («Результат»)
у = данные["Результат"]
Здесь мы используем Панды библиотека, чтобы иметь возможность манипулировать данными нашего CSV-файла, read_csv() — это встроенная функция Pandas, которая позволяет нам сохранять значения в нашем файле в переменной с именем «данные».
Переменная x содержит наш набор данных без данных результата (меток). Мы достигаем этого с помощью функции data.drop(), которая удаляет метки для x, в то время как y содержит только данные результата (метки).
Построение последовательной модели
Шаг 1: Импорт библиотек
Во-первых, нам нужно импортировать TensorFlow и Keras вместе с некоторыми параметрами, необходимыми для нашей модели. Следующий код позволяет нам это сделать:
импортировать тензорный поток как tf
из тензорного потока импортировать керас
из tensorflow.keras.models импортировать последовательно
из tensorflow.keras.layers import Activation, Dense
из tensorflow.keras.optimizers импортирует Адама
из tensorflow.keras.metrics импортировать categorical_crossentropy
Для нашей модели мы импортируем плотные слои. Это полносвязные слои; т. е. каждый узел слоя полностью связан с другим узлом следующего слоя.
Мы также импортируем активация функция, необходимая для масштабирования данных, отправляемых на узлы. оптимизаторы также были импортированы, чтобы свести к минимуму потери.
Адам — известный оптимизатор, который делает наши расчеты узла обновления модели более эффективными, а также categorical_crossentropy, который тип функции потерь (вычисляет разницу между фактическими и прогнозируемыми значениями меток), которую мы будем использовать.
Шаг 2: Проектирование нашей модели
Модель, которую я создаю, имеет один входной (с 16 единицами), один скрытый (с 32 единицами) и один выходной (с 2 единицами) слой. Эти цифры не являются фиксированными и будут полностью зависеть от данной проблемы.
Установка правильного количества единиц и слоев — это процесс, который можно улучшить с течением времени с помощью практики. Активация соответствует типу масштабирования, которое мы будем выполнять с нашими данными перед их передачей через узел.
Relu и Softmax — известные функции активации для этой задачи.
модель = последовательный([
Плотность (единицы = 16, input_shape = (1,), активация = 'relu'),
Плотный (единиц = 32, активация = 'relu'),
Плотный (единиц = 2, активация = 'softmax')
])
Вот как должно выглядеть резюме модели:
Обучение модели
Наша модель будет обучаться в два этапа: первый — это компиляция модели (сборка модели), а второй — подгонка модели к заданному набору данных.
Это можно сделать с помощью функции model.compile(), за которой следует функция model.fit().
model.compile (оптимизатор = Адам (learning_rate = 0.0001), loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, эпохи = 30, batch_size = 10)
Указание метрики «точность» позволяет нам наблюдать за точностью нашей модели во время обучения.
Поскольку наши метки представлены в виде 1 и 0, мы будем использовать двоичную функцию потерь для вычисления разницы между фактическими и предсказанными метками.
Набор данных также разбивается на пакеты по 10 (batch_size) и будет проходить через модель 30 раз (эпохи). Для данного набора данных x будет данными, а y будет метками, соответствующими данным.
Тестирование модели с использованием прогнозов
Чтобы оценить нашу модель, мы делаем прогнозы на тестовых данных, используя функцию predict().
прогнозы = model.predict(x)
Готово!
Теперь вы должны иметь хорошее представление о Глубокое обучение приложение, нейронные сети, как они работают в целом и как построить, обучить и протестировать модель в коде Python.
Я надеюсь, что это руководство даст вам толчок для создания и развертывания ваших собственных моделей глубокого обучения.
Дайте нам знать в комментариях, была ли статья полезна.
Оставьте комментарий