# От детерминизма к вероятности: как работают нейросети

Источник: https://www.youtube.com/watch?v=gikcyLZbhrs
Канал: CS50
Опубликовано: 07.07.2026

---

Результат работы искусственного интеллекта — это не истина в последней инстанции, а лишь вероятностная догадка, требующая критического отношения. Чтобы понять, как машина учится принимать решения, нужно перестать видеть в ней «черный ящик» и взглянуть на математические принципы, превращающие сырые данные в прогнозы.

## 🔮 От вычислений к предсказаниям: новая роль искусственного интеллекта
[[JUMP:11:30]]

### Детерминированные системы против вероятностных прогнозов
[[JUMP:11:42]]

Исторически компьютеры воспринимались как инструменты, обладающие исключительной точностью в строго определенных рамках. Как отмечает Брайан Ю (Brian Yu), традиционно сильной стороной вычислительных машин было выполнение математических расчетов и хранение структурированной информации [11:42]. Если вы дадите современному компьютеру сложное уравнение, он решит его мгновенно и безошибочно, в то время как человеку потребовалось бы значительное время на вычисления вручную [11:55]. Другой классический пример — цифровые словари: компьютер может хранить тысячи определений и выдавать нужное по первому запросу [12:08]. 

Такие задачи Брайан Ю называет детерминированными [12:22]. В детерминированной системе один и тот же входной сигнал всегда приводит к одному и тому же результату: математическая формула всегда дает идентичный ответ, а поиск слова — одно и то же определение [12:34]. Пользователь может быть полностью уверен в корректности этих данных. Однако современный мир требует от систем искусственного интеллекта работы в условиях неопределенности, где точного ответа может не существовать в принципе [12:47].

Сегодня мы хотим, чтобы ИИ умел строить догадки и делать прогнозы, которые, хоть и не претендуют на стопроцентную истинность, остаются крайне полезными [13:00]. Брайан Ю приводит в пример оценку времени зарядки смартфона: когда вы подключаете устройство к сети, система сообщает, через сколько минут батарея будет заполнена [13:12]. Это лишь прогноз — он может ошибаться на минуту или две, но он дает пользователю ценную информацию [13:25]. Аналогично работают фильтры спама: телефон «угадывает», является ли входящий звонок нежелательным, основываясь на вероятностях, а не на абсолютном знании [13:38]. Именно в способности делать эффективные предсказания и заключается главная стратегия современного ИИ [13:50].

### Регрессия: искусство предсказывать числа
[[JUMP:14:44]]

В основе предсказательных способностей ИИ лежит понятие модели — абстрактного представления реальности, которое преобразует входные данные (input) в выходные (output) [14:16]. Брайан Ю выделяет два основных типа задач, которые решают такие модели. Если результатом работы ИИ является конкретное числовое значение, мы имеем дело с регрессией [14:44]. Если же система должна распределить данные по категориям (например, отличить важное письмо от спама), речь идет о классификации, которую лектор обещает разобрать подробнее в следующих частях лекции [15:10].

Задачи регрессии окружают нас повсюду в повседневной жизни:

*   Оценка времени до полной зарядки аккумулятора в минутах [15:35].
*   Прогноз количества шагов, сделанных во время тренировки, на основе данных фитнес-трекера [16:01].
*   Расчет оставшегося времени загрузки файла из интернета [16:15].

Во всех этих случаях ИИ не просто выдает «да» или «нет», а пытается вычислить непрерывную величину [16:28]. Процесс предсказания в регрессии строится на поиске зависимости между переменными. Например, если мы хотим предсказать рост растения, нам нужно понять, как на него влияет количество солнечного света [18:37]. Здесь солнечный свет выступает в роли входной переменной, а прирост растения в сантиметрах — в роли выходного числового значения [19:04]. Чем больше света, тем больше (предположительно) будет рост; ИИ стремится формализовать эту связь, чтобы уметь рассчитывать результат для любого нового значения освещенности [19:45].

### Обучающие данные как фундамент модели
[[JUMP:21:30]]

Для того чтобы искусственный интеллект мог построить качественную модель и понять взаимосвязь между входом и выходом, ему необходима информация о мире. Брайан Ю подчеркивает, что без дополнительных данных ИИ не сможет сделать прогноз — у него просто не будет контекста для анализа [21:17]. Решением этой проблемы становятся обучающие данные (training data) [21:30].

Обучающие данные — это набор примеров из прошлого опыта, где нам уже известны и входные, и выходные значения [21:42]. Например, в базе данных может быть зафиксировано, что при определенном уровне входного сигнала «2» результат составил «4» [21:42]. Однако одного примера недостаточно для обучения [21:57]. Чтобы ИИ смог выявить паттерны и закономерности, ему требуются сотни или тысячи подобных пар «вход-выход» [22:09]. 

Именно на основе этого массива информации алгоритм «тренируется», пытаясь осознать, как изменения в одном параметре влияют на другой [22:22]. Этот процесс позволяет ИИ построить внутреннее понимание реальности, которое в дальнейшем будет использоваться для обработки данных, которых система еще никогда не видела [22:36].

### Визуализация и поиск корреляций
[[JUMP:22:49]]

Самый эффективный способ понять структуру накопленных данных — это их визуализация. Брайан Ю демонстрирует, как числовые значения обучающей выборки переносятся на график [22:49]. Традиционно входные данные (независимая переменная) располагаются на оси X, а выходные (результат) — на оси Y [23:02]. 

Процесс визуализации включает несколько этапов:

1.  Каждая пара данных из обучающей выборки превращается в точку на координатной плоскости [23:15].
2.  Например, если при входе «3» мы получили результат «6», точка ставится на соответствующем пересечении осей [23:28].
3.  После нанесения всех имеющихся точек перед исследователем (и алгоритмом) предстает наглядная картина взаимосвязей [23:42].

Глядя на такой график, можно определить характер корреляции между переменными. В примере с растениями мы часто видим положительную корреляцию: при движении вправо по оси X (увеличение света) точки уходят выше по оси Y (увеличение роста) [23:56]. Однако в других задачах корреляция может быть отрицательной — например, зависимость времени зарядки от текущего уровня заряда батареи [24:08]. Если же точки разбросаны хаотично, это свидетельствует об отсутствии связи, и в таком случае ИИ потребуется иная стратегия для поиска закономерностей [24:08]. Подобная визуализация — это первый шаг к пониманию того, какую математическую функцию нужно применить для создания предсказательной модели, о чем более подробно пойдет речь при обсуждении линейной регрессии в следующей главе.

## 📈 Построение прогнозов: от простых линий к сложным моделям
[[JUMP:37:43]]

### Линейная регрессия: поиск математической закономерности
[[JUMP:37:43]]

Когда мы пытаемся предсказать результат (например, рост растения), мы опираемся на накопленный опыт, который ранее в разговоре Брайан Ю и Дэвид Дж. Малан называли обучающими данными [37:43]. Представьте график, где по горизонтальной оси отложено количество солнечного света, а по вертикальной — итоговый рост [37:56]. Каждая точка на этом поле — это конкретный случай из прошлого. Основная задача ИИ здесь заключается в том, чтобы понять общую связь между этими значениями [38:21]. 

Брайан Ю объясняет, что идеальный способ описать такую связь — провести через точки линию, которая будет служить моделью для будущих прогнозов [38:46]. В реальном мире данные редко выстраиваются в идеальный ряд; они «шумные» и разбросанные [38:58]. Однако даже в «грязных» данных прослеживается тренд: чем больше света, тем выше растение [39:12]. 

Проведя аппроксимирующую линию, мы получаем инструмент прогнозирования: 

1. Мы берем новое значение (например, 5 часов солнца) [39:25].
2. Находим соответствующую точку на нашей линии [39:38].
3. Получаем предсказанный результат роста [39:51].

Хотя предсказание может не быть абсолютно точным — ведь точки редко лежат прямо на линии — оно дает максимально обоснованное предположение, основанное на имеющейся информации [40:03]. Этот процесс поиска прямой, представляющей отношения между переменными, и называется линейной регрессией [51:25].

### Функция потерь и минимизация ошибок
[[JUMP:52:04]]

При построении модели возникает вопрос: какая из бесконечного множества возможных линий является «лучшей»? Некоторые варианты очевидно плохи — например, если линия идет вниз, а данные стремятся вверх [52:04]. Но как выбрать между двумя похожими линиями? Для этого компьютер использует строгое математическое мерило — функцию потерь (loss function) [52:55].

Брайан Ю вводит два ключевых понятия для оценки точности [53:08]:

*   **$y$** — реальное значение из обучающих данных (фактический рост) [53:22].
*   **$\hat{y}$ (y-hat)** — предсказание, которое делает модель для той же точки [53:35].

Разница между этими значениями и есть ошибка. Чтобы превратить её в показатель качества всей модели, используются разные подходы. Самый простой — абсолютная ошибка (вычитание одного из другого и взятие модуля), которая показывает чистое расстояние между прогнозом и реальностью [54:26]. Однако чаще применяется квадратичная ошибка, где разница возводится в квадрат [54:52].

Возведение в квадрат не только избавляет от отрицательных чисел, но и несет важный педагогический смысл для алгоритма: оно «штрафует» модель за большие промахи гораздо сильнее, чем за маленькие [55:18]. Если ошибка равна 3, штраф составит 9; если ошибка 10, то штраф подскочит до 100 [55:18]. Итоговым показателем становится средняя квадратичная ошибка (MSE — Mean Squared Error) — среднее арифметическое всех квадратов отклонений по всем точкам данных [56:09]. Теперь задача компьютера становится предельно ясной: используя свою вычислительную мощь, он должен найти такие параметры линии, при которых MSE будет минимальным [56:22].

### Мультивариативная регрессия: учет множества факторов
[[JUMP:57:00]]

До этого момента рассматривались простейшие случаи с одной входной переменной. Но реальный мир гораздо сложнее [57:00]. Рост растения зависит не только от солнца, но и от количества питательных веществ в почве [57:25]. Чтобы повысить точность, ИИ переходит к мультивариативной регрессии, учитывающей сразу несколько факторов одновременно [57:38].

Брайан Ю приводит наглядные примеры из повседневной жизни, где предсказание одного числа зависит от комбинации входных данных:

*   **Зарядка телефона:** время до 100% зависит не только от текущего уровня заряда, но и от температуры окружающей среды [57:51].
*   **Фитнес-трекеры:** расчет количества шагов или сожженных калорий опирается на дистанцию и скорость движения [58:04].
*   **Загрузка файлов:** время скачивания определяется размером файла и текущей скоростью интернет-соединения [58:17].

Суть алгоритма при этом остается прежней — поиск математической зависимости между всеми входящими переменными и итоговым результатом [58:30]. С добавлением новых данных и новых факторов модель становится всё более детализированной и точной [58:56]. Таким образом, регрессия позволяет нам превращать набор разрозненных цифр в надежные численные прогнозы [59:09].

### Классификация как способ категоризации мира
[[JUMP:59:22]]

Помимо предсказания конкретных чисел (регрессии), существует другой важнейший тип задач — классификация [59:22]. Если в регрессии результатом является число на непрерывной шкале, то в классификации задача стоит иначе: нужно распределить данные по дискретным категориям [59:34].

Классическим примером является фильтрация почты: система должна решить, является ли входящее сообщение «спамом» или «обычным письмом» [59:34]. Мы постоянно занимаемся классификацией в быту [59:47]. Брайан Ю иллюстрирует это на примере сортировки одежды при переезде: у нас есть две коробки — «летняя одежда» и «зимняя одежда» [59:59]. Каждая вещь, которую мы берем в руки, должна быть отнесена к одной из этих категорий [1:10:52]. В отличие от регрессии, где нас интересовала «длина» или «вес», здесь нас интересует принадлежность к группе, что требует от алгоритмов ИИ совершенно иных подходов к анализу признаков объектов.

## 🧠 От признаков к связям: алгоритм K-ближайших соседей и нейронные сети
[[JUMP:1:11:05]]

Когда мы сталкиваемся с задачей классификации — будь то сортировка одежды или предсказание погоды — мы подсознательно ищем закономерности. Брайан Ю иллюстрирует этот процесс на примере распределения вещей по коробкам «Лето» и «Зима» [1:11:05]. Чтобы компьютер мог сделать то же самое, ему нужно понимать, на какие характеристики или «признаки» (features) данных стоит опираться [1:12:46]. Ранее в курсе обсуждалось, как классификация помогает распределять объекты по категориям, но именно в этой части лекции фокус смещается на конкретные механизмы, позволяющие ИИ принимать решения на основе близости данных или структуры, имитирующей человеческий мозг.

### Анализ признаков и логика классификации
[[JUMP:1:11:18]]

Процесс классификации начинается с определения входных данных (inputs) и желаемых выходных категорий [1:11:05]. Брайан Ю объясняет, что человек принимает решение о принадлежности вещи к летнему гардеробу, анализируя конкретные характеристики: толщину ткани, узор или длину рукава [1:11:55]. Например, короткий рукав кажется логичным признаком для летней коробки [1:12:20]. Однако реальные данные часто бывают неоднозначными: плотный жилет может иметь короткие рукава, но предназначаться для холодной погоды [1:12:46], а тонкая рубашка с длинным рукавом может быть идеальна для прохладного летнего вечера [1:12:59].

Цель машинного обучения в данном контексте — предоставить компьютеру примеры данных, уже распределенных по «коробкам», чтобы он самостоятельно вывел полезное правило для классификации новых объектов [1:13:38]. Те же принципы применимы к прогнозированию погоды. Для предсказания дождя ИИ может использовать следующие признаки:

*   Температура воздуха [1:21:55];
*   Атмосферное давление [1:21:55];
*   Облачность [1:22:08];
*   Влажность [1:22:08].

Используя большой объем обучающих данных, модель учится комбинировать эти переменные, чтобы рассчитать вероятность осадков на конкретную дату [1:22:47]. Как отмечает Брайан Ю, задача ИИ — найти паттерн в этих признаках, который позволит точно предсказать, будет ли день «синим» (дождливым) или «красным» (солнечным) [1:23:13].

### Алгоритм ближайшего соседа (K-NN)
[[JUMP:1:25:36]]

Одним из самых интуитивно понятных методов классификации является алгоритм ближайшего соседа (Nearest Neighbor classification) [1:25:36]. Брайан Ю демонстрирует его работу на одномерном графике, где по горизонтальной оси отложено атмосферное давление [1:23:51]. Если у нас есть исторические данные о дождливых и солнечных днях, мы можем разместить их на этой оси [1:24:17]. Когда появляется новая дата с известным давлением, возникает вопрос: к какой категории её отнести? [1:24:57].

Инстинктивное решение — посмотреть, к какой из уже известных точек новый объект находится ближе всего [1:25:22]. Если значение давления максимально близко к исторически «солнечному» дню, алгоритм предскажет отсутствие дождя [1:25:36]. Это и есть суть метода: новый объект наследует категорию своего ближайшего соседа из обучающей выборки [1:25:50].

Однако реальные данные редко бывают идеально сгруппированы; в них часто встречаются «выбросы» (outliers) [1:27:08]. Например, может зафиксироваться дождливый день при аномально высоком давлении [1:27:21]. В таких случаях классический метод ближайшего соседа может ошибиться, выбрав случайную аномальную точку [1:27:34]. Чтобы сделать модель более устойчивой, используется модификация — алгоритм **K-ближайших соседей (K-NN)** [1:27:59]. Вместо одного соседа алгоритм анализирует $K$ ближайших точек (например, 3 или 5) и принимает решение путем «голосования» большинством голосов [1:28:12].

Преимущество K-NN заключается в том, что он эффективно работает и с множеством признаков одновременно [1:28:52]. Хотя человеку сложно представить пространство с шестью или более измерениями, для компьютера каждое дополнительное свойство (влажность, облачность и т.д.) — это просто еще одно число в расчетах [1:29:42].

### Искусственные нейронные сети: архитектура и принципы
[[JUMP:1:30:09]]

Более сложный и популярный подход в современном ИИ — нейронные сети, архитектура которых была вдохновлена человеческим мозгом [1:30:09]. Брайан Ю поясняет, что биологический мозг состоит из множества нейронов, соединенных между собой и передающих электрические сигналы [1:30:35]. Идея создания искусственной нейронной сети (Artificial Neural Network) заключалась в том, чтобы построить цифровую модель, основанную на аналогичных принципах [1:31:02].

Основным элементом такой сети является искусственный нейрон или «юнит» [1:31:28]. В отличие от биологического прототипа, он хранит в себе числовое значение — обычно от 0 (выключен) до 1 (полная активация) или любое промежуточное десятичное число [1:31:43]. Эти нейроны соединяются в сеть, где информация передается от одного узла к другому [1:32:08].

Брайан Ю схематично изображает простейшую структуру нейронной сети на доске [1:34:36]:

1.  **Входные нейроны (Input neurons):** расположены в левой части схемы, каждый из них хранит значение определенного признака (например, уровень влажности или давления) [1:35:41].
2.  **Связи:** линии, по которым информация «течет» слева направо [1:35:01].
3.  **Выходной нейрон (Output neuron):** финальный узел, значение в котором формируется на основе данных от входных нейронов и служит итоговым предсказанием модели [1:35:14].

Такая структура позволяет сети аккумулировать информацию из разных источников для принятия единого решения, например, станет ли конкретный день дождливым [1:35:53]. В последующих разделах лекции будут рассмотрены механизмы обучения этих сетей и роль скрытых слоев в анализе сложных паттернов.

## 🧠 Математика обучения: как нейросети находят закономерности
[[JUMP:1:35:53]]

В основе современных технологий искусственного интеллекта лежит структура, вдохновленная человеческим мозгом, где информация передается между вычислительными единицами — нейронами [1:36:34]. Брайан Ю объясняет, что задача компьютера в рамках этой архитектуры заключается в том, чтобы понять взаимосвязь между входными данными (например, метеорологическими показателями) и итоговым результатом (пойдет ли дождь) [1:36:20]. Чтобы этот процесс стал возможным, программисты используют математические инструменты, превращающие набор абстрактных сигналов в конкретные предсказания.

### Параметры модели: веса и смещения
[[JUMP:1:40:14]]

Когда мы подаем данные на вход нейронной сети, мы не можем просто сложить все показатели. Каждый фактор имеет свою степень влияния на результат: например, влажность воздуха может быть важнее для предсказания дождя, чем текущая температура [1:39:23]. Для учета этой значимости вводятся **веса (weights)** — числовые значения, которые определяют, насколько сильно конкретный входной параметр влияет на итоговый результат [1:40:14]. 

Математика процесса выглядит следующим образом:

1.  Каждый входной сигнал ($x_1, x_2, \dots$) умножается на соответствующий ему вес ($W_1, W_2, \dots$) [1:40:51].
2.  Если вес велик, вход оказывает значительное влияние на выход; если вес близок к нулю — влияние минимально [1:40:51].
3.  Положительный вес означает, что рост входного значения увеличивает итоговый результат, а отрицательный — уменьшает его [1:41:05].

Помимо весов, существует параметр **смещения (bias)** [1:41:44]. Это дополнительное число, которое прибавляется к сумме в самом конце вычислений. Смещение позволяет модели учитывать общие закономерности, не зависящие от входных данных — например, тот факт, что в определенном городе дожди идут часто в принципе, вне зависимости от давления или облачности [1:41:44]. Вместе веса и смещения называют **параметрами модели** [1:42:35]. Именно их значения подбирает ИИ в процессе обучения, чтобы уравнение $y = (W_1 \cdot x_1) + (W_2 \cdot x_2) + \dots + B$ выдавало максимально точный результат [1:42:47].

Брайан Ю приводит наглядный пример расчета [1:43:14]: если на входы поданы значения 4 и 5, веса равны 1 и 2, а смещение составляет 3, то нейрон вычислит: $(4 \cdot 1) + (5 \cdot 2) + 3 = 17$ [1:44:30]. Если мы используем порог в 0 для классификации, то результат 17 будет интерпретирован как «1» (истина/да) [1:44:57]. Если же изменить вес второго входа на -2, результат превратится в -3, что ниже порога и будет означать «0» (ложь/нет) [1:45:39].

### Итеративное обучение нейронной сети
[[JUMP:1:47:18]]

Обучение нейронной сети — это не одномоментное действие, а процесс постепенной корректировки весов и смещений на основе обучающих данных [1:47:18]. Ранее в курсе Дэвид Дж. Малан и Брайан Ю уже касались темы важности качественных данных, и именно здесь они становятся фундаментом для «интеллекта» системы.

Процесс обучения выглядит как цикл обратной связи:

*   Сеть делает предсказание на основе текущих (в начале часто случайных) весов [1:47:44].
*   Результат сравнивается с реальным значением из обучающей выборки. Например, модель предсказала «0» (нет дождя), а на самом деле был «1» (дождь) [1:47:59].
*   Обнаружив ошибку, алгоритм слегка корректирует веса и смещения, чтобы в следующий раз при аналогичных входах результат был ближе к правильному [1:48:11].
*   Этот процесс повторяется тысячи и миллионы раз на множестве примеров [1:48:36].

С каждой итерацией модель делает всё более точные предсказания, «нащупывая» правильные числовые коэффициенты, которые описывают сложные взаимосвязи в данных [1:48:48]. В конечном итоге обучение сводится к минимизации ошибок и оптимизации этой гигантской математической формулы [1:49:13].

### Скрытые слои для моделирования сложных паттернов
[[JUMP:1:53:37]]

Простая модель с одним слоем вычислений способна решать только линейные задачи — грубо говоря, она может провести прямую линию на графике, чтобы разделить две группы данных [1:51:54]. Однако реальный мир сложнее. Брайан Ю демонстрирует пример с четырьмя точками (две красные и две синие), расположенными крест-накрест: никакая прямая линия не сможет идеально отделить синие точки от красных [1:52:19].

Чтобы справляться с такими нелинейными закономерностями, в архитектуру вводят **скрытые слои (hidden layers)** [1:53:37]. Это промежуточные уровни нейронов между входом и выходом. Каждый нейрон в скрытом слое выполняет свою часть вычислений, а затем передает результат дальше [1:53:49]. Благодаря такой многослойности сеть может строить гораздо более изощренные границы между категориями данных [1:54:28].

Современные нейросети могут содержать миллионы, миллиарды и даже триллионы параметров [1:54:41]. В таких структурах каждый отдельный вес представляет собой крошечный фрагмент информации о взаимосвязях, но в совокупности они позволяют ИИ распознавать человеческую речь или генерировать сложные изображения [1:54:54].

### Классификация по многим категориям и вероятности
[[JUMP:1:56:12]]

До этого момента рассматривалась в основном бинарная классификация (да/нет). Однако на практике задач часто больше: например, распределить письма не просто на «спам» и «не спам», а выделить еще и категорию «важное» [1:55:59]. Или рассортировать одежду по четырем сезонам, а не только на летнюю и зимнюю [1:56:12].

Для решения таких задач архитектуру выхода меняют: вместо одного нейрона создается несколько, по одному на каждую категорию [1:57:18]. В этом случае нейросеть выдает не просто число, а **вероятностное распределение** [1:57:31]. Например, на выходе мы можем получить:

*   60% — категория А;
*   15% — категория B;
*   25% — категория C [1:57:44].

Такой подход позволяет не только получить ответ, но и оценить степень уверенности искусственного интеллекта в своем решении [1:58:11]. Если вероятности распределены почти поровну, это сигнал пользователю о том, что система сомневается.

В завершение лекции Брайан Ю подчеркивает критическое различие между ИИ и традиционным программированием. Обычный калькулятор детерминирован: он всегда следует жестким инструкциям и выдает гарантированно точный ответ [1:58:36]. Нейросети же носят вероятностный характер — они делают предсказания на основе данных, а значит, могут ошибаться [1:59:01]. Понимание этой природы ИИ необходимо для того, чтобы осознанно решать, в каких ситуациях мы можем доверять алгоритму, а в каких требуется дополнительная проверка человеком [1:59:15].