Първоначално написано от
Mateev
Ще ти обясня разликата между Random и Genetic с пример. Представи си, че задачата е да се открие най-дълбоката точка в световните океани. Метода ни за измерване е много бавен - кораба спира и започваме да спускаме едно въже с тежест. И гледаме кога въжето ще се отпусне (тежеста е легнала на дъното). Определено едно измерване ще ни отнема по няколко часа. Та задачата е колко измервания по няколко часа ще са необходими, ако по случаен начин спираме кораба и започваме да спускаме въжето.
За да решим задачата се нуждаем от информация колко квадратни метра е площта на всички океани. Не се напъвай да я познаеш - аз ще ти я кажа. Площта на всички океани по земята е 360 милиона квадратни километра или това прави 360 000 000 000 000 кв. метра. Ако приемем, че най-дълбокото дъно има площ само няколко квадратни метра, което наистина е така, то тогава ще се наложи да се направят средно около 100 000 000 000 000 4-часови измервания, докато се открие тази точка. Това ще отнеме около 57 милиарда години на твоя кораб, ако не броим времето за преместване от 1 точка в друга.
Сега нека да си поразмърдаме малко акъла и да сменим случайния алгоритъм с генетичен. Идеята е, че най-дълбоката точка не може от раз да стане толкова дълбока. По-скоро около нея имаме наклонени склонове, и няколкото квадратни метра дъно ще са заобиколени от стотици квадратни километри склонове. Следователно случайните измервания можем да ги правим с много по-голяма стъпка, за да си изясним къде има потенциални склонове надолу, а след това да намаляваме стъпката все повече и повече, докато нацелим абсолютното дъно. Алгоритъма позволява милиардите измервания да ги сведем само до няколко хиляди, и да ги направим за по-малко от 1 година.
Добрата новина е, че алгоритъма наистина работи, и че наистина намалява броя на измерванията с цели порядъци. Милиардите измервания ги свежда до хиляди. Лошата новина обаче е, че този алгоритъм има склонноста да попада в локални минимуми. Тоест например няма да намерим Марианската падина, а някакво друго дъно, но не толкова дълбоко колкото нея.
При всички случаи обаче използването на генетични алгоритми е оправдано, защото само те са в състояние да сведат милиардите години търсене до един малко по-разумен срок, който вече да се вмества в рамките на човешкия живот. Да, може и никога да не попаднеш на свещения граал (Марианската падина), но със сигурност ще попаднеш на една камара точки, достатъчно дълбоки и приближаващи се като характеристики до Марианската падина. С Random няма да ти стигне целия живот, за да попаднеш на същите тези точки.
А за кървфитинга забрави. След като от позицията на бъдещето ние правим избор между две стратвегии, и избираме по-добрата, с това наше действие ние вече въвеждаме някакъв кървфитинг. Няма как - самото търсене на зависимости означава кървфитинг в изобилие. Има си други методи за откриване на истинските зависимпости от тези, които са "кървфитнати", но това не означава, че трябва да се откажем от генетичните алгоритми и въобще от търсенето на зависимости.