Найти в Дзене

7. Нейронные сети: глубокое погружение в искусственный интеллект 🧠🕸️

В предыдущем посте мы использовали логистическую регрессию для классификации изображений. Сегодня мы сделаем шаг вперед и познакомимся с нейронными сетями – мощным инструментом, который лежит в основе многих современных достижений в области искусственного интеллекта. 1. Что такое нейронная сеть? Нейронная сеть – это вычислительная модель, вдохновленная структурой и функционированием человеческого мозга. Она состоит из искусственных нейронов, соединенных между собой. 2. Как работает нейронная сеть? 3. Реализация нейронной сети с помощью Keras: Keras – это высокоуровневый API для создания и обучения нейронных сетей. Он прост в использовании и позволяет быстро строить сложные модели. Keras работает поверх TensorFlow или Theano. Сначала установим TensorFlow (или Theano) и Keras: _________________________________________________________________________________________ pip install tensorflow # Или pip install theano pip install keras _________________________________________________________

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

1. Что такое нейронная сеть?

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

  • Нейрон (Neuron): Основной элемент нейронной сети. Он получает входные данные, обрабатывает их и выдает выходной сигнал.
  • Связи (Connections): Соединяют нейроны между собой. Каждая связь имеет вес, который определяет силу передачи сигнала.
  • Слои (Layers): Нейроны объединяются в слои. Обычно выделяют входной слой, скрытые слои и выходной слой.

2. Как работает нейронная сеть?

  1. Входные данные подаются на входной слой.
  2. Сигнал распространяется по сети от слоя к слою.
  3. Каждый нейрон получает взвешенную сумму входных сигналов, применяет к ней функцию активации (например, сигмоид или ReLU) и выдает выходной сигнал.
  4. Выходной слой выдает результат работы сети (например, классификацию или прогноз).

3. Реализация нейронной сети с помощью Keras:

Keras – это высокоуровневый API для создания и обучения нейронных сетей. Он прост в использовании и позволяет быстро строить сложные модели. Keras работает поверх TensorFlow или Theano.

Сначала установим TensorFlow (или Theano) и Keras:

_________________________________________________________________________________________

pip install tensorflow # Или pip install theano pip install keras

_____________________________________________________________________________________Bash

Теперь напишем код для построения и обучения нейронной сети для классификации MNIST:

__________________________________________________________________________________________

import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import to_categorical # Для one-hot encoding целевых переменных
# 1. Загрузка и подготовка данных (как в предыдущем посте) digits = load_digits()
X = digits.data
y = digits.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# One-hot encoding целевых переменных y_train_encoded = to_categorical(y_train)
y_test_encoded = to_categorical(y_test)


# 2. Создание модели нейронной сети model = Sequential()
model.add(Dense(128, activation='relu', input_shape=(64,)))
# 64 входных признака (пикселя) model.add(Dense(10, activation='softmax')) # 10 выходных классов (цифры от 0 до 9)
# 3. Компиляция модели model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 4. Обучение модели model.fit(X_train_scaled, y_train_encoded, epochs=10, batch_size=32)

# 5. Оценка модели loss, accuracy = model.evaluate(X_test_scaled, y_test_encoded)
print("Accuracy:", accuracy)

___________________________________________________________________________________Python

Разберем код:

  • Sequential() – создает последовательную модель нейронной сети.
  • Dense(128, activation='relu', input_shape=(64,)) – добавляет полносвязный слой с 128 нейронами, функцией активации ReLU и входной формой 64 (количество признаков в MNIST).
  • Dense(10, activation='softmax') – добавляет выходной слой с 10 нейронами (по одному на каждую цифру), функцией активации softmax (преобразует выходные сигналы в вероятности).
  • model.compile(...) – компилирует модель, определяя оптимизатор (adam), функцию потерь (categorical_crossentropy для многоклассовой классификации) и метрики (accuracy).
  • model.fit(...) – обучает модель на обучающих данных в течение 10 эпох (проходов по всем данным) с размером пакета 32.
  • model.evaluate(...) – оценивает модель на тестовых данных и выводит accuracy.
  • to_categorical(y_train) - преобразует вектор меток классов в матрицу one-hot encoding. Например, если у нас 3 класса и метка 1, то она будет преобразована в [0, 1, 0]

4. Результат:

Вы должны увидеть accuracy около 0.97 или выше, что значительно лучше, чем с логистической регрессией.

5. Что дальше?

  • Более глубокие сети: Добавление большего количества скрытых слоев.
  • Другие функции активации: Использование других функций активации, таких как sigmoid или tanh.
  • Регуляризация: Использование регуляризации (например, dropout или L2-регуляризации) для предотвращения переобучения.
  • Сверточные нейронные сети (CNN): Использование CNN, которые специально разработаны для работы с изображениями.

Вопрос дня: Какие архитектуры нейронных сетей вам кажутся наиболее интересными и перспективными? Поделитесь в комментариях! 👇

#нейронныесети #keras #tensorflow #deeplearning #искусственныйинтеллект #ai #ml #классификация #mnist #python #дляначинающих #технологии #дзен #канал