Создать свою нейросеть сегодня реально даже без дорогого железа. Не нужна видеокарта за сотни тысяч или отдельный сервер — большую часть рутины берут на себя готовые библиотеки, а обучение можно запускать в облаке прямо из браузера.
В материале рассмотрим процесс создания простой модели, которая определяет токсичные комментарии.
Открываем рабочую среду
Перейдите на сайт colab.research.google.com и нажмите «Создать блокнот». Перед вами появится страница с пустой ячейкой кода. Слева от нее есть кнопка ▶ — она запускает код внутри ячейки. Каждая новая команда вводится в отдельной ячейке через кнопку «+ Код».
Загружаем инструменты
Создайте новую ячейку, вставьте код (ниже) и нажмите ▶. После запуска должна появиться надпись OK.
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
print(«OK»)
Эти строки подключают готовые инструменты для работы с текстом и нейросетями.
Создаем данные для обучения
Добавьте новую ячейку и вставьте следующий код. Запустите его.
sentences = [
«spasibo, ochen polezno»,
«klass, mne ponravilos»,
«avtor molodec»,
«ty idiot i nichego ne znaesh»,
«uzhasnyi kontent, otpiska»,
«ty durak»
]
labels = [0,0,0,1,1,1]
Здесь sentences — это тексты, а labels — правильные ответы. Ноль означает нормальный комментарий, единица — токсичный. Нейросеть будет учиться на этих примерах.
Превращаем текст в числа
Нейросеть не понимает слова, ей нужны числа. Добавьте новую ячейку и запустите код.
vocab_size = 1000
max_len = 8
tokenizer = Tokenizer(num_words=vocab_size, oov_token=»<OOV>»)
tokenizer.fit_on_texts(sentences)
sequences = tokenizer.texts_to_sequences(sentences)
padded = pad_sequences(sequences, maxlen=max_len, padding=»post»)
print(padded)
После запуска вы увидите таблицу из чисел. Это и есть ваш текст в формате, понятном машине. Tokenizer заменил слова номерами, а pad_sequences выровнял длину фраз.
Создаем нейросеть
Добавьте новую ячейку и вставьте следующий код.
model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, 16, input_length=max_len),
tf.keras.layers.GlobalAveragePooling1D(),
tf.keras.layers.Dense(16, activation=»relu»),
tf.keras.layers.Dense(1, activation=»sigmoid»)
])
model.compile(optimizer=»adam»,
loss=»binary_crossentropy»,
metrics=[«accuracy»])
Embedding превращает номера слов в векторы. Dense-слои принимают решение. Sigmoid выдает вероятность от 0 до 1.
Обучаем модель
В новой ячейке вставьте:
model.fit(padded, np.array(labels), epochs=30, verbose=0)
print(«Обучение завершено»)
Если все прошло без ошибок, модель обучена.
Проверяем работу
Создайте новую ячейку и запустите:
test = [«spasibo», «ty polnyi idiot», «klassnyi post»]
test_seq = tokenizer.texts_to_sequences(test)
test_pad = pad_sequences(test_seq, maxlen=max_len, padding=»post»)
pred = model.predict(test_pad)
for text, score in zip(test, pred):
print(text, «->», float(score), «TOXIC» if score > 0.5 else «OK»)
Если число больше 0.5 — модель считает комментарий токсичным.
Важно
По разным причинам во время выполнения шагов могут возникнуть ошибки. Вручную разбираться с ними достаточно сложно, поэтому наиболее эффективный вариант — прислать текст ошибок в ChatGPT и попросить его помочь с решением проблемы.
