Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
35
Добавлен:
20.03.2016
Размер:
633.17 Кб
Скачать

Методы Монте–Карло. Анализ общей схемы, достоинства и

 

недостатки

11

Датой рождения методов Монте–Карло принято считать 1949 год, ко• гда появилась статья Улама и Метрополиса «Метод Монте–Карло». Как это часто бывало в истории науки, основным побуждающим фактором в развитии статистического моделирования стали военные исследования по заказу Министерства обороны США. Далее эти исследования не стали но• сить секретного характера, и результаты были успешно внедрены в разных областях, благодаря общности схемы метода и отсутствию привяз• ки к конкретному объекту или предметной области.

Еще один интересный факт связан с тем, что некие случайные мето• ды вычислений и проведения экспериментов разрабатывались и применя• лись и в «доисторическую компьютерную эру». Основная разница между методами Монте–Карло и ранними исследованиями в области статистиче• ского моделирования заключается в следующем: моделирование методом Монте–Карло перевернуло стандартные представления о том, как нужно решать задачу, используя средства теории вероятности и математической статистики. Так, ранее предполагалось, что необходимо изучить детерми• нированную проблему, а потом использовать имитацию, чтобы прове• рить сделанные ранее выкладки. При моделировании методом Монте–Кар• ло предполагается, что надо взять детерминированную проблему и най• ти ее стохастический аналог. Эта идея стала общим принципом, при• менимым для решения задач различной природы, благодаря фон Нейману, Метрополису и Уламу.

3.4 Методы Монте–Карло. Анализ общей схемы, достоинства и недостатки

Итак, для решения задачи по методам Монте–Карло прежде все• го строят вероятностную модель, представляют искомую величину, например многомерный интеграл, в виде математического ожидания функционала от случайного процесса, который затем моделируется на компьютере. В результате проведения вычислительного эксперимента по• лучают нужную выборку и результаты всех испытаний усредняют. Прин• ципиальная математическая основа использования методов Монте–Кар• ло — Усиленный закон больших чисел в форме А.Н. Колмогорова.

Теорема Колмогорова

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

Итак, первое несомненное достоинство методов Монте–Кар• ло — простая схема вычислительного алгоритма.

12 Статистическое моделирование

Поговорим о некоторых трудностях, которые могут встретиться нам на пути применения рассмотренного подхода. Заметим, что нам нужна не лю• бая, а достаточно достоверная оценка искомой величины, т.е. оценка с малой погрешностью. Добиться этого далеко не так просто, как кажет• ся. Большую роль, разумеется, играет адекватность построенной веро• ятностной модели (такие модели во многих задачах известны).

Следующая важная составляющая — моделирование случайных ве• личин с заданными распределениями. Как правило, такое моделирова• ние осуществляется путём преобразования одного или нескольких незави• симых значений случайного числа a, распределённого равномерно в интер• вале (0, 1). Последовательности «выборочных» значений a обычно полу• чают на ЭВМ с помощью теоретико–числовых алгоритмов, среди кото• рых наибольшее распространение получил «метод вычетов». Такие числа называются «псевдослучайными», они проверяются статистическими тестами и решением типовых задач. Итак, существенную роль играет качество используемых генераторов случайных чисел. Написание кор• ректных генераторов — сложная задача, успешно решаемая в рамках раз• ных научных и инженерных математических библиотек, например, в одной из лучших из них — Intel Math Kernel Library (Intel MKL). Продолжая разговор о точности вычислений, посмотрим на этот вопрос немного с дру• гой стороны. Как известно, ошибка вычислений по методу Монте–Карло

обычно пропорциональна

Nd , где d — некоторая константа, а N — коли•

чество испытаний. Из

формулы очевидно, что для повышения точности в 10

 

q

раз необходимо увеличить количество испытаний в 100 раз, а это значит, что метод Монте–Карло требует больших вычислительных ресурсов.

3.5Генераторы случайных чисел

Основа метода Монте–Карло — генератор случайных чисел. Генерация произвольного случайного числа состоит из двух этапов:

1.генерация нормализованного случайного числа (равномерно распре• деленного от 0 до 1)

2.преобразование случайного числа в произвольный закон распределе• ния

Генераторы случайных чисел (ГСЧ) делятся на:

физические

табличные

алгоритмические

1.Физические ГСЧ К физическим генераторам случайных чисел относятся рулетка (раз•

деленный на сектора вращающийся барабан со стрелкой). Бросание

Генераторы случайных чисел

13

игральных костей также может служить источником случайных чи• сел. При бросании монеты можно при выпадении «орла» записывать цифру 1, а при выпадении «решки» — цифру 0. В результате полу• чится случайное двоичное число. Широко используются аппаратные генераторы шума (ГШ). В качестве ГШ используют шумящее тепло• вое устройство, например транзистор. Существуют генераторы слу• чайных чисел, использующие различные физические процессы, такие как радиоактивный распад, шумы аналоговых сетей [3].

2.Табличные ГСЧ Случайное число в интервале от 0 до 1 формируется из случайных

цифр, записанных в таблице.

 

 

таблица

число

7

1

8

0.718

3

4

6

0.436

6

4

1

0.641

 

 

...

...

Случайные цифры

Случайные числа, равномерно

 

 

 

распределенные от 0 до 1

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

Недостатки метода: для хранения большого количества цифр тре• буется много памяти.

3. Алгоритмические ГСЧ

Генератор псевдослучайных чисел (ГПСЧ) — алгоритм, гене• рирующий последовательность чисел, элементы которой почти неза• висимы друг от друга и подчиняются заданному распределению.

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

ГПСЧ подразделяются на простые арифметические, сломанные криптографические и криптостойкие. Их общее предназначение — ге• нерация последовательностей чисел, которые невозможно отличить от случайных.

Никакой детерминированный алгоритм не может генерировать пол• ностью случайные числа, а только лишь аппроксимировать некото• рые свойства случайных чисел. Как сказал Джон фон Нейман, «вся• кий, кто питает слабость к арифметическим методам полу• чения случайных чисел, грешен вне всяких сомнений».

14

Статистическое моделирование

Любой ГПСЧ с ограниченными ресурсами рано или поздно за• цикливается. Длина циклов ГПСЧ зависит от самого генератора и в среднем составляет около 2(n/2) , где n — это размер внутреннего состояния в битах, хотя линейные конгруэнтные генераторы и РЛСО (LFSR) генераторы обладают максимальными циклами порядка 2n. Если ГПСЧ может сходиться к слишком коротким циклам, такой ГПСЧ становится предсказуемым и является непригодным.

Большинство простых арифметических генераторов хотя и облада• ют большой скоростью, но страдают от многих серьёзных недостат• ков:

Слишком короткий период/периоды;

Последовательные значения не являются независимыми;

Некоторые биты «менее случайны», чем другие;

Неравномерное одномерное распределение;

Обратимость

В частности, алгоритм RANDU, десятилетиями использовавшийся на компьютерах IBM мейнфрейм, оказался очень плохим. В резуль• тате многие исследования менее надёжны, чем могли бы быть.

Наиболее распространены линейный конгруэнтный метод, метод Фибоначчи с запаздываниями[9].

Линейный конгруэнтный метод — один из алгоритмов генера• ции псевдослучайных чисел. Применяется в простых случаях и не обладает криптографическтой стойкостью. Используется в качестве стандартного генератора многими компиляторами.

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

Xk+1 ≡ (aXk + c) (mod m),

(3.3)

где a > 0, c > 0, m > 0 - некоторые целочисленные константы. Получаемая последовательность зависит от выбора стартового чис•

ла X0, и при разных его значениях получаются различные последова• тельности случайных чисел. В то же время, многие свойства после• довательности Xj определяются выбором коэффициентов в формуле, и не зависят от выбора стартового числа. Ясно, что последователь• ность чисел, генерируемая таким алгоритмом, периодична с перио• дом, не превышающим m. При этом длина периода равна m тогда и только тогда, когда:

a)НОД(c, m) = 1 (то есть c и m взаимно просты)

b)a − 1 кратно p для всех простых p — делителей m

c)a − 1 кратно 4, если m кратно 4

Генераторы случайных чисел

15

При реализации выгодно выбирать m = 2e, где e — число бит в ма• шинном слове, поскольку это позволяет избавиться от относительно медленной операции приведения по модулю.

Младшие двоичные разряды сгенерированных таким образом слу• чайных чисел демонстрируют поведение, далёкое от случайного, по• этому рекомендуется использовать только старшие разряды.

Статистические свойства получаемой последовательности случай• ных чисел полностью определяются выбором констант a и c при за• данной разрядности e. Для этих констант выписаны условия, гаранти• рующие удовлетворительное качество получаемых случайных чисел. Отсюда выбираются следующие значения[6]: a = 1664525, c = = 1013904223, m = 232.

Метод Фибоначчи с запаздываниями (Lagged Fibonacci generator)

— один из методов генерации псевдослучайных чисел. Особенности распределения случайных чисел, генерируемых ли•

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

В связи с этим линейный конгруэнтный алгоритм постепенно поте• рял свою популярность и его место заняло семейство фибоначчиевых алгоритмов, которые могут быть рекомендованы для использования в алгоритмах, критичных к качеству случайных чисел. В англоязыч• ной литературе фибоначчиевы датчики такого типа называют обычно «Subtract–with–borrow Generators» (SWBG).

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

Один из широко распространённых фибоначчиевых датчиков осно• ван на следующей итеративной формуле:

 

X(k a) − X(k b) + 1,

X(k a) < X(k b)

X(k) =

X(k a) − X(k b),

X(k a) ≥ X(k b) (3.4)

где X(k) - вещественные числа из диапазона [0, 1), a, b — целые положительные числа, называемые лагами. Для работы фибоначчие• ву датчику требуется знать max(a, b) предыдущих сгенерированных случайных чисел. При программной реализации для хранения сге• нерированных случайных чисел используется конечная циклическая

16

Статистическое моделирование

очередь на базе массива. Для старта фибоначчиевому датчику требу• ется max(a, b) случайных чисел, которые могут быть сгенерированы простым конгруэнтным датчиком.

Лаги a и b — «магические», и их не следует выбирать произвольно. Рекомендуются следующие значения лагов: a = 55, b = 24; a = 17, b = 5; a = 97, b = 33. Качество получаемых случайных чисел зави• сит от значения константы, a чем оно больше, тем выше размерность пространства, в котором сохраняется равномерность случайных век• торов, образованных из полученных случайных чисел. В то же время, с увеличением величины константы a увеличивается объём исполь• зуемой алгоритмом памяти.

Значения a = 17, b = 5 можно рекомендовать для простых прило• жений, не использующих векторы высокой размерности со случайны• ми компонентами. Значения a = 55, b = 24 позволяют получать чис• ла, удовлетворительные для большинства алгоритмов, требователь• ных к качеству случайных чисел. Значения a = 97, b = 33 позволя• ют получать очень качественные случайные числа и используются в алгоритмах, работающих со случайными векторами высокой размер• ности. Описанный фибоначчиев датчик случайных чисел (с лагами 20 и 5) используется в широко известной системе Matlab (автором первой версии этой системы был Д. Каханер).

Получаемые случайные числа обладают хорошими статистически• ми свойствами, причём все биты случайного числа равнозначны по статистическим свойствам. Период фибоначчиева датчика может быть оценен по следующей формуле:

T = (2max(a,b) − 1) · 2e,

(3.5)

где e — число битов в мантиссе вещественного числа.

Из современных ГПСЧ широкое распространение получил Виток Мерсенна[4], предложенный в 1997 году Мацумото и Нишимурой. Его достоинствами являются колоссальный период (219937-1), рав• номерное распределение в 623 измерениях (линейный конгруэнтный метод даёт более или менее равномерное распределение от силы в 5 измерениях), быстрая генерация случайных чисел (в 2-3 раза быст• рее, чем стандартные ГПСЧ, использующие линейный конгруэнтный метод). Однако существуют сложные алгоритмы, распознающие по• следовательность, порождаемую с помощью Mersenne twister, как неслучайную. Это делает Mersenne twister неподходящим для крип• тографии.

Моделирование дискретных случайных величин

17

Для генерации уникальных симметричных и асимметричных клю• чей для шифрования строятся программные ГСЧ из комбинации криптостойкого ГПСЧ и внешнего источника энтропии[4]. Таким об• разом, под ГСЧ теперь принято подразумевать именно криптостойкие ГПСЧ с внешним источником энтропии.

Почти все крупные производители микрочипов поставляют аппа• ратные ГСЧ с различными источниками энтропии. Однако на дан• ный момент скорость сбора случайных чисел всеми существующими микрочипами (несколько тысяч бит в секунду) не соответствует быст• родействию современных процессоров.

В персональных компьютерах авторы программных ГСЧ использу• ют гораздо более быстрые источники энтропии, такие как шум звуко• вой карты или значения счётчика тактов процессора (processor clock counter) которые легко считываются, например, при помощи инструк• ции rdtsc в процессорах Intel. До появления в процессорах возмож• ности считывать значение самого чувствительного к малейшим изме• нениям окружающей среды счётчика тактов процессора сбор энтро• пии являлся наиболее уязвимым местом ГСЧ. Эта проблема до сих пор полностью не разрешена во многих устройствах (например smart• карты), которые таким образом остаются уязвимыми. Многие ГСЧ до сих пор используют традиционные (устаревшие) методы сбора эн• тропии такие как действия пользователя (движения мыши и т.п.), как например в PGP и Yarrow, или взаимодействие между потоками (threads), как например в Java secure random. Примеры программных ГСЧ и их источников энтропии можно найти по адресу[4].

3.6Моделирование дискретных случайных величин

Рассмотрим дискретную случайную величину ξ, принимающую n значений X1, X2, . . . , Xn с вероятностями P1, P2, . . . , Pn. Эта величина зада• ется таблицей распределения

ξ =

P1

P2

. . . Pn

 

n

Pk = 1.

(3.6)

, k=1

 

X1

X2

. . . Xn

 

X

 

 

 

 

 

 

 

 

 

случайную величину ξ, равную номеру события: Для моделирования та• кой дискретной случайной величины разбивают отрезок [0, 1] на n после• довательных отрезков 1, 2, . . . , n, длины которых равны соответствующим вероятностям P1, P2, . . . , Pn. Получают случайную величину ξ , равномер• но распределенную в интервале (0, 1), и полагают ξ = Xk, если ξ k. Аналогичным образом осуществляется моделирование случайных событий. Пусть необходимо смоделировать реализацию какого–либо события Sk из

18

Статистическое моделирование

ряда событий S1, S2, . . . , Sn, образующих полную группу событий. Свяжем с этой системой событий случайную величину ξ , равную номеру события:

1 2 . . . n

ξ = , (3.7)

P1 P2 . . . Pn

где Pk — вероятность наступления Sk.

Среди дискретных случайных величин важное значение имеют целочис• ленные случайные величины с распределением вида

pk = P(ξ = k)

(3.8)

(k = 0, 1, 2, . . .), которые связаны простыми рекуррентными формулами

pk+1 = pk · r(k).

(3.9)

Среди таких распределений наиболее важными и часто используе• мыми являются биноминальное распределение и распределение Пуассона. Для биноминального распределения с параметрами (p, n) имеем:

Pk = P(ξ = k) = Cnk pk (1 − p)nk, k = 0, 1, . . . , n,

r

k

=

pk+1

=

n k

·

p

, Ck =

n!

.

pk

k + 1

1 − p

 

 

 

 

n

(n k)!k!

Для распределения Пуассона с параметром λ имеем:

 

=

λk

 

−λ,

( ) =

λ

,

 

= 0, 1, . . . .

pk

k! · e

k + 1

k

 

 

r k

 

 

(3.10)

(3.11)

(3.12)

3.7Моделирование непрерывных случайных величин

Пусть нам нужно получать значения случайной величины ξ, распределен• ной в интервале (a, b) с плотностью вероятности f(x). Стандартный метод моделирования основан на том, что интегральная функция распределения любой непрерывной случайной величины равномерно распределена в ин• тервале (0, 1), т.е. для любой случайной величины x с плотностью распре• деления f(x) случайная величина

y

 

 

F(k) = Za

f(x)dx

(3.13)

равномерно распределена на интервале (0, 1).

Моделирование непрерывных случайных величин

19

Тогда случайную величину ξ с произвольной плотностью распределения f(x) можно найти следующим образом:

1.Получаем случайную величину γ, равномерно распределенную в ин• тервале (0, 1)

2.Полагаем

ξ

 

 

F(ξ) = Za

f(x)dx = γ

(3.14)

3. Решая уравнение

 

 

ξ = F−1 (γ),

(3.15)

находим искомое значение ξ

Такой способ получения случайных величин называется методом об• ратных функций (см. рисунок)

F(y)

 

 

 

1.0

 

 

 

0.8

1

2

 

0.6

γ

 

 

0.4

 

 

 

0.2

 

3

y

 

 

0

a

ξ

b

 

В качестве примера рассмотрим получение случайной величины τ, имеющей экспоненциальное распределение с плотностью p

p(τ) = λ · e−λτ ,

(3.16)

где λ — параметр распределения. Такое распределение широко исполь• зуется при моделировании различных физических явлений: это и длина свободного пробега ионизирующих частиц в веществе, и распределение

20

Статистическое моделирование

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

τ

Z

λ · e−λxdx = 1 − e−λτ = γ

(3.17)

0

Отсюда

τ = −

1

· ln(1 − γ).

(3.18)

λ

Так как величина 1 − γ распределена точно так же, как и γ, то послед• нюю формулу можно переписать в виде

τ = −

1

· ln γ.

(3.19)

λ

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

ξ = F−1 (γ)

(3.20)

Может оказаться и так, что алгоритм численного решения указанного уравнения будет сложным или требовать заметных затрат времени на вы• числения. Тогда могут быть использованы другие методы генерирования случайных величин.