site banner

Culture War Roundup for the week of December 19, 2022

This weekly roundup thread is intended for all culture war posts. 'Culture war' is vaguely defined, but it basically means controversial issues that fall along set tribal lines. Arguments over culture war issues generate a lot of heat and little light, and few deeply entrenched people ever change their minds. This thread is for voicing opinions and analyzing the state of the discussion while trying to optimize for light over heat.

Optimistically, we think that engaging with people you disagree with is worth your time, and so is being nice! Pessimistically, there are many dynamics that can lead discussions on Culture War topics to become unproductive. There's a human tendency to divide along tribal lines, praising your ingroup and vilifying your outgroup - and if you think you find it easy to criticize your ingroup, then it may be that your outgroup is not who you think it is. Extremists with opposing positions can feed off each other, highlighting each other's worst points to justify their own angry rhetoric, which becomes in turn a new example of bad behavior for the other side to highlight.

We would like to avoid these negative dynamics. Accordingly, we ask that you do not use this thread for waging the Culture War. Examples of waging the Culture War:

  • Shaming.

  • Attempting to 'build consensus' or enforce ideological conformity.

  • Making sweeping generalizations to vilify a group you dislike.

  • Recruiting for a cause.

  • Posting links that could be summarized as 'Boo outgroup!' Basically, if your content is 'Can you believe what Those People did this week?' then you should either refrain from posting, or do some very patient work to contextualize and/or steel-man the relevant viewpoint.

In general, you should argue to understand, not to win. This thread is not territory to be claimed by one group or another; indeed, the aim is to have many different viewpoints represented here. Thus, we also ask that you follow some guidelines:

  • Speak plainly. Avoid sarcasm and mockery. When disagreeing with someone, state your objections explicitly.

  • Be as precise and charitable as you can. Don't paraphrase unflatteringly.

  • Don't imply that someone said something they did not say, even if you think it follows from what they said.

  • Write like everyone is reading and you want them to be included in the discussion.

On an ad hoc basis, the mods will try to compile a list of the best posts/comments from the previous week, posted in Quality Contribution threads and archived at /r/TheThread. You may nominate a comment for this list by clicking on 'report' at the bottom of the post and typing 'Actually a quality contribution' as the report reason.

16
Jump in the discussion.

No email address required.

Trying out ChatGPT. Tried out a few topics from my field (electrical engineering) and it failed to make basic circuits. A couple queries I tried were making a CMOS inverter or a common-source amplifier, which are very simple circuits that most who have done a class could easily draw. Asked it to give the answer in SPICE syntax, because it can't draw things and SPICE is basically a code representation of a circuit. The results were poor; a MOSFET SPICE line is of the format Mxxx nd ng ns nb , chatGPT got the order of the drain/gate/source/bulk terminals wrong several times. It had some justification for how it connected the nodes of each individual device, but almost always failed to connect the outputs (drains) together for eg. an inverter. Also seemed to connect other terminals sort of at random.

FWIW these two circuits consist of 2 lines of code at minimum, 4 lines if you want something self-contained, maybe 8 if you want it to a fully functioning & simulatable netlist. So not asking for much here.

It gives lengthy canned responses explaining the circuit reminiscent of how a textbook would describe a circuit, and they sound good, but it's just wrong. Kind of reminds me of when students would throw out buzzwords in an attempt to explain something they don't know.

With some handholding (or, rather, explicit statements of how to fix the circuits) it can get closer to something functional, but usually in the process screws up something unrelated such that it's never quite right. Trying with anything even slightly more complex it falls apart pretty quickly and it's impossible to reconcile with anything approaching a functional circuit. It does much worse with analog circuits than digital circuits.

Seeing it underperform so much in my field is giving me a sort of Gellmann Amnesia effect for people touting how it can write code on its own. It certainly wrote out the circuit, and that circuit could be simulated, but it wouldn't achieve the desired behaviour of someone using it, so I'm skeptical that it can code well in other domains. That said, the field is kind of niche, and manually writing SPICE circuits slightly more so, so maybe it is just weakly trained for this subject. SPICE is also different from code in that it doesn't run sequentially, it's kind of like a hardware description language in that it's just instantiating elements that interact with eachother through simulation, so the interfaces between them aren't as simple as passing a variable to a function which does some abstracted function step-by-step. Also with how much content is out there for coding python/javascript/c# etc. it probably has a much greater wealth of resources to pull from.

I think at the moment it is essentially just stringing together user tutorials from the internet in a somewhat intelligent manner, I think anything novel or requiring critical thought will difficult for it to achieve. Maybe with some improved pattern recognition from the scraped data it will do better, I don't know.

Has anyone else tested it with things you're knowledgeable about and have any judgements of its usefulness?

Edit: it seems reasonably okay at turning explicitly stated english-language commands into bash commands. Probably well trained from stackoverflow, seems like a viable alternative to pulling information from different stackoverflow responses to do the thing you want to do. Also seems kind of helpful for asking how to do random MS Office stuff like highlighting every other cell in a column. Could be useful for simple stuff like this that is rote, common, and has good documentation but you don't usually remember off-hand, although you probably have to be extra careful when running bash scripts.

I've been asking it to generate some new monsters and other content for D&D. I've been adding new enemies to Roll20 and wanted to generate new variants of existing monsters, so I'd say something like "generate a kobold, but it has these attributes and does X, Y, and Z." I'm also working on a growing system as a player downtime option, so I asked it to "generate a list of fantasy plants. Give each one a growing time in weeks, flavor text, and if it responds to X, Y, or Z type of cultivation." I was fairly impressed at what it could consistently give me, though it obviously has a ways to go. It was a great way to fish for inspiration and mechanics before refining them into something usable.

Right now, it's best used as a way to rapidly generate ideas/content before someone who knows what he's doing polishes and fixes it. I haven't seen it output anything that was passable out of the box. This is how I feel about AI image generators too; in the hands of an artist, they have insane potential.

The real strength of the software is its working memory of context. You can issue corrections, prompt it with more information, tell it to adjust something, and it'll do it. That's what impressed me more than the generation itself, I think. The main limitation right now is it doesn't remember anything outside of a session, and it has trouble going past half a dozen revisions or so. This is to be expected since it's a free service at the moment, so I only see this improving.

That's a really cool idea, could you give us an example of a monster it created? And what prompt you used to get it?

Late response, but I didn't save the prompts for any of the monsters, since the prompts were usually just something like: "Generate me a statblock for variant of a kobold for dungeons and dragons 5th edition. It has an ability to place curse debuffs on enemies that debilitate them throughout combat. It should be extremely threatening and a high-priority target."

I wanted that particular enemy to feel occult and threatening. I wanted it to cast nasty debuffs that weren't any existing spell. They didn't need to be fancy, but I didn't want to just fill another monster statblock with existing spells. I had a general idea of what I wanted, but didn't have any ideas that stood out to me for what the debuffs should be.

It gave me a basic kobold that had a few daily use abilities, basically ray attacks that forced a save or the enemy would suffer some serious nastiness for the next few hours. One made them vulnerable to all damage, another gave them disadvantage on anything strength related. The AI even gave it the ability to cast one of them as a reaction to being targeted for an attack, which was very funny. I wound up reducing the effect from several hours to just the end of combat, since the effects were so powerful for such a low-level enemy.

Try "Create a new SCP monster with....". There is lots of SCP Internet content on which, I suspect, the chatbot has been trained.

You can issue corrections, prompt it with more information, tell it to adjust something, and it'll do it.

How is this implemented? Neural networks are universally stateless.

For GPT (and transformers in general), the "state" is the transcript of the conversation so far. A single response from GPT involves many queries to the (stateless, as you said) model asking for the next token until a special end-of-document token is reached or a maximum number of tokens limit is hit. Only so many tokens fit in the window, causing the described issues with it losing track of the conversation if the transcript gets too long: it's no longer seeing the entire history and the recent history isn't always enough to know what's going on.

Thanks, so if I understand correctly, the trick to make the neural network take into account past state, is to feed him all at once, not just the current sentence, but the whole dialogue history.

If so, well that is a basic primitive solution and its nice that it kind of work however because of the architecture of said networks, this solution doesn't scale to any long text, book or long dialogue.

Because the length of the input is capped to a max, and because the bigger the input is the less accurate the prediction will be.

Neural networks are fundamentally unfit for late binding and long exchanges.

While there exists hacks to improve regarding this goal:

https://arxiv.org/abs/2004.05150

https://arxiv.org/abs/2001.09694

I still believe transformers are unfit and will be the dawn of the current but yet invisible AI winter.