Chat:Ru/2020-06-23
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: да, читал про такие
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: на проце конечно грустно