Фон Я, простой смертный, даже не думал об ИИ как об универсальном помощнике, спокойно программировал для автоматизированных рабочих мест (С/С++), и всё было бы хорошо, если бы не одно НО.
Однажды я встретил человека на форуме, посвящённом теме кодирования для AWS, он довольно долго мне многое объяснял, помогал, + сам делал много интересного.
Но однажды мы заговорили об ИИ, и именно тогда меня заинтересовал его ответ в стиле «у меня на компьютере есть что-то, что вас интересует, хороший отладчик, диспетчер задач + бот для аськи, который уже прошел».
тест Тьюринга более одного раза».
.
Я, конечно, как вполне адекватный человек не поверил, потому что.
Исходники он давать отказался, обещал дать готовую программу только в том случае, если я взломаю его компьютер и получу доступ к ФС.
С тех пор прошло несколько лет, и тема его ИИ поднималась не раз.
Хотя мне так и не удалось получить прототип, и я не уверен на 100%, что он у него вообще есть, но это и не важно, т.к.
Каждый наш разговор давал мне идею персонализировать мой ИИ.
Начинать
Для начала, естественно, нужно было составить список всего необходимого для разработки.Когда я выбрал за основу свой любимый C/C++, друг сказал мне, что «Ваш интеллект обычно не пишется локально, и для этого нужно выбрать заявленный язык».
Эта идея мне не сразу понравилась, потому что мне придется заново учить новый, совершенно другой в принципе язык, и я все же решил рискнуть.
Так был выбран язык C/C++.
Дальше дело было за небольшим (как я тогда думал) выбором библиотеки, на которой начнется разработка, и тут столкнулся второй подводный камень.
Я пересмотрел множество статей по ИНС, перерыл множество библиотек, но так и не нашел нужную мне, потому что либо библиотека была недостаточно гибкой, либо в ней было сложно разобраться, либо она не удовлетворяла скоростью работы.
Было, конечно, еще одно НО, об этом позже.
Итак была поставлена задача написать свою собственную библиотеку.
Идти
Я выбрал среду Рад Студия , испытывая тонны ненависти, попробую объяснить: Мне нужен быстрый форм-шлеп для проверки, чтобы не тратить много времени на интерфейс Нам нужна была простота перехода на Delphi, потому что.многие знакомые выбрали его основным языком, и Рад Студия это для него основная среда Я не собирался сильно прибивать код к VCL для более простого переноса на gcc, MS VS. Я постараюсь использовать минимальный набор инструментов для облегчения кроссплатформенного портирования.
Итак, базовая структура каждой сети такова:
- Соединения
- Нейроны
- Слои
В голову сразу пришла идея - Занятия, но немного подумав, взвесив все за и против, пришлось от них отказаться.
Сеть должна быть рассчитана на количество нейронов/слоев/соединений, ограниченное только памятью, + скорость работы должна быть достаточно высокой, чтобы эта сеть не стала тормозом, + гибкость сети должна позволять простую работу в режиме OnLine с как слоями, так и с каждым нейроном в этом слое, и со связями каждого нейрона в отдельности (Это именно то, чего не хватало ни в одной бесплатной библиотеке, которую я нашел).
Для этого были выбраны связанные списки и решено использовать указатели.
Давайте посмотрим на каркас конструкции, заполнять его пока не будем.
Теперь идея в том, как связать все это вместе? Немного подумав, я решил сделать так: 1 блок связи соединяет 2 нейрона -> каждый экземпляр соединения должен быть легко доступен и относиться только к 2-м конкретным нейронам, но у нейрона может быть неограниченное количество связей (я пробовал сделать библиотека без программных ограничений).typedef struct _link{ }LINK; typedef struct _neuron{ struct _neuron *prev,*next; }NEURON; typedef struct _n_layer{ struct _n_layer *prev,*next; }NLAYER;
Нейроны, в свою очередь, для более простой работы должны располагаться слоем; можно было и не использовать слои, но работать с такими кластерами нейронов было бы крайне сложно.
Но не только слой должен иметь указатель на принадлежащие ему нейроны, но и каждый нейрон должен иметь указатель на слой, в котором он находится, а это уже нужно для более простой и быстрой технической работы с сетью.
Вот и конструкция перекочевала в другое состояние, более продуманное, как мне кажется.
typedef struct _link{
void *from,*to;
Теги: #искусственный интеллект #искусственные нейронные сети #программирование на C++ #программирование #C++
-
Разница Между Thinkpad T410 И Thinkpad T400
19 Oct, 24 -
Приглашаем Вас На Вебинары Hpe
19 Oct, 24 -
Японские И Калифорнийские Модели Кано
19 Oct, 24 -
Настройка Mysql — Thread_Cache_Size
19 Oct, 24 -
Разбор Простой Капчи (C#)
19 Oct, 24 -
Данные О Транзакциях Приват24 Утекли В Сеть
19 Oct, 24 -
Список Цветовых Классов Material Design Lite
19 Oct, 24 -
Декодируемый Gsm С Rtl-Sdr За 30 Долларов.
19 Oct, 24