Search
Write a publication
Pull to refresh
0
Николай @nickus2010read⁠-⁠only

Пользователь

Send message

Разработка нечеткой нейронной сети NEFClass M

Reading time4 min
Views14K
Анализ недостатков системы NEFClass показывает, что их причиной является несовершенство алгоритма обучения нечетких множеств NEFClass. Для того что бы исправить это, необходимо заменить эмпирический алгоритм обучения на строгий алгоритм численной оптимизации. Как и оригинальная, так и модифицированная модель NEFClass основывается на архитектуре нечеткого персептрона. Архитектурные различия оригинальной и модифицированной моделей состоит в виде функций принадлежности нечетких множеств, функции t-нормы для вычисления активаций нейронов правил, а также в виде агрегирующей функции (t-конормы), определяющей активации выходных нейронов. Применение численных методов оптимизации требует дифференцируемости функций принадлежности нечетких множеств – условие, которому треугольные функции принадлежности не удовлетворяют. Поэтому в модифицированной модели нечеткие множества имеют гауссовскую функцию принадлежности.

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

Основное изменение, касается алгоритма обучения нечетких множеств. Целевой функцией в модифицированной системе NEFClass выступает минимизация среднеквадратичной ошибки на обучающей выборке по аналогии с классическими нейросетями
Читать дальше →

Игра в стартап на семинарах по Java

Reading time6 min
Views14K

Иллюстрация HttpSession в момент работы с куками
Эта статья обязана своим появлением новому требованию к курсу «Углублённое программирование на Java», который я веду в Технопарке Mail.Ru в МГТУ им. Баумана. Это требование было сформулировано в начале лета и звучало примерно так: «Ещё больше практики!».
Читать дальше →

Erlang для самых маленьких. Глава 2: Модули и функции

Reading time6 min
Views31K
imageДоброго вечера, дорогие Хабровчане. Мы продолжаем изучение Erlang для самых маленьких.

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

В этой главе мы поднимемся на следующую ступень и рассмотрим модули и функции.


Хочу узнать больше

Алгоритмы в биоинформатике, онлайн-курс

Reading time2 min
Views31K
Секвенирование генома человека десять лет назад явилось причиной вычислительной революции в биологии. Оно стало стимулом для создания бо́льшего числа новых алгоритмов, чем в любой другой фундаментальной области науки.

21 октября мы с Филлипом Компо и Павлом Певзнером из Университета Калифорнии запускаем онлайн-курс по алгоритмам в биоинформатике на Coursera. Уже до 21 октября можно посмотреть содержание первой главы курса и порешать задачи на нашем новом образовательном проекте Stepic, над которым работает команда широко известного в узких (биоинформатических) кругах проекта Розалинд.
Читать дальше →

Сбор показаний датчиков и их отображение

Reading time7 min
Views85K


Людям нравятся красивые презентации. Красивые картинки, немного текста, меняющиеся слайды. Красивая картинка позволяет быстро передать информацию человеку, сообщить самое важное. Мы все это знаем. Я вот думаю, как «скрестить ежа и ужа»?

Как наглядно на мониторе компьютера представить процессы, происходящие внутри микроконтроллера или ПЛИС? Или как показать, что происходит внутри всей системы автоматики, реализованной на микроконтроллере или ПЛИС?

Вообще-то правильный ответ я знаю – нужно использовать SCADA системы.
SCADA – это supervisory control and data acquisition, диспетчерское управление и сбор данных. Но мы не ищем легких путей, мы хотим немножко изобрести своего велосипеда.

Хочу поделиться своим простым методом отображения данных, получаемых от датчиков и сенсоров из платы управления.
Читать дальше →

Сопрограммы в Python

Reading time3 min
Views79K
Предлагаю обсудить такую интересную, но мало используемую возможность python, как сопрограммы (coroutines).
Сопрограммы в питоне основаны на генераторах (ими, они, собственно и являются).
Поэтому, предлагаю начать именно с генераторов, в общем понимании. А потом разберём как написать свою сопрограмму.
Читать дальше →

С камерой в облака. Часть 1

Reading time6 min
Views242K


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

Пост состоит из 2 частей. В первой — ответы на основные вопросы. Их легко найти в интернете по-отдельности, но сложно вместе: дальность полета (чем ограничивается и какая максимальная), качество картинки, грузоподъемность, стоимость и сроки (от выделения бюджета до первого полета).

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

Ну что же, перейдем сразу к делу.
Читать дальше →

Первые шаги в Robocode

Reading time10 min
Views38K
Я пишу эту статью по просьбам в комментариях к статье “Как я стал чемпионом Robocode” и продолжая начатое в ней дело по привлечению внимания к Robocode русскоговорящих разработчиков. Robocode — это игра для программистов, в которой задача заключается в разработке системы управления танком. Для затравки приведу несколько роликов, чтобы показать о чём вообще пойдёт разговор:


Читать дальше →

Физика Robocode

Reading time5 min
Views14K
Данный материал изначально был подготовлен в качестве раздела статьи “Первые шаги в Robocode”, но я решил вынести его, т.к. он значительно увеличивал размер и без того большой первоначальной статьи и не является базовым и необходимым для осуществления первого шага. Если вы сразу заинтересовались вторым шагом или постепенно доросли до него, то прошу под кат.
Читать дальше →

Введение в анализ сложности алгоритмов (часть 3)

Reading time6 min
Views128K
От переводчика: данный текст даётся с незначительными сокращениями по причине местами излишней «разжёванности» материала. Автор абсолютно справедливо предупреждает, что отдельные темы могут показаться читателю чересчур простыми или общеизвестными. Тем не менее, лично мне этот текст помог упорядочить имеющиеся знания по анализу сложности алгоритмов. Надеюсь, что он окажется полезен и кому-то ещё.
Из-за большого объёма оригинальной статьи я разбила её на части, которых в общей сложности будет четыре.
Я (как всегда) буду крайне признательна за любые замечания в личку по улучшению качества перевода.


Опубликовано ранее:
Часть 1
Часть 2

Логарифмы


image
Если вы знаете, что такое логарифмы, то можете спокойно пропустить этот раздел. Глава предназначается тем, кто незнаком с данным понятием или пользуется им настолько редко, что уже забыл что там к чему. Логарифмы важны, поскольку они очень часто встречаются при анализе сложности. Логарифм — это операция, которая при применении её к числу делает его гораздо меньше (подобно взятию квадратного корня). Итак, первая вещь, которую вы должны запомнить: логарифм возвращает число, меньшее, чем оригинал. На рисунке справа зелёный график — линейная функция f(n) = n, красный — f(n) = sqrt(n), а наименее быстро возрастающий — f(n) = log(n). Далее: подобно тому, как взятие квадратного корня является операцией, обратной возведению в квадрат, логарифм — обратная операция возведению чего-либо в степень.
Читать дальше →

Lock-free структуры данных. Основы: Атомарность и атомарные примитивы

Reading time15 min
Views112K

Построение lock-free структур данных зиждется на двух китах – атомарных операциях и способах упорядочения доступа к памяти. В этой статье речь пойдет об атомарности и атомарных примитивах.

Анонс. Спасибо за теплый прием Начал! Вижу, что тема lock-free интересна хабрасообществу, это меня радует. Я планировал построить цикл по академическому принципу, плавно переходя от основ к алгоритмам, попутно иллюстрируя текст кодом из libcds. Но часть читателей требует зрелищ не мешкая показать, как пользоваться библиотекой, особо не рассусоливая. Я согласен, в этом есть свой резон. В конечном счете, и мне не так интересно, что там внутри boost, — опишите, как его применять! Поэтому свой эпический цикл я разделю на три части: Основы, Внутри и Извне. Каждая статья эпопеи будет относится к одной из частей. В Основах будет рассказываться о низкоуровневых вещах, вплоть до строения современных процессоров; это часть для почемучек вроде меня. Внутри будет освещать интересные алгоритмы и подходы в мире lock-free, — это скорее теория о том, как реализовать lock-free структуру данных, libcds будет неисчерпаемым источником C++ кода. В Извне будут статьи о практике применения libcds, — программные решения, советы и FAQ. Извне будет питаться вашими вопросами/замечаниями/предложениями, дорогие хабражители.

А пока я судорожно готовлю начало Извне, — первая часть Основ. Статья во многом не о C++ (хотя и о нем тоже) и даже не о lock-free (хотя без atomic lock-free алгоритмы неработоспособны), а о реализации атомарных примитивов в современных процессорах и о базовых проблемах, возникающих при использовании таких примитивов.
Атомарность — это первый круг ада низкий уровень из двух.
Читать дальше →

В поисках криптостойкого ГПСЧ

Reading time6 min
Views38K

Привет, %username%!

В сегодняшнем посте речь пойдет о криптостойкости генераторов псевдослучайных чисел (ГПСЧ).
Для начала определимся, что же такое криптостойкий ГПСЧ (КСГПСЧ).
КСГПСЧ должен удовлетворять «тесту на следующий бит». Смысл теста в следующем: не должно существовать полиномиального алгоритма, который, зная первые k битов случайной последовательности, сможет предсказать k+1 битов с вероятностью более 50 %.
Wikipedia

Возможно, кое-кто из читателей использовал такие ГПСЧ, как регистры сдвига с линейной обратной связью (РСЛОС) или любимый многими программистами Вихрь Мерсенна. Я постараюсь показать, что оба этих способа, несмотря на весьма хорошие статистические свойства и большие периоды, не соответствуют приведенному выше определению и их нельзя считать криптографически стойкими, а также предложу, в качестве альтернативы, два очень надежных ГПСЧ.
Читать дальше →

Хранимые функции на С в PostgreSQL

Reading time6 min
Views30K

Здравствуйте, хабрачеловеки! Многие из Вас сталкивались с вынесением бизнес-логики в СУБД в виде хранимых функций/процедур, облегчая клиент. В этом есть как и преимущества, так и недостатки. Сегодня я бы хотел рассказать Вам как создавать хранимые функции в PostgreSQL, написанные на языке C. В статье будут самые основы, которые необходимо знать для начала работы с ними.
Подробней

Numenta NuPIC: первые шаги

Reading time5 min
Views16K

Введение


Numenta NuPIC — открытая реализация алгоритмов, моделирующих процессы запоминания информации человеком, происходящие в неокортексе. Исходные коды NuPIC на github

В двух словах, назначение NuPIC можно описать как «фиговина, выявляющая, запоминающая и прогнозирующая пространственные и временные закономерности в данных». Именно этим большую часть времени занимается человеческий мозг — запоминает, обобщает и прогнозирует. Очень хорошее описание этих процессов можно найти в книге Джеффа Хокинса «On Intelligence» (есть русский перевод книги под названием «Об интеллекте»).

На сайте Numenta есть подробный документ, детально описывающий алгоритмы и принципы работы, а также несколько видео.

Читать дальше →

java-object-merger — больше чем просто маппер объектов

Reading time8 min
Views26K
Всем привет! Хотел бы представить вам новую библиотеку на java для маппинга/мержинга объектов, которую я “скромно” позиционирую как возможную альтернативу dozer-у. Если вы разрабатываете enterprise приложения на java, вам не безразлична эффективность вашей работы, и хочется писать меньше скучного кода, то приглашаю почитать дальше!

UPD. Выложено в центральный репозиторий мавена
<dependency>
        <groupId>net.sf.brunneng.jom</groupId>
        <artifactId>java-object-merger</artifactId>
        <version>0.8.5.1</version>
</dependency>


UPD2. Версия 0.8.4



Читать дальше →

Эпопея о WD My Book Live, или «девайс-конфетка» с «печеньками»

Reading time18 min
Views239K
image

Привет %username%! В начале этого года мне наконец-то исполнился четвертак. Поняв, что я стал взрослым ребёнком и нуждаюсь во взрослых игрушках, купил себе WD My Book Live на 3Tb ёмкости, который в нашем счастливом семействе убил сразу N зайцев. Счастью моему не было предела. Девайс подкупил своей ценой, железом и наличием полноценного Linux на борту. Однако, как оказалось позже, Linux Debian оказался не очень уж и полноценным, достаточно кастрированным и, судя по отзывам рядовых владельцев, любителем окирпичиться. Однако, благодаря инженерам из WD, девайс достаточно легко поднимается из состояния кирпича до состояния работоспособного устройства (пруф1 и пруф2). Но согласитесь, времена хард ресета с пассатижами из хозмага за углом давно миновали. Всё-таки эпоха нано-полимеров и инноваций. А значит и девайс хочется более не убиваемым.

Я никак не являюсь линуксоидом и для меня Linux, по своей сути, тёмный лес! Поэтому, для начала, долго изучая интернеты, я запилил себе только mc и transmission, чего для первого раза мне хватило за глаза. А ещё я был поражён, как мне – человеку, впервые запустившему SSH — легко это удалось! Прошло полгода, я почитал форумы, посвящённые девайсу. Настал день “Д” и я, засучив рукава, принялся делать из своего девайса “конфетку”. И не простую, а “конфетку” с “печеньками”
Подробнее под катом...

Инфраструктура и жизненный цикл разработки веб-проекта

Reading time11 min
Views58K
Когда проект маленький, особых проблем с ним не возникает. Список задач можно вести в текстовом файле (TODO), систему контроля версий, по большому счёту, можно и не использовать, для раскладки файлов на живой сервер их можно просто скопировать (cp/scp/rsync) в нужную директорию, а ошибки всегда можно посмотреть в лог-файле. Глупо было бы, например, для простенького сервиса с двумя скриптами и тремя посетителями в день поднимать полноценную систему управления конфигурациями серверов.

С ростом проекта требования растут. Становится неудобно держать в TODO-файле несколько десятков задач и багов: хочется приоритетов, комментариев, ссылок. Появляется необходимость в системе контроля версий, специальных скриптах/систем для раскладки кода на сервер, системе мониторинга. Ситуация усугубляется, когда над проектом работает несколько человек, а уж когда проект разрастается до нескольких серверов, появляется полноценная инфраструктура («комплекс взаимосвязанных обслуживающих структур или объектов, составляющих и/или обеспечивающих основу функционирования системы», Wikipedia).

На примере нашего сервиса "Календарь Mail.ru" я хочу рассказать о типичной инфраструктуре и жизненном цикле разработки среднего по размерам веб-проекта в крупной интернет-компании.

Срыв покровов

Как устроен VPN через SSTP

Reading time4 min
Views175K
Нашёл буквально несколько упоминаний о SSTP на Хабре, в связи с чем хочу рассказать про устройство этого протокола. Secure Socket Tunneling Protocol (SSTP) – протокол VPN от Microsoft, основанный на SSL и включённый в состав их ОС начиная с Windows 2008 и Windows Vista SP1. Соединение проходит с помощью HTTPS по 443 порту. Для шифрования используется SSL, для аутентификации — SSL и PPP. Подробнее про устройство — под катом.
Читать дальше →

Правильно программируем. Используем полиморфизм. Общая логика игровых персонажей

Reading time23 min
Views78K

Unity3D. ИСПОЛЬЗУЕМ ПРЕИМУЩЕСТВА ООП. ПОЛИМОРФИЗМ


ВНИМАНИЕ!
Сразу хочу предупредить, читайте комментарии к статье, там KumoKairo предложил более совершенный подход к решению поставленных в статье задач.


Доброго времени суток. В этом уроке мы рассмотрим несколько важных приемов программирования на движке Unity 3D. Думаю, статья поможет как начинающим, так и опытным игроделам.

Целью статьи ставлю осознание мощи и безграничной удобности использования всех прелестей ООП. В частности ПОЛИМОРФИЗМ. Кроме того затронем несколько других важных вопросов.

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

Думаю в будущем будет продолжение статьи. Там мы детально рассмотрим написание собственных Моторов, поговорим о векторах и о нужных нам операциях над ними, создадим полноценную модель инвентаря. Очень хорошего инвентаря, в который можно будет легко добавлять новые элементы без изменения старых.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity