Russian AI Cup

Расширенный поиск  
Страницы: [1]

Автор Тема: AI инфраструктура  (Прочитано 517 раз)

T-900

  • Jr. Member
  • **
  • Сообщений: 11
AI инфраструктура
« : Декабря 29, 2017, 04:37:56 pm »

Предлагаю разработать AI фреймворк, который может ипользоваться в разных сферах IT-индустрии.
Навскидку, неполный список сфер использования фреймворка:
- Обучение
- Исследования
- Конкурсы
- Разработка игр
- Автопилот
- ERP-системы
и т.д.

Список требований к фреймворку:
 - кроссплатформенный
 - открытый исходный код, MIT лицензия
 - язык разработки ядра фреймворка - С++ (LLVM)
 - какие-то компоненты могут быть разрабатываться на разных языках
 
Список компонентов/модулей - прямо по содержанию книги N&R (неполный):
- поиск
- логический вывод
- CSP
- планирование
- принятие решений
- машинное обучение
- симуляторы
  - графическая система (кроссплатформенная). Что лучше всего подходит? OpenGL, Vulkan, SDL, CryEngine и т.д.
- поддержка робототехники: драйверы, эмуляторы устройств и т.д., т.е. все, что есть в ROS.

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

Подходит ли ROS? ROS доступен только под Linux, обычно используется для обучения и исследований в сфере робототехники.

Пример использования фреймворка для автопилота.

Разные компании (производители автомобилей, таксисты и т.д.) разрабатывают свои собственные системы автопилота, разрабатывают собственную AI-инфраструктуру, эмуляторы и т.д.

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

T-900

  • Jr. Member
  • **
  • Сообщений: 11
Re: AI инфраструктура
« Ответ #1 : Декабря 30, 2017, 05:03:11 pm »

Некоторые начинающие конкурсанты здесь на форумах иногда задают вопросы - с чего же начать?
Начинать нужно с изучения соответствующих курсов по искусственному интеллекту.
Например, макро-курс университета Columbia:
https://www.edx.org/micromasters/columbiax-artificial-intelligence
Курс машинного обучения от Andrew Ng:
https://www.coursera.org/learn/machine-learning
Курсы рассчитаны на студентов 1 курса.
Школьникам придется пройти самостоятельно весь курс школьной математики, алгебры и геометрии. Понадобится знание линейной алгребы, дифференциального исчисления, комбинаторики, теории вероятности.
Комбинаторика для начинающих:
https://www.coursera.org/learn/kombinatorika-dlya-nachinayushchikh/home/welcome
Теория вероятностей для начинающих:
https://www.coursera.org/learn/probability-theory-basics/home/welcome

Желающие присоединиться к разработке AI-фреймворка должны знать весь вышеупомянутый материал.
Записан

T-900

  • Jr. Member
  • **
  • Сообщений: 11
Re: AI инфраструктура
« Ответ #2 : Декабря 31, 2017, 01:26:45 pm »

Положил исходники поиска на Python, в папку /Search/Python:
https://nomhoi@bitbucket.org/nomhoi/ai.git
Это решение задачи 2 недели по курсу Artifical Intelligence коллумбийского университета.
Если есть желание пройти этот курс, то лучше не подглядывать и решить задачу самостоятельно. Просто скопировать и сдать не получится, там есть проверка на плагиат.
Сейчас начну переписывать на C++. Для начала поиск в ширину.
Записан

T-900

  • Jr. Member
  • **
  • Сообщений: 11
Re: AI инфраструктура
« Ответ #3 : Января 05, 2018, 03:36:10 pm »

Реализован поиск в ширину - класс BreadthFirstSearch в /Search/Search.h.
Пример использования в папке /Examples/search.

Критические замечания и предложения приветствуются.
Записан

GreenTea

  • Full Member
  • ***
  • Сообщений: 58
Re: AI инфраструктура
« Ответ #4 : Января 05, 2018, 06:28:04 pm »

Инициатива похвальная, хотя думаю, что таких фреймворков (или библиотек) уже есть много. Но тут мне кажется сложно будет прийти к общему знаменателю по поводу выработки единого подхода / инфраструктуры. А если отдельные части будут плохо друг к другу подогнаны, то будет тяжело пользоваться. Поэтому оптимально вам сейчас начать самому разработку руководствуясь своим видением, чтобы никто не мешал. И приглашать присоединиться к вам когда уже будет некое ядро. В худшем случае, даже если никто не заинтересуется - расширите и угубите свое понимание - а это уже неплохо :)
Я тоже для себя пишу библиотечку на kotlin для работы с данными, в перспективе там будут нейронные сети. Но это пока только "поиграться" с алгоритмами, хотя и стараюсь писать с прицелом на универсальность и расширяемость.
Записан

T-900

  • Jr. Member
  • **
  • Сообщений: 11
Re: AI инфраструктура
« Ответ #5 : Января 05, 2018, 06:37:23 pm »

Прочитал эту статью на тему автопилота:
Алгоритмы построения пути для беспилотного автомобиля. Лекция Яндекса
https://habrahabr.ru/company/yandex/blog/340674/

Задача разбивается на две части:
1. Построение маршрута.
2. Движение от перекрестка к перекрестку.

1. Построение маршрута.

Строим граф. Вершинами графа являются перекрестки, стартовая точка и конечная точка.
Т.е. маршрут строится также, как и в 2Гис. Стартовую точку мы знаем, указываем конечную и получаем маршрут по вершинам графа.

2. Движение от перекрестка к перекрестку, т.е. от вершины к вершине графа.

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

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

T-900

  • Jr. Member
  • **
  • Сообщений: 11
Re: AI инфраструктура
« Ответ #6 : Января 05, 2018, 06:46:42 pm »

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

GreenTea

  • Full Member
  • ***
  • Сообщений: 58
Re: AI инфраструктура
« Ответ #7 : Января 05, 2018, 07:01:17 pm »

Цитировать
Общее видение инфраструктуры дано в первом посте. :)
Оно слишком общее  :D Если вы хотите сделать набор модулей, то надо продумать как они будут между собой стыковаться. Например в каком формате будут передаваться данные. Допустим передать данные из модуля "восприятия" в модуль "машинного обучения". Это ж надо написать некий инфрасткруктурый код. А вы сразу кинулись писать алгоритм поиска в ширину. Конечно можно написать 1000 алгоритмов, но без некой единой концепии это будет 1000 разрозненных алгоритмов, а не фреймворк.
Записан

GreenTea

  • Full Member
  • ***
  • Сообщений: 58
Re: AI инфраструктура
« Ответ #8 : Января 05, 2018, 07:06:21 pm »

Как пример, посмотрите на Wolfram Mathematica и Matlab. Это среды в которых все заточено правда не на ИИ, а на математику. Но тут важно увидеть как среда и язык выступают неким связующим клеем - и в целом очень удобно пользоваться. Например в Wolfram Mathematica можно и формулы писать в математическиой нотации, и графики строить тут же для чего угодно. и играться с параметрами графиков.
Записан

latikov

  • Newbie
  • *
  • Сообщений: 8
Re: AI инфраструктура
« Ответ #9 : Января 05, 2018, 07:33:43 pm »

Цитировать
Ну, если много, то дайте, пожалуйста, ссылки на них.
Что касается машинного обучения, то вот тут, как мне кажется, неплохой обзор либ: http://blog.liveedu.tv/python-data-science/
Записан

T-900

  • Jr. Member
  • **
  • Сообщений: 11
Re: AI инфраструктура
« Ответ #10 : Января 05, 2018, 07:34:51 pm »

Цитировать
Общее видение инфраструктуры дано в первом посте. :)
Оно слишком общее  :D Если вы хотите сделать набор модулей, то надо продумать как они будут между собой стыковаться. Например в каком формате будут передаваться данные. Допустим передать данные из модуля "восприятия" в модуль "машинного обучения". Это ж надо написать некий инфрасткруктурый код. А вы сразу кинулись писать алгоритм поиска в ширину. Конечно можно написать 1000 алгоритмов, но без некой единой концепии это будет 1000 разрозненных алгоритмов, а не фреймворк.

Есть подходы сверху-вниз и снизу-вверх. Демонстрирую сразу два. :)
Записан

T-900

  • Jr. Member
  • **
  • Сообщений: 11
Re: AI инфраструктура
« Ответ #11 : Января 05, 2018, 07:41:22 pm »

Цитировать
Ну, если много, то дайте, пожалуйста, ссылки на них.
Что касается машинного обучения, то вот тут, как мне кажется, неплохой обзор либ: http://blog.liveedu.tv/python-data-science/
По машинному обучению есть много библиотек и инструментов. Машинное обучение - это только часть AI.
Записан

T-900

  • Jr. Member
  • **
  • Сообщений: 11
Re: AI инфраструктура
« Ответ #12 : Января 06, 2018, 12:24:47 pm »

Оно слишком общее  :D Если вы хотите сделать набор модулей, то надо продумать как они будут между собой стыковаться. Например в каком формате будут передаваться данные. Допустим передать данные из модуля "восприятия" в модуль "машинного обучения". Это ж надо написать некий инфрасткруктурый код. А вы сразу кинулись писать алгоритм поиска в ширину. Конечно можно написать 1000 алгоритмов, но без некой единой концепии это будет 1000 разрозненных алгоритмов, а не фреймворк.

Над этим пока думаю. Например, можно посмотреть как устроено взаимодействие между модулями в ROS, можно смотреть как это реализовано в таких фреймворках как Qt, MFC, WTL и т.д. Нужно учитывать взаимодействие между модулями не только в рамках одного процесса или нескольких процессов, но и в распределенной среде.
Записан

T-900

  • Jr. Member
  • **
  • Сообщений: 11
Re: AI инфраструктура
« Ответ #13 : Января 06, 2018, 12:30:01 pm »

Как пример, посмотрите на Wolfram Mathematica и Matlab. Это среды в которых все заточено правда не на ИИ, а на математику. Но тут важно увидеть как среда и язык выступают неким связующим клеем - и в целом очень удобно пользоваться. Например в Wolfram Mathematica можно и формулы писать в математическиой нотации, и графики строить тут же для чего угодно. и играться с параметрами графиков.

Эти и другие фреймворки основываются в основном на таких библиотеках как BLAS и LAPACK. Если писать модуль "машинного обучения", то лучше сразу их и использовать, раз уж мы пишем на C++.

Машинное обучение условно можно разбить на 2 этапа: обучение модели и ее применение. Обучение модели можно пока выполнять в уже готовых системах. В AI-фреймворке - использование готовой модели.

Что мне самому интересно на данный момент из машинного обучения - обучение с подкреплением.
« Последнее редактирование: Января 06, 2018, 12:35:20 pm от T-900 »
Записан

T-900

  • Jr. Member
  • **
  • Сообщений: 11
Re: AI инфраструктура
« Ответ #14 : Января 06, 2018, 02:36:00 pm »

Вот еще курс по AI:
https://courses.edx.org/courses/BerkeleyX/CS188x_1/1T2013/course/
Начал его изучать, но подошел курс от колумбийского университета и переключился на него.
Записан
Страницы: [1]