Я вот заинтересовался сабжем и почему-то подумалось мне, что здесь могут быть специалисты или интересующиеся этим вопросом. Уточню, вопрос в этой ветке не про сами нейроны, а именно про математические алгоритмы из класса нейронных сетей. Простейшие, на уровне понимания. Я прочитал википедию, это мой уровень знаний по этому вопросу на данный момент. Еще уточнение: меня не интересуют красивые модные задачи типа обучения робота. Интересуют более простые но очень затратные по вычислениям задачи, которые можно формально свести к моделям нейронных сетей. Собственно, что меня интересует: в чем фишка этого метода на уровне алгоритмов? Позволяют ли они ускорить вычисления задач комбинаторного класса сложности, и если да, то за счет чего?
Скучали, между прочим!
Очень рады снова Вас видеть с нами.
Если можно, пару слов - чего видели, чего слышали и вообще чего нового.
А я поинтересуюсь у человека, который когда-то занимался нейронными сетями. Может что и присоветует.
Рад что форумы процветают. Мишамбара я смотрю уже до системной биологии добрался. Модная тематика, еще круче чем эпигенетика.
Я пытался избавиться от интернет-зависимости, но на мою беду в новом мобильнике оказался подключен UMTS
Мишамбара я смотрю уже до системной биологии добрался.
Вы давно не были на форуме, а знаете намного больше моего о содержании биологических веток. Надеюсь Мишамбара наведет порядок и в системной биологии, там его как раз не хватает
Я прямого отношения к нейросетям не имею, но по тому опыту, который имеется и исходя из опыта знакомых скажу, что практической пользы от них мало. Есть узкий класс задач типа распознавания образов, где от них есть некоторый толк, но это далеко не панацея. В кратце, это некий альтернативный способ компьютинга, который применяют, когда задачу трудно формализовать и описать строго математически. Чисто теоретически они могут позволить быстро решать задачи комбинаторной сложности, но на практике это не очень то осуществимо. Опять же область не моя, поэтому возможно я Вам сейчас наврал
Что касается нейронных сетей, то я тут, увы, также не специалист.
Имеет ли смысл непременно свести задачу к моделям нейронных сетей, для меня неясно
Может если вопрос будет более конкретный...
Мне кажется, что нейронные сети хороши в статистических условиях, когда нужно подобрать исходы, достаточно близкие к эталону, которому сеть уже обучена. Вряд ли могут быть полезными в нахождении точного решения
В общем, нейронными сетями такая петрушка.
Я сегодня скачал два лучших учебника по нейронным сетям, и просмотрел.
на первый свой вопрос я получил ответ - да, комбинаторные задачки к полиномиальным сводить может.
на второй вопрос по поводу того, за счет чего это достигается, ответа я пока и не понял.
и появился третий вопрос: как взаимосвязаны термины нейронные сети и динамическое программирование. Я подозреваю, что эти термины сильно перекрываются. Но точная взаимосвязь непонятна. какой из этих терминов более общий? В частности, я увидел описание класса алгоритмов под названием машина Больцмана, так вот, судя по описанию, это один-в-один класс алгоритмов который в динамическом программировании известен под названием скрытых Марковских цепей. Я может быть ошибаюсь, но так мне показалось.
Для чего это мне сейчас нужно все: не для того чтобы применить к конкретной задаче, а пока что для того чтобы разобраться в систематизации и не изобретать велосипед.
Мне кажется, что нейронные сети хороши в статистических условиях, когда нужно подобрать исходы, достаточно близкие к эталону, которому сеть уже обучена. Вряд ли могут быть полезными в нахождении точного решения
Вот тут у меня сомнения появились. Если класс больцмановских машин, который относится к нейронным сетям ничем по описанию не отличается от класса скрытых марковских цепей, которые относятся к динамическому программированию, то эти алгоритмя очень даже применимы к поиску точного решения (ибо марковские цепи применимы).
как взаимосвязаны термины нейронные сети и динамическое программирование.
Связаны не напрямую. Методы динамического программирования применимы для построения определенного класса нейросетей, но они применимы и для кучи других задач не связанных с сетями. Например знаменитый Smith-Waterman algorithm for sequence alignment or Viterbi for Hidden Markov models.
Связаны не напрямую. Методы динамического программирования применимы для построения определенного класса нейросетей, но они применимы и для кучи других задач не связанных с сетями. Например знаменитый Smith-Waterman algorithm for sequence alignment or Viterbi for Hidden Markov models.
В таком случае правильно ли будет сказать, что динамическое программирование включает в себя нейросети?
Доброе время суток ... если Вы хотите применить эти матприколы для решения задач связанных с ДНК (играя этим образом для расшифровки информации) то вполне пригодится и этот материал. Хотя там приведен пример для распознования рукописного текста, но общий смысл для решения остается прежним. Модель Рибосомы в действии. www.codeproject.com/KB/library/NeuralNetRecognition.aspx
ps
Очень жалко, что Вы не дали порезвится в Вашем яблочном подвале для доказательства ускоренного апоптоза, тогда не было бы требований Инквизитора и Инквизиции форума для независимых наблюдений.
Да при решение задачи по нейросетям надо быть осторожным, иначе может быть и так ..
Я не потерял рассудок! Я сохранил его! Где то там, на диске D:...
В таком случае правильно ли будет сказать, что динамическое программирование включает в себя нейросети?
Думаю, что нет. Динамическое программирование может быть применено для построения сетей, но есть и другие способы их построить, и наверное есть типы сетей, где оно вообще не подходит.
Думаю, что нет. Динамическое программирование может быть применено для построения сетей, но есть и другие способы их построить, и наверное есть типы сетей, где оно вообще не подходит.
Вот википедия дает нам такое определение динамического программирования:
dynamic programming is a method for solving complex problems by breaking them down into simpler steps. en.wikipedia.org/wiki/Dynamic_programming
Не согласны с таком определением? По этому определению нейронные сети являются подклассом класса динамического программирования.
Вот википедия дает нам такое определение динамического программирования:
dynamic programming is a method for solving complex problems by breaking them down into simpler steps.
Это определение - практически малополезная абстракция imho
Это определение - практически малополезная абстракция imho
А какое определение Вам нравится?
Мне вот попались под руку воспоминания Ричарда Беллмана который вроде как придумал динамическое программирование, занимательная весч:
What follows concerns events from the summer of 1949, when Richard Bellman first became interested in multistage decision problems, until 1955. Although Bellman died on March 19, 1984, the story will be told in his own words since he left behind an entertaining and informative autobiography, Eye of the Hurricane (World Scientific Publishing Company, Singapore, 1984), whose publisher has generously approved extensive excerpting. During the summer of 1949 Bellman, a tenured associate professor of mathematics at Stanford University with a developing interest in analytic number theory, was consulting for the second summer at the RAND Corporation in Santa Monica. He had received his Ph.D. from Princeton in 1946 at the age of 25, despite various war-related activities during World War II—including being assigned by the Army to the Manhattan Project in Los Alamos. He had already exhibited outstanding ability both in pure mathematics and in solving applied problems arising from the physical world.
CHOICE OF THE NAME DYNAMIC PROGRAMMING
“I spent the Fall quarter (of 1950) at RAND. My first task was to find a name for multistage decision processes. “An interesting question is, ‘Where did the name, dynamic programming, come from?’ The 1950s were not good years for mathematical research. We had a very interesting gentleman in Washington named Wilson. He was Secretary of Defense, and he actually had a pathological fear and hatred of the word, research. I’m not using the term lightly; I’m using it precisely. His face would suffuse, he would turn red, and he would get violent if people used the term, research, in his presence. You can imagine how he felt, then, about the term, mathematical. The RAND Corporation was employed by the Air Force, and the Air Force had Wilson as its boss, essentially. Hence, I felt I had to do something to shield Wilson and the Air Force from the fact that I was really doing mathematics inside the RAND Corporation. What title, what name, could I choose? In the first place I was interested in planning, in decision making, in thinking. But planning, is not a good word for various reasons.
I decided therefore to use the word, ‘programming.’ I wanted to get across the idea that this was dynamic, this was multistage, this was time-varying—I thought, let’s kill two birds with one stone. Let’s take a word that has an absolutely precise meaning, namely dynamic, in the classical physical sense. It also has a very interesting property as an adjective, and that is it’s impossible to use the word, dynamic, in a pejorative sense. Try thinking of some combination that will possibly give it a pejorative meaning. It’s impossible. Thus, I thought dynamic programming was a good name. It was something not even a Congressman could object to. So I used it as an umbrella for my activities”
Пикник на обочине
Они ведь все, Очкарики, такие. Им главное название придумать. Пока не придумал, смотреть на него жалко, дурак дураком. Ну а как придумал какой-нибудь гравиконцентратор, тут ему словно все понятно становится, и сразу ему жить легче.
dynamic programming is a method for solving complex problems by breaking them down into simpler steps.
Слишком широкое определение под которое подпадает практически все. Например, нахождение минимума методом деления отрезка пополам. В динамическом программирование обычно оптимальное решение есть продолжение оптимального решения одной из подзадач. При этом подзадачи лишь немного проще оригинальной задачи. Процесс продолжается пока подзадача не становится тривиальной. Но это, конечно не определение, попробую покопаться и найти более строгое определение.
Слишком широкое определение под которое подпадает практически все. Например, нахождение минимума методом деления отрезка пополам. В динамическом программирование обычно оптимальное решение есть продолжение оптимального решения одной из подзадач. При этом подзадачи лишь немного проще оригинальной задачи. Процесс продолжается пока подзадача не становится тривиальной. Но это, конечно не определение, попробую покопаться и найти более строгое определение.
Второй варианрт определения динамического программирования - multistage decision problems, это то чем занимался Ричард Беллман когда придумал темин динамическое программирование чтобы он него руководство отстало (в английском тексте что я запостил выше это описывается). Под это определение нейросети тоже подходят.
А в вариант определения dynamic programming is a method for solving complex problems by breaking them down into simpler steps наверное надо добваить что эти пподзадачи перекрываются. Деление отрезка пополам не подходит потому что подзадачи не являются перекрывающимися.
Нейронными сетями программы/алгоритмы управляют, как обычными компами, или они самонастраиваются?
В учебнике который я скачал простейшие нейросети объясняются как метод нахождения полиномиальных коэффициентов при фиттинге кривой.
(Логика такая, что при определении отклика сети нейронов приходится решать ту же задачу - нахождение веса каждого нейрона в функции отклика.
А в вариант определения dynamic programming is a method for solving complex problems by breaking them down into simpler steps наверное надо добваить что эти пподзадачи перекрываются.
Ага. И еще надо добавить, что глобально оптимальное решение содержит оптимальные решения для всей последовательности подзадач. Но я убей бог не пойму каким боком тут нейросети привязанны, кроме того, что можно по этому принципу строить эту самую сеть?
Ага. И еще надо добавить, что глобально оптимальное решение содержит оптимальные решения для всей последовательности подзадач. Но я убей бог не пойму каким боком тут нейросети привязанны, кроме того, что можно по этому принципу строить эту самую сеть?
Давайте посмотрим на конкретный пример. Вот, взгляните: computableplant.ics.uci.edu/papers/2007/TranscripReg_TR.pdf
Автор применяет методы нейронных сетей (и основная фишка работы заключается в магическом повторении слов нейронные сети),
но не является ли эта работа по сути стандартным динамическим программированием?