Главная страница
Навигация по странице:

  • Сферы использования ИИ

  • Общие сведения

  • Big Data

  • Большие данные (Big Data, биг дата)

  • лекция. Lektsii_ПКТ. Конспект лекций по дисциплине прикладные компьютерные технологии Направление подготовки 09. 03. 01 Информатика и вычислительная техника


    Скачать 7.93 Mb.
    НазваниеКонспект лекций по дисциплине прикладные компьютерные технологии Направление подготовки 09. 03. 01 Информатика и вычислительная техника
    Анкорлекция
    Дата11.02.2023
    Размер7.93 Mb.
    Формат файлаdocx
    Имя файлаLektsii_ПКТ.docx
    ТипКонспект лекций
    #931017
    страница6 из 14
    1   2   3   4   5   6   7   8   9   ...   14

    Языки программирования современных систем ИИ

    Искусственный интеллект (ИИ) – это широкое и растущее технологическое поле, и это означает, что ИИ может быть реализован на разных языках программирования. Однако по-прежнему трудно определить, какой из многих языков следует использовать для разработки ИИ. Ниже приведены некоторые из лучших языков программирования ИИ:

    Julia – это высокоуровневый язык программирования общего назначения, разработанный Джеффом Безансоном, Стефаном Карпински, Вирал Б. Шахом и Аланом Эдельманом в 2009 году. Он разработан с нацеленностью на высокопроизводительный численный анализ и вычислительную науку, поэтому он не включает необходимость отдельной компиляции по скорости. Простой синтаксис и глубокие математические корни делают Julia дружественным языком программирования для аналитиков данных. Он также включает Flux, основу для машинного обучения и ИИ. В сочетании с математическим синтаксисом Julia предлагает идеальный способ выражения алгоритмов. Julia также поддерживает другие платформы машинного обучения, такие как TensorFlow и MXNet.

    Haskell – стандартизированный, универсальный язык программирования, разработанный с нестрогой семантикой и сильной статической типизацией. Первоначально разработанный в 1990 году, Haskell в основном используется в академических кругах, хотя есть и некоторые примеры его использования в промышленности и коммерции для проектов в AT&T, Facebook, Google и других. Haskell основан на семантике языка программирования Miranda и позволяет эффективным библиотекам реализовывать алгоритмы ИИ.

    R. В отличие от других, R – уникальный язык программирования, а также бесплатная программная среда с открытым исходным кодом для статистических вычислений и графики. Разработанный в 1993 году Росом Ихакой и Робертом Джентльменом, R широко используется среди аналитиков данных для разработки статистического программного обеспечения и анализа данных. Он также используется в искусственном интеллекте нового стиля и общем машинном обучении. R предоставляет несколько парадигм программирования, таких как векторное вычисление, функциональное программирование и объектно-ориентированное программирование и рассматривается как один из основных стандартных языков для таких областей, как финансы, биология и медицина.

    C++ был разработан с учетом производительности, эффективности и гибкости, что делает его идеальным выбором для многих проектов программирования ИИ, которым необходима скорость. По сравнению с другими языками программирования, C++ имеет более быстрое выполнение и более низкую задержку, что делает его полезным для поиска решений сложных проблем ИИ. Он также позволяет широко использовать алгоритмы и является эффективным средством написания статистических методов ИИ, таких как нейронные сети.

    MATLAB (Matrix Laboratory) является патентованным языком программирования, разработанным MathWorks. Он широко используется многими разработчиками программного обеспечения и разработчиками для анализа краевых систем и проектов ИИ. Это простой в использовании язык со встроенной графикой, которая позволяет разработчикам визуализировать данные и получать от них значимую информацию. MATLAB – хороший выбор для машинного обучения и проектов ИИ при задачах визуализации и выполнения матриц.

    Python – широко применяемый язык программирования и может быть использован для реализации ИИ из-за простой и бесшовной структуры, которую он предлагает. Синтаксис Python позволяет легко реализовать различные алгоритмы ИИ, что также позволяет сократить время разработки по сравнению с другими доступными языками программирования. Применение Python позволяет пользователям создавать нейронные сети с набором полезных библиотек, которые могут использоваться для разработки ИИ. Другие функции включают возможность тестирования алгоритмов без необходимости их реализации. Он также поддерживает объектно-ориентированные, функциональные и процедурно-ориентированные стили программирования.

    Lisp является одним из самых старых доступных языков программирования, но все же остается одним из предпочтительных вариантов разработки ИИ из-за его уникальных функций. Это, по сути, практическая математическая нотация для компьютерных программ. Разработчики склонны идти на Lisp в машинном обучении его гибкости приспосабливаться к проблеме, которая нуждается в решении. Помимо этого, Lisp также предлагает быстрые возможности прототипирования, библиотеку типов коллекций, поддержку символических выражений и другое.

    Java, чрезвычайно популярный язык программирования, также может рассматриваться как хороший выбор для программирования ИИ, поскольку он обеспечивает алгоритмы поиска и нейронные сети. Это простой для понимания язык, который предлагает графическое представление, отладку и масштабируемость. Его портативность делает его предпочтительной реализацией для различных приложений на основе наличия различных встроенных типов.

    Prolog обладает механизмами, которые могут быть востребованы при разработке программного обеспечения ИИ, в частности: древо- видные механизмы структурирования данных, сопоставления шаблонов. Prolog часто используется при разработке программного обеспечения ИИ со сложной архитектурой, что подразумевает одновременное выполнения ряда логических операций.

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

    KERAS. Это библиотека нейронных сетей на основе Python с открытым исходным кодом, которая может работать под управлением Microsoft CNTK (Cognitive Toolkit), Tensorflow и многих других сред. KERAS лучше всего подходит новичкам.

    TENSORFLOW. Tensorflow является наиболее выдающейся средой для разработки искусственного интеллекта, которая использует методы машинного обучения, такие как нейронные сети. Tensorflow был разработан командой Google Brain, именно этот фреймворк в ответе за автозавершение фраз в текстовое поле поисковой системы Google, а также ИИ приложений Google.

    SONNET. Созданная командой Google DeepMind, Sonnet — это библиотека, работающая поверх TensorFlow для построения сложных нейронных сетей глубокого обучения. SONNET лучше всего подходит для исследований и разработок в области искусственного интеллекта и является очень сложной для новичков.

    CNTK (Microsoft Cognitive Toolkit). Ранее известный как CNTK, Microsoft Cognitive Toolkit нацелен обучить алгоритмы мыслить как человеческий мозг. Он обладает скоростью, масштабируемостью, качеством и совместимостью с C ++ и Python. Microsoft использует его для функций AI в Skype, Cortana и Bing. Microsoft CNTK позволяет пользователям комбинировать популярные модели глубокого обучения, такие как DNN, CNN и RNN.

    PYTORCH. Pytorch — это библиотека машинного обучения с открытым исходным кодом для Python, основанная на Torch, которая использует технологии обработки естественного языка (NLP).

    DL4J (Deeplearning4j) — это библиотека с открытым исходным кодом для разработки ИИ с использованием методов глубокого обучения. Написана специально для Java и JVM (Java Virtual Machine). DL4J работает на базе собственной библиотеки числовых вычислений и может работать как на CPU, так и на GPU.

    ONNX, платформа глубокого обучения, которая совместно разработана Facebook и Microsoft, а также перечислим несколько других: H2O, DSSTNE, Theano, DeepDetect, ConvNetJS, ACT-R, Caffe и CaffeOnSpark.

    MXNET. Apache MXNET — это программная среда с глубоким обучением для развертывания нейронных сетей. Она имеет масштабируемую модель обучения, которая поддерживает несколько языков программирования для разработки AI: Go, R, Scala, Perl, C ++, Python, Julia, Matlab, JavaScript, и является проектом с открытым исходным кодом. MXNET используется для развертывания нейронных сетей в службах общего хостинга, таких как AWS и Microsoft Azure.

    Современные приложения на основе искусственного интеллекта работают по принципам машинного обучения (англ. machine learning) и глубокого обучения (англ. deep learning). Последний использует большие массивы данных и требует высокой компьютерной мощности. Оба процесса основаны на работе искусственных нейронных сетей, которые автоматически строят графы, представляющие программную интерпретацию алгоритмов запоминания. Также потенциальными областями применения искусственных нейронных сетей являются такие области, в которых человеческий интеллект малоэффективен либо традиционные вычисления трудоёмки или физически неадекватны, так как не отражают или плохо отражают реальные физические процессы и объекты.

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

    Wit.ai имеет специальные механизмы, которые преобразуют голосовые запросы пользователей в текст. После этого платформа тщательно анализирует полученный запрос и отвечает на него, действуя по принципу сущностей и намерений. Сущности представляют собой объекты, которые автоматически указываются программой при наличии запроса пользователя. Ответ генерируется с помощью интегрированной базы данных и знаний, полученных на этапе машинного обучения. Кроме того, уникальная функция “история” (которая сохраняет контекстные данные) позволяет создавать продвинутые чат боты на основе платформы в очень короткие сроки. На сегодняшний день используется более чем 180 тыс. разработчиков

    Dialogflow (ранее называвшийся Api.ai), созданный совместно с разработчиками Google, основан на контекстном запоминании предыдущих взаимодействий пользователей. Его принцип работы аналогично Wit.ai сосредоточен на двух понятиях: сущности и намерения. Он поддерживает более 14 языков, включая португальский, русский и испанский. Dialogflow является одним из самых мощных инструментов для разработки программного обеспечения ИИ, в основном за счет его совместимости с наиболее распространенными мобильными платформами: ОС Android и iOS, а также поддержки языков программирования таких как Xamarin, Python, C++ и JavaScript.

    Clarifai является платформой, которая обрабатывает данные, полученные с помощью камер, встроенных в устройства пользователей. В ней реализованы механизмы систематизации знаний, полученных с помощью машинного обучения. Программные решения, созданные с помощью Clarifai, способны достаточно точно идентифицировать изображения, полученные из внешних источников. Clarifai подходит для разработчиков со знанием таких языков программирования как Python, Java и Node.js.

    Melissa. Платформа с открытым исходным кодом Melissa использует язык программирования Python и предоставляет возможность реализовать практически любое приложение на основе ИИ (аналогичное по структуре помощнику ИИ, встроенному в смартфон). Платформа поддерживается всеми популярными настольными операционными системами. Melissa имеет встроенные механизмы распознавания голоса, которые делают его идеальным инструментом для развития голосовых помощников различных типов.

    Есть много других систем, которые так или иначе сопоставимы с указанными выше платформами: Keras ,Theano, Lasagne, или Blocks, предназначенных в первую очередь для обучения нейронных сетей.

    Сферы использования ИИ

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

    Голосовые помощники, основанные на базе искусственного интеллекта, такие как Siri, Google Now, Alexa, Bixby и Cortana. Они слушают, что говорит пользователь, чтобы преобразовать речь в машиночитаемый вектор, после чего выдается вектор ответа, который произносится голосовым помощником с помощью Natural Language Processing (NLP).

    Умные помощники. Autodesk Eva является отличным примером интеллектуального помощника, который использует CNN и NLP для взаимодействия с клиентами в режиме реального времени. Умный помощник, смоделированный в 3D, может вести диалог с клиентом в режиме реального времени и имитировать соответствующие выражение лица. Автономное планирование и составление расписаний. Медицинские диагностические программы сумели достигнуть уровня опытного врача в нескольких областях медицины.

    Беспилотные автомобили используют радар, LIDAR (детектор света и определитель дистанции), GPS и камеру для создания трехмерных моделей приближающихся транспортных средств. Все эти данные объединяются для определения местоположения транспортного средства с очень высокой точностью. Водителем выступает ИИ, который анализирует всю поступающую информацию с датчиков. Программа Remote Agent, разработанная в NASA, используется для комплексного управления работой космических аппаратов, удаленных далеко за пределы околоземной орбиты, в т.ч. диагностики и устранения неисправностей по мере их возникновения. Система компьютерного зрения Alvinn была обучена вождению автомобиля, придерживаясь полосы движения. На протяжении 2850 миль система обеспечивала управлении автомобилем в течение 98% времени.

    Распознавание лиц. Разработка искусственного интеллекта на основе CNN сделала возможным внедрение системы распознавания лиц. Недавно в Китае начали использовать систему распознавания лиц с помощью камер видеонаблюдения по всему городу, налагая штраф за нарушение правил дорожного движения. Магазины Alibaba в Китае используют распознавание лиц и изображений для выставления счета.

    Балансировка нагрузки. Балансировка нагрузки на дороги, транспортные системы, серверы и так далее. Во время кризиса в Персидском заливе в 1991г. В армии США была развернута система DART (Dynamic Analysis and Re-planning), которая обеспечивала автоматизированное планирование поставок и составление графика перевозок, охватывая одновременно до 50000 автомобилей, людей и грузы. Разработчики этой системы заявили, что одно это применение окупило их 30-летние инвестиции в искусственный интеллект.

    Языковые переводчики. Гугл переводчик является хорошим примером. Он имеет два модуля: кодировщик и декодер. Кодировщик берет входные предложения из речи или текста, а затем переводит их в вектор, который является одинаковым форматом для входных данных со всех языков. Модуль декодера принимает этот вектор в качестве входных данных, а затем генерирует текст или речь на целевом языке. Распознавание языка происходит с помощью RNN, вывод речи выполняется с помощью NLP.

    Поиск и анализ изображений используется для проверки плагиата, поиска людей, для SEO целей, поиска оскорбительного контента в социальных сетях.

    Оптимизация для достижения наилучших результатов. Модули Deepmind были обучены игре в шахматы, Go, Dota 2, Starfield 2. Эти модули наиграли игр на сотни лет всего за несколько недель обучения, что привело AI к победе над лучшими игроками в мире. Программа Deep Blue компании IBM стала первой программой, которой удалось победить чемпиона мира в шахматном матче.

    Лекция №4

    Аналитика данных. Бигдата: понятия, тенденции, применения. Принципы и процесс обработки и анализа больших данных. Технологические основы работы с большими данными. Программные средства и инструменты.

    Общие сведения

    Вместе со стремительным накоплением информации быстрыми темпами развиваются и технологии анализа данных. Если еще несколько лет назад было возможно, лишь сегментировать клиентов на группы со схожими предпочтениями, то теперь возможно строить модели для каждого клиента в режиме реального времени, анализируя, например, его перемещение по сети Интернет для поиска конкретного товара. Интересы потребителя могут быть проанализированы, и в соответствии с построенной моделью выведена подходящая реклама или конкретные предложения. Модель также может настраиваться и перестраиваться в режиме реального времени, что было немыслимо еще несколько лет назад.

    В то же время, существуют ситуации, когда увлечение новыми технологиями может привести и к разочарованию. Например, иногда разреженные данные (Sparse data), дающие важное понимание действительности, являются гораздо более ценными, чем Большие данные (Big Data), описывающие горы, зачастую, не существенной информации.

    Big Data

    В современных обсуждениях понятие Big Data описывают как данные объема в порядках терабайт. На практике (если речь идет о гигабайтах или терабайтах), такие данные легко хранить и управлять ими с помощью «традиционных» баз данных и стандартного оборудования (сервера баз данных).

    Большие данные (Big Data, биг дата) — это структурированные и неструктурированные данные огромных объемов и разнообразия, а также методы их обработки, которые позволяют распределенно анализировать информацию. Термин Big Data появился в 2008 году. Впервые его употребил редактор журнала Nature — Клиффорд Линч. Он рассказывал про взрывной рост объемов мировой информации и отмечал, что освоить их помогут новые инструменты и более развитые технологии.

    Как правило, обсуждение Big Data сосредоточено вокруг хранилищ данных (и проведении анализа, основанных на таких хранилищах), объемом намного больше, чем просто несколько терабайт. В частности, некоторые хранилища данных могут вырасти до тысячи терабайт, т.е., до петабайт (1000 терабайт = 1 петабайт). За пределами петабайт, накопление данных может быть измерено в эксабайтах, например, в производственном секторе по всему миру в 2010 году, по оценкам, накоплено в общей сложности 2 эксабайта новой информации (Manyika et al., 2011 г.).

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

    Кроме того, за последние несколько лет, внедряются так называемые “smart grid” технологии, позволяющие коммунальным службам измерять потребление электроэнергии отдельными семьями каждую минуту или каждую секунду. Для такого рода приложений, в которых данные должны храниться годами, накопленные данные классифицируются как Extremely Big Data.

    Классификацию объемов данных можно представить так:

    • Большие наборы данных: от 1000 мегабайт (1 гигабайт) до сотен гигабайт

    • Огромные наборы данных: от 1000 гигабайт (1терабайт) до нескольких терабайт

    • Big Data: от нескольких терабайт до сотен терабайт

    • Extremely Big Data: от 1000 до 10000 терабайт = от 1 до 10 петабайт

    К источникам больших данных относят:

    • Интернет — соцсети, блоги, СМИ, форумы, сайты, интернет вещей (IoT).

    • Корпоративные данные — транзакционная деловая информация, архивы, базы данных.

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

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

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

      1. Горизонтальная масштабируемость. Поскольку данных может быть сколь угодно много – любая система, которая подразумевает обработку больших данных, должна быть расширяемой. В 2 раза вырос объём данных – в 2 раза увеличили количество железа в кластере и всё продолжило работать.

      2. Отказоустойчивость. Принцип горизонтальной масштабируемости подразумевает, что машин в кластере может быть много. Например, Hadoop-кластер Yahoo имеет более 42000 машин (по этой ссылке можно посмотреть размеры кластера в разных организациях). Это означает, что часть этих машин будет гарантированно выходить из строя. Методы работы с большими данными должны учитывать возможность таких сбоев и переживать их без каких-либо значимых последствий.

      3. Локальность данных. В больших распределённых системах данные распределены по большому количеству машин. Если данные физически находятся на одном сервере, а обрабатываются на другом – расходы на передачу данных могут превысить расходы на саму обработку. Поэтому одним из важнейших принципов проектирования BigData-решений является принцип локальности данных – по возможности обрабатываем данные на той же машине, на которой их храним.
    1   2   3   4   5   6   7   8   9   ...   14


    написать администратору сайта