• Что такое вероятность и как ее посчитать

      Пусть будет некий абстрактный эксперимент в процессе которого может происходить некое событие. Этот эксперимент провели пять раз, и в четырех из них происходило то самое событие. Какие выводы можно сделать из этих 4/5?



      Есть формула Бернулли, которая дает ответ, с какой вероятностью происходит 4 из 5 при известной исходной вероятности. Но она не дает ответ, какая была исходная вероятность, если событий получилось 4 из 5. Оставим пока в стороне формулу Бернулли.

      Сделаем маленькую простенькую программку, симулирующую процессы вероятностей для такого случая, и на основе результата вычислений построим график.
      Читать дальше →
    • Прогнозирование

      Я уже писал, зачем нужно такое прогнозирование — Создание искусственного интеллекта.
      Здесь же я буду описывать только алгоритм прогнозирования, без лишней лирики.

      Рассматривать буду прогнозирование последовательности байтов или же текста UTF-8. Прогнозирование последовательности дробных чисел — графиков — во многом подобно, только нужно значения сравнивать не на равенство, а на принадлежность окрестностям.

      Пусть будет поток байтов (или скажем текст UTF-8) — входящие прогнозируемые данные. Поступающие данные сохраняем во множество сохраненной истории. Каждое очередное поступающее значение учитываем в структуре для накопления статистики:
      struct Stat {
      	uint value; // прогнозируемое значение
      	uint count; // количество прошедших таких значений
      
      	// функция index используется шаблонным классом Index - ключ для rb-дерева
      	static uint index(const Stat& s) { return s.value; }
      
      	Ptrn* owner;
      
      	double probability() const { return (double)count/(double)owner->sum_count_of_stat; }
      };
      
      // шаблонный класс Index это rb-дерево,
      //  первый параметр шаблона — тип значения по которому происходит сортировка,
      //  второй, это класс сохраняемых значений в узлах. Этот класс должен содержать
      //  функцию index.
      
      struct Ptrn {
      	// узел, подсчитывающий, какое распределение вероятностей будет
      	// следовать за значением value
      	uint value;
      
      	Index<uint,Stat> index_of_stat; // распределение вероятностей
      	uint sum_count_of_stat;
      	
      	// путем добавления к текущему value еще влево
      	//   будут образовываться паттерны
      	Index<uint,Ptrn> index_of_prev;
      	static uint index(const Ptrn& s) { return s.value; }
      
      	Ptrn* owner; // owner->index_of_prev->find(value) == this,
      	                     // для root этот owner равен nullptr
      };
      
      Ptrn root;
      

      Читать дальше →
    • Создание искусственного интеллекта

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

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

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

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

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