Chat:Ru/2020-06-09

From CG community
Jump to navigation Jump to search

vrabosh: функциональное программирование

vrabosh: http://chat.codingame.com/pastebin/6abb9551-5510-4724-8db7-fc431ac17818

vrabosh: против ооп

vrabosh: http://chat.codingame.com/pastebin/20314ab8-57f7-4203-bbd4-436f53adde0b

vrabosh: где понятней?

vrabosh: некоторые задачи которые на изи по чсу иногда решаются.

vrabosh: по часу

BorisZ: я не спец и не смогу дать определение, что такое функциональное программирование

BorisZ: но в первом примере точно не оно )

BorisZ: и вобще откуда взялось противопоставление ооп\функциональное

BorisZ: программирование есть, функции есть - значит ФП? )

BorisZ: а если есть класс в коде - значит ООП?

BorisZ: щас попробую дать определения по деревенски

BorisZ: ООП главное это инкапсуляция, остальное вторично

BorisZ: то есть кишки всегда внутри, снаружи только блестящие кнопочки

BorisZ: кнопочек - паблик методов чем меньше тем лучше, глядя на имя класса и паблик методы должно быть очевидно что это и что оно делает без просмотра кишок

vrabosh: ну да впинципе.

BorisZ: про ФП мне на уровне чуйки кажется что главное - это чистые функции, чтоб она ничего не делала, не меняла никаких состояний

BorisZ: то есть в первом примере функция rod - не чистая, печатает чего-то

BorisZ: в ООП наверное еще важно c single responsibility - класс должен отвечать только за одну какую-то сущность или функциональность, но это наверное уже практическое соображение

BorisZ: во втором примере Person - плохой класс, он не про персону а про дерево вобще говоря

BorisZ: а дерево где-то сбоку вобще

BorisZ: ладно, критиковать легко, так не остановишься никогда

BorisZ: в маленьких программах все это не важно, главное чтоб работало

vrabosh: add(1)(2)(3) - как такие функции назваются питоне, что про них почитать можно?

BorisZ: наверное функторы

BorisZ: просто в питоне функция - это объект, как и все остальное

BorisZ: функция add возвращает не значение какое-то, а функцию, которую можно потом вызвать

BorisZ: а можно не вызывать а потом вызвать когда-нибудь, это может быть удобно

BorisZ: это как раз одна из составляющих ФП - функция это такая же сущьность как все остальное, объект первого класса

BorisZ: их можно передвать в виде аргументов в другие функции, возвращать из функции

BorisZ: пихать в списки, словари

Uljahn: можно в своём классе прописать __call__ и сделать инстанс вызываемым

vrabosh: отложу эту задачку.. с классами потом буду замарачиваться..

vrabosh: когда 2 том книги куплю)

Uljahn: :confused:

Uljahn: никогда ничего не покупал и недостатка в инфе не испытывал при этом

Uljahn: а, я правда на английском всё читаю

vrabosh: с книгой приятней.. там структурировано все.

Uljahn: все книжки по питону для начинающих, что я видел, - это 90% одной и той же воды, реально полезные 10% либо из официальных доков, либо гуглятся за 5 минут на SO

vrabosh: хотя сейчас читаю 80% уже известно.. и всеравно когда программишь все в гугле ищешь)

vrabosh: классный справочник нашел.. там 800стр почти все расписано

Uljahn: ещё они устаревают быстрее, чем их печатают

vrabosh: ну потом дочитывать обновы уже в инете.. главное принципы понять и базу

Uljahn: главное - никогда не прекращать учиться

vrabosh: по питону наверно можно и не читать книги.. а вот по С++ мне ажется надо

vrabosh: чтоб понять, что такое укозатели, что такое методы, обьекты итд.

vrabosh: а то кусками вырывать из инета это все, можно запутаться

Uljahn: хех, это надо с основ начинать, с железа

vrabosh: причем я эту тему читал в школе лет 20 назад.. и оно мне сформировало понимания языков хоть както.

vrabosh: наверно 20 лет на С не капельки не программил

Uljahn: а на чём программил тогда?

vrabosh: после школы одна фирма забрала на foxpro

vrabosh: там хорошу практику в программировании вцелом получил и sql

vrabosh: а потом под вэб

vrabosh: пхп

Uljahn: а питоне тебе зачем? :thinking:

vrabosh: просто интересно

vrabosh: решил пообучаться.. новенькое узнать. более вглубь полесть..

vrabosh: может на ИИ потом переключусь

Uljahn: хорошее дело

vrabosh: меня вдетстве тянуло к С к ассемблеру, но жизнь она такая, что пришлось программить на чем быстро и что деньги дает.

735487: vrabosh: для этого сейчас есть курсы. там тоже все структурировано и по порядку.

vrabosh: книга интересней. она с тобой остается.. а курсы надо конспектировать)

Uljahn: я пару туториалов прошёл и сразу начал на CG применять знания, постепенно их расширяя

735487: курсы можно видео сохранить ))

vrabosh: я когда первый бот на CG писал, вообще нечего не читал, сходу начал)

vrabosh: питон же простой язык..

Uljahn: )))

Uljahn: на уровне hello world все языки простые

vrabosh: я кстати курс онлайн по нампи посмотрел 2часа.. тоже дало базу.

vrabosh: вот там есть видео по пандас и визуализации

vrabosh: по датасайнс курсы от майла или откогото уже не помнюю.

Uljahn: ))

vrabosh: и от одного препода по графам посмотрел

Uljahn: надо сразу применять

Uljahn: выбрать какую-то неизученную область и посвятить ей целый контест, например, или мульти

vrabosh: вот я прям угодал перед пакманами, что надо про графы узнать. и потом весь контест пробовал различное..

vrabosh: хотя еслиб я про графы не знал, я бы перебором делалбы как и все другие задачи

inoryy: хз, я до сих пор по питону книги читаю

wlesavo: о, inoryy, небольшой вопросик можно?

inoryy: давай

wlesavo: я вот не совсем понимаю что подразумевается под afterstate, типа рассматриваются state-action пары, и как некоторая альтернатива для игр афтерстейты, но разве это не то же самое что просто state в моделях типа state-value

inoryy: afterstate это положение после хода, если s = state, то обычно помечают s' = afterstate

Uljahn: inoryy: какие книги, например?

inoryy: из последнего вот это https://realpython.com/products/cpython-internals-book/

Uljahn: угу, подкапотные дела, явно не для новичков

wlesavo: inoryy ну вот да, я просто не понимаю в чам разница, s->action->s', смотрим ретёрн в s', почему то это выделили как отдельный подход хотя вроде это то же самое что и в обычном подходе когда учится не action value а state value

inoryy: ну во-первых return не обязательно на s'

inoryy: reward fn == R(s, a)

wlesavo: ну я понимаю, я про одношаговые

inoryy: во-вторых у тебя далеко не всегда детерменированный переход s -> a -> s'

wlesavo: ну тут именно в рамках детерминированного перехода обсуждение было

wlesavo: когда точно знаешь состояние после действия

inoryy: я предполагаю ты про SARSA читаешь

inoryy: там вся суть обучения в том что ты берешь награду за ход + оценку будущего хода с предполагаемого afterstate

inoryy: s, a, r, s', a'

wlesavo: ну я по книге иду, там и сарса тоже была, просто конкретно отдельно обсуждались афтерстейты для крестиков ноликов

inoryy: ну в этих алго всех под капотом обучение по TD error

inoryy: новая оценка = текущая награда + оценка будущего - оценка настоящего

wlesavo: это все понятно, просто как то странно выделено было, ща

inoryy: ну если ты формулу сарсы посмотришь там сразу понятно зачем afterstate

wlesavo: https://imgur.com/cUSHOtu

wlesavo: inoryy просто там по терминологии это не называлось afterstate а потом отдельно как-то обсуждается

inoryy: дак там прям в тексте даже описано почему afterstate хорош...

inoryy: я реально не понимаю в чем вопрос

wlesavo: я не понимаю чем state-value отличается от afterstate value, по моему это одно и тоже

wlesavo: там написано что это вроде похоже, но почему то выделенно в отдельный тенрмин

Uljahn: похоже на transposition tables

inoryy: сама функция или таблица будет та же если ты про это

inoryy: q == q )

inoryy: вопрос как ее обучать, можно и без afterstate

inoryy: в тексте выше интуитивно объяснено почему хорошо с; сарса пример на практике

wlesavo: ну да, короче похоже одно и тоже

inoryy: ну q(s,a) != q(s',a')

inoryy: представь что q это функция а state-action value и afterstate value переменные если тебе так проще

inoryy: сама функция та же, но параметры то разные )

wlesavo: да не, я имею ввиду что afterstae-value укладывается в общую картину для обучения state-value

wlesavo: так то у меня вчера на сарсе даже что-то обучилось

wlesavo: прогулка со стохастическим ветром была

inoryy: мб разочарую но на практике сарсу почти никто не юзает %)

inoryy: ой блин что за смайл

wlesavo: да это понятно, просто для практики же

Uljahn: по идее нам нужна модель окружения, чтобы afterstate получать?

wlesavo: а так тот-же q-learning примитивная надстройка над сарсой впринципе

wlesavo: не обязательно модель нужна, если on policy ты можешь из взаимодействия прямого получать афтерстейт

inoryy: наоборот ))

wlesavo: но с моделью конечно проще

inoryy: sarsa надстройка над q-learning

wlesavo: ну я к тому что модификации не такие уж и сильные между ними

wlesavo: вообще я только табличные методы закончил как раз к самому интересному подошел

inoryy: на практике да, с теорий не так просто

wlesavo: но книга суттона золотая конечно, прямо обмазываюсь

tutubalin: Uljahn вот неплохая книжка (правда, только пробник) https://static.realpython.com/python-tricks-book/Python%20Tricks%20Sample.pdf

wlesavo: глянул, на либгене целая лежит, надо будет полистать

Uljahn: спс, на рутреккере перевод лежит от 2018 года

tutubalin: teccles moves дали больший прирост, чем адаптивное дерево

tutubalin: ну или примерно такой же

735487: ну так потихоньку и набирается. там прирост, и тут прирост. а вместе уже наберется прилично

gybson_samara: хотел симу пилить, но теперь интересно куда на эвристике в голде крестиков долезу =)

735487: вот если в легу влезешь это будет достижение полюбому

ilt: все забьют симы писать

gybson_samara: вооооот

gybson_samara: на симе каждый влезет

tutubalin: хочу влезть а легу без UCB/UCB1

tutubalin: *UCT

735487: в леге jacek на минике сидит по идее.

tomatoes: с эвристиками у меня какая-то прокрастинация получалась. вместо того чтоб что-то толковое делать мучал оценку целыми днями то так, то сяк. в итоге забил :sweat_smile:

735487: тут просто хорошие эвристики найти это не просто

inoryy: ну одна из причин почему MCTS доминирует это потому что очень сложно оценить положение, я думаю с эвристиками еще хуже ситуация

gybson_samara: с эвристиками вообще пипец, голова пухнет и глубина 1-2 хода

MelnikovIgor: Что значит миник? Минимакс? Как в легу то на нем пробраться? Там же эвристика нужна мощная?

MelnikovIgor: Или нейронка

inoryy: какая нафик нейронка

inoryy: самой примитивной оценочной можно пройти

MelnikovIgor: Ну так что никто не проходит если она примитивная?

inoryy: все миники проходили пока мцтс популярным не стал

inoryy: я прошел