Chat:Ru/2020-06-23

From CG community
Jump to navigation Jump to search

Uljahn: хммм, https://exponenta.ru/events вебинары вроде интересные, но какая-то мутная контора

Uljahn: никто не сталкивался?

735487: с этой не сталкивался а вот у geekbrains можешь не смотреть. названия вебинаров обещающие а на деле там все время тебе вбивают мысль иди к нам учиться плати бабло

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

vrabosh: неужели вэбинары могут лучше чем книги рассказать?

735487: вебинар это более узкая тема обычно

735487: ну и книги могут устаревать же еще

Uljahn: вот мне тоже интересно про актуальность инфы, но очень сомневаюсь, что там прямо самый свежак с архива, скорее всего такой же перевод из устаревших книг

Uljahn: типа адаптации курсов с курсеры

Uljahn: напрягло, сколько инфы затребовали при регистрации, ну их нафиг

vrabosh: Врятли они дадут новее того, что в статьях расписано.

Uljahn: да я не про новее, это вообще нереально

Uljahn: а хотя бы не пятилетней давности переводы

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

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

vrabosh: как по мне лучший материал это былобы.. подборка дстойных книг.

vrabosh: конспект к этим книгам. чтоб понять, примерно что получу..

vrabosh: вот как раз конспекты это и есть чтото типа вэбинаров.

Hamibar: да на самом деле без разницы, где черпать информацию.

vrabosh: на вэбинары время можно потратить много. Хотя мне нравится их смотреть когда тренажер крутишь..

735487: бывает что люди рассказывают личный опыт. такое интересно как правило

735487: мне запомнился один как менеджер из яндекса или из мейла уже не помню, рассказывал почему они сроки которые дает программист умножают на пи и прибавляют 10

Uljahn: это один из законов Мерфи же, только там вроде число Эйлера было

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

vrabosh: а если быть замотивированным то можно уложиться в срок

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

735487: ну там было обьяснение что программист типа рассчитывает пройти от начала до финиша по прямой. а на деле будет дуга окружности. отсюда берется пи. а 10 дней это типа если зафейлят то у них есть программер который сделает любую задачу за 10 дней :)

Hamibar: я из-за этого раньше в мульти не играл)

vrabosh: что з мульты?

tomatoes: боты

vrabosh: а почему не играл?

Hamibar: ну казалось, что нет соревновательного элемента

Hamibar: только в контестах участвовал

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

Uljahn: контесты первые раз 5 интересны, потом приедаются

Uljahn: каждый раз всё больше ощущение повторов

735487: не соглашусь насчет повторов

735487: последние года 2 контесты довольно уникальные были и новые

vrabosh: для меня все тут новое) но с как по мне пакман отличный контест.

Uljahn: так я не про полные повторы говорил, а про повторы некоторых аспектов игр, которые уже встречались раньше

Uljahn: каждая новая игра похожа на некоторые предыдущие, чем больше у меня багаж опыта, тем легче найти аналогию

tomatoes: рандом в пакмане как-то не зашел

tomatoes: и в самой игре и при сабмите

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

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

Uljahn: ну так можно и крестики улучшать до бесконечности)

735487: ну так мы и улучшаем )))

vrabosh: я думаю намного интересней будет, если выйдут какие нить новые крестики)

vrabosh: а что думаю про крестики те кто написал альфа го?)

735487: поле 27 на 27 ))))

735487: и на большом поле сделать 4 в ряд ))

vrabosh: можно 3 игрока на этиже крестики)

vrabosh: 4 игрока.

Uljahn: поле 256х256х256 и 128 игроков, только кто играть в это будет

vrabosh: командная игра. я хожу, противник, потом мой напарник)

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

Uljahn: да, читал про такие

Default avatar.png BrutalJetskiFromAfar_9bf: кто может объяснить уровень про тора?

tutubalin: да, есть вариант, где можно продолжать ходить в ту борду, где уже выиграли. там есть 100% выигрышная стратегия - просто отправляешь противника всё время в одну и ту же борду даже после того, как он уже поставил три нолика

tutubalin: BrutalJetskiFromAfar_9bf в торе тебе самому надо следить за своей текущей позицией. тебе говорится только начальная. а куда ты пришёл - вычисляй сам

Uljahn: BrutalJetskiFromAfar_9bf: слева есть кнопка Hints

735487: у меня походу лучший сабмит в CSB. даже против fenrira игры дали

735487: о даже у мэда иногда выигрываю и смита

735487: гы против мэда 5-1 )))

YurkovAS: :thumbsup:

735487: большая пропасть еще

tutubalin: а куда мэд-то делся? его ковид съел?

vrabosh: лет 20 процессорами не интересовался, а тут мак на мобильный переходит.. надо разобраться, что это такое для общего развития.

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

vrabosh: можно прям свою ui азбуки морзы сделать)

vrabosh: набил по корпусу . . он скрин, . - ., он еще чтото сделал

vrabosh: или два стка, один поворот, и телефон чтото делает)

tutubalin: ага. положил телефон в карман с мелочью - и у тебя 100500 скриншотов

vrabosh: когда ты работаешь с ним

vrabosh: указательный палец на крышке, им можно чтото делать

vrabosh: прикинь, смотришь стрим вертикально... хочешь что нить написать, вместо того, чтобы уменшать экран открывать клаву... сидишь наиваешь морзу, а в низу поазывается текст который набиваешь. Посути только 1 линию экрана задействуешь и то полупрозрачную..

vrabosh: 2-3 символа набил, ии подсказал какие ты слова имеешь введу, тыкнул на слово внизу.. дальше набиваешь. Хотя уже проще голосовй использовать)

Uljahn: tutubalin: обиделся и ушёл, или сделал вид, что обиделся и использовал как предлог, чтобы уйти

inoryy: чем вы его обидели

Uljahn: https://cg.spdns.eu/wiki/Chat:World/2020-05-19

Uljahn: небольшая драмка, сравнили с ботов в очередной раз

Uljahn: *с ботом

inoryy: выглядит как стёб

Uljahn: ну вот я и предположил, что это предлог

Uljahn: вряд ли бы мэд на такое реально обиделся

Uljahn: может, в армейку забрали)

Uljahn: Automaton2000: десятый наш ковидный батальон

Automaton2000: ты в каком городе живешь?

Uljahn: Automaton2000: в Петросянске

Automaton2000: если с физикой и тригонометрией сложно - попробуй Трон, там на клетках, поочерёдные ходы и правила простые

tutubalin: Uljahn он вышел не после шутки про бота

tutubalin: а после того, как сказали, что он может помочь с csb

tutubalin: сайт ни у кого не тормозит?

Uljahn: тормозит немного

tutubalin: поставил качалку боёв

tutubalin: но я 100мс паузу делаю между запросами

vrabosh: в пазлах самое сложно это понять, что автор хочет

Uljahn: а ты хотел, чтобы псевдокод выкладывали вместо условия или грамотное ТЗ?

Uljahn: понимание задачи - это тоже часть пазла

tutubalin: щас ещё норм

tutubalin: я помню какие-то школьники пазлы писали и друг другу аппрувили

tutubalin: вот там жесть была

Uljahn: "Первое место занял icecuber, который захардкодил 100 правил из обучающего датасета и 100 правил из теста" - ахах, 10к LoC из if-ов и брутфорса - вот тебе и искусственный интелект

Uljahn: это соревнование на кагле было https://habr.com/ru/company/sberbank/blog/507852/

Uljahn: Automaton2000: как тебе такое, Илон Маск?

Automaton2000: ну у меня в общаке смайлы не показывает

vrabosh: вот это народ умеет замарачиватся.. у меня максимум на 1000 строк кода получается.. из которого половина мусора в итоге

vrabosh: хотя посмотрел код.. меньше 300 строк кода надо чтоб золото брать.

gybson_samara: Uljahn есть вот такой список [(0,0),(0,2)], как сумму ячеек получить?

vrabosh: [sum(a[:][i]) for i in range(len(a))] - это ты имеещь введу?

vrabosh: в нампи я думаю проще чуть

gybson_samara: я имею в виду проще =)

vrabosh: a.sum(axis=1)

vrabosh: тоже самое, что вверху написал

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

gybson_samara: diagonal().sum() тожен

gybson_samara: но это не то

Uljahn: sum(map(sum, lst))?

Uljahn: или что за сумма ячеек?

gybson_samara: Uljahn сумма ячеек в массиве нампи

Uljahn: так у тебя списко кортежей или массив?

Uljahn: *список

gybson_samara: список кортедей

Uljahn: а где массив нампи?

Uljahn: аааа, у тебя список индексов?

gybson_samara: ну тут =) надо в нем посчитать сумму значений ячеек из списка кортедей

Uljahn: и ты индексируешь им массив

gybson_samara: ну дефолтная индексация

gybson_samara: пусть массив будет np.ones((3,3))

vrabosh: тебе надо [a1+a2,b1+b2]?

gybson_samara: нет

vrabosh: где [(a1,b1),(a2,b2)]

vrabosh: а как?

gybson_samara: мне надо a[x1,y1]+a[x2,y2]+a[x3,y3]

gybson_samara: где [(x1,y1), (x2,y2), (x3,y3)]

Uljahn: arr[ix].sum()

Uljahn: где ix - список кортежей

Uljahn: или np.sum(arr[ix])

Uljahn: это вроде одно и то же

Uljahn: это называется fancy indexing вроде бы

gybson_samara: sum(ones[goal]) работает

gybson_samara: по производительности не хуже суммы нампи должно быть, кмк

Uljahn: sum - это питоновская функция, она медленная при работе с нампи массивами

Uljahn: лучше всегда использовать специализированные нампишные

gybson_samara: скорее всего да, но также скорее всего она вызывает нампишный же перекрытый метод

Uljahn: ну, она не сильно прям медленная, но на больших массивах разница может быть заметна

vrabosh: a.sum(1) - сумма ячеек

gybson_samara: и у нас тут список туплов, а список это список

vrabosh: a.sum(0) - столбксов

gybson_samara: vrabosh мне проще через слайсы

Uljahn: список туплов используется для индексирования, это норм

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

gybson_samara: и решил, что норм =)

Uljahn: кстати слайсы возвращают вид (view) оригинального массива, а fancy indexing - копию

vrabosh: мне вот кажется, что теоретически можно найти формулу которая говорит, выигрышный ход..

gybson_samara: np.flipud(mm).diagonal().sum() - как-то сложно для суммы трех ячеек

Uljahn: т.е. если будешь над видом что-то делать, изменения уйдут в исходный массив

gybson_samara: Uljahn мне пока так и надо

vrabosh: вот есть такое для 3х3?

Uljahn: а если списком туплов - то копия возвращается

vrabosh: тебе диагональ надо просумировать?

gybson_samara: Uljahn беру вот так def get_subboard(self, board, y, x):

       return self.board[board,y*3:y*3+3,x*3:x*3+3]

И все, вот моя минидоска

Uljahn: да, это view

gybson_samara: да это я разобрался сразу

gybson_samara: до симы дошел и все мои излишества вылезли, надо оптимизировать

Uljahn: я вот не сразу допёр, долго ловил баги, когда начинал нумпай учить)

Uljahn: тебе же говорили, что доски лучше отдельными массивами хранить, а не 9х9

Uljahn: если в двоичном представлении, то вообще парой интов на минидоску можно обойтись

Uljahn: битоборды т.е.

Uljahn: -о

Uljahn: каждый раз слайсить - дороговато

gybson_samara: а копировать девять досок дешево?

gybson_samara: каждый раз слайсит и не стану

gybson_samara: добавлю кэш слайсов

vrabosh: я проверял, для меня дешево это

vrabosh: tmp = a[1,1] a[1,1] = 2 minimax a[1,1] = tmp

Uljahn: когда у тебя 3D массив, можешь просто делать return self.board[board]

Uljahn: на выходе будет 2D 3x3 массив

Uljahn: если тебе инты не удобны

gybson_samara: Uljahn у меня массив (3,9,9)

gybson_samara: в перспективе

Uljahn: 3 откуда?

Uljahn: три слоя инфы?

gybson_samara: сейчас пока список массивов (3,3,3)

gybson_samara: Uljahn да

gybson_samara: 1 - мой ход, 2- ход противника, 3 - счет

Uljahn: а, у тебя же эвристические оценки

gybson_samara: да какая разница то какие оценки

Uljahn: я не вижу преимуществ представления 3х3

gybson_samara: посмотреть где в линию встанут

Uljahn: 9 битов на игрока достаточно

gybson_samara: согласен и даже проще будет после решейпа

gybson_samara: но это потом

gybson_samara: кстати, а как нампи 3*3 бит в слово решейпит, норм?

Uljahn: не понял

Uljahn: биты в инт запихиваем, ничего не надо решейпить

Uljahn: получается массив (10, 2)

Uljahn: 9 миниборд по 2 инта и 1 глобал по 2 инта

Uljahn: проверки линий выполняем заранее, заносим в LUT

Uljahn: у меня правда нумерация стрёмная - 0 миниборда в середине, всё думал как симметрию прикрутить

Uljahn: за год уже так привык, что переделывать не хочется)

gybson_samara: у меня то 3 инта на круг выходит, а у тебя 4 =)

vrabosh: хваьиь обсуждать крестики, я не могу остановиться думать про них)

gybson_samara: аааа, у тебя борды меньше

Uljahn: ну, у меня пока оба игрока в одни инте, так что два всего на круг

Uljahn: в одном*

Uljahn: но надо переделывать

Uljahn: щас инт32, занято 18 бит, надо переделать на два, а то с масками и сдвигами гемора много

tutubalin: да-да, я тоже с этим столкнулся

tutubalin: казалось, что вроде улучшение

tutubalin: а в реальности один геморр

gybson_samara: Uljahn вот так надо писать, оказывается mm[tuple(goal)].sum() а иначе ворнинг дает

gybson_samara: в tuple() последовательность оборачивать

Uljahn: ?

Uljahn: со списком индексов тоже работает

Uljahn: я проверил специально

Uljahn: чё за ворнинг? размерности не сходятся?

tutubalin: теперь у меня есть 465мб джейсон с боями из леги

tutubalin: опа! томатос на 1м месте!

735487: запушили походу

tutubalin: ну так то всех пушили

vrabosh: запушили - это типа зачетирили спомощью мульта?

735487: нет. это например ты сабмитишь и проигрываешь ему много игр. у него потихоньку очки растут

vrabosh: ааа

vrabosh: ктото про такое слышал?

vrabosh: http://chat.codingame.com/pastebin/38a7c64e-8f93-4d91-8c95-7a6de4d0edd5

wlesavo: там наоборот юрков карилсо запушил вниз

wlesavo: vrabosh где ты это нашел?

wlesavo: прикручу ща себе чисто проверить

tutubalin: vrabosh магический квадрат? в школе мерились письками, у кого программа быстрее найдёт

wlesavo: выглядит как порядок проверки в роллаутах

wlesavo: смитси говорил что у него не рандомные

wlesavo: хотя хз

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

tutubalin: 2 8 5 9 1 7 4 6 3

vrabosh: https://www.mccme.ru/free-books/shen/shen-games.pdf - вот книгу нашел

vrabosh: я думаю можно найти формулу игры.. щаз для 3х3 пробую

tutubalin: а у vrabosh один из магических квадратов 3x3: на всех горизонталях, вертикалях и диагоналях сумма 15

wlesavo: а, всеголишь

tutubalin: магические квадраты с нечётной стороной можно найти по формуле. с чётной - только перебором

wlesavo: а рекурс где нибудь рассказывал как у него питонная оболочка для NN работает?

vrabosh: что за нн?

wlesavo: нейросеть

Uljahn: он из питона запускает скомпиленный экзешник, как я понял

Uljahn: или бинарь, хз как в лине это правильно

Uljahn: он вообще-то хейтит питон, но тут решил потроллить народ

Uljahn: сказал, типа из питона проще всего запускать

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

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

vrabosh: ну и саму симуляции наверно проходить надо.

Uljahn: да, рекурс всё сам написал на с++, и обучение, и симуляцию игры

Uljahn: готовые фреймворки не использовал

Uljahn: ну, он же профи, в юбисофте работает, ему не интересно чужое использовать, лучше самому переписать и разобраться

vrabosh: когда у них время хватает, те кто работает в больших компаниях?

vrabosh: или им паручасов по вечерам хватает?

zuko3d: ну совй простенький фреймворк для нейронок пишется за пару вечеров, да

zuko3d: *свой

wlesavo: прикольная кривая обучения https://imgur.com/D85KXSx

zuko3d: ага, нетипичная

zuko3d: это какой-то RL?

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

vrabosh: нейронки мне кажется могут закономерность подсказать примернуюю и потом можно самому додумать

wlesavo: zuko3d да, примитивный рл

zuko3d: У меня всё никак не дойдут руки сделать RL в крестиках. Хочу в легу "по-честному" сначала зайти

vrabosh: кароче надо к крестикам Пелермана подключать.. он тут разгадает формулу

zuko3d: это вряд ли =)

Uljahn: wlesavo: а как часто тестовые игры против mcts бота гоняешь? винрейт бы ещё выводить на соседнем графике

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

wlesavo: да не гоняю пока, пока тестирую против случайных ходов, и что не рекаю случайные ходы :smiley:

Uljahn: zuko3d рассказывал, как в картишках нейронку обучил во время контеста

wlesavo: то есть против мктс там ни шанса

Uljahn: там тоже марафон был на месяц

Uljahn: вообще круто

zuko3d: против случайных ходов тестировать RL плохо - он обучаемся не тому, что нужно. Ну, то есть это не плохо, но по времени будет х100, если не х1000

wlesavo: так я не обучаю в это время

wlesavo: это просто такой санити тест пока

wlesavo: тут у меня чистый он полиси

wlesavo: но вообще не похоже что он чему то учится пока, думаю может все-таки свичнусь на что-нибудь попроще

Uljahn: типа cart-pole?

Uljahn: кстати, а что за фичи у тебя в крестиках?

Uljahn: сам не инжинирил дополнительные?

wlesavo: дополнительных нет пока, просто позиции ходы этого игрока + позиции противника + борды в которые можно ходить на этом ходу

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

wlesavo: но сильно сомневаюсь

Uljahn: у тебя вроде в первом боте были эвристики какие-то

Uljahn: который в голде был

Uljahn: я думаю в крестиках без подсказок нейронки не взлетят

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

wlesavo: не, там вообще не к месту было

zuko3d: а что именно ты на выходе из сетки получаешь? оценку позиции? или сами координаты, куда надо ставить?

wlesavo: не, только оценку афтерстейта и все

wlesavo: без полиси для роллаутов даже

Uljahn: можно прикрутить миник тогда

Uljahn: может быстрее будет обучаться

zuko3d: хм... тогда странно, что рандом не побеждается. кажется, это не должно быть сложно.

Uljahn: или предобучить сетку, чтобы первый ход в центр делала...

Uljahn: tutubalin реплеи выкачал, будет супервайзед вариант мутить что ли?

wlesavo: zuko3d ну она с вероятностью 50 процентов побеждает :smiley:

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

Uljahn: на каком железе обучаешь?

Uljahn: https://github.com/alex-petrenko/sample-factory

wlesavo: на своем одном проце)) чето запускал на гпу, но видимо криво, потому что так же медленно все было

Uljahn: а фреймворк какой?

Uljahn: питорч или тф с керасом?

wlesavo: питорч

wlesavo: вообще питорч конечно классная штука даже если не в плане нейросетей

Uljahn: на проце конечно грустно