Этот контент является частью серии о главе 3 о вероятности из Книги глубокого обучения Гудфеллоу И., Бенжио Ю. и Курвилля А. (2016). Он направлен на обеспечение интуиции / рисунков / кода на Python по математическим теориям и построен на моем понимании этих концепций.

Github: соответствующую записную книжку Python можно найти здесь.

Я рад представить здесь следующую из моей серии книг по глубокому обучению Гудфеллоу и др. Это первый пост / блокнот, сделанный из главы 3 о вероятности. Для тех, кто уже знаком с моими постами / блокнотами по Главе 2 по линейной алгебре, цель и структура совпадают. Цель состоит в том, чтобы сделать книгу более доступной для людей без глубоких математических знаний. Для получения дополнительной информации вы можете обратиться к вводному посту.

Я думаю, что можно получить лучшую интуицию в математических концепциях, используя код (здесь Python) и визуализацию. Структура соответствует подразделам книги, и ее можно использовать в качестве дополнительного содержания с примерами и подробностями.

Эта первая часть посвящена главам с 3.1 по 3.3. Глава 3.1 представляет собой введение в вероятность и не содержит технических трудностей. Таким образом, вы можете напрямую прочитать его здесь. Глава 3.2 на самом деле является всего лишь определением, поэтому основная часть - это 3.3, посвященная функции массы вероятности и функции плотности вероятности. После его прочтения случайные величины и их распределения вероятностей (для дискретных и непрерывных переменных) не станут для вас секретом 🏄🏾‍♂️.

Чтобы понять это, мы также изучим несколько очень полезных математических инструментов:

🔧 Дискретная и непрерывная переменная

🔧 Производная

🔧 Интегралы

🔧 Площадь под кривой

Эти понятия важно уловить для общей науки о данных и машинного обучения.

3.2 Случайные переменные

Цель вероятности - иметь дело с неопределенностью. Это дает возможность описывать случайные события. Случайная величина - это переменная, которая может принимать несколько значений в зависимости от результата случайного события. Возможные результаты - это возможные значения переменной.

Если результаты конечны (например, 6 вариантов в событии бросания кубика), случайная величина называется дискретной.

Если возможные результаты не конечны (например, если вытянуть число от 0 до 1, можно получить бесконечное количество значений), случайная величина называется непрерывной.

Как и в книге, мы будем использовать следующие обозначения: строчная буква простым шрифтом для случайной величины: x.

Пример 1.

Допустим, переменная x - это случайная величина, выражающая результат броска костей 🎲. Переменная может принимать значения 1, 2, 3, 4, 5 или 6. Это дискретная случайная величина.

3.3 Распределения вероятностей

Таким образом, случайная величина может принимать несколько значений. Очень важно знать, будут ли одни ценности встречаться чаще, чем другие. Описание вероятности каждого возможного значения, которое может принимать случайная величина, называется ее распределением вероятностей.

Идея сравнения дискретных и непрерывных переменных важна, и мы изучим концепцию распределения вероятностей в обоих случаях. Даже если они связаны между собой, существуют некоторые различия.

В любом случае, распределение вероятностей случайной величины x описывает вероятность каждого результата (вероятность 1 означает, что переменная всегда будет принимать это значение, и вероятность 0, что она никогда не встретится). Эта функция называется распределением вероятностей. В частности, она называется функцией массы вероятности для дискретной переменной и функцией плотности вероятности для непрерывной переменной.

3.3.1 Дискретная переменная и функция масс вероятности

Функция массы вероятности - это функция, которая описывает вероятность, связанную со случайной величиной x. Эта функция называется P (x) или P (x = x), чтобы избежать путаницы. P (x = x) соответствует вероятности того, что случайная величина x примет значение x (обратите внимание на разные шрифты).

Пример 2.

Эксперимент с игральными костями, иллюстрирующий дискретную случайную величину и функцию масс вероятности

Давайте бросим кубик бесконечное количество раз и посмотрим на пропорцию 1, пропорцию 2 и так далее. Мы называем x случайной величиной, которая соответствует результату броска кости. Таким образом, случайная величина x может принимать только следующие дискретные значения: 1, 2, 3, 4, 5 или 6. Таким образом, это дискретная случайная величина.

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

P(x = 1) = P(x = 2) = P(x = 3) = P(x = 4) = P(x = 5) = P(x = 6)

Теперь, как мы можем вычислить вероятности P (x = 1), P (x = 2) и т. Д.? Поскольку у нас есть 6 возможных исходов и они равновероятны, мы имеем:

P(x = 1) = P(x = 2) = P(x = 3) = P(x = 4) = P(x = 5) = P(x = 6) = 1/6

Кстати, это распределение показывает одинаковую вероятность для каждого значения: оно называется равномерным распределением.

Функция вероятностных масс может выглядеть примерно так:

Вероятностная функция массы эксперимента с игральными костями

По оси ординат отложена вероятность, а по оси абсцисс - результат.

Давайте воспроизведем этот первый пример в коде, чтобы убедиться, что все понятно:

Я создал массив, заполненный 0, с помощью функции Numpy zeros(). При каждом броске я выбирал значение из 6 возможных. Затем я использовал функцию Numpy unique() с параметром return_counts, установленным на True, чтобы получить количество каждого возможного результата. Я построил пропорцию для каждого возможного значения.

Мы видим, что распределение выглядит как равномерное и что вероятность каждого результата составляет около 1/6 (около 0,17).

Совместное распределение вероятностей

Теперь посмотрим, что произойдет, если мы бросим два кубика. Для каждого кубика результаты связаны с определенной вероятностью. Для описания игры нам нужны две случайные величины, скажем, x соответствует первому кубику, а y - второму. У нас также есть две вероятностные массовые функции, связанные со случайными величинами: P (x = x) и P (y = y ). Здесь возможные значения случайных величин (1, 2, 3, 4, 5 или 6) и функции вероятности массы фактически одинаковы для обеих игральных костей, но это не обязательно.

Совместное распределение вероятностей полезно в тех случаях, когда нас интересует вероятность того, что x принимает определенное значение, а y - другое конкретное значение. Например, какова будет вероятность получить 1 с первой кости и 2 со второй? Вероятности, соответствующие каждой паре значений, записываются как P (x = x, y = y) или P. (х, у). Это то, что мы называем совместной вероятностью.

Пример 3.

Например, давайте посчитаем вероятность выпадения 1 на первой кости и 2 на второй:

P(x = x, y = y) = 1/6 . 1/6 = 1/36 = 0.028

Свойства функции массы вероятности

Функция является функцией массы вероятности, если:

Символ ∀ означает «для любого».

Это означает, что для каждого возможного значения x в диапазоне x (в примере эксперимента с прокаткой штампа все возможные значения равны 1, 2, 3, 4, 5 и 6) вероятность того, что результат соответствует этому значению между 0 и 1. Вероятность 0 означает, что событие невозможно, а вероятность 1 означает, что вы можете быть уверены, что результат будет соответствовать этому значению.

В примере с игральными костями вероятность каждого возможного значения равна 1/6, что находится между 0 и 1. Это свойство выполняется.

Это означает, что сумма вероятностей, связанных с каждым возможным значением, равна 1.

В примере эксперимента с игральными костями мы видим, что существует 6 возможных исходов, каждый с вероятностью 1/6, что в сумме дает 1/6 * 6 = 1. Это свойство выполняется.

3.3.2 Непрерывная переменная и функция плотности вероятности

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

В случае функции массы вероятности мы видели, что ось Y показывает вероятность. Например, на графике, который мы создали с помощью Python, вероятность получить 1 была равна 1/6 = 0,16 (проверьте график выше). Это 1/6, потому что это одна возможность из шести возможных.

Однако мы не можем сделать это для непрерывных переменных, потому что общее количество возможностей бесконечно. Например, если мы нарисуем число от 0 до 1, у нас будет бесконечное количество возможных результатов (например, 0,320502304…). В приведенном выше примере у нас было 6 возможных результатов, что привело к вероятности около 1/6. Теперь каждая вероятность равна 1 / + = 0. Такая функция была бы не очень полезной.

По этой причине ось Y функции плотности вероятности не представляет значения вероятности. Чтобы получить вероятность, нам нужно вычислить площадь под кривой (ниже мы увидим некоторые подробности о площади под кривой). Преимущество состоит в том, что это приводит к вероятностям в соответствии с определенным диапазоном (по оси x): площадь под кривой увеличивается, если диапазон увеличивается. Давайте посмотрим на несколько примеров, чтобы прояснить все это.

Пример 4.

Допустим, у нас есть случайная величина x, которая может принимать значения от 0 до 1. Вот ее функция плотности вероятности:

Функция плотности вероятности

Мы можем видеть, что 0 кажется невозможным (вероятность около 0) и ни то, ни другое. Изображение около 0,3 означает, что будет много результатов около этого значения.

Нахождение вероятностей из функции плотности вероятности между определенным диапазоном значений может быть выполнено путем вычисления площади под кривой для этого диапазона. Например, вероятность выпадения значения от 0,5 до 0,6 соответствует следующей области:

Плотность вероятности и площадь под кривой от 0,5 до 0,6

Мы легко видим, что если мы увеличим диапазон, вероятность (площадь под кривой) также увеличится. Например, для диапазона 0,5–0,7:

Плотность вероятности и площадь под кривой от 0,5 до 0,7.

Мы скоро увидим, как вычислить площадь под кривой и получить вероятность, связанную с определенным диапазоном.

Свойства функции плотности вероятности

Эти различия между функциями массы вероятности и функцией плотности вероятности приводят к различным свойствам функции плотности вероятности:

В этом случае p (x) не обязательно меньше 1, потому что оно не соответствует вероятности (сама вероятность все равно должна быть между 0 и 1 ).

Пример 5.

Например, предположим, что у нас есть непрерывная случайная величина, которая может принимать значения от 0 до 0,5. Эта переменная описывается равномерным распределением, поэтому у нас будет следующая функция распределения вероятностей:

Функция плотности вероятности (равномерное распределение). Площадь под кривой равна 1 (2 * 0,5), а значения y больше 1.

Мы можем видеть, что значения y больше 1. Вероятность определяется площадью под кривой и, следовательно, также зависит от оси x.

🤨 Если вы хотите убедиться в этом сами, мы воспроизведем этот пример на Python. Для этого мы создадим случайную переменную x, которая может случайным образом принимать значение от 0 до 0,5. Равномерное распределение будет использоваться благодаря функции Numpy random.uniform(). Параметрами этой функции являются наименьшее значение (включено), наибольшее значение (не включено) и количество выборок. Таким образом, np.random.uniform(0, 0.5, 10000) создаст 10000 значений, случайно выбранных из значений ›0 и ≤0,5.

Выглядит неплохо! 🏄🏽‍♀️

Мы видим, что фигура выглядит так, как я нарисовал выше, со значениями по оси Y около 2 для всех x от 0 до 0,5.

Однако одно может быть интригующим в этом сюжете. Мы говорили о непрерывной переменной, а здесь мы изобразили распределение полосами. Объяснение такое же, как и раньше: нам нужно разделить функцию, чтобы подсчитать количество результатов в каждом интервале. Собственно количество интервалов - это параметр функции distplot(). Попробуем использовать много бинов:

Мы видим, что мы все еще около 2, но вариабельность больше, чем раньше (столбцы могут изменяться от 1 до 4, чего не было на последнем графике). Есть идеи, почему? 🤔

💡Это связано с тем, что, поскольку мы взяли больше интервалов, меньшее количество значений было в каждом интервале, что привело к менее точной оценке. Если эта гипотеза верна, мы могли бы уменьшить эту изменчивость, увеличив количество выборок. Давайте попробуем это:

Это здорово 🤸🏼‍♂️

Теперь мы можем перейти ко второму свойству!

Для функции массы вероятности мы видели, что сумма вероятностей должна быть равна 1. Это не относится к функциям плотности вероятности, поскольку вероятность соответствует площади под кривой, а не непосредственно y ценности. Однако это означает, что площадь под кривой должна быть равна 1.

В последнем примере мы видели, что площадь фактически равна 1. Ее легко получить и визуализировать из-за квадратной формы равномерного распределения. Таким образом, можно умножить высоту на ширину: 2 * 0,5 = 1.

Однако во многих случаях форма не является квадратом, и нам все равно нужно вычислить площадь под кривой. Посмотрим, как это сделать!

🔧 Площадь под кривой

Площадь под кривой функции для определенного диапазона значений может быть вычислена с помощью интеграла функции. Мы увидим, что вычисление интеграла функции противоположно вычислению производной. Это означает, что если вы выводите функцию f (x) и вычисляете интеграл полученной функции f '(x ) вы получите обратно f (x). 😮

Производная в точке функции дает ее скорость изменения. Какая связь между функцией, описывающей скорость изменения другой функции (производной), и площадью под кривой 🤔?

Начнем с точки производной! И тогда, на следующем графическом примере, все будет предельно ясно. 🔮

Пример 6.

Мы хотим смоделировать скорость транспортного средства. Допустим, функция f (x) = x ² определяет ее скорость (ось y) в зависимости от времени (ось x) .

Сначала мы построим график функции f (x) = x ² it, чтобы увидеть ее форму:

Форма - парабола! Это показывает, что скорость вначале увеличивается медленно, но увеличивается все больше и больше в течение постоянной продолжительности.

Я создал переменную x (с функцией arange() из Numpy), которая содержит все точки оси x. Так что это просто все значения от -10 до 10 с шагом 0,1. Посмотрим первые 10 значений.

array([-10. , -9.9, -9.8, -9.7, -9.6, -9.5, -9.4, -9.3, -9.2, -9.1])

Вот документ функции arange() от Numpy.

В нашем примере функция определяет скорость автомобиля в зависимости от времени, поэтому нет смысла иметь отрицательные значения. Давайте возьмем только положительную часть оси x, чтобы избежать отрицательного значения времени (мы скажем, что 0 - это начало эксперимента).

Ладно, так лучше!

Производная этой функции равна f ’(x) = 2 x. Чтобы получить больше информации о производных правилах, отметьте здесь.

Вот график f ’(x):

🔧 Производная

Это представление производной показывает ускорение. f (x) описывает скорость транспортного средства как функцию времени и производную f '(x). показывает скорость изменения скорости в зависимости от времени, то есть ускорения.

Мы видим, что ускорение транспортного средства линейно увеличивается со временем. Производная говорит нам, что скорость изменения скорости транспортного средства составляет 2 x. Например, когда x = 0, скорость изменения равна 2 * 0 = 0, поэтому скорость не меняется. Когда x = 3, скорость изменения составляет 2 * 3 = 6. Это означает, что в этот момент скорость увеличивается на 6, когда время увеличивается на 1.

Подводя итог, производная функции дает скорость ее изменения. В нашем примере скорость изменения была другой функцией (f '(x) = 2 x), но она может быть постоянной ( скорость изменения всегда одна и та же, например, f '(x) = 2) или квадратичная функция, например (например, f' ( x) = x ³).

🔧 Интегралы

Возможность вычислять производные - это очень мощный инструмент, но возможно ли сделать наоборот: перейти от скорости изменения к самому изменению 😮. Ого, это круто! Ответ дает интеграл функции.

Интеграл от f ’(x) возвращает нам f (x). Обозначения следующие:

Это означает, что мы берем f ’(x), чтобы вернуть f (x). Обозначение dx здесь означает, что мы интегрируем по x, то есть суммируем срезы, взвешенные по y (см. Здесь) .

Если мы снова возьмем последний пример, мы получим:

Мы видим разницу: добавление константы c. Это связано с тем, что бесконечное количество функций могло дать производную 2 x (например, x ² + 1 или x ² + 294…) . Мы теряем часть информации и не можем ее восстановить.

А теперь графическое объяснение (мне это нравится 💛): мы видели, что 2 x - это функция, описывающая скорость изменения (наклон) функции x ². Теперь, если мы перейдем от f '(x) к f (x), мы увидим, что область под кривая f '(x) соответствует f (x):

Площадь под кривой f ’(x) соответствует f (x). Это показывает, как интеграл и производная являются обратными операциями.

На этом графике показана функция f ’(x) = 2 x, и мы видим, что площадь под кривой экспоненциально увеличивается. Эта область представлена ​​для разных диапазонов ([0–0], [0–1], [0–2], [0–3]). Мы можем вычислить площадь под кривой (используя теорему Пифагора и разделив на 2, поскольку площади представляют собой полуквадраты) и найти следующие значения: 0, 1, 4, 9… Это соответствует исходной функции f (x) = x ²! 🎺

Заключение

Подводя итог, мы увидели, что такое случайная величина и как можно выразить распределение вероятностей для дискретной (функция массы вероятности) и непрерывной переменной (функция плотности вероятности). Мы также изучили концепцию совместного распределения вероятностей и основные математические инструменты, такие как производные и интегралы.

Теперь у вас есть все инструменты, чтобы глубже погрузиться в вероятность. Следующая часть будет посвящена главам 3.4–3.8. Мы увидим то, что мы назвали предельной и условной вероятностью, цепным правилом и концепцией независимости.

Если хочешь быть в курсе: Twitter, Github, Linkedin.

Я надеюсь, что это помогло вам лучше понять все это! Не стесняйтесь обращаться ко мне по любому вопросу / примечанию / исправлению! 😀

Первоначально опубликовано на https://hadrienj.github.io/posts/Probability-Mass-and-Density-Functions/