Здравствуйте, Khimik, Вы писали:
K> Обмен алгоритмами невозможен без эвристики, понимания где что поправить. Никто не вставляет в свой код наугад участок чужого кода.
Завсегдатаи Stack Overflow смотрят на это утверждение с недоумением
Тебя шибко сбивает с толку название «генетические». Да, разумеется, аналоги с природой есть. Но название навевае флёр чего-то фундаментального, а это ошибка. Так же как «искусственный интеллект». Сразу все ууу, о Скайнете думают.
На самом деле генетический алгоритм — просто поиск экстремумов по неким условиям. И да, зачастую алгоритм сваливается в локальные экстремумы и выдает лажу. Динозавры там отмирают только если они не удовлетворяют решению. В природе же никакой «цели» и «задачи» нет. И это базовая и кардинальная разница, меняющая все в корне
В июне 1867 года в журнале «North British Review» вышла в свет статья Дженкина под названием «Происхождение видов», где критиковалась идея естественного отбора как движущей силы эволюции[1]. Главный пункт возражения Дженкина — поглощающее влияние свободного скрещивания. Чтобы понять его суть, предположим, что в популяции появилась особь с более удачным признаком, чем у существующих особей. Но скрещиваться она вынуждена будет только с особями с «нормальными» признаками. Поэтому через несколько поколений удачное новоприобретение неизбежно будет поглощено «болотом» обычных признаков[2].
…Представим себе белого человека, потерпевшего кораблекрушение на острове, населённом неграми… Наш выживший герой, возможно, станет среди них королём; он убьёт очень много чернокожих людей в борьбе за выживание; он заведёт очень много жён и детей, в то время как множество его подданных будут жить холостяками и умрут холостяками… Качества и способности нашего белого человека несомненно помогут ему дожить до глубокой старости, но даже его длинной жизни явно не хватит для того, чтобы кто-то из его потомков в каком-либо поколении стал полностью белым… В первом поколении будет несколько дюжин смышлёных молодых мулатов, чей ум будет в среднем превосходить негритянский. Нас не удивит, что трон в течение нескольких поколений будет принадлежать более или менее желтокожему[Ком. 1] королю; но сможет ли поверить кто-то, что население всего острова постепенно станет белым или пусть даже жёлтым?..
В нашем случае признак попал в исключительно благоприятные условия, способствующие его сохранению, — способствующие, и всё же неспособные закрепить и сохранить его.
Возможно я не очень понял суть идеи Дженкина, но такое ощущение что он сам не совсем корректно сформулировал то, что интуитивно почувствовал. Это вопрос из области кибернетики. Мы считаем что мозг – это некое сложное устройство, в чём-то похожее на искусственную нейросеть. Предположим, у какого-то человека мозг работает особенно эффективно. Если он женится на обычной женщине, то мозг ребёнка должен быть некой мешаниной двух конструкций. Это подобно тому, как мы купили две соковыжималки, случайно перемешали их детали и пытаемся из них создать гибридную соковыжималку. Другая аналогия: насколько я знаю, ДНК это вообще программный код, последовательность инструкций. Если мы возьмём две программы и случайно перемешаем их фрагменты – получится что-то работающее? Очевидно что нет.
У меня такой вопрос: генетические алгоритмы не подразумевают никакого скрещивания, обмена фрагментами кода, полового отбора?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Здравствуйте, Khimik, Вы писали:
K>Возможно я не очень понял суть идеи Дженкина, но такое ощущение что он сам не совсем корректно сформулировал то, что интуитивно почувствовал. Это вопрос из области кибернетики. Мы считаем что мозг – это некое сложное устройство, в чём-то похожее на искусственную нейросеть. Предположим, у какого-то человека мозг работает особенно эффективно. Если он женится на обычной женщине, то мозг ребёнка должен быть некой мешаниной двух конструкций. Это подобно тому, как мы купили две соковыжималки, случайно перемешали их детали и пытаемся из них создать гибридную соковыжималку. Другая аналогия: насколько я знаю, ДНК это вообще программный код, последовательность инструкций. Если мы возьмём две программы и случайно перемешаем их фрагменты – получится что-то работающее? Очевидно что нет.
Какой бред. Элементарная единица эволюционного отбора — это популяция. Поэтому и отбор происходит на популяциях, а не на отдельных особях.
>насколько я знаю, ДНК это вообще программный код, последовательность инструкций.
Не инструкций, а кодов аминокислот. У вас в школе не было биологии? >Если мы возьмём две программы и случайно перемешаем их фрагменты – получится что-то работающее? Очевидно что нет.
Перемешиваются довольно большие фрагменты целиком.
Здравствуйте, Khimik, Вы писали:
K>Возможно я не очень понял суть идеи Дженкина, но такое ощущение что он сам не совсем корректно сформулировал то, что интуитивно почувствовал. Это вопрос из области кибернетики. Мы считаем что мозг – это некое сложное устройство, в чём-то похожее на искусственную нейросеть. Предположим, у какого-то человека мозг работает особенно эффективно. Если он женится на обычной женщине, то мозг ребёнка должен быть некой мешаниной двух конструкций. Это подобно тому, как мы купили две соковыжималки, случайно перемешали их детали и пытаемся из них создать гибридную соковыжималку. Другая аналогия: насколько я знаю, ДНК это вообще программный код, последовательность инструкций. Если мы возьмём две программы и случайно перемешаем их фрагменты – получится что-то работающее? Очевидно что нет. K>У меня такой вопрос: генетические алгоритмы не подразумевают никакого скрещивания, обмена фрагментами кода, полового отбора?
Дженкин писал своё сочинение, когда про ДНК вообще ничего не знали.
Тогда думали, что наследственность определяет какая-то там "кровь", которая смешивается в любых пропорциях.
Деталь из одного пулемёта вполне нормально вставляется в другой пулемёт и работает.
ДНК код смешивается не случайно, а крупными фрагментами — хромосомами.
И любой программный модуль находится в хромосоме целиком.
И да, их можно смешивать в любой комбинации, работать оно будет.
Если взять хромосому от другого биологического вида — то как повезёт.
Межвидовые гибриды иногда получаются. Мулы например.
Генетические алгоритмы состоят из мутаций и оптимизаций.
Скрещивания и обмен фрагментами там бывают, но не всегда.
Насчёт полового отбора — не встречал ни разу.
Здравствуйте, Khimik, Вы писали:
K>Возможно я не очень понял суть идеи Дженкина, но такое ощущение что он сам не совсем корректно сформулировал то, что интуитивно почувствовал. Это вопрос из области кибернетики. Мы считаем что мозг – это некое сложное устройство, в чём-то похожее на искусственную нейросеть. Предположим, у какого-то человека мозг работает особенно эффективно. Если он женится на обычной женщине, то мозг ребёнка должен быть некой мешаниной двух конструкций. Это подобно тому, как мы купили две соковыжималки, случайно перемешали их детали и пытаемся из них создать гибридную соковыжималку. Другая аналогия: насколько я знаю, ДНК это вообще программный код, последовательность инструкций. Если мы возьмём две программы и случайно перемешаем их фрагменты – получится что-то работающее? Очевидно что нет.
Во-первых, ДНК совсем не похожа на программный код.
Во-вторых, эксперименты с эволюциями программ, где они скрещивались, мутировали и отбирались, проводились и вполне успешно. Например
Здравствуйте, alpha21264, Вы писали:
A>Генетические алгоритмы состоят из мутаций и оптимизаций. A>Скрещивания и обмен фрагментами там бывают, но не всегда. A>Насчёт полового отбора — не встречал ни разу.
Ну это смотря как посмотреть. Ведь ДНК-молекулы не напрямую друг с другом совокупляются, а лишь способствуют возникновению соответствующих ситуаций.
Так и с алгоритмами. Так кодишь себе что-то, и понимаешь, что нечто похожее, хоть и не совсем то, делал для другого проекта.
Возникает естесственое желание рефакторнуть тот кусок в виде отдельной либы, подходящей для обоих проектов.
Произошло совокупление алгоритмов в твоем мозгу, которое произвело на свет либу.
Здравствуйте, alpha21264, Вы писали:
A>Генетические алгоритмы состоят из мутаций и оптимизаций. A>Скрещивания и обмен фрагментами там бывают, но не всегда. A>Насчёт полового отбора — не встречал ни разу.
За все время работы только один раз сталкивался с промышленным использованием генетических алгоритмов — это оптимизация производственных процессов, что по сути является задачей оптимизации расписания. И вот я не уверен, что генетический алгоритм — это был оптимальный способ решения этой задачи.
Здравствуйте, graniar, Вы писали:
G>Ну это смотря как посмотреть. Ведь ДНК-молекулы не напрямую друг с другом совокупляются, а лишь способствуют возникновению соответствующих ситуаций.
G>Так и с алгоритмами. Так кодишь себе что-то, и понимаешь, что нечто похожее, хоть и не совсем то, делал для другого проекта. G>Возникает естесственое желание рефакторнуть тот кусок в виде отдельной либы, подходящей для обоих проектов. G>Произошло совокупление алгоритмов в твоем мозгу, которое произвело на свет либу.
Обмен алгоритмами невозможен без эвристики, понимания где что поправить. Никто не вставляет в свой код наугад участок чужого кода.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Здравствуйте, Anton Batenev, Вы писали:
K>> Обмен алгоритмами невозможен без эвристики, понимания где что поправить. Никто не вставляет в свой код наугад участок чужого кода.
AB>Завсегдатаи Stack Overflow смотрят на это утверждение с недоумением
Можно чуть подробнее, с примерами и ссылками?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Здравствуйте, alpha21264, Вы писали:
K>>Возможно я не очень понял суть идеи Дженкина, но такое ощущение что он сам не совсем корректно сформулировал то, что интуитивно почувствовал. Это вопрос из области кибернетики. Мы считаем что мозг – это некое сложное устройство, в чём-то похожее на искусственную нейросеть. Предположим, у какого-то человека мозг работает особенно эффективно. Если он женится на обычной женщине, то мозг ребёнка должен быть некой мешаниной двух конструкций. Это подобно тому, как мы купили две соковыжималки, случайно перемешали их детали и пытаемся из них создать гибридную соковыжималку. Другая аналогия: насколько я знаю, ДНК это вообще программный код, последовательность инструкций. Если мы возьмём две программы и случайно перемешаем их фрагменты – получится что-то работающее? Очевидно что нет. K>>У меня такой вопрос: генетические алгоритмы не подразумевают никакого скрещивания, обмена фрагментами кода, полового отбора?
A>Дженкин писал своё сочинение, когда про ДНК вообще ничего не знали.
Да, о дискретности в наследовании тогда ещё было неизвестно. Вообще, непонятно, зачем ТС обсуждает идеи 1867 года.
A>Деталь из одного пулемёта вполне нормально вставляется в другой пулемёт и работает. A>ДНК код смешивается не случайно, а крупными фрагментами — хромосомами.
Может гораздо мельче при рекомбинации. А в случае ГПГ и ещё мельче.
Здравствуйте, Khimik, Вы писали:
G>>Ну это смотря как посмотреть. Ведь ДНК-молекулы не напрямую друг с другом совокупляются, а лишь способствуют возникновению соответствующих ситуаций.
G>>Так и с алгоритмами. Так кодишь себе что-то, и понимаешь, что нечто похожее, хоть и не совсем то, делал для другого проекта. G>>Возникает естесственое желание рефакторнуть тот кусок в виде отдельной либы, подходящей для обоих проектов. G>>Произошло совокупление алгоритмов в твоем мозгу, которое произвело на свет либу.
K>Обмен алгоритмами невозможен без эвристики, понимания где что поправить. Никто не вставляет в свой код наугад участок чужого кода.
Тот случай, когда ответ на твое возражение содержится в цитате, на которую отвечаешь.
Мозг, понимающий, где что поправить — выступает в роли среды, в которой происходят и брачные игры и совокупление.
Здравствуйте, alpha21264, Вы писали:
A>Деталь из одного пулемёта вполне нормально вставляется в другой пулемёт и работает. A>ДНК код смешивается не случайно, а крупными фрагментами — хромосомами. A>И любой программный модуль находится в хромосоме целиком. A>И да, их можно смешивать в любой комбинации, работать оно будет.
Надо полагать, это рассуждение из серии, что открытия Менделя опровергли "кошмар Дженкина". Я это не понимаю. По-моему в кибернетике должно быть что-то вроде "теоремы о необходимости самосогласованности составных элементов": в той же соковыжималке размеры всех деталей подогнаны друг к другу с точностью до микрометра, поэтому если взять детали разных соковыжималок, собрать ничего не получится.
Речь о признаках, реализованных по-разному с точки зрения кибернетики. Например, рост — признак с высокой наследуемостью и без таких проблем. Когда мать и отец рожают ребёнка, его рост будет примерно усредненным по их росту (естественно с поправкой на половой диморфизм). Если бы интеллект был таким же признаком как рост, никакого "кошмара Дженкина" не было бы. Т.е. в популяции мужчина с IQ 120 женился бы на женщине с IQ 100, у их ребёнка был бы IQ 110, и если иметь высокий IQ выгодно — таких детей рождалось бы в среднем больше, соответственно средний IQ рос бы. Но Дженкин очевидно имел в виду другое (или неосознанно об этом догадывался).
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Очень хотелось бы, чтобы кто-нибудь рассказал про генетические алгоритмы, как это работает. Например правда ли, что в GA происходят "вымирания динозавров"?
Тут представлена схематичная иллюстрация сути GA, но я пока не очень её понимаю:
Здравствуйте, Khimik, Вы писали: K>Очень хотелось бы, чтобы кто-нибудь рассказал про генетические алгоритмы, как это работает. Например правда ли, что в GA происходят "вымирания динозавров"?
Генетические алгоритмы в современном «нормальном программировании» не используются, поскольку требуют отдельный вычислительный ресурс на каждый экземпляр, что в природе легко достигается (те букашки, которые сейчас ползают по ближайшему лесу нискольконе тормозят работу местного интернета).
Это некая идея, абстракция, что поведение программы разбивается на шаги и потом эти поведения комбинируются. Один экземпляр может руки перед туалетом, другой только после, третий и до и после это поведение предается потомкам , где вдруг, например возникает некая пандемия там коронавируса и внезапно потомство тех кто моет и до и после статистически дохнет чаще и начинает превалировать над остальными, получая внезапно конкурентное преимущество
Динозавры никуда не вымерли — современные курицы замечательно являются их потомками и мы их кушаем. Вымерли узкоспециализированные динозавры — например, те, кто писал только на пхп.
Не надо думать что набор генов человека супероптимален. Есть много чего можно было бы пропатчить — к примеру человек потерял возможность воспроизводить витамин С и теперь он просто обязан его есть в виде растений некоторых и не может синтезировать из другой еды. А, Там, собаки могут и им плевать на эти растения
А вот и нет. Правительство Бразилии долгое время предупреждало новобрачных: если женятся местные индейцы и негры, от таких браков редко рождаются хорошие дети. Огромный процент внутриутробных патологий, генетических болезней, ранних сердечно-сосудистых заболеваний и рака, психических отклонений. То есть иногда рождаются полноценные и вполне здоровые люди — но процент намного более низкий, чем при любых других браках. Если молодые люди все-таки хотели жениться — пускай, но их хотя бы предупреждали о последствиях.
Обычно ученые объясняют это тем, что негры и индейцы Южной Америки так далеко отошли от общего предка, что это уже почти разные виды. Но еще раз подчеркну: единые общие предки у них или разные, до конца не известно.
...
Одно время пресса обсуждала проблему, потом журналистам пришлось замолчать: ведь "всем известно" что различия между популяциями людей придумали злые расисты, одержимые ненавистью мракобесы. Если вы утверждаете нечто подобное — вы, наверное, расист и фашист, сторонник Гитлера. Под градом таких обвинений замолкают даже самые стойкие люди, а многие и начать обсуждения не посмеют.
Так и правительство Бразилии не предупреждает больше о нежелательности браков между неграми и индейцами. Это ведь не политкорректно.
Кто-нибудь об это слышал?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Здравствуйте, Khimik, Вы писали:
K>Здравствуйте, alpha21264, Вы писали:
A>>Деталь из одного пулемёта вполне нормально вставляется в другой пулемёт и работает. A>>ДНК код смешивается не случайно, а крупными фрагментами — хромосомами. A>>И любой программный модуль находится в хромосоме целиком. A>>И да, их можно смешивать в любой комбинации, работать оно будет.
K>Надо полагать, это рассуждение из серии, что открытия Менделя опровергли "кошмар Дженкина". Я это не понимаю.
Оно и видно.
K>По-моему в кибернетике должно быть что-то вроде "теоремы о необходимости самосогласованности составных элементов": в той же соковыжималке размеры всех деталей подогнаны друг к другу с точностью до микрометра, поэтому если взять детали разных соковыжималок, собрать ничего не получится.
Если детали от одной соковыжималки не подходят к другой — это от того, что у кого-то очень кривые руки. У всех конструкций (в том числе биологических) есть допуски. В пределах допусков всё соединяется.
K>Речь о признаках, реализованных по-разному с точки зрения кибернетики. Например, рост — признак с высокой наследуемостью и без таких проблем. Когда мать и отец рожают ребёнка, его рост будет примерно усредненным по их росту (естественно с поправкой на половой диморфизм). Если бы интеллект был таким же признаком как рост, никакого "кошмара Дженкина" не было бы. Т.е. в популяции мужчина с IQ 120 женился бы на женщине с IQ 100, у их ребёнка был бы IQ 110, и если иметь высокий IQ выгодно — таких детей рождалось бы в среднем больше, соответственно средний IQ рос бы. Но Дженкин очевидно имел в виду другое (или неосознанно об этом догадывался).
Ты пишешь очевидную чушь. Мой рост выше роста обоих моих родителей на 10 см. Это значит, что Дженкин не прав совсем. Механизм наследования признаков совсем другой. И даже в 18-м веке это было очевидно. Открывай школьный учебник за соответствующий класс и читай его.
Схожее недоумение возникает и на более школьном уровне. Каким бы набором генов ни был снабжен конкретный человек, он остается человеком — с двумя руками, двумя ногами и головой. Эта особь почти всегда может научиться ходить, говорить, думать — то есть на макроуровне основные признаки вида всегда присутствуют. И опять же на макроуровне он наследует признаки родителей. Как, черт побери, так получается? Так мы тоже не умеем: механическая (например, посимвольная или построчная) смесь двух программ не только не будет проявлять смешанное поведение, но вообще почти никогда не будет корректным кодом.
Существующие "генетические алгоритмы" даже близко не показывают ни такую эффективность, ни такую устойчивость "фенотипа" при сохранении выразительной мощности. Вот почему на протяжении нескольких лет у меня была надежда: а вдруг мы поймем, как в этом смысле работает эволюция, научимся строить аналогичные процессы in silico, и сможем таким способом получать какие-то реально интересные результаты? Думаю, что не только у меня -- в близких мне сообществах, состоящих совсем не из биологов, популярны разговоры об эволюции, книги Докинза (а у тех, кто увлекся серьезней, Кунина) и т.п.
Насколько я знаю, этот автор — весьма серьёзный программер, работающий в Яндексе. И блог у него крайне интересный.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Так мы тоже не умеем: механическая (например, посимвольная или построчная) смесь двух программ не только не будет проявлять смешанное поведение, но вообще почти никогда не будет корректным кодом.
Ну так если хаотично смешать нуклоны разных ДНК, мы получим какую-то радиоактивную гадость, но никак не корректную ДНК.
Все дело в том, что именно смешивается.
K>
а вдруг мы поймем, как в этом смысле работает эволюция, научимся строить аналогичные процессы in silico, и сможем таким способом получать какие-то реально интересные результаты?
Мы их давно получаем, просто не называем это генетическими алгоритмами.
Как уже писал выше про рефакторинг кода, когда смешение происходит на уровне концепций.