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

  • Проверка дизайна.

  • А рхитектура системы.

  • Frontend-разработка.

  • Кроссплатформенный

  • Backend-разработка (программный интерфейс и сервер).

  • Языком программирования

  • Системой управления базой данных

  • Хостингом для сервера и AP

  • Функционал

  • Регрессионное тестирование

  • Тестирование под платформу

  • Приемочное пользовательское тестирование

  • В ыход на рынок.

  • М ониторинг.

  • Дальнейшие улучшения.

  • Общие сведения Искусственный интеллект

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


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

    Рендеринг – процесс отрисовки вайрфреймов в цифре в соответствии со стайлгайдом. Дизайнер должен придерживаться рекомендаций, но не следовать им слепо. Только так визуальная составляющая мобильного приложения будет выглядеть целостно. Инструменты: Sketch, Figma, Adobe XD и Principle.

  • Проверка дизайна. Отправляются на обратную связь тем же пользователям, кто оценивал вайрфреймы. Инструмент: Invision, Figma и Sketch.

  • Разработка. Настало время подключать разработчиков, которые качественно реализуют продуманный до мелочей и многократно протестированный дизайн. В некоторой степени успех совместной работы дизайнеров и разработчиков зависит от выбора инструментов. Например, приложение Zeplin показывает последним все свойства загруженного в него дизайна, хотя не обладает всеми возможностями Sketch или Photoshop.

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

    2. Frontend-разработка. Существует три основных подхода frontend-разработке:

    • Нативный – при таком подходе приложение пишется под конкретную мобильную платформу. То есть код приложения под Android нельзя будет использовать на iOS без адаптации. Интерфейс нативного приложения выглядит максимально органично, а само оно работает быстро и отлажено. За такую надёжность приходится платить, поэтому нативная разработка стоит дороже остальных вариантов.

    • Кроссплатформенный – код такого приложения универсален, вследствие чего ОС запускает его как нативное. Многие считают этот способ оптимальным по соотношению «цена-качество», но он всё равно требует от разработчика временных затрат на оптимизацию. Если остановитесь на нём, среди фреймворков выбирайте между React Native, Xamarin и Native Script.

    • Гибридный – код пишется на HTML, CSS или Javascript в таких средах разработки, как Cordova, Phone Gap и Ionic. Получается дёшево, сердито и не без проблем.

      1. Backend-разработка (программный интерфейс и сервер). Сервер влияет на производительность мобильного приложения и масштабируемость продукта, то есть способность системы увеличивать ту же производительность за счёт увеличения доступных ресурсов. Технологии здесь те же, что и в разработке веб-приложений. Отправная точка – определиться с:

    • Языком программирования – написать мобильное приложение можно на Java, SWIFT, а сервер на Javascript, C#, Go-lang, PHP, Python и ещё десятке языков. И у каждого из них есть фреймворки на любой вкус.

    • Системой управления базой данных – они делятся на два типа: те, что работают на SQL, и все остальные. SQL-системы надёжны и подходят для решения практически любых задач. Самые популярные – MSSQL, MYSQL и PostgreSQL. Кроме того, придётся выбрать движок (подсистему хранения) и выстроить схему базы. Ваша цель на данном этапе – сделать систему надёжной и хорошо структурированной. Не поленитесь и тщательно продумайте каждый её элемент.

    • Хостингом для сервера и API – здесь вновь важно учесть производительность и масштабируемость приложения наряду с его надёжностью и ценой в магазинах. Такие провайдеры, как Amazon AWS и Rackspace, предлагают разработчикам облачные решения, причём размер облака можно будет увеличить, когда вырастет база пользователей. Они же помогут с резервным копированием данных и оперативными обновлениями.

      1. Разработка и итерация. Scrum - метод управления проектами, который подразумевает разбивку рабочего процесса на небольшие отрезки – спринты: планирование (какие задачи идут в спринт), разработка (включая QA проверку – отдел контроля качества), тестирование (не должны его же разработчики) и анализ. Тип тестирования выбирают исходя из проверяемой характеристики приложения:

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

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

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

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

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

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

    1. В ыход на рынок. К этому моменту приложение (или хотя бы MVP) должно быть полностью готово к выходу на рынок. Но лучше перед публичным доступом протестировать его на небольших группах целевой аудитории. Сделать это можно двумя способами: фокус группа (участники должны увидеть приложение впервые) и бета-тестирование (пробный запуск приложения для ограниченной аудитории опытных пользователей и охотников за новинками). Перед тем, как представить своё мобильное приложение миру, позаботьтесь о двух вещах: надёжном API-сервере (благодаря облачным технологиям конфигурацию сервера можно менять в зависимости от размера пользовательской базы) и соблюдении правил Google Play Store и Apple App Store.

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

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

      2. Аналитика. Современные системы аналитики собирают информацию об аудитории (распределение пользователей по полу, возрасту, местонахождению, языку и т.д.) и особенностях взаимодействия с ним (времени входа в приложение, времени, проведённом в приложении, количестве просмотренных экранов и пр.). Инструменты: Firebase, Яндекс. Метрика, Facebook Analytics, Apptentive, Google Analytics и Appsee

      3. Производительность. Как часто происходило то или иное действие и как долго оно длилось.Если простейшее действие занимает больше времени, чем ожидалось, это тревожный сигнал. Инструмент: Prometheus

      4. Поддержка репутации. Оценки и отзывы в магазинах крайне важны, особенно для новых приложений. Всегда отвечайте комментаторам.

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


    Лекция №3

    Введение в системы искусственного интеллекта. Направления развития искусственного интеллекта. Принципы программирования систем искусственного интеллекта

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

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

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

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

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

    Идея создания искусственного подобия человека для решения сложных задач и моделирования человеческого разума витала в воздухе еще в древнейшие времена: «оживающая» механическая статуя бога Амона (древний Египет); бог Гефест ковал человекоподобные существа-автоматы (Гомер, «Иллиада»); Буратино папы Карло.

    Возможности же практической реализации ИИ появились с момента создания электронных вычислительных машин. В это время развернулась философская дискуссия на тему «Может ли машина мыслить?». Итогом этой дискуссии стал тест, предложенный Аланом Тьюрингом в 50-е гг. ХХ века [1]. Тест заключается в следующем: Имеются два телетайпа (в то время других терминальных устройств не было). Один из телетайпов подключен к машине, другой — к аппарату, за которым сидит человек. Несколько экспертов поочередно ведут диалог на каждом из телетайпов. Если большинство экспертов не смогут в течение пяти минут распознать в одном из собеседников машину, то тест Тьюринга считается пройденным успешно. Тест Тьюринга сыграл определенную роль в развитии искусственного интеллекта, в том числе и критика самого теста. Здесь можно провести аналогию с авиацией. Хорошими летательными аппаратами, по логике теста Тьюринга, должны считаться такие, которые неотличимы от птиц до такой степени, что даже птицы принимают их за своих. Развитие авиации началось тогда, когда конструкторы перестали копировать птиц, а занялись аэродинамикой, материаловедением и теорией прочности. Робототехника стала индустрией после того, как перестала копировать анатомию человека. Аналогично, субъекты искусственного интеллекта получили право на жизнь после того, как прекратились попытки построить системы ИИ, думающие и действующие подобно людям, а начали строить системы, действующие и думающие рационально, т.е. достигающие наилучшего результата.

    Рождение искусственного интеллекта как научного направления произошло только после создания ЭВМ в 40-х годах ХХ века. В то же время Норберт Винер создал свои основополагающие работы по новой науке – кибернетике. Термин искусственный интеллект (artificial intelligence) предложен в 1956 г. на семинаре с аналогичным названием в Стэндфордском университете (США). Семинар был посвящен разработке логических, а не вычислительных задач. Вскоре после признания искусственного интеллекта отдельной областью науки произошло разделение его на два направления: нейрокибернетика и кибернетика «черного ящика» (рис.1).

    Р ис. 1. Направления развития систем искусственного интеллекта
    Таким образом, нейрокибернетика ориентирована на программно-аппаратное моделирование структур, подобных структуре мозга (нейронных сетей). Нейросетевые технологии требовали значительных вычислительных затрат. В 80-х в Японии был создан первый нейрокомпьютер. Основная область применения нейрокомпьютеров - распознавание образов.

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

    Таким образом, исследования в области искусственного интеллекта сконцентрированы на разработке и внедрении компьютерных программ, способных эмулировать (имитировать, воспроизводить) те области деятельности человека, которые требуют мышления, определенного мастерства и накопленного опыта. К ним относятся задачи принятия решений, распознавания образов и понимания человеческого языка. Основная задача интеллектуальных технологий сегодня - это обработка знаний (понимание естественного языка, поддержка принятия решения в сложных ситуациях, постановка диагноза и рекомендации по методам лечения, анализ визуальной информации, управление диспетчерскими пультами и др.).

    Принято считать, что в России искусственный интеллект зародился в 1954 году. В этом году в МГУ начал свою работу семинар «Автоматы и мышление» под руководством академика Ляпунова А.А., одного из основателей российской кибернетики. Притом, что отношение к новым наукам с СССР всегда было настороженным, наука с таким «вызывающим» названием было встречена в штыки. Только в 1974 г. при Комитете по системному анализу при президиуме АН СССР был создан научный совет по проблеме «Искусственный интеллект». На данный момент отставание в области разработки промышленных интеллектуальных систем составляет порядка 3-5 лет.

    • Направления развития систем искусственного интеллекта:

    • Представление знаний и разработка систем, основанных на знаниях.

    • Игры и творчество.

    • Разработка естественно-языковых интерфейсов и машинный перевод.

    • Распознавание образов.

    • Новые архитектуры компьютеров.

    • Интеллектуальные роботы.

    • Специальное программное обеспечение.

    • Обучение и самообучение.

    Искусственный интеллект (ИИ) - это научная дисциплина, возникшая в 50-х годах на стыке кибернетики, лингвистики, психологии и программирования. Разработка интеллектуальных программ существенно отличается от обычного программирования и ведется путем построения системы искусственного интеллекта (СИИ). Если обычная программа может быть представлена в парадигме: Программа = Алгоритм + Данные, то для СИИ характерна другая парадигма: СИИ = Знания + Стратегия обработки знаний.

    Данные - это отдельные факты, характеризующие объекты, процессы и явления предметной области, а также их свойства. При обработке на ЭВМ данные трансформируются, условно проходя следующие этапы:

    • D1 - данные как результат измерений и наблюдений;

    • D2 - данные на материальных носителях информации (таблицы, протоколы, справочники);

    • D3 - модели (структуры) данных в виде диаграмм, графиков, функций;

    • D4 - данные в компьютере на языке описания данных;

    • D5 - базы данных на машинных носителях информации.

    Знания основаны на данных, полученных эмпирическим путем. Они представляют собой результат мыслительной деятельности человека, направленной на обобщение его опыта, полученного в результате практической деятельности. Знания - это закономерности предметной области (принципы, связи, законы), полученные в результате практической деятельности и профессионального опыта, позволяющие специалистам ставить и решать задачи в этой области. При обработке на ЭВМ знания трансформируются аналогично данным:

    • Z1 - знания в памяти человека как результат мышления;

    • Z2 - материальные носители знаний (учебники, методические пособия);

    • Z3 - поле знаний - условное описание основных объектов предметной области, их атрибутов и закономерностей, их связывающих;

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

    • Z5 - база знаний на машинных носителях информации.

    Часто используется такое определение знаний. Знания - это хорошо структурированные данные, или данные о данных, или метаданные.

    Свойства знаний: внутренняя интерпретируемость, структурированность, связанность, активность. Все эти свойства знаний в конечном итоге должны обеспечить возможность СИИ моделировать рассуждения человека при решении прикладных задач. Со знаниями тесно связано понятие процедуры получения решений задач (стратегии обработки знаний). В системах обработки знаний такую процедуру называют механизмом вывода, логическим выводом или машиной вывода. Принципы построения механизма вывода в СИИ определяются способом представления знаний и видом моделируемых рассуждений. Части систем, основанных на знаниях: база знаний, механизм вывода, интерфейс с пользователем. Каждая из этих частей может быть устроена по-разному в различных системах, отличия эти могут быть в деталях и в принципах. Однако для всех СИИ характерно моделирование человеческих рассуждений. СИИ создаются для того, чтобы овеществлять в рамках программно-технической системы знания и умения, которыми обладают люди, чтобы решать задачи, относящиеся к области творческой деятельности человека. Знания, на которые опирается человек, решая ту или иную задачу, существенно разнородны. Это, прежде всего:

    • понятийные знания (набор понятий и их взаимосвязи);

    • конструктивные знания (знания о структуре и взаимодействии частей различных объектов);

    • процедурные знания (методы, алгоритмы и программы решения различных задач);

    • фактографические знания (количественные и качественные характеристики объектов, явлений и их элементов).

    При решении задачи в конкретной области знания можно разделить на следующие категории: достоверные или объективные знания; эвристические знания.

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

    Знания также можно разделить на декларативные (факты) и процедурные знания (знания для принятия решений). Декларативные знания - это факты. Например, Иванов - студент; земля - круглая.

    Декларативные знания отвечают на вопрос «знать что?». Процедурные знания - это знания, которые формируются путем логических рассуждений и по интуиции.

    Процедурные знания отвечают на вопрос «знать как?».

    Метазнания - знания о знаниях. Понятие «метазнания» указывает на знания, касающиеся способов использования знаний и знания, касающиеся свойств знаний. Это понятие необходимо для управления базой знаний и логическим выводом; для обучения и т. п.

    Особенность систем представления знаний заключается в том, что они моделируют деятельность человека, осуществляемую часто в неформальном виде. Модели представления знаний имеют дело с информацией, получаемой от экспертов, которая часто носит качественный и противоречивый характер. Для обработки с помощью ЭВМ такая информация должна быть приведена к однозначному формализованному виду В системах, основанных на концепциях искусственного интеллекта и инженерии знаний, такая проблема отсутствует. Знания в них представлены в конкретной форме, а имеющаяся база знаний позволяет их легко определять, модифицировать, пополнять.
    1   2   3   4   5   6   7   8   9   ...   14


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