1.5. Вычисление: нисходящие и восходящие процедуры

К оглавлению1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 
51 52 53 54 55 56 57 58 59 60 61 62 

До сих пор было не совсем ясно, что именно я понимаю под термином «вычисление» в определениях позиций приведенных в § 1.3. Что же такое вычисление? В двух словах: это все, что делает самый обычный универсальный компьютер. Если же мы хотим быть более точными, то следует воспринимать этот термин в соответственно идеализированном смысле: вычис­ление — это действие машины Тьюринга.

А что такое машина Тьюринга? По сути, это и есть матема­тически идеализированный компьютер (теоретический предше­ственник современного универсального компьютера); идеализи­рован же он в том смысле, что никогда не ошибается, может рабо­тать сколько угодно долго и обладает неограниченным объемом памяти. Немного более подробно о точных спецификациях машин Тьюринга я расскажу в §2.1 и в Приложении А (с. 191). (Интере­сующийся более полным введением в этот вопрос читатель может обратиться к описанию, приведенному в НРК, глава 2, а также к работам Клина[222]или Дэвиса [71].)

Для описания деятельности машины Тьюринга нередко ис­пользуют термин «алгоритм». В данном контексте я считаю тер­мин «алгоритм» полностью синонимичным термину «вычисле­ние». Здесь необходимо небольшое разъяснение, так как в от­ношении термина «алгоритм» некоторые придерживаются более узкой точки зрения, нежели предлагаемая мною здесь, подразу­мевая под алгоритмом то, что я в дальнейшем буду более конкрет­но называть «нисходящим алгоритмом». Попытаемся разобрать­ся, что же следует понимать в контексте вычисления под терми­ном «нисходящий» и противоположным ему термином «восходя­щий».

Мы говорим, что вычислительная процедура имеет нисхо­дящую организацию, если она построена в соответствии с неко­торой прозрачной и хорошо структурированной фиксированной вычислительной процедурой (которая может содержать некий заданный заранее объем данных) и предоставляет, в частности, четкое решение для той или иной рассматриваемой проблемы. (Описанный в НРК на с. евклидов алгоритм нахождения наибольшего общего делителя двух натуральных чисел представ­ляет собой простой пример нисходящего алгоритма.) В противо­положность такой организации существует организация восхо­дящая, где упомянутые четкие правила выполнения действий и объем данных заранее не определены, однако вместо этого имеется некоторая процедура, определяющая, каким образом система должна «обучаться» и повышать свою эффективность в соот­ветствии с накопленным «опытом». Иными словами, в случае восходящей системы правила выполнения действий подвержены постоянному изменению. Очевидно, что такая система должна пройти множество циклов, выполняя требуемые действия над непрерывно поступающими данными. Во время каждого прогона производится оценка эффективности (возможно, самой систе­мой), после чего, в соответствии с этой оценкой, система так или иначе модифицирует свои действия, стремясь улучшить качество вывода данных. Например, на вход системы подаются несколько оцифрованных с некоторым качеством фотопортретов, и ставится задача — определить, на каких портретах изображен один чело­век, а на каких — другой. После каждого прогона результат вы­полнения задачи сравнивается с правильным, после чего правила выполнения действий модифицируются так, чтобы с некоторой вероятностью добиться улучшения функционирования системы при следующем прогоне.

Конкретные способы такого улучшения в какой-либо кон­кретной восходящей системе нас в данный момент не интересуют. Достаточно сказать, что количество всевозможных готовых схем весьма велико. Среди наиболее известных систем восходящего типа можно упомянуть так называемые искусственные нейрон­ные сети (иногда их называют просто «нейронными сетями», что может ввести в некоторое заблуждение), которые представляют собой компьютерные самообучающиеся программы — или же особым образом сконструированные электронные устройства, — основанные на определенных представлениях о реальной орга­низации системы связей между нейронами в мозге и о том, каким образом эта система улучшается по мере приобретения мозгом опыта. (Вопрос о том, как в действительности модифици­рует самоё себя система взаимосвязей между нейронами моз­га, приобретет для нас особую значимость несколько позднее; см. §7.4 и §7.7.) Очевидно также, что возможны системы, со­четающие в себе элементы как восходящей, так и нисходящей организации.

Для наших целей важно понимать, что и нисходящие, и восходящие вычислительные процедуры с легкостью выполня­ются на универсальном компьютере, а потому их можно отне­сти к категории процессов, названных мною вычислительными и алгоритмическими. Таким образом, в случае восходя­щих (или комбинированных) систем сам способ модификации системой своих процедур задается какими-то целиком и пол­ностью вычислительными инструкциями, причем задается за­благовременно. Этим и объясняется возможность реализации всей системы на обычном компьютере. Существенная разница между восходящей (или комбинированной) системой и системой нисходящей состоит в том, что в первом случае вычислитель­ная процедура должна подразумевать возможность сохранения «памяти» о предыдущем выполнении задачи (т. е. обладать спо­собностью накапливать «опыт») с тем, чтобы эту память за­тем можно было использовать в последующих вычислительных действиях. Конкретные подробности сейчас не имеют особого значения, однако к обсуждению этого вопроса мы еще вернемся в §3.11.

Задавшись целью создать искусственный интеллект (со­кращенно «ИИ»), человек пока лишь пытается сымитировать разумное поведение на каком угодно уровне посредством каких-то вычислительных средств. При этом часто используется как нисходящая, так и восходящая организация. Первоначально наи­более перспективными представлялись нисходящие системы, однако сейчас все большую популярность приобретают восходя­щие системы типа искусственной нейронной сети. По всей види­мости, получения наиболее успешных систем ИИ можно ожидать лишь при том или ином сочетании нисходящих и восходящих организаций. У каждой из них есть свои преимущества. Нисхо­дящая организация наиболее успешна в тех областях, где дан­ные и правила выполнения действий четко определены и имеют хорошо выраженный вычислительный характер — при решении некоторых конкретных математических задач, создании вычис­лительных систем для игры в шахматы или, скажем, в медицин­ской диагностике, где определение того или иного заболевания происходит с помощью заданных наборов правил, основанных на общепринятых медицинских процедурах. Восходящая же ор­ганизация оказывается полезной, когда критерии для принятия решений не слишком точны или не совсем ясны — как, например, при распознавании лиц или звуков или, возможно, при поиске ме­сторождений минералов, где основным поведенческим критерием становится повышение эффективности на основе накопленного опыта. Во многих подобных системах действительно присутствуют элементы и нисходящей, и восходящей организаций (напри­мер, шахматный компьютер, обучающийся на основе опыта, или созданное на базе какой-либо четкой геологической теории вы­числительное устройство, помогающее в поисках месторождений минералов).

Я думаю, справедливым будет сказать, что лишь в некото­рых примерах нисходящей (или по большей части нисходящей) организации компьютеры демонстрируют значительное превос­ходство над человеком. Самым очевидным примером может слу­жить прямой численный расчет, где в наше время компьютеры побеждают человека без каких-либо усилий. То же самое от­носится и к «вычислительным» играм, типа шахмат и шашек, в которые у лучших компьютеров способны выиграть, возможно, лишь несколько человек (более подробно об этом в § 1.15 и §8.2). В случае же восходящей организации (искусственной нейронной сети) компьютерам лишь в немногих специфических примерах удается достичь приблизительно уровня обычных хорошо обу­ченных людей.

Еще одно отличие между видами компьютерных систем свя­зано с различием между последовательной и параллельной ар­хитектурами. Компьютер последовательного действия — это ма­шина, выполняющая вычисления друг за другом, поэтапно, тогда как параллельный компьютер выполняет множество независи­мых вычислений одновременно, результаты же этих вычислений сводятся вместе лишь по завершении достаточно большого их количества. Причем у истоков разработки некоторых параллель­ных систем стояли все те же теории, описывающие предпола­гаемые способы функционирования мозга. Здесь следует отме­тить, что различие между вычислительными машинами после­довательного и параллельного действия ни в коей мере не яв­ляется принципиальным. Параллельное действие всегда можно смоделировать последовательно, хотя, конечно же, существуют некоторые типы задач (весьма немногочисленные), для решения которых эффективнее (в смысле затрат времени на вычисление и т.п.) будет параллельное действие, нежели последовательное. Поскольку в рамках настоящего труда меня занимают, главным образом, принципиальные вопросы, различия между параллель­ными и последовательными вычислениями не представляются в этом отношении особенно существенными.

 

До сих пор было не совсем ясно, что именно я понимаю под термином «вычисление» в определениях позиций приведенных в § 1.3. Что же такое вычисление? В двух словах: это все, что делает самый обычный универсальный компьютер. Если же мы хотим быть более точными, то следует воспринимать этот термин в соответственно идеализированном смысле: вычис­ление — это действие машины Тьюринга.

А что такое машина Тьюринга? По сути, это и есть матема­тически идеализированный компьютер (теоретический предше­ственник современного универсального компьютера); идеализи­рован же он в том смысле, что никогда не ошибается, может рабо­тать сколько угодно долго и обладает неограниченным объемом памяти. Немного более подробно о точных спецификациях машин Тьюринга я расскажу в §2.1 и в Приложении А (с. 191). (Интере­сующийся более полным введением в этот вопрос читатель может обратиться к описанию, приведенному в НРК, глава 2, а также к работам Клина[222]или Дэвиса [71].)

Для описания деятельности машины Тьюринга нередко ис­пользуют термин «алгоритм». В данном контексте я считаю тер­мин «алгоритм» полностью синонимичным термину «вычисле­ние». Здесь необходимо небольшое разъяснение, так как в от­ношении термина «алгоритм» некоторые придерживаются более узкой точки зрения, нежели предлагаемая мною здесь, подразу­мевая под алгоритмом то, что я в дальнейшем буду более конкрет­но называть «нисходящим алгоритмом». Попытаемся разобрать­ся, что же следует понимать в контексте вычисления под терми­ном «нисходящий» и противоположным ему термином «восходя­щий».

Мы говорим, что вычислительная процедура имеет нисхо­дящую организацию, если она построена в соответствии с неко­торой прозрачной и хорошо структурированной фиксированной вычислительной процедурой (которая может содержать некий заданный заранее объем данных) и предоставляет, в частности, четкое решение для той или иной рассматриваемой проблемы. (Описанный в НРК на с. евклидов алгоритм нахождения наибольшего общего делителя двух натуральных чисел представ­ляет собой простой пример нисходящего алгоритма.) В противо­положность такой организации существует организация восхо­дящая, где упомянутые четкие правила выполнения действий и объем данных заранее не определены, однако вместо этого имеется некоторая процедура, определяющая, каким образом система должна «обучаться» и повышать свою эффективность в соот­ветствии с накопленным «опытом». Иными словами, в случае восходящей системы правила выполнения действий подвержены постоянному изменению. Очевидно, что такая система должна пройти множество циклов, выполняя требуемые действия над непрерывно поступающими данными. Во время каждого прогона производится оценка эффективности (возможно, самой систе­мой), после чего, в соответствии с этой оценкой, система так или иначе модифицирует свои действия, стремясь улучшить качество вывода данных. Например, на вход системы подаются несколько оцифрованных с некоторым качеством фотопортретов, и ставится задача — определить, на каких портретах изображен один чело­век, а на каких — другой. После каждого прогона результат вы­полнения задачи сравнивается с правильным, после чего правила выполнения действий модифицируются так, чтобы с некоторой вероятностью добиться улучшения функционирования системы при следующем прогоне.

Конкретные способы такого улучшения в какой-либо кон­кретной восходящей системе нас в данный момент не интересуют. Достаточно сказать, что количество всевозможных готовых схем весьма велико. Среди наиболее известных систем восходящего типа можно упомянуть так называемые искусственные нейрон­ные сети (иногда их называют просто «нейронными сетями», что может ввести в некоторое заблуждение), которые представляют собой компьютерные самообучающиеся программы — или же особым образом сконструированные электронные устройства, — основанные на определенных представлениях о реальной орга­низации системы связей между нейронами в мозге и о том, каким образом эта система улучшается по мере приобретения мозгом опыта. (Вопрос о том, как в действительности модифици­рует самоё себя система взаимосвязей между нейронами моз­га, приобретет для нас особую значимость несколько позднее; см. §7.4 и §7.7.) Очевидно также, что возможны системы, со­четающие в себе элементы как восходящей, так и нисходящей организации.

Для наших целей важно понимать, что и нисходящие, и восходящие вычислительные процедуры с легкостью выполня­ются на универсальном компьютере, а потому их можно отне­сти к категории процессов, названных мною вычислительными и алгоритмическими. Таким образом, в случае восходя­щих (или комбинированных) систем сам способ модификации системой своих процедур задается какими-то целиком и пол­ностью вычислительными инструкциями, причем задается за­благовременно. Этим и объясняется возможность реализации всей системы на обычном компьютере. Существенная разница между восходящей (или комбинированной) системой и системой нисходящей состоит в том, что в первом случае вычислитель­ная процедура должна подразумевать возможность сохранения «памяти» о предыдущем выполнении задачи (т. е. обладать спо­собностью накапливать «опыт») с тем, чтобы эту память за­тем можно было использовать в последующих вычислительных действиях. Конкретные подробности сейчас не имеют особого значения, однако к обсуждению этого вопроса мы еще вернемся в §3.11.

Задавшись целью создать искусственный интеллект (со­кращенно «ИИ»), человек пока лишь пытается сымитировать разумное поведение на каком угодно уровне посредством каких-то вычислительных средств. При этом часто используется как нисходящая, так и восходящая организация. Первоначально наи­более перспективными представлялись нисходящие системы, однако сейчас все большую популярность приобретают восходя­щие системы типа искусственной нейронной сети. По всей види­мости, получения наиболее успешных систем ИИ можно ожидать лишь при том или ином сочетании нисходящих и восходящих организаций. У каждой из них есть свои преимущества. Нисхо­дящая организация наиболее успешна в тех областях, где дан­ные и правила выполнения действий четко определены и имеют хорошо выраженный вычислительный характер — при решении некоторых конкретных математических задач, создании вычис­лительных систем для игры в шахматы или, скажем, в медицин­ской диагностике, где определение того или иного заболевания происходит с помощью заданных наборов правил, основанных на общепринятых медицинских процедурах. Восходящая же ор­ганизация оказывается полезной, когда критерии для принятия решений не слишком точны или не совсем ясны — как, например, при распознавании лиц или звуков или, возможно, при поиске ме­сторождений минералов, где основным поведенческим критерием становится повышение эффективности на основе накопленного опыта. Во многих подобных системах действительно присутствуют элементы и нисходящей, и восходящей организаций (напри­мер, шахматный компьютер, обучающийся на основе опыта, или созданное на базе какой-либо четкой геологической теории вы­числительное устройство, помогающее в поисках месторождений минералов).

Я думаю, справедливым будет сказать, что лишь в некото­рых примерах нисходящей (или по большей части нисходящей) организации компьютеры демонстрируют значительное превос­ходство над человеком. Самым очевидным примером может слу­жить прямой численный расчет, где в наше время компьютеры побеждают человека без каких-либо усилий. То же самое от­носится и к «вычислительным» играм, типа шахмат и шашек, в которые у лучших компьютеров способны выиграть, возможно, лишь несколько человек (более подробно об этом в § 1.15 и §8.2). В случае же восходящей организации (искусственной нейронной сети) компьютерам лишь в немногих специфических примерах удается достичь приблизительно уровня обычных хорошо обу­ченных людей.

Еще одно отличие между видами компьютерных систем свя­зано с различием между последовательной и параллельной ар­хитектурами. Компьютер последовательного действия — это ма­шина, выполняющая вычисления друг за другом, поэтапно, тогда как параллельный компьютер выполняет множество независи­мых вычислений одновременно, результаты же этих вычислений сводятся вместе лишь по завершении достаточно большого их количества. Причем у истоков разработки некоторых параллель­ных систем стояли все те же теории, описывающие предпола­гаемые способы функционирования мозга. Здесь следует отме­тить, что различие между вычислительными машинами после­довательного и параллельного действия ни в коей мере не яв­ляется принципиальным. Параллельное действие всегда можно смоделировать последовательно, хотя, конечно же, существуют некоторые типы задач (весьма немногочисленные), для решения которых эффективнее (в смысле затрат времени на вычисление и т.п.) будет параллельное действие, нежели последовательное. Поскольку в рамках настоящего труда меня занимают, главным образом, принципиальные вопросы, различия между параллель­ными и последовательными вычислениями не представляются в этом отношении особенно существенными.