356 karma · joined November 11, 2020
Also interested in high school cs education
Bsky: https://bsky.app/profile/mcognetta.bsky.social
Mastodon: https://sigmoid.social/@mc
Twitter: @marco_computers
Site: theoreticallygoodwithcomputers.com
meet.hn/city/35.6768601,139.7638947/Tokyo
Attention based models don't necessarily need to be sequence to sequence. They can be classifiers, decoder only, etc. Attention is just one tool in the ML architecture toolkit.
On the other hand, you can have an unambiguous [1] NFA (for example, a DFA, but you insert some dummy epsilon transitions between a split up state) where you can just flip the final/non-final states and complement the language.
So, in the end, complementing languages described by NFAs without determinizing them first is a bit of a tricky problem.
[1]: https://en.wikipedia.org/wiki/Unambiguous_finite_automaton --- a superset of DFAs, but they can have epsilon transitions
Take, for example, the regex "a|(aa)+" (the set of even length strings of "a"'s or just one "a"). If you use the construction from the article, you get an NFA with basically two arms: one that recognizes "a" and one that recognizes "(aa)+". The initial state contains an epsilon arc to the start state of each of these arms. If you just flip the final/non-final states in each arm, the resulting language contains "a", since we are no longer accepting each even length "a" string, but now each odd length "a" string, of which "a" is a member. Thus the new language is not the proper complement of "a|(aa)+", which would not contain "a".
Imo the best thing is to have a mentor who hopefully can find a reasonable thing to improve/add/fix and can help calm your nerves (submitting a pull request can be kinda scary haha). With NetworkX, in the past there were a lot of minor inefficiencies (things like materializing a list comprehension when you don't need to, etc) that are 1) easy to understand 2) don't require in depth knowledge of graph theory 3) are generally applicable to all python code and 4) easy to measure the results. They aren't the flashiest contributions, but the people I've done it with (6 or 7 at this point) have all seemed to enjoy it.
To be clear, I'm _not_ affiliated with NetworkX, but if you are interested in trying it out, my contact info is in my profile. Feel free to reach out.
I compare it to something like Django or scikit-learn, which seem insanely dense and difficult to understand even as an experienced dev, and there are so many people working on them that it's hard to find easy but non-trivial contributions for a beginner to make.
They have an incredible team leading it [2]. In terms of open-access education, the one I've followed most closely is Jelani Nelson, of Harvard Advanced Algorithms etc. YouTube fame [3, 4].
[1]: https://www.addiscoder.com/
[2]: https://jamcoders.org.jm/#team
I like to write about CS/Math, programming topics (mostly in Julia or Python), and language. In particular, I like to combine these when possible (see [1], which I am quite proud of).
Hoping to add a bit more content during an upcoming break.
[1]: https://theoreticallygoodwithcomputers.com/posts/aoc-aheui-e...
I've been following these stories for a while and it seems like a lot of the big players are ridiculously predatory and are providing a catastrophically bad service. I'd like to ask if there are any that you think are actually doing a good job?
One in particular I'm curious about is Hackbright.
I had a nice long conversation with two of the authors of [0] at ACL.
One thing we discussed was the reverse problem. That is, as a player, could I give commands to the model and have the engine figure the moves that would best satisfy them.
This ranges from concrete like "take the black square bishop" (there is still variability like which piece should take it or if it's even possible) to more complex positional stuff like "set up to attack the kingside."
Any thoughts on this line of research?
[0] Automated Chess Commentator Powered by Neural Chess Engine (Zang, Yu & Wan, 2019) https://arxiv.org/pdf/1909.10413.pdf