Существуют десятки попыток отобразить эволюцию ИИ в виде диаграмм или так называемых лент времени (timelines) – от простейших до весьма подробных с демонстрацией научных, технологических и финансовых событий, отражающих логику развития ИИ. Подчас обилие полезной информации в этих таймлайнах входит в противоречие с их наглядностью и простотой. Мы постараемся выстроить траекторию изложения материала так, чтобы постепенно вводить новые термины, начав с простых диаграмм, чтобы не вызвать у читателя отторжения в отношении схем с обилием не описанных ранее терминов.
Упрощенные схемы эволюции ИИ – наглядно, но не точно
Начнем рассказ о развитии систем искусственного интеллекта с самой простой ленты времени, которая отражает основные периоды развития и коммерциализации технологий ИИ (рис. 1.12).
Рис. 1.12. Основные периоды развития и коммерциализации технологий ИИ
Как видно из рис.1.12, примерно до середины 70-х годов прошлого столетия ИИ развивался как научное направление и практически не имел коммерческих внедрений при достаточно активном финансировании в первую очередь со стороны военных ведомств США, с середины 70-х начинается стадия военного и коммерческого применения и примерно с конца 90-х массовое коммерческое использование ИИ в форме различного рода корпоративных и пользовательских приложений, при этом военные разработки на этой стадии, естественно, продолжились.
Развитие технологий искусственного интеллекта шло весьма неравномерно. Часто говорят о трех волнах развития ИИ: первая связана со становлением ИИ как нового научного направления и первыми его успехами, в том числе в машинном обучении, вторая – с успехами экспертных систем и третья – с массовым применением технологии глубокого обучения (Deep Learning) и приложений на его основе. Обо всех этих направлениях пойдет речь в данной лекции.
Принято считать, что первый всплеск интереса к ИИ пришелся на период начиная с середины пятидесятых и примерно до конца семидесятых годов. В это время появились многообещающие эксперименты и первые приложения на основе нового научного направления: достигнуты первые успехи по распознаванию образов на базе искусственных нейронных сетей, разработаны программы для игры в шашки и шахматы, предприняты попытки создания первых переводчиков. Кстати, термин “Искусственный интеллект” был введен разработчиком языка программирования LISP Джоном МакКарти в 1956 г. В этом году Джон Маккарти организовал знаменитую конференцию в Дартмутском колледже для обсуждения способов программирования компьютеров таким образом, чтобы добиться их интеллектуального поведения. Именно на этой конференции был впервые использован термин “Искусственный интеллект”. Считается, что данная конференция положила начало новому профессиональному сообществу со своими научными целями и предметом исследований. 60-е годы называют золотыми годами развития ИИ. Это был период энтузиазма, связанного с появлением нового научного направления, который был подкреплен активным финансированием со стороны недавно организованного агентства DARPA. В эти годы был реализован целый ряд пионерских проектов, которые упоминаются во многочисленных публикациях по истории развития ИИ. Например, в 1964 году был реализован проект Eliza – чат-бот, разработанный в Массачусетском технологическом институте, в 1966 году был создан мобильный робот общего назначения SHAKEY. На новое направление возлагались большие надежды, специалистам казалось, что через 5-10 лет удастся создать машину с интеллектом среднего человека (задача, которую так и не удалось решить до настоящего времени). Ожидания первопроходцев были сверхамбициозными. Однако, учитывая сложность задач и тот факт, что аппаратно-вычислительная база того времени была крайне ограничена, вполне естественно, что разработчики столкнулись с принципиальными трудностями. К семидесятым годам стало очевидно, что радужные ожидания не оправдались, инвесторы были разочарованы скромными результатами, и в середине 1970-х годов наступила так называемая первая зима ИИ – период охлаждения к теме ИИ и сокращение финансирования.
Второй взлет интереса к ИИ произошел на волне развития экспертных систем, о которых более подробно будет рассказано далее в этой лекции. У экспертных систем оказались свои ограничения, и, как показано на рисунке 1.12, на период 1987-1993 пришлась вторая зима ИИ.
Третий взлет произошел на базе массового внедрения технологии глубоких нейронных сетей (глубокого обучения), который существенно продвинул многие прикладные решения, включая компьютерное зрение, обработку естественного языка и другие направления.
Развитие глубокого обучения стало возможным благодаря совершенствованию технологий ИИ, опыта их применения, увеличению вычислительных ресурсов, оптимизированных под задачи ИИ и росту объемов, доступных для обучения данных.
Мы дали самый общий обзор эволюции развития ИИ, который будет постепенно уточняться по мере обсуждения новых деталей и вариантов применения технологий ИИ.
По аналогии с тремя волнами повышенного интереса к ИИ условно выделяют и три периода в его развитии ИИ (рис. 1.13).
Это период до 80-х годов, ознаменованный оформлением ИИ в новое направление и его становление как профессионального сообщества, второй с 80-х по 90-е – как период, связанный с бурным развитием машинного обучения (ML), и третий – с 2010 года по настоящее время как этап, связанный с глубоким обучением. Все три периода сопровождались ростом вычислительных возможностей оборудования, который позволял решать все более сложные задачи ИИ.
Рис. 1.13. Основные периоды развития технологий ИИ
Мы выделили три взлета в развитии ИИ, три условных периода, заметим, что самая частая схема представления структуры ИИ также отображается в виде совокупности все тех же множеств (см. рис. 1.14).
Здесь искусственный интеллект – это базовое понятие, которое мы обсуждаем на протяжении всего курса, машинное обучение – его подмножество (решает задачи создания алгоритмов, способных обучаться на данных в отличие от явного программирования задачи). Глубокое обучение и нейросети – один из видов машинного обучения, получивший массовое применение. О разных направлениях машинного обучения речь пойдет далее в данной лекции.
Рис. 1.14. Соотношение базовых направлений в области ИИ. Источник:
Представленная выше схема получила массовое цитирование, однако, как любая высокоуровневая схема, она не раскрывает подробностей, вынужденно упрощает реальную картину и может ввести в заблуждение по поводу деталей. Например, известно, что первая модель искусственного нейрона появилась в 1943 году, а первые попытки создания нейронных сетей были предприняты в 50-е – 60-е годы. Персептрон, предложенный американским нейрофизиологом Фрэнком Розенблаттом, имел возможность обучаться, и это было самое настоящее машинное обучение (задолго до периода, соотнесенного с машинным обучением на популярном рисунке 1.13). То же самое и с глубоким обучением – многослойные нейронные сети появились задолго до отмеченного на рисунке 2010 года.
Почему же этап машинного обучения обозначен лишь в восьмидесятые годы, а глубокое обучение с 2010 года?
Попробуем разобраться.
Дело в том, что каждая технология проходит в своем развитии несколько фаз: идея, запуск, борьба за воплощение, фаза экспериментов, лабораторных установок, пилотных проектов… Со многими технологиями происходит так, что минуют годы, прежде чем технология получит коммерческое массовое внедрение и ознаменует собой этап в развитии того или иного научного направления.
Поэтому от рождения до того момента, когда технология доходит до уровня массового принятия (когда она определяет сущность этапа), может проходить длительное время. Именно так следует воспринимать начало этапов на рис.1.13.
Термин “машинное обучение” был введен в 1959 году Артуром Самуэлем, американским сотрудником IBM и пионером в области компьютерных игр и искусственного интеллекта. В качестве определяющего был выдвинут тезис “способность программы учиться, не будучи явно запрограммированной”. Суть идеи состоит в том, что машинное обучение предполагает наличие общих алгоритмов, которые могут выявить полезную информацию об исследуемом наборе данных без необходимости писать специальный код для решения этой задачи.
Можно сказать, что в машинном обучении способ выполнения задачи автоматически выводится из примеров. Действительно, вместо того чтобы писать программный код, разработчики снабжают данными алгоритм, который выстраивает собственную вычислительную структуру, соответствующую логике решения прикладной задачи.
При этом следует подчеркнуть, что использование машинного обучения может дать положительный результат только в том случае, если проблема имеет решение на основании имеющегося набора данных.
Отмеченную выше мысль (отличие машинного обучения от традиционного программирования) иллюстрирует рис. 1.15.
Рис. 1.15. Отличие традиционного программирования от машинного обучения
Активное развитие технологий машинного обучения началось в 1990-х годах, что явилось заметным шагом по сравнению с тем, как создавались системы ИИ ранее – вместо того, чтобы указывать совокупность правил, используя которые можно решить задачу, эти правила формируются автоматически в процессе обучения на наборе данных.
Если в традиционном программировании (см. рис. 1.15) на вход подаются данные и явно прописывается код их обработки, который определяет последовательность решения задачи, то в случае машинного обучения код обработки автоматически формируется алгоритмами на основе данных (извлекаются из этого набора данных).
Неслучайно появился слоган “От программ, написанных человеком, к программам, написанным другими программами”.
Конечно, говоря “правила”, мы немного упрощаем ситуацию – на самом деле результатом работы алгоритмов машинного обучения может быть модель, которую нельзя будет интерпретировать как набор правил, и в этом смысле она не будет до конца объяснима для человека. Мы еще подробнее поговорим об интерпретируемости моделей позднее в данной лекциие и в лекции 3.
Одним из вариантов реализации моделей машинного обучения являются нейронные сети, которые состоят из нейронов и синапсов (связей между нейронами). С биологической точки зрения, нейроны – это тип клеток нервной системы живого организма. Биологи традиционно изучают развитие, рост и функционирование данных клеток так же, как и клетки других частей тела животного в рамках физико-химических методов исследования. Точка зрения на клетки (нейроны) как на системы обработки информации явилась новым взглядом, который по времени совпал с тем, как генетика и биология развития также начали делать акцент на информации, рассматривая геном как программу, интерпретируемую механизмами клетки. Большинство специалистов в области ИИ сегодня сфокусированы не столько на задачах изучения механизмов обработки информации в биологических системах, сколько на проектировании систем ИИ на базе упрощенных моделей, первоначально заимствованных у живой природы. Ученые шли от изучения структуры мозга и от попытки сконструировать модель (в том числе информационную), которая бы использовала некоторые механизмы работы мозга и, вообще говоря, нервной системы, которые удалось разгадать или сделать предположение об их работе. Отмеченную нами условность этапности, показанную на рис. 1.13, следует также объяснить тем фактом, что ИИ – это совокупность целого ряда технологий в рамках разных направлений, поэтому волны научных достижений и прорывов в русле одних научных направлений могут не совпадать с активностью в рамках других направлений, и более пристальный взгляд на эволюцию ИИ невозможен без того, чтобы обозначить, какие же научные направления следует выделять в рамках развития ИИ. В первую очередь следует напомнить читателю сущность символьного, коннекционистского и эволюционного направлений и показать, как их конкуренция, взаимовлияние (и в ряде случаев интеграция) определяли развитие ИИ.
Увы, простота оставляет за скобками массу деталей. По мере рассмотрения этих деталей мы неизбежно придем к более сложным схемам, которые уже не укладываются в простые и наглядные высокоуровневые представления. Говоря о сложности построения единой схемы ИИ, уместно привести цитату Марвина Минского: “Инженерное и научное образование заставляет нас ожидать, что все, включая интеллект, имеет простое, компактное объяснение. Соответственно, когда новички в области ИИ спрашивают: “В чем суть ИИ?”, – они, похоже, ожидают ответа, определяющего ИИ в терминах нескольких основных математических законов”.
Множественность подходов создания ИИ
Ранее мы обратили внимание читателя на неравномерный волнообразный характер развития технологий ИИ. Если посмотреть разные источники, в поисках согласованного мнения, когда был взлет внимания к технологиям ИИ, а когда охлаждение, то обнаружим, что у разных авторов мнения несколько расходятся. Дело в том, что процесс развития ИИ не является однородным (опирающимся на одну технологию) – напротив, он эволюционировал в рамках разных направлений, разных научных школ. Поэтому в то время, как в развитии одних научных направлений был прорыв, другие имели локальные замедления. В многочисленных работах, посвященных этому вопросу, можно найти упоминания разного количества научных школ (направлений). Мы упомянем четыре и чуть подробнее остановимся на трех из них (коннекционизм, символизм и эволюционизм) ( рис. 1.16).
Рис. 1.16. Ключевые направления в развитии систем искусственного интеллекта. Источник: авторы
На рис. 1.16 показано совместное развитие трех подходов (символизм, коннекционизм, эволюционизм) в развитии ИИ (на фоне эволюции вычислительной инфраструктуры). Вклад каждой из этих составляющих на разных этапах был различным, что на рисунке условно показано интенсивностью серого цвета в заливке каждого из боксов. Упомянутые научные направления в одни периоды времени конкурировали, в другие – объединялись и дополняли друг друга в интегрированных решениях. Для того, чтобы понять, как это происходило, рассмотрим каждое из этих направлений чуть более подробно.
Существуют десятки попыток отобразить эволюцию ИИ в виде диаграмм или так называемых лент времени (timelines) – от простейших до весьма подробных с демонстрацией научных, технологических и финансовых событий, отражающих логику развития ИИ. Подчас обилие полезной информации в этих таймлайнах входит в противоречие с их наглядностью и простотой. Мы постараемся выстроить траекторию изложения материала так, чтобы постепенно вводить новые термины, начав с простых диаграмм, чтобы не вызвать у читателя отторжения в отношении схем с обилием не описанных ранее терминов.
Упрощенные схемы эволюции ИИ – наглядно, но не точно
Начнем рассказ о развитии систем искусственного интеллекта с самой простой ленты времени, которая отражает основные периоды развития и коммерциализации технологий ИИ (рис. 1.12).
Рис. 1.12. Основные периоды развития и коммерциализации технологий ИИ
Как видно из рис.1.12, примерно до середины 70-х годов прошлого столетия ИИ развивался как научное направление и практически не имел коммерческих внедрений при достаточно активном финансировании в первую очередь со стороны военных ведомств США, с середины 70-х начинается стадия военного и коммерческого применения и примерно с конца 90-х массовое коммерческое использование ИИ в форме различного рода корпоративных и пользовательских приложений, при этом военные разработки на этой стадии, естественно, продолжились.
Развитие технологий искусственного интеллекта шло весьма неравномерно. Часто говорят о трех волнах развития ИИ: первая связана со становлением ИИ как нового научного направления и первыми его успехами, в том числе в машинном обучении, вторая – с успехами экспертных систем и третья – с массовым применением технологии глубокого обучения (Deep Learning) и приложений на его основе. Обо всех этих направлениях пойдет речь в данной лекции.
Принято считать, что первый всплеск интереса к ИИ пришелся на период начиная с середины пятидесятых и примерно до конца семидесятых годов. В это время появились многообещающие эксперименты и первые приложения на основе нового научного направления: достигнуты первые успехи по распознаванию образов на базе искусственных нейронных сетей, разработаны программы для игры в шашки и шахматы, предприняты попытки создания первых переводчиков. Кстати, термин “Искусственный интеллект” был введен разработчиком языка программирования LISP Джоном МакКарти в 1956 г. В этом году Джон Маккарти организовал знаменитую конференцию в Дартмутском колледже для обсуждения способов программирования компьютеров таким образом, чтобы добиться их интеллектуального поведения. Именно на этой конференции был впервые использован термин “Искусственный интеллект”. Считается, что данная конференция положила начало новому профессиональному сообществу со своими научными целями и предметом исследований. 60-е годы называют золотыми годами развития ИИ. Это был период энтузиазма, связанного с появлением нового научного направления, который был подкреплен активным финансированием со стороны недавно организованного агентства DARPA. В эти годы был реализован целый ряд пионерских проектов, которые упоминаются во многочисленных публикациях по истории развития ИИ. Например, в 1964 году был реализован проект Eliza – чат-бот, разработанный в Массачусетском технологическом институте, в 1966 году был создан мобильный робот общего назначения SHAKEY. На новое направление возлагались большие надежды, специалистам казалось, что через 5-10 лет удастся создать машину с интеллектом среднего человека (задача, которую так и не удалось решить до настоящего времени). Ожидания первопроходцев были сверхамбициозными. Однако, учитывая сложность задач и тот факт, что аппаратно-вычислительная база того времени была крайне ограничена, вполне естественно, что разработчики столкнулись с принципиальными трудностями. К семидесятым годам стало очевидно, что радужные ожидания не оправдались, инвесторы были разочарованы скромными результатами, и в середине 1970-х годов наступила так называемая первая зима ИИ – период охлаждения к теме ИИ и сокращение финансирования.
Второй взлет интереса к ИИ произошел на волне развития экспертных систем, о которых более подробно будет рассказано далее в этой лекции. У экспертных систем оказались свои ограничения, и, как показано на рисунке 1.12, на период 1987-1993 пришлась вторая зима ИИ.
Третий взлет произошел на базе массового внедрения технологии глубоких нейронных сетей (глубокого обучения), который существенно продвинул многие прикладные решения, включая компьютерное зрение, обработку естественного языка и другие направления.
Развитие глубокого обучения стало возможным благодаря совершенствованию технологий ИИ, опыта их применения, увеличению вычислительных ресурсов, оптимизированных под задачи ИИ и росту объемов, доступных для обучения данных.
Мы дали самый общий обзор эволюции развития ИИ, который будет постепенно уточняться по мере обсуждения новых деталей и вариантов применения технологий ИИ.
По аналогии с тремя волнами повышенного интереса к ИИ условно выделяют и три периода в его развитии ИИ (рис. 1.13).
Это период до 80-х годов, ознаменованный оформлением ИИ в новое направление и его становление как профессионального сообщества, второй с 80-х по 90-е – как период, связанный с бурным развитием машинного обучения (ML), и третий – с 2010 года по настоящее время как этап, связанный с глубоким обучением. Все три периода сопровождались ростом вычислительных возможностей оборудования, который позволял решать все более сложные задачи ИИ.
Мы выделили три взлета в развитии ИИ, три условных периода, заметим, что самая частая схема представления структуры ИИ также отображается в виде совокупности все тех же множеств (см. рис. 1.14).
Здесь искусственный интеллект – это базовое понятие, которое мы обсуждаем на протяжении всего курса, машинное обучение – его подмножество (решает задачи создания алгоритмов, способных обучаться на данных в отличие от явного программирования задачи). Глубокое обучение и нейросети – один из видов машинного обучения, получивший массовое применение. О разных направлениях машинного обучения речь пойдет далее в данной лекции.
Представленная выше схема получила массовое цитирование, однако, как любая высокоуровневая схема, она не раскрывает подробностей, вынужденно упрощает реальную картину и может ввести в заблуждение по поводу деталей. Например, известно, что первая модель искусственного нейрона появилась в 1943 году, а первые попытки создания нейронных сетей были предприняты в 50-е – 60-е годы. Персептрон, предложенный американским нейрофизиологом Фрэнком Розенблаттом, имел возможность обучаться, и это было самое настоящее машинное обучение (задолго до периода, соотнесенного с машинным обучением на популярном рисунке 1.13). То же самое и с глубоким обучением – многослойные нейронные сети появились задолго до отмеченного на рисунке 2010 года.
Почему же этап машинного обучения обозначен лишь в восьмидесятые годы, а глубокое обучение с 2010 года?
Попробуем разобраться.
Дело в том, что каждая технология проходит в своем развитии несколько фаз: идея, запуск, борьба за воплощение, фаза экспериментов, лабораторных установок, пилотных проектов… Со многими технологиями происходит так, что минуют годы, прежде чем технология получит коммерческое массовое внедрение и ознаменует собой этап в развитии того или иного научного направления.
Поэтому от рождения до того момента, когда технология доходит до уровня массового принятия (когда она определяет сущность этапа), может проходить длительное время. Именно так следует воспринимать начало этапов на рис.1.13.
Термин “машинное обучение” был введен в 1959 году Артуром Самуэлем, американским сотрудником IBM и пионером в области компьютерных игр и искусственного интеллекта. В качестве определяющего был выдвинут тезис “способность программы учиться, не будучи явно запрограммированной”. Суть идеи состоит в том, что машинное обучение предполагает наличие общих алгоритмов, которые могут выявить полезную информацию об исследуемом наборе данных без необходимости писать специальный код для решения этой задачи.
Можно сказать, что в машинном обучении способ выполнения задачи автоматически выводится из примеров. Действительно, вместо того чтобы писать программный код, разработчики снабжают данными алгоритм, который выстраивает собственную вычислительную структуру, соответствующую логике решения прикладной задачи.
При этом следует подчеркнуть, что использование машинного обучения может дать положительный результат только в том случае, если проблема имеет решение на основании имеющегося набора данных.
Отмеченную выше мысль (отличие машинного обучения от традиционного программирования) иллюстрирует рис. 1.15.
Активное развитие технологий машинного обучения началось в 1990-х годах, что явилось заметным шагом по сравнению с тем, как создавались системы ИИ ранее – вместо того, чтобы указывать совокупность правил, используя которые можно решить задачу, эти правила формируются автоматически в процессе обучения на наборе данных.
Если в традиционном программировании (см. рис. 1.15) на вход подаются данные и явно прописывается код их обработки, который определяет последовательность решения задачи, то в случае машинного обучения код обработки автоматически формируется алгоритмами на основе данных (извлекаются из этого набора данных).
Неслучайно появился слоган “От программ, написанных человеком, к программам, написанным другими программами”.
Конечно, говоря “правила”, мы немного упрощаем ситуацию – на самом деле результатом работы алгоритмов машинного обучения может быть модель, которую нельзя будет интерпретировать как набор правил, и в этом смысле она не будет до конца объяснима для человека. Мы еще подробнее поговорим об интерпретируемости моделей позднее в данной лекциие и в лекции 3.
Одним из вариантов реализации моделей машинного обучения являются нейронные сети, которые состоят из нейронов и синапсов (связей между нейронами). С биологической точки зрения, нейроны – это тип клеток нервной системы живого организма. Биологи традиционно изучают развитие, рост и функционирование данных клеток так же, как и клетки других частей тела животного в рамках физико-химических методов исследования. Точка зрения на клетки (нейроны) как на системы обработки информации явилась новым взглядом, который по времени совпал с тем, как генетика и биология развития также начали делать акцент на информации, рассматривая геном как программу, интерпретируемую механизмами клетки. Большинство специалистов в области ИИ сегодня сфокусированы не столько на задачах изучения механизмов обработки информации в биологических системах, сколько на проектировании систем ИИ на базе упрощенных моделей, первоначально заимствованных у живой природы. Ученые шли от изучения структуры мозга и от попытки сконструировать модель (в том числе информационную), которая бы использовала некоторые механизмы работы мозга и, вообще говоря, нервной системы, которые удалось разгадать или сделать предположение об их работе. Отмеченную нами условность этапности, показанную на рис. 1.13, следует также объяснить тем фактом, что ИИ – это совокупность целого ряда технологий в рамках разных направлений, поэтому волны научных достижений и прорывов в русле одних научных направлений могут не совпадать с активностью в рамках других направлений, и более пристальный взгляд на эволюцию ИИ невозможен без того, чтобы обозначить, какие же научные направления следует выделять в рамках развития ИИ. В первую очередь следует напомнить читателю сущность символьного, коннекционистского и эволюционного направлений и показать, как их конкуренция, взаимовлияние (и в ряде случаев интеграция) определяли развитие ИИ.
Увы, простота оставляет за скобками массу деталей. По мере рассмотрения этих деталей мы неизбежно придем к более сложным схемам, которые уже не укладываются в простые и наглядные высокоуровневые представления. Говоря о сложности построения единой схемы ИИ, уместно привести цитату Марвина Минского: “Инженерное и научное образование заставляет нас ожидать, что все, включая интеллект, имеет простое, компактное объяснение. Соответственно, когда новички в области ИИ спрашивают: “В чем суть ИИ?”, – они, похоже, ожидают ответа, определяющего ИИ в терминах нескольких основных математических законов”.
Множественность подходов создания ИИ
Ранее мы обратили внимание читателя на неравномерный волнообразный характер развития технологий ИИ. Если посмотреть разные источники, в поисках согласованного мнения, когда был взлет внимания к технологиям ИИ, а когда охлаждение, то обнаружим, что у разных авторов мнения несколько расходятся. Дело в том, что процесс развития ИИ не является однородным (опирающимся на одну технологию) – напротив, он эволюционировал в рамках разных направлений, разных научных школ. Поэтому в то время, как в развитии одних научных направлений был прорыв, другие имели локальные замедления. В многочисленных работах, посвященных этому вопросу, можно найти упоминания разного количества научных школ (направлений). Мы упомянем четыре и чуть подробнее остановимся на трех из них (коннекционизм, символизм и эволюционизм) ( рис. 1.16).
На рис. 1.16 показано совместное развитие трех подходов (символизм, коннекционизм, эволюционизм) в развитии ИИ (на фоне эволюции вычислительной инфраструктуры). Вклад каждой из этих составляющих на разных этапах был различным, что на рисунке условно показано интенсивностью серого цвета в заливке каждого из боксов. Упомянутые научные направления в одни периоды времени конкурировали, в другие – объединялись и дополняли друг друга в интегрированных решениях. Для того, чтобы понять, как это происходило, рассмотрим каждое из этих направлений чуть более подробно.