Автор книги: Терренс Сейновски
Жанр: Программы, Компьютеры
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 8 (всего у книги 23 страниц) [доступный отрывок для чтения: 8 страниц]
Летом 1983 года мы с Джеффри Хинтоном были на организованном Джерри Фельдманом семинаре в Рочестерском университете. Джон Хопфилд (рис. 7.1) также там присутствовал. В Рочестере Хопфилд сказал нам, что решил проблему сходимости для сильно взаимодействующей сети. Сильно нелинейные сети склонны к колебаниям или еще более хаотичному поведению. Он доказал, что определенный тип нелинейной сетевой модели, теперь называемой сетью Хопфилда, гарантированно сходится к стабильному состоянию, называемому аттрактором (рис. 7.2, блок 3)[154]154
Hopfield J. J. «Neural networks and physical systems with emergent collective computational abilities», Proceedings of the National Academy of Sciences of the USA, vol. 79 no. 8 pp. 2554–2558, April 1982.
[Закрыть]. Кроме того, веса в сети можно выбрать так, чтобы аттракторами были блоки памяти. Таким образом, сеть Хопфилда можно использовать для реализации так называемой ассоциативной памяти. В цифровом компьютере память хранится в ячейках с определенным адресом, но в сети Хопфилда можно получить сохраненную память, обратившись только к ее части, а сеть ее восполнит. Похоже на то, как у нас пробуждаются воспоминания. Если мы видим лицо кого-то, кого мы знаем, мы можем вспомнить его имя и разговоры с этим человеком.
Рис. 7.2. Энергетический ландшафт сети Хопфилда. Состояние сети можно представить в виде точки на энергетической поверхности (слева). Каждое обновление приближает состояние к одному из минимумов энергии, называемых состояниями аттрактора (справа)
Сеть Хопфилда уникальной делает то, что она математически всегда сходится (блок 3). Считалось, что невозможно проанализировать общий случай нелинейной сети, но Хопфилд показал, что частный случай симметричной сети, в которой взаимные связи между парами единиц равны по силе, а единицы обновляются последовательно, разрешим. Когда обновления производятся одновременно для всех узлов в сети, динамика может быть гораздо сложнее, и нет никакой гарантии схождения[155]155
Алгоритм Марра – Поджио для стереозрения, упомянутый в главе 5, был симметричной сетью, но поскольку они использовали синхронные обновления всех единиц в сети, динамика была намного сложнее, чем с асинхронными обновлениями в сети Хопфилда. Marr D., Palm G., Poggio T., Analysis of a cooperative stereo algorithm. Biol Cybern. 28(4):223–39, 1978. – Прим. авт.
[Закрыть].
Появляется все больше доказательств того, что нейронные сети в гиппокампе – части мозга, которая необходима для хранения долгосрочных воспоминаний о событиях и уникальных объектах, – имеют аттракторные состояния, подобные тем, которые находятся в сети Хопфилда[156]156
Colgin L. L., Leutgeb S., Jezek K., Leutgeb J. K., Moser E. I., McNaughton B.L., Moser M. B. Attractor-map versus autoassociation based attractor dynamics in the hippocampal network». J Neurophysiol. 2010 Jul; 104(1):35–50.
[Закрыть]. Хотя модель сильно абстрагирована, ее качественное поведение похоже на то, что наблюдается в гиппокампе. Сети Хопфилда стали мостом от физики к нейробиологии, который многие физики протянули в 1980-х годах. Удивительные открытия были получены при анализе нейронных сетей и алгоритмов обучения с помощью сложных инструментов из теоретической физики. Связи между физикой, вычислениями и обучением глубоки и являются одной из областей нейробиологии, где теория успешно объясняет функционирование мозга.
Блок 3. Сеть Хопфилда
В сети Хопфилда от каждого блока идет выходной канал ко всем блокам в сети. Входы обозначены как xi, а выходы – yj. Сила соединений или веса симметричны: wij=wji. На каждом временном шаге одна из единиц обновляется путем суммирования входов и сравнения с порогом: если входы превышают порог, выход равен 1, в противном случае – 0. Хопфилд показал, что сеть имеет энергетическую функцию, которая никогда не увеличивается с каждым обновлением объекта в сети:
E = Σ wij xi xj
В конце концов ни один из блоков не меняется, и функция находится на локальном минимуме. Это называется состоянием аттрактора в сети Хопфилда и соответствует хранимой памяти, которая может быть восстановлена путем инициализации сети с частью сохраненных данных. Так в сети Хопфилда создается ассоциативная память. Вес хранимой информации можно узнать с помощью долговременной синаптической пластичности:
∆ wij = α xi xj
где левая сторона – изменение веса, α – скорость обучения, а xi – хранимая информация.
Джон Хопфилд и Дэвид Тэнк, работавший в то время в компании Bell Labs[157]157
Также известна как Bell Laboratories или «Лаборатории Белла», ранее – AT&T Bell Laboratories, Bell Telephone Laboratories. Один из самых знаменитых научно-исследовательских центров по разработке современных технологий в мире. Компания существует с 1925 года. – Прим. ред.
[Закрыть], показали, что вариант сети Хопфилда, в котором информация постоянно оценивалась между нулем и единицей, можно использовать, чтобы получить хорошие решения для задач по оптимизации, таких как задача коммивояжера, где необходимо найти кратчайший маршрут, посещая указанные города[158]158
Hopfield J. J., Tank D. W. «‘Neural’ computation of decisions in optimization problems». Biol Cybern.; 52(3):141–52. 1985.
[Закрыть]. Это задача по информатике, известная своей сложностью. Энергетическая функция сетей включала длину пути и ограничение на посещение каждого города одним разом. После кратковременного повышения напряжения в начале сеть начинала работать с минимальными затратами энергии, находя хороший, хоть и не обязательно лучший маршрут.
На семинаре также присутствовал Дана Гарри Баллард, написавший классическую книгу по компьютерному зрению. Мы с Джеффри работали с Баллардом над обзорной статьей для журнала Nature о новом подходе к анализу изображений[159]159
Ballard D. H., Hinton G. E., Sejnowski T. J. «Parallel Visual Computation», Nature, 306, 21–26, 1983, R. A. Hummel, S. W. Zucker, «On the foundations of relaxation labeling processes», IEEE Trans. Pattern Anal. Machine Intell., 5, 267–287, 1983.
[Закрыть]. Идея заключалась в том, что узлы в сетевой модели исполняют роль информационной функции на изображении, а соединения в сети разграничивают объекты; у согласованных узлов – положительное взаимодействие друг с другом, а у несогласованных – отрицательное. В поле зрения необходимо последовательно проанализировать все признаки, подходящие под заданные ограничения.
Может ли сеть Хопфилда решить эту проблему, удовлетворив всем ограничениям? Энергетическая функция – мера того, насколько хорошо сеть их удовлетворяет. Проблема зрения требовала решения с глобальным энергетическим минимумом, лучшего решения, но сеть Хопфилда изначально спроектирована находить только локальные минимумы энергии. Недавно в журнале Science я наткнулся на статью Скотта Киркпатрика из Исследовательского центра Томаса Уотсона в IBM, которая могла помочь с этой задачей[160]160
Kirkpatrick S.; Gelatt Jr C. D.; Vecchi M. P. (1983). «Optimization by Simulated Annealing». Science. 220 (4598): 671–680.
[Закрыть]. Киркпатрик использовал так называемый метод имитации отжига, чтобы обойти локальные минимумы. Предположим, у вас есть множество компонентов в электрической цепи, которые должны быть установлены на две печатные платы. Каково наилучшее размещение деталей, чтобы использовать наименьшее количество проводов, необходимых для их подключения?
Найти очень хорошие решения можно, сначала расположив части в случайном порядке, а затем перемещая их назад и вперед по одной, чтобы увидеть, какое размещение требует меньше проводов. Проблема в том, что вы рискуете легко попасть в ловушку локального минимума, когда не добиться никаких улучшений, перемещая один компонент. Способ этого избежать – позволить случайные скачки к конфигурациям с более длинными проводами. В начале вероятность выскочить высока, но постепенно уменьшается, так что к концу она равна нулю. Если снижение вероятности достаточно медленное, окончательное размещение деталей будет иметь глобальный минимум соединительных проводов. В металлургии это называется отжигом: при нагревании металла и медленном охлаждении образуются крупные кристаллы с минимальными дефектами. Дефекты делают металл хрупким и склонным к растрескиванию.
Машины БольцманаВ сети Хопфилда имитация отжига соответствует «нагреву» обновлений, так что энергия может идти как вверх, так и вниз. При высокой температуре блоки произвольно переворачиваются, и если температура постепенно понижается, то высока вероятность того, что сеть Хопфилда застынет в состоянии с наименьшей энергией, когда температура достигнет нуля. На практике моделирование начинается при постоянной температуре, чтобы обеспечить равновесие сети. При равновесии сеть может побывать во множестве ближайших состояний и исследовать широкий спектр допустимых решений.
Блок 4. Машина Больцмана
Все соединения в машине Больцмана симметричны, как и в сети Хопфилда, и двоичные единицы обновляются один раз, устанавливая si = 1 с вероятностью, заданной приведенной выше S-образной кривой, где входы ∆ E масштабируются по температуре T. Входной и выходной слои «видимы» в том смысле, что они взаимодействуют с внешним миром. «Скрытые элементы» представляют объекты, имеющие внутренние степени свободы, которые могут влиять на видимые объекты. У алгоритма машинного обучения Больцмана две фазы: в фазе бодрствования входы и выходы фиксируются, и после того, как сеть приходит к равновесию, вычисляется средняя корреляция между парами единиц. Во второй фазе сна корреляции снова вычисляются с незафиксированными входами и выходами. Затем вес постепенно обновляется:
Δwij=ε(<sisj>бодрствование – <sisj>сон).
Для примера рассмотрим задачу, где требуется определить, какая часть изображения является фигурой, а какая – фоном. Фигура на рис. 7.3 неоднозначна, и в зависимости от того, на какую часть вы обратите внимание, вы увидите вазу или два лица, но не то и другое сразу. Мы разработали машину Больцмана (блок 4), которая моделирует выбор между фигурой и фоном[161]161
Kienker P. K., Sejnowski T. J., Hinton G. E., Schumacher L. E. “Separating Figure from Ground with a Parallel Network,” Perception, 15, 197–216, 1986.
[Закрыть]. Она состояла из элементов, часть из которых в состоянии активности представляли фигуру, а другие – контур. Мы уже видели, что в зрительной коре есть простые клетки, которые активируются контурами, однако фигура может находиться по обе стороны контура. Проблему решили с помощью двух блоков, каждый из которых «видел» границу фигуры со своей стороны. Такие нейроны были впоследствии обнаружены и в зрительной коре, они называются пограничными клетками[162]162
Zhou H., Friedman H. S., von der Heydt R. “Coding of border ownership in monkey visual cortex.” J. Neurosci. 20: 6594–611. 2000.
[Закрыть].
Рис. 7.3. Сетевая модель «фигура-фон». Слева: когда вы фокусируете свое внимание на черном изображении, вы видите вазу на белом фоне. Но когда вы сосредотачиваетесь на белой области, вы видите два лица, смотрящие друг на друга. Вы можете переводить свое внимание с одного изображения на другое, но не можете видеть две картинки одновременно. Справа: два типа элементов, показывающих края объекта и то, является ли пиксель частью фигуры или фона. Входы изображения читаются снизу вверх, а входы внимания – сверху вниз. Внимание реализовано смещением к той области, которая должна быть воспринята в качестве рисунка
Веса в сети были созданы вручную для реализации ограничений (рис. 7.4). Между компонентами фигуры есть возбуждающие связи, между компонентами контура – тормозящие. У пограничных блоков возбуждающие связи с элементами фигуры, на которые они указывают, очерчивая ее, и тормозящие связи с элементами в противоположном направлении. Внимание смоделировано смещением к некоторым элементам фигуры.
Рис. 7.4. Машина «фигура – фон» Больцмана. Слева внизу: в сети квадраты обозначают фигуру в виде буквы «С», а треугольники – ее контур. Вершина треугольника может быть обращена как к фигуре, так и от нее. Вверху: а) внимание сосредоточено на внутренней стороне «С»; температура была высокой, так что блоки то включались, то выключались; б) по мере падения температуры, блоки на внутренней стороне «С» начинали объединяться при поддержке блоков контура, указывающих внутрь. Блоки, указывающие наружу, не притягивают внимание, и края исчезают по мере того, как температура уменьшается; в) рисунок заполнен, когда внимание обращено внутрь контура; г) фон заполнен, когда внимание обращено наружу
Когда сеть использует для единиц правило обновления Хопфилда, она попадают в локальные энергетические минимумы, которые согласованы в отдельных частях, но не согласованы в глобальных масштабах. Когда к обновлениям добавляли шум, сеть выскакивала за пределы локального минимума, и медленное повышение температуры шума приводило к последовательным решениям на глобальном энергетическом минимуме (рис. 7.4). Поскольку обновления асинхронные и независимые, сеть может быть реализована на многопроцессорном компьютере с массово-параллельной архитектурой и приходить к решениям гораздо быстрее, чем цифровой компьютер, который работает последовательно, выполняя одну операцию за раз.
К этому времени я закончил стажировку в Гарвардской медицинской школе у Штефана Куффлера и получил свою первую работу на кафедре биофизики в Университете Хопкинса. Джеффри Хинтон занял должность преподавателя на факультете компьютерных наук в Университете Карнеги – Меллона. Ему посчастливилось заручиться поддержкой Аллена Ньюэлла, который был открыт для всего нового в развитии ИИ. Питтсбург и Балтимор расположены достаточно близко, и мы могли навещать друг друга по выходным. Мы назвали нашу новую версию сети Хопфилда машиной Больцмана по имени Людвига Больцмана, физика XIX века и основоположника статистической механики – источника инструментов, которые мы использовали для анализа нашей изменяющейся модели нейросети. Вскоре мы обнаружили, что это также мощная обучающаяся машина.
При постоянной «температуре» машина Больцмана приходит в равновесие. В состоянии равновесия происходит нечто невероятное, открывающее дверь, которая, как все считали, останется закрытой навсегда: многослойное обучение нейронной сети. Однажды мне позвонил Джеффри Хинтон и сказал, что только что вывел простой алгоритм обучения для машины Больцмана. Целью обучающего алгоритма было отобразить блоки ввода в блоках вывода, но, в отличие от перцептрона, между ними были блоки, называемые скрытыми элементами (см. блок 4). Представляя пары ввод – вывод и применяя алгоритм обучения, сеть изучила требуемое преобразование. Но простое запоминание пар не было целью; она состояла в том, чтобы правильно классифицировать новые входы, которые не использовались для обучения сети. Кроме того, поскольку машина Больцмана всегда «колеблется», это позволило изучить распределение вероятностей – как часто данный входной шаблон обращается к каждому из состояний вывода. Последнее делает машину Больцмана производящей: после обучения она может создавать новые входные выборки для каждой выходной категории.
Теория синаптической пластичности ХеббаНеожиданно выяснилось, что алгоритм обучения машины Больцмана имеет долгую историю в нейробиологии, начинающуюся с психолога Дональда Хебба, который в книге «Организации поведения»[163]163
Hebb D. O. (1949). The Organization of Behavior. New York: Wiley & Sons.
[Закрыть] постулировал, что, когда два нейрона срабатывают одновременно, связь между ними должна усиливаться:
«Давайте предположим, что постоянная или повторяющаяся отражательная активность («след») ведет к длительным клеточным изменениям, которые усиливают стабильность. Когда аксон клетки А находится достаточно близко, чтобы возбудить клетку В, и неоднократно или постоянно принимает участие в ее возбуждении, в одной или обеих клетках происходит некий процесс роста или метаболических изменений, так что эффективность клетки А, возбуждаемой клеткой В, увеличивается».
Возможно, это самое известное предсказание во всей нейробиологии. Позже синаптическая пластичность была обнаружена в гиппокампе – важной для долговременной памяти области мозга. Когда пирамидальная клетка гиппокампа получает сильный входной сигнал одновременно с возбуждением нейрона, сила синапсов увеличивается. Последующие эксперименты показали, что усиление основано на сочетании высвободившегося из синапса нейромедиатора и повышения напряжения в нейроне-реципиенте.
Более того, это соединительное явление было распознано особым глутаматным рецептором NMDA, который вызывает долговременную потенциацию (усиление) синаптической передачи. ДП возникает быстро и длится долго, что создает хорошую почву для долгосрочной памяти. Пластичность Хебба в синапсе определяется совпадениями между входами и выходами, как и в алгоритме машинного обучения Больцмана.
Еще удивительнее то, что машине Больцмана требовалось заснуть, чтобы научиться! Алгоритм обучения состоял из двух этапов. На первом, когда входы и выходы привязаны к желаемому изображению, блоки в сети многократно обновлялись, чтобы прийти к равновесию, и подсчитывалось, сколько каждая пара блоков работала одновременно. Мы назвали это фазой пробуждения. На втором этапе входные и выходные блоки были освобождены, и отрезок времени, в течение которого каждая пара блоков работала вместе, был подсчитан в независимом режиме. Мы назвали это фазой сна. Затем сила каждого соединения обновлялась пропорционально разнице между частотой совпадения в фазах бодрствования и сна (см. блок 4).
Рис. 7.5. Симметричное неупорядоченное растровое изображение. У каждой сетки 10×10 есть вертикальная, горизонтальная или диагональная ось зеркальной симметрии. Цель сетевой модели – научиться определять ось симметрии на новых рисунках, которые еще не использовали для обучения сетевой модели
Фаза сна у машины необходима, чтобы определить, какая часть зафиксированных взаимосвязей вызвана внешними причинами. Не отбрасывая внутренние взаимосвязи, сеть укрепит внутренние модели деятельности и научится игнорировать внешнее влияние – сетевую версию индуцированного психоза[164]164
Ситуация, когда после длительного контакта больного с бредовым расстройством и здорового у здорового начинается аналогичный психоз. – Прим. ред.
[Закрыть]. Интересно, что у людей экстремальное недосыпание приводит к бредовым состояниям – распространенной проблеме в больницах в отделениях интенсивной терапии, где нет окон и постоянно горит свет. Пациенты с шизофренией часто страдают нарушениями сна, которые могут усиливать спутанность их сознания. Мы были убеждены, что находимся на правильном пути к пониманию того, как работает наш мозг.
Пример задачи, которую, в отличие от перцептрона, решит машина Больцмана, – изучение зеркальной симметрии[165]165
Sejnowski T. J., Kienker P. K., Hinton G. E. «Learning Symmetry Groups with Hidden Units: Beyond the Perceptron», Physica, 22D, 260–275, 1986.
[Закрыть]. Наше тело симметрично относительно вертикальной оси. Мы можем создать много случайных узоров с такой симметрией, как показано на рис. 7.5. Мы также можем создавать рисунки с горизонтальной и диагональной осями симметрии. В нашей модели машины Больцмана эти блоки двоичных входов размером 10×10 проецировались на 16 скрытых блоков, которые, в свою очередь, проецировались на три входных блока, по одному для каждой из трех вероятных осей симметрии. После обучения на 6000 симметричных входных образах машина Больцмана успешно определяла ось симметрии новых входных образов в 90 процентах случаев. Перцептрон может лишь действовать наугад, потому что один вход не несет никакой информации о симметрии узора – необходимо учитывать корреляции между парами входов. Примечательно, что машина Больцмана видела вовсе не то, что видите вы, ведь каждый скрытый блок получал входящие данные в определенном порядке. Как если бы для вас входные блоки расположили в хаотичном порядке, который бы выглядел беспорядочной массой даже при наличии скрытой симметрии.
Однажды я смотрел на экран и определял симметрию каждого входного набора данных по два в секунду. Нил Коэн, коллега с факультета психологии Университета Хопкинса, который тоже вел наблюдение, был поражен моим результатом. Наблюдая за процессом обучения машины Больцмана, я и сам научился находить симметрию автоматически, не всматриваясь. Мы поставили эксперимент с участием студентов и проследили за их успехами[166]166
Cohen N. J., Abrams I., Harley W. S., Tabor L., Sejnowski T. J. Skill Learning and Repetition Priming in Symmetry Detection: Parallel Studies of Human Subjects and Connectionist Models, 8th Annual Conference of the Cognitive Science Society, Amherst, MA, 1986.
[Закрыть]. Вначале им требовалось много времени, чтобы правильно определить симметрию. Но после нескольких дней обучения они сильно ускорились, и к концу эксперимента задача стала для них настолько легкой, что они могли разговаривать с нами во время ее выполнения и одновременно давать правильный ответ. Это пример удивительно быстрого перцептивного обучения[167]167
Изменение скорости реакции на воздействие раздражителей при постоянном повторе такого воздействия. – Прим. ред.
[Закрыть].
В Университете Хопкинса я вел курс «Вычислительная биофизика», в ходе которого привлек несколько талантливых студентов и исследователей. Бен Юхас, аспирант с кафедры электротехники, во время работы над докторской диссертацией научил нейросеть читать по губам[168]168
Yuhas B. P., Goldstein M. H. Jr., Sejnowski T. J., Jenkins R. E. «Neural network models of sensory integration for improved vowel recognition», Proceedings of the IEEE, 78, 1658–1668, 1990.
[Закрыть]. Известно, как звучит речь при разных движениях рта. Сеть Бена преобразовала изображения рта во время артикуляции в соответствующий частотный спектр звука, порождаемый в каждый момент времени. Затем это добавили к звуковому спектру шумов, чтобы улучшить распознавание речи. Андреас Андреу, громкоголосый грек с Кипра, создавал аналоговые сверхбольшие интегральные схемы в подвале Бартон-холла. В 1980-х годах преподаватели на факультете, как и в других университетах, относились к нейросетям враждебно, однако Бена и Андреаса это не остановило. Андреас поднялся по карьерной лестнице до профессора и стал одним из основателей Центра языка и обработки речи в Университете Хопкинса.
Не так давно Джеффри Хинтон и его студенты из Университета Торонто обучили машину Больцмана с тремя слоями скрытых блоков с высокой точностью распознавать рукописные почтовые индексы (рис. 7.7)[169]169
Hinton G. E., Osindero S. and Teh Y. (2006) «A fast learning algorithm for deep belief nets». Neural Computation 18, pp. 1527–1554.
[Закрыть]. Поскольку в сети было и обратное, и прямое распространение, ее можно было запускать в обратном направлении, зафиксировав один из выходных блоков и создав соответствующие ему входные блоки (рис. 7.6). Генеративные модели фиксируют статистическую структуру обучающего набора, и генерируемые выборки наследуют эти свойства. Как если бы сеть перешла в спящий режим, а активность самого высокого уровня создавала нечто похожее на сны.
Развитие нейронных сетей шло быстро, однако консервативным ученым-когнитивистам было трудно их принять.
Рис. 7.6. Многослойная машина Больцмана для распознавания и формирования рукописных цифр. Размер изображения – 28×28=784 пикселей, которые могут быть белыми и черными. Цель – определить цифру на основе 10 выходных единиц (0–9)
За пределами лаборатории параллельной распределенной обработки в Ла-Хойя и нескольких отдельных исследовательских групп, обработка символов по-прежнему оставалась единственным методом.
Рис. 7.7. Шаблоны входного слоя, генерируемые многослойной машиной Больцмана, обученной распознавать рукописные цифры. Каждая линия была создана фиксацией одного из 10 выходных блоков, и входной слой непрерывно изменялся от примера к примеру, показанных выше. Ни одной из этих цифр не было в тренировочном наборе – ими «бредила» внутренняя часть обученной сети
На симпозиуме Общества когнитивной науки в 1983 году, на котором присутствовали мы с Хинтоном, психолог Зенон Пилишин, изучавший кратковременную память и умственные образы, выразил свое презрение к машине Больцмана, выплеснув на сцену стакан воды и выкрикнув: «Это не вычисления!» Другие целиком отвергли эту идею как простую «статистику». Джером Леттвин, который тоже был на симпозиуме, сказал, что ему очень нравится то, чем мы занимаемся. Леттвин совместно с Умберто Матурана, Уорреном Маккалаком и Уолтером Питтсом написали в 1959 году статью «Что глаз лягушки сообщает мозгу лягушки»[170]170
Lettvin J. Y., Maturana H. R., McCulloch W. S., Pitts W. H. 1959, “What the frog's eye tells the frog's brain”, Proc. Inst. Rad. Eng., 47, 1940–1951. hearingbrain.org/docs/letvin_ieee_1959.pdf
[Закрыть]. В ней приводятся доказательства, что существуют детекторы насекомых, которые лучше всего реагируют на небольшие темные пятна. Эта идея оказала большое влияние на системную нейробиологию. Поддержка Леттвиным нашей новой модели нейронной сети много значила для связи между ней и более ранней эпохой.
Внимание! Это не конец книги.
Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?