Chat:Ru/2020-06-09
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: я прошел