← Назад к вопросам

Что такое deep learning?

2.0 Middle🔥 131 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Deep Learning — глубокое обучение

Deep Learning (DL) — это подраздел машинного обучения, основанный на искусственных нейронных сетях с множеством слоёв (отсюда слово «глубокое»). Это современный подход к автоматическому выявлению признаков из необработанных данных.

История и эволюция

1950s — Первые идеи о нейронных сетях (McCulloch-Pitts)
1990s — Backpropagation и многослойные сети (Rumelhart, Hinton)
2006 — Geoffrey Hinton: Deep Learning революция (успешное обучение глубоких сетей)
2012 — AlexNet побеждает на ImageNet, DL становится mainstream
2016 — AlphaGo (DeepMind) побеждает чемпиона по Go
2017 — Transformer архитектура (внимание — attention mechanism)
2022 — ChatGPT показывает силу больших языковых моделей

Основной строительный блок: Нейрон

import numpy as np

# Математика одного нейрона
def neuron(inputs, weights, bias):
    # Linear combination: z = w1*x1 + w2*x2 + ... + wn*xn + b
    z = np.dot(weights, inputs) + bias
    
    # Activation function (ReLU)
    output = max(0, z)
    
    return output

# Пример
inputs = np.array([1.0, 2.0, 3.0])
weights = np.array([0.1, 0.2, 0.3])
bias = 0.5

output = neuron(inputs, weights, bias)
print(output)  # 0.1*1 + 0.2*2 + 0.3*3 + 0.5 = 1.4

Архитектура: От простого к сложному

1. Fully Connected Neural Network (Dense)

import tensorflow as tf
from tensorflow import keras

# Простая нейронная сеть для классификации
model = keras.Sequential([
    keras.layers.Dense(128, activation='relu', input_shape=(784,)),  # Input layer
    keras.layers.Dropout(0.2),  # Regularization
    keras.layers.Dense(64, activation='relu'),   # Hidden layer 1
    keras.layers.Dense(32, activation='relu'),   # Hidden layer 2
    keras.layers.Dense(10, activation='softmax') # Output layer (10 классов)
])

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

2. Convolutional Neural Network (CNN) — для изображений

# Для обработки изображений
model = keras.Sequential([
    # Convolutional layers извлекают признаки
    keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    keras.layers.MaxPooling2D((2, 2)),
    
    keras.layers.Conv2D(64, (3, 3), activation='relu'),
    keras.layers.MaxPooling2D((2, 2)),
    
    keras.layers.Conv2D(64, (3, 3), activation='relu'),
    
    # Flatten для полносвязного слоя
    keras.layers.Flatten(),
    keras.layers.Dense(64, activation='relu'),
    keras.layers.Dense(10, activation='softmax')
])

# CNN значительно лучше для изображений, чем Dense сети

3. Recurrent Neural Network (RNN) — для последовательностей

# Для текста, временных рядов
model = keras.Sequential([
    keras.layers.LSTM(128, input_shape=(timesteps, features), return_sequences=True),
    keras.layers.LSTM(64),
    keras.layers.Dense(32, activation='relu'),
    keras.layers.Dense(1, activation='sigmoid')  # Бинарная классификация
])

# LSTM (Long Short-Term Memory) помнит долгосрочные зависимости

Процесс обучения: Backpropagation

1. Forward pass: предсказание
   Input → Hidden1 → Hidden2 → Output
   
2. Вычисление ошибки (loss)
   loss = (predicted - actual)^2
   
3. Backward pass: распространение градиентов
   Compute dL/dW для каждого слоя от выхода к входу
   
4. Update weights
   W_new = W_old - learning_rate * dL/dW
# Пример с NumPy (упрощённо)
class SimpleNN:
    def __init__(self, layer_sizes):
        self.weights = [np.random.randn(layer_sizes[i], layer_sizes[i+1]) 
                       for i in range(len(layer_sizes)-1)]
        self.biases = [np.zeros((1, s)) for s in layer_sizes[1:]]
    
    def forward(self, X):
        self.activations = [X]
        A = X
        for W, b in zip(self.weights, self.biases):
            Z = np.dot(A, W) + b
            A = np.maximum(0, Z)  # ReLU
            self.activations.append(A)
        return A
    
    def backward(self, y, learning_rate):
        m = y.shape[0]
        # Вычисляем градиенты и обновляем веса
        # ...(сложные вычисления)
        pass

Популярные архитектуры

ResNet (Residual Networks)

# Skip connections помогают обучать очень глубокие сети (100+ слоёв)
# x → Conv → ReLU → Conv → Add(x) → ReLU
#     └──────────────────────────┘

Transformers — современный стандарт

# Attention mechanism вместо рекуррентности
model = keras.Sequential([
    keras.layers.Embedding(vocab_size, embedding_dim),
    keras.layers.MultiHeadAttention(...),
    keras.layers.Dense(512, activation='relu'),
    keras.layers.Dense(vocab_size, activation='softmax')
])

# GPT, BERT, T5 — основаны на Transformers

Практический пример: MNIST классификация

from tensorflow import keras
from tensorflow.keras import datasets
import numpy as np

# Загрузить данные
(X_train, y_train), (X_test, y_test) = datasets.mnist.load_data()

# Нормализация
X_train = X_train.astype('float32') / 255.0
X_test = X_test.astype('float32') / 255.0

# Построить модель
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(64, activation='relu'),
    keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# Обучение
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.1)

# Оценка
loss, accuracy = model.evaluate(X_test, y_test)
print(f'Accuracy: {accuracy*100:.2f}%')  # ~97% на MNIST

Ключевые концепции

1. Activation Functions

  • ReLU: max(0, x) — самая популярная
  • Sigmoid: 1/(1+e^-x) — для бинарной классификации
  • Tanh: (e^x - e^-x)/(e^x + e^-x) — для скрытых слоёв
  • Softmax: для многоклассовой классификации

2. Loss Functions

  • MSE (Mean Squared Error): для регрессии
  • CrossEntropy: для классификации
  • Focal Loss: для несбалансированных данных

3. Optimizers

  • SGD: базовый
  • Adam: адаптивный learning rate (самый популярный)
  • RMSprop: хороший для RNN

4. Регуляризация

  • Dropout: случайно отключать нейроны
  • L1/L2 Regularization: штраф за большие веса
  • Batch Normalization: нормализовать входы каждого слоя

Применение Deep Learning

Computer Vision: классификация, детекция, сегментация ✅ Natural Language Processing: машинный перевод, генерация текста ✅ Speech Recognition: распознавание речи ✅ Recommender Systems: рекомендации ✅ Game Playing: AlphaGo, AlphaZero ✅ Protein Folding: AlphaFold предсказывает структуру белков

Современные фреймворки

# TensorFlow / Keras — самый популярный
import tensorflow as tf

# PyTorch — любимец исследователей
import torch

# JAX — для научных вычислений
import jax

Вызовы Deep Learning

⚠️ Требует много данных — обучение работает лучше с миллионами примеров ⚠️ Требует GPU — обучение медленное на CPU ⚠️ Black box — сложно объяснить решения (интерпретируемость) ⚠️ Переобучение — модель может запомнить вместо обобщения ⚠️ Дорого — вычисления и электричество

Итоги

Deep Learning — это мощный инструмент для решения сложных задач, где нет явных правил. Он произвел революцию в:

  • Компьютерном зрении
  • Обработке естественного языка
  • Рекомендательных системах

Для Python разработчика важно понимать базовые концепции, но основная работа — это инженерия данных, параллелизм и развёртывание моделей в production.

Что такое deep learning? | PrepBro