Sorted by New

Wiki Contributions


Study Guide

I'd adjust the "breadth over depth" maxim in one particular way: Pick one (maybe two or three, but few) small-ish sub-fields / topics to go through in depth, taking them to an extreme. Past a certain point, something funny tends to happen, where what's normally perceived as boundaries starts to warp and the whole space suddenly looks completely different.

When doing this, the goal is to observe that "funny shift" and the "shape" of that change as good as you can, to identify the signs of it and get as good a feeling for it as you can. I believe that being able to (at least sometimes) notice when that's about to happen has been quite valuable for me, and I suspect it would be useful for AI and general rat topics too.

As a relatively detailed example: grammars, languages, and complexity classes are normally a topic of theoretical computer science. But if you actually look at all inputs through that lens, it gives you a good guesstimate for how exploitable parsers for certain file formats will be. If something is context-free but not regular, you know that you'll have indirect access to some kind of stack. If it's context sensitive, it's basically freely programmable. For every file format (/ protocol / ...), there's a latent abstract machine that's going to run your input, so your input will essentially be a program and - within the boundaries set by the creator of that machine - you decide what it's going to do. (Turns out those boundaries are often uncomfortably loose...)

Some other less detailed examples: Working extensively with Coq / dependently typed programming languages shifted my view of axioms as something vaguely mystical/dangerous/special to a much more mundane "eh if it's inconsistent it'll crash", I'm much more happy to just experiment with stuff and see what happens. Lambda calculus made me realize how data can be seen as "suspended computations", how different data types have different "computational potential". (Lisp teaches "code is data", this is sorta-kinda the opposite.) More generally, "going off to infinity" in "theory land" for me often leads to "overflows" that wrap around into arcane deeply practical stuff. (E.g. using the algebra of algebraic data types to manually compress an ASM function by splitting it up into a lookup/jump table of small functions indexed by another simple outer function, thereby reducing total byte count and barely squeezing it into the available space.)

You're unlikely to get these kinds of perspective shifts if you look only at the basics. So every once in a while, dare to just run with it, and see what happens.

(Another aspect of that which I noticed only after posting: If you always look only at the basics / broad strokes, to some degree you learn/reinforce not looking at the details. This may not be a thing that you want to learn.)

How to deal with unknown probability distributions?

Other failure modes could be to fail to have properties of probabilty distributions. Negative numbers, imaginary amounts? Not an unknown probability distribuiton because its not a probabilty distribution[...]

Not every probability distribution has to result in real numbers. A distribution that gets me complex numbers or letters from the set { A, B, C } is still a distribution. And while some things may be vastly easier to describe when using quasiprobability distributions (involving "negative probabilities"), that is a choice of the specific approach to modeling, not a necessity. You still get observations for which you can form at least an empirical distribution. A full model using only "real probabilities" may be much more complex, but it's not fundamentally impossible.

If your random pull is aleph-null does it have any sensible distributions to be drawn from? Dealing with other "exotic" numbers systematically might get tricksy.

Use a mixture distribution, combining e.g. a discrete part (specific huge numbers outside of the reals) with a continuous part (describing observable real numbers).

Questions involving infidesimals like "Given a uniformly random number between 0 and 1 is it twice more likely it to be in the interval from epsilon to 3*epsilon than in the interval from 3*epsilon to 4*epsilon"[...]

That doesn't typecheck. Epsilon isn't a number, it's a symbol for a limit process ("for epsilon approaching zero, ...") If you actually treat it as the limit process, then that question makes sense and you can just compute the answer. If you treat it as an infinitesimal number and throw it into the reals without extending the rest of your theoretical building blocks, then of course you can't get meaningful answers.

Do you like excessive sugar?

If I really wanted to, I could probably force myself to eat a pack of dates for about 2-3 days before having enough of them.

Actually, I tried that too now. 8 was more than enough, don't really want to eat more. (Wolfram estimates a single dried date to weigh about 16 g and contain roughly 10 g sugar.) So if that's right, this was about 80g of sugar. That's less than half of what I estimated. (Even adding the (tea)spoon of sugar from before as 1-2 extra dates doesn't make much of a difference.)

Do you like excessive sugar?

Approximate amount: 50-60g maybe? I like to add juuust a little to tea and other drinks, about 1-2g / 100ml. Completely unsweetened (and I count nut milks as sweetener too) irritates my stomach for some reason. (And plain unflavored water causes nausea, so teas it is.) There's also often a teaspoon or two in some meals to balance acidity or bring out spices. Rarely some chocolate (80-99% cocoa) or a slice of home-baked cake. (I tend to halve the amount of sugar in recipes.) Fruits (fresh or dried) also contain non-negligible amounts.

How I feel about sugar: A little is somewhere between fine and awesome (seriously, add a sprinkle to your carrots when boiling/frying them!), a lot is just disgusting. (Most sodas are too sweet for my tastes. I still have a pack of gummy bears sitting in the sweets drawer that's been there for almost two years by now... still untouched.) I can absentmindedly absorb about half a bar of (dark) chocolate of the course of a few hours, but then it just stops - I won't eat the rest within the next 2 or 3 days. Dried fruits are more "dangerous", here I can fairly easily eat serious amounts before having enough of them. (But even that saturates.)

Change your habits today: Nah, would be very unpleasant. Less would mostly mean stomach ache, which this isn't worth it for me. More... nah, just no.
If I really wanted to, I could probably force myself to eat a pack of dates for about 2-3 days before having enough of them. That would probably get me about 150-200g extra sugar on each of those days. (Oof!) More refined versions of sugar don't really work for me. (Even eating a spoon of raw cane sugar isn't pleasant, I just tried. It tastes nice, has a lot of complexity, but overall it's still unpleasant and not something that I want to repeat. Plus nearly all of the appeal is in the complex aromas, not the sweetness.) With sweets, eating just 2 or 3 gummy bears is usually enough to really not want more for the next couple of days.

2021 Darwin Game - Contestants

I plan to stick to Hy, but I'll make the versioning clearer in the future.

If there's two weeks, that should leave enough time for making & checking alternate implementations, as well as clarifying any unclear parts. (I never fully understood the details of the selection algorithm (and it seems there were bugs in it until quite late), but given a week for focusing just on that, I hope that should work out alright.)

I'm optimizing for features, not speed.

No complaints here, that's the only sane approach for research and other software like this.

However there's other bits of the code too (like random selection from sets) which might vary from one implementation to another.

Compared to e.g. trying to get the Mersenne Twister (which I think is still Python's default RNG?) either linked to or re-implemented in some other obscure language, that's a trivial task. I don't expect problems there, as long as those functions actually use the specified RNG and not internally refer to the language's default.

Oh also, on genome formats: I've been doing quite a bit of stuff with domain specific languages / PLT stuff, as well as genetic algorithms and other swarm optimization approaches before. If you have any ideas that you want to bounce off someone or have some cool idea for some complex genome format that looks like it might be too much work, feel free to ping me - I might be able to help! (Ideally in a sufficiently abstract / altered way that I can still participate, but if need be, I'd give that up for a year too.)

2021 Darwin Game - Contestants

Feedback on the game so far:

Genome Format: Even though I'm a long time programmer, I vastly preferred this year's version where no one (except you) had to write any code. This was awesome!

Implementation/Spec: I would have preferred a clear spec accompanied by a reference implementation. Hy may be fun to use, but it's incredibly slow. (Also the version differences causing various problems was no fun at all.)
The only big thing to watch out for is to not use the built-in RNG of whatever language you'll end up using, but instead a relatively simple to implement (but still good quality) one like e.g. PCG where you can probably find a library, but if not then you have just a couple of lines to translate. (Different RNGs would mean different results. If everyone can use exactly the same, then all re-implementations are able to behave exactly the same, and it's easy to test that you got your implementation correct.)

Time: If you can, avoid the very last/first week of a quarter year - that's when companies and people who are self-employed have to finish all the bookkeeping. (I had several requests for clarification & planning the next quarter coming at me, that took away even more time...)

Duration: A week felt quite short, two weeks would have left a week to sort out infrastructure problems and then another one to solve the actual problem. Maybe next time you could split it in two, first week releases the spec and a sample environment (like the one that you used throughout the post), second week releases the actual parameters for the game. (I.e. the big 10-biome list and final feature costs.) Leaving a 48 hour window for changes (before submission opens) would be fine at that point; given that many would already understand the base setting, any quirks like grassland having less grass than rain forest would likely be noticed quickly and could still be fixed.)

Submission: Google forms sucked. Maybe there's a browser extension that makes it easier to use, but I had to click around a lot and for some reason the browser built-in form completion was disabled for the fields, so I had to manually paste email / user etc. every. single. time. Ugh. There was also no way to see which ones I had already submitted. I'm pretty sure that I'm not the one with 11 species (and even if, two would have been exact duplicates), but an alternative "or just send me a CSV file formatted like the example data" would have been much more usable for me.

Still, in all it was a lot of fun and I'm curious what the results will be. Thank you very much for running another round this year, and I hope there will be another one next year!

LessWrong FAQ

In the Markdown editor, surround your text with :::spoiler at the beginning, and ::: at the end.

This (or at least my interpretation of it) seems to not work.

I read it as anywhere inline (i.e. surrounded by other text) putting :::spoiler (without the backticks), followed by your text to be spoilered, followed by ::: (no space required and again without backticks.)

That ended up producing the unspoilered text surrounded by the :::spoiler ... ::: construction and making me slightly sad. Here is a :::spoiler not really ::: spoilered example of the failure.

It seems that it has to be used as a standalone block instead, i.e. you put an empty line, :::spoiler on a line by itself, then your paragraph (probably must not include empty lines, but didn't check), then :::.

So this works.

This should probably be clarified?

Is (or will there be) an inline form as well? Discord uses ||spoiler|| and I think I've seen the same in other places too.

The 2021 Less Wrong Darwin Game

I didn't trusty myself to reimplement the simulator - any subtle change would likely have invalidated all results. So simulations were real slow... I still somehow went through about 0.1% of the search space (25K of about 27M possible different species), and I hope it was the better part of the space / largely excluding "obviously" bad ideas. (Carefully tweaking random generation to bias it towards preferring saner choices, while never making weird things too unlikely.) Of course, the pairings matter a lot so I'm not at all certain that I didn't accidentally discard the best ones just because they repeatedly ended up in very unfortunate circumstances.

There certainly were some kinda non-intuitive choices found, for example: A Benthic creature that can (also) eat grass -- it can't start in the river, but that's where it wants to go; and travel-wise, Ocean/Benthic are equivalent! (Also, for some reason, others trying the same strategy in the ocean performed way worse... absolutely no idea why yet.)

I'd have loved for this to happen in a less-busy week (not exactly the end of the quarter year with all the bookkeeping) and to have about 2-3x as much time to get the infrastructure working... managed to barely get simple mutation working, but didn't have time for the full genetic algorithm or other fancy stuff. :(

The 2021 Less Wrong Darwin Game

Seconding this, does 'by Sep 30th' mean start or end of the day? I'm currently assuming 'end of', in some unspecified time zone.

My computer's still crunching numbers and I'm about to head to bed… would be sad to miss the deadline.

The 2021 Less Wrong Darwin Game

I've got it mostly working now... problem is that the default plot size is unusable, the legend overlaps, etc. etc. -- when run interactively, you can just resize the window and it'll redraw, and then you save it once you're happy. So now I'm also setting plot size, font size, legend position, and then it's "just" a (plt.savefig "plot.png") added before the (plt.show).

I might also add a more easily parseable log output, but for now tee and a small Lua script mangling it into CSV is enough.

I'll probably clean up all of that in a couple of hours and send another patch / merge request. Tho it's probably a good idea to get someone else to review it given that I have near-zero prior experience w/ Python.

Load More