Форум программистов, компьютерный форум, киберфорум
Наши страницы
Искусственный интеллект
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/41: Рейтинг темы: голосов - 41, средняя оценка - 4.83
Сергей Мишин
0 / 0 / 1
Регистрация: 19.07.2016
Сообщений: 118
Завершенные тесты: 1
1

Нейронные сети и языки программирования

21.12.2017, 15:21. Просмотров 7764. Ответов 7

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


1) Есть ли какие-нибудь критерии, предпочтения почему сети так популярны на C# Python, java, но не на C++. Может быть мне так кажется, незнаю.(В какой среде они часто используются)
2) Насколько практично использовать сторонние библиотеки и фреймворки(нашёл openNN)? Просто нормальная нейросеть занимает 100-200 кода, и это трудоёмкая задача(подстройка под себя) в отличие от написания какого-нибудь например синглтона на C#.
4) Кто-нибудь знает книгу, или статью(не хабра), исчерпывающий сайт(желательно на русском), который вы бы могли посоветовать как справочник. Где гибко выучить материал.
5) Везде вижу "fed my neural net some code"/"скормил своей нейросетке код", тоесть их относительно просто сделать и подстроить под свой код, люди делают массу экспериментов на питоне и остаются довольны?

Извиняюсь если есть мисконцепции, не особо разбираюсь с терминами, и может у меня вообще неправильно представление о них, хотелось бы узнать у вас. Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2017, 15:21
Ответы с готовыми решениями:

Нейронные сети
Занялся изучением нейросетей на питоне. Нашел пример, написал код под себя. Но почему-то даже для...

Нейронные сети
Добрый вечер, всем! Подскажите, пожалуйста, как решить поставленную задачу через нейронные сети....

Сверточные нейронные сети
Здравствуйте, Платформа Accord.NET реализует сверточные сети или нет? Есть ли у кого нибудь код...

Сверточные нейронные сети
Здравствуйте, есть вопросы знатокам нейронных сетей. Прочитал много статьей про нейронных сетей,...

Нейронные сети. Книга
Одни словом интересует следующая вещь - русскоязычная книга, по нейронным сетям, с примерами...

7
Mikhaylo
197 / 202 / 28
Регистрация: 20.09.2014
Сообщений: 1,454
21.12.2017, 16:07 2
Помимо двух очевидных функций NN_fit (обучение) и NN_predict (предсказание), нужно писать ещё сотню функций, чтобы вооружиться настоящим арсеналом работы с данными.

Некоторые считают, что написать код самому на С++ - это как секс с настоящей женщиной без презерватива, а использовать библиотеку на Питоне - это секс с резиновой бабой. На самом деле это полная фигня: определись, ты собрался работать с данными (=настоящий мачо искусственного интеллекта) или писать низкоуровневый код для других?
0
warhast
20 / 20 / 4
Регистрация: 02.02.2014
Сообщений: 78
21.12.2017, 18:40 3
1) Сети на питоне упоминаются чаще остальных из-за обилия разнообразных библиотек на эту тему для питона, при этом люди, пишущие для себя что-нибудь хитрое и просто на C++ и с CUDA никуда не делись. Но таки да, типовые задачи на питоне сделать проще.
2) 100-200 строк это простейшая полносвязная сетка, может быть с дубовой реализацией сверток и захардокженной структурой. Но чтобы эту структуру получить понадобится немало поэкспериментировать. И вот тут уже нужны библиотеки, на которые можно переложить строительство графов связей между слоями, заботу о передаче градиентов, памяти, производных для только что придуманных функций где-то в глубине графа, даже просто сохранение промежуточных состояний сети. Да и переложить на компьютер сам подгон архитектуры тоже рано или поздно захочется. И проще все это сделать, надергав готовых библиотек. Самому реализацию основных вариантов сеток надо написать раз-другой просто чтобы представлять что там внутри, но пользоваться все-таки лучше готовым.
3) исчерпывающих собраний всей полезной информации ни разу не попадалось, обязательно что-то да упустят или о целом разделе ограничатся парой слов.
4) да, базовые вещи делаются просто и часто их хватает
0
puchik
29 / 6 / 0
Регистрация: 14.12.2015
Сообщений: 45
03.01.2018, 15:51 4
Цитата Сообщение от Mikhaylo Посмотреть сообщение
написать код самому на С++ - это как секс с настоящей женщиной без презерватива, а использовать библиотеку на Питоне - это секс с резиновой бабой.
Не совсем верная аналогия, библиотека на питоне это вообще не секс, а мастурбация на японское анимэ или 3д порно, разумеется в случае когда ученик считает что это финальная стадия обучения, нужно адекватно понимать такие аналогии, есть просто разные уровни квалификации, нет ничего зазорного чтобы студенты ШАДа или школьники знакомились с машинным обучением играясь с библиотеками питона, это хорошо и правильно, но настоящие проекты очень далеки от подобной деятельности, как начпоп на дискавери от того чем занимаются ученые на БАК, это должно быть очевидно. Реальные "бойцы" ML могут CNN собрать с закрытыми глазами, как хороший солдат АК
0
03.01.2018, 15:51
vlasovsv26
4 / 4 / 2
Регистрация: 06.03.2017
Сообщений: 177
03.01.2018, 16:25 5
Цитата Сообщение от Сергей Мишин Посмотреть сообщение
2) Насколько практично использовать сторонние библиотеки и фреймворки
это более чем практично если вы реально работаете и вам надо что-то выпустить в продакшн в ограниченные сроки (собственные научно-исследовательские работы могут сильно затянуть работу)

Цитата Сообщение от Сергей Мишин Посмотреть сообщение
Кто-нибудь знает книгу, или статью(не хабра), исчерпывающий сайт(желательно на русском), который вы бы могли посоветовать как справочник. Где гибко выучить материал.
сразу по всему объему ML не встречал, имхо вряд ли есть
0
qweqewqwwww
4 / 4 / 0
Регистрация: 11.01.2018
Сообщений: 9
28.01.2018, 14:47 6
Может ситуация с книгами/статями изменилась?
Киньте хоть несколько взаимодополняющих или просто что-то минимально приемлемое
0
passant
79 / 76 / 11
Регистрация: 09.01.2018
Сообщений: 279
31.01.2018, 19:53 7
Интересную тему Вы затронули. Такую, на которую в двух словах и не ответишь. Но попробуем.

4. Начнем с конца.
В последнее время на русском книг по НС что-то не припомню. Классикой жанра считается книга
"Хайкин. Нейронные сети полный курс." - но вышла она давненько, поэтому новомодных подходов там нет, зато азы можно понять.
Еще -https://www.intuit.ru/studies/courses/607/463/info
На английском можно порекомендовать базовый курс http://www.deeplearningbook.org/
На русском - для совсем "нулевого" уровня:
-https://habrahabr.ru/post/312450/
-https://habrahabr.ru/post/340792/
-https://habrahabr.ru/company/oleg-bunin/blog/340184/
Есть на русском неплохой курс от Stepik - https://stepik.org/course/401/
есть https://www.asozykin.ru/courses/nnpython
есть и другие - найти не сложно.

1. Теперь про то, почему и на каких языках пишутся сети.
Аксиома #0 - написать сеть можно на любом языке. Для подтверждения - можна порыться в сети и накопать книг по машинному обучению и deep learning с реализациями на Java, C#, JavaScript (!!), Go, R, Erlang, Julia, Haskell и далее по списку.
Возьмем две крайности С++ и Python. (Остальные языки - где-то посредине между ними).
С++ обладает несомненным преимуществом в скорости выполнения (только Go еще хоть как-то приближается к этому уровню). Просто даже по тому, что это язык максимально приближенный к "железу", максимально использующий все особенности архитектуры процессора, памяти и т.д (Ближе и быстрее в выполнении - только Ассемблер). Одновременно, это язык, на котором сложнее всего и дольше всего собственно писать код. Иногда 5 строк на Python эквивалентны 20-40 строкам на С++. Получается все логично. Надо быстро (относительно) выполнить исследование, построить модель, протестировать ее - выбираем Python. Надо что-бы процесс принятия решения (расчеты) были максимально быстрыми - выбираем С++. Говорят так: "день программирования и десять секунд исполнения -> С++, 10 минут написания кода и 5 минут его выполнение -> Python". В некоторых областях - например - распознавании визуальных образов, отслеживание работоспособности оборудования, киберсекьюрити, распознавание голоса, даже в "быстрой" торговле на биржах - скорость критична. В других - той-же медицинской диагностике, маркетинге, экономическом анализе, распознавании текстов, сентиментном анализе, агротехнических применениях и пр. скорость значения не имеет.
Обратите внимание, что очень большое количество библиотек того-же Python'a, как и сам его интерпретатор (по-крайней мере, основная реализация - СPython) написаны на С++. Иначе выполнение кода занимало бы еще больше времени. Примерно так-же обстоят дела и с другими языками программирования.

2. Есть-ли смысл использовать сторонние библиотеки.
Это зависит от того, какую цель вы перед собой ставите. Стороння библиотека - это многократно и всесторонне проверенный набор программ, которые оптимизированы (!!), отлажены (!!!), задокументированы и использованы. В них реализовано примерно 99.9% того, что потребуется начинающему "строителю сетей". Считаете, что сможете какой-то из алгоритмов реализовать лучше - дерзайте. Только помните, что одно дело написать учебную программку для себя(типа вот такого - https://habrahabr.ru/post/271563/) , другое дело - отдать ее в продакшн. Где любой сбой, отказ или ошибка могут стоить пользователю больших денег.
Кстати, серьезные сети никто сам не реализовывает - берут тот-же TensorFlow, PyBrian и вперед.(еще одна книга - Bonnin R. Building Machine Learning Projects with TensorFlow).
Таким образом, на этапе обучения полезно именно самому писать коды (чем многие, кстати пренебрегают, и очень зря) , что-бы лучше понять, как алгоритмы работают, их ограничения, сильные и слабые стороны и т.д. А для реальной работы - пользоваться готовыми пакетами, не изобретая велосипед, экономя время на отладку и интеллектуальную часть процедуры анализа (а она всегда будет в реальном исследовании). А вот когда дозреете до того, что придумаете свой супералгоритм (ну или просто такой, который нужен для решения именно вашей задачи, которую до вас никто никогда не решал) или найдете способ улучшить существующий - вот тогда и будете писать все "с нуля".
3. Замечание про "нормальная сеть на 100-300 строчек кода". Сегодня стало модно говорить о нейронных сетях везде и повсюду, даже там, где они ни к чему. Конечно, гораздо пафоснее сказать "я занимаюсь глубинным обучением нейронных сетей", чем сказать "я строю линейную регрессионную модель". Модель на 100 строчек кода (на С++, Python, Java - не суть важно) это на самом деле действительно либо регрессионная, либо классификационная, либо кластеризационная, либо дискрименационная задача, которая вполне спокойно решается без всякого нагнетания тумана в виде "нейронных сетей". Если вдуматься и проанализировать, то все задачи машинного обучения - это в конечном итоге задачи оптимизации. А настоящие нейронные сети начинаются там, где применение аналитических или близких к ним методов оптимизации становятся столь сложными, что не поддаются решению и единственным методом поиском оптимума остается тот самый градиентный спуск. (Т.е. - типы задач все те же, меняется только инструмент). И вот там уже 100 строчками кода не отделаешься. И вообще-то говоря нейронные сети и глубокое обучение - это часть науки, которая называется Data Science. И свое "вхождение" в эту науку следует начинать не с задач "компьютерного зрения", "как выиграть на форексе/криптобирже" или "построения универсального игрока", а с освоения базовых, фундаментальных вещей - статистики и методов проверки гипотез, машинного обучения, языков программирования, методов алгоритмизации, визуализации, баз данных и т.д.

Добавлено через 4 часа 27 минут
Пока писал - вспомнил еще одну неплохую и свежую книгу по нейросетям (2017). И к тому же - на Python:
"Рашид, Тарик-Создаем нейронную сеть"
2
expgalaxy
0 / 0 / 0
Регистрация: 15.04.2018
Сообщений: 4
30.03.2019, 22:15 8
Я для своих целей сделал небольшую нейронку в экселе. На небольшом количестве примеров обучается хорошо, для большого количества примеров эксель не удобен, будет учиться долго(или вечно). https://yadi.sk/i/bGm4yf2WJSTQOQ
0
30.03.2019, 22:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2019, 22:15

Спектроскопия и нейронные сети
В спектрометр загружают исследуемый образец (на данный момент пищевая продукция). Он выдаёт спектр...

Нейронные сети: с чего начинать?
Я поставил перед собой цель(возможно довольно сложную) и у меня есть некоторые вопросы по этой...

Сверточные нейронные сети. Обучение
Добрый вечер. С прошлыми топиками на эту тематику я ознакомлен. Прочитав материалы по сверточным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru