Information
- Rating
- Does not participate
- Date of birth
- Registered
- Activity
Specialization
Chief Technology Officer (CTO)
Lead
People management
Designing application architecture
Linux
OOP
C++
Delphi
Database design
Multiple thread
English
High availability
По существу хочется дать небольшой совет: попробуйте в качестве функции активации использовать не сигмоидную функцию, а функцию, называемую rectified linear activation, имеющую очень простой вид: rect(x) = max(0, x), поэтому очень дешевую с точки зрения вычислительных ресурсов, что немаловажно для JS.
Про миллион агентов — вы сами того не ведая примерно описали генетические методы обучения. Что касается морали ботов — если вы ее не заложите, то ее и не будет, т.е. если бот посчитает, что ему выгоднее заниматься тимкиллом и это разрешено правилами, то он будет заниматься тимкиллом. Если я правильно понял ваш вопрос.
Вознаграждение — это не какая-то абстракция, а конкретная скалярная величина. Т.е. у кого больше это число, тот и получил большее суммарное вознаграждение, выраженное данным числом.
За что вознаграждают — зависит от использованного алгоритма. В некоторых играх, чаще всего аркадных, это число набранных очков в каждый определенный момент времени. Соответственно, мы можем посчитать разность очков в разные моменты времени. В других играх используются функции-оценщики, оценивающие текущий расклад в некоторых попугаях. Например, если взять шахматы, в каждый момент игры вы как игрок находитесь в определенном состоянии, которое можно оценить по куче разных критериев: есть ли у вас ферзь, скольким фигурам вы угрожаете, объявили ли вы шах и т.д. (у хороших функций оценки это сотни параметров), вы делаете ход и ваше состояние меняется — вознаграждением за ход будет разность между оценками состояний до хода и после. Есть алгоритмы, которые не пользуются такими функциями вообще. Если для оценки хода вы пользуетесь какой-то вариацией алгоритма minimax, то обязательно будут состояния, в которые вы никогда не будете попадать, особенно если вы не можете просчитать все возможные варианты развития событий, т.к. это слишком дорого по времени, и ограничиваете minimax по глубине или каким-то другим способом, но в них попадать все же желательно, т.к. это может дать вам преимущество в будущем, которое вы не просчитали. Т.е. существует проблема баланса между исследованием и использованием того, в чем вы уверены точно: синица в руках или журавль в небе. Т.е. может быть когда-нибудь бот узнает о том, что открывать все локации и проходить все добавочные задания в итоге выгоднее. Но для этого он должен делать исследовательские ходы, которые имеют более низкую предсказанную оценку, нежели уже какие-то известные.
В общем, это обширная тема. И если она вас интересует, я рекомендую для начала почитать книгу «Reinforcement Learning: An Introduction», Richard S. Sutton and Andrew G. Barto — она есть в свободном доступе.
Если вкратце, то существуют 3 парадигмы в машинном обучении: обучение с учителем (supervised learning), обучение без учителя (unsupervised learning) и обучение с подкреплением (reinforcement learning). Последнее используется в случаях, когда обучение ИИ по тем или иным причинам должно идти методом, во многом подобным методу проб и ошибок, когда за каждое выполненное действие агент (тот, кто выполняет действия и обучается) получает определенное вознаграждение. Например, у людей на разных полюсах шкалы вознаграждений находятся боль (низкий уровень вознаграждения) и наслаждение (высокий уровень). Конечная цель агента — максимизация суммарно полученного вознаграждения. В данной статье речь идет как раз о таком методе. Он же используется в Alpha GO, Giraffe и многих других приложениях, где агент познает «мир вокруг себя» самостоятельно и так же самостоятельно учится взаимодействовать с ним с максимальной выгодой для себя.
Вот ваша программа анализирует взаимосвязи между некими фактами и наверняка имеет состояния: «да» — факты взаимосвязаны, «нет» — факты не взаимосвязаны, «не знаю» — недостаточно данных (факт, присутствующий в вопросе, отсутствует в базе знаний). А может ли ваша программа ответить: «вероятно» или «я уверена на 60%, что это так»? Скорее всего нет, так ведь? В общем, достаточно давно поняли, что вот такие базы знаний — тупиковый путь в ИИ. Нужен какой-то 5й элемент, чтобы все завертелось. Может какая-то комбинация из нейронных сетей и базы знаний плюс нечеткая логика, я не знаю. Но то, что делаете вы — интересно, но немного не про интеллект, пусть и искусственный.
По первому вопросу — я не утверждал, что вы приписываете себе авторство чат-ботов. В своей статье вы преподносите ваше видение построения систем ИИ, вашу идею как некий прорыв, новое слово в области ИИ. Напрямую вы это, конечно, не пишете, но это легко читается между строк (кстати, ваша программа не поняла бы этого). Алан Тьюринг сформулировал свой знаменитый эмпирический тест 66 лет назад — 2/3 века уже прошло с тех пор. А логическое программирование — фактически то же самое, чем занимаетесь вы при разработке своей системы — начало развиваться в конце 60-х годов прошлого века. Но идеи умных машин витали в умах и до появления компьютеров — механические экспертные системы существовали еще в 19 веке.
У меня сложилось впечатление, что Вы искренне считаете, что изобрели что-то новое. Жаль Вас огорчать, но нет, этой идее уже 100 лет в обед, причем практически в буквальном смысле. С точки зрения технологий возможно вы (команда) придумали что-то новое, но концептуально — нет. И об этом вам дают понять тут сразу несколько человек. Вам писали про чат-ботов и привели пример наиболее успешного на сегодняшний день — Женя Густман, прошедшего тест Тьюринга. В первом предложении моего сообщения выше содержится набор ключевых слов, которые Вы также можете погуглить. И кстати: «Оk Google...», — тоже вполне рабочий пример.
То, что Вы психолог — как раз и объясняет, почему Вы не в курсе того, что было проделано сильно задолго до вас программистами. Но изобретать в очередной раз колесо не очень разумно. И мы вам подсказываем, что на этом пути уже набито достаточно шишек, и указываем, где их искать.
В целом же, я желаю успехов вашему проекту. Может быть на новых технологических рельсах и получится то, что не получалось до сих пор уже в течение почти полувека.
На современном Mac в современной MacOS все точно так же, только разве что встроенных CD/DVD давно нет, поэтому с лотком может быть по-разному.
Плохо, когда психологи начинают разрабатывать компьютерную систему великой сложности самостоятельно, без помощи настоящего эксперта в области ИТ, который бы подсказал, что все это уже было и, собственно, никуда не делось. Наверное настолько же плохо, как если бы программисты взялись разрабатывать всеобъемлющую теорию в психологии.
Некое подобие интеллектуального поведения демонстрирует и персептрон, теоретические основы которого были разработаны уже более 50 лет назад. Поэтому руки чешутся посоветовать изучить классическую теорию нейронных сетей, но тогда Вы наверное перестанете заниматься тем, над чем Вы работаете сейчас. Поэтому не посоветую. Мне уже тоже любопытно, что у Вас получится из всего этого. А вдруг выстрелит? Да и вообще этот Ваш творческий процесс не только увлекателен, но и полезен как источник удовольствия и новых знаний. Так что я искренне желаю Вам удачи!
Немного погуглил и вот что нашел: «Для оценки расстояния до поверхности Марса «Скиапарелли» будет использовать альтиметр с доплеровским радаром.»